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

@haventech/semotus

Package Overview
Dependencies
Maintainers
5
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@haventech/semotus - npm Package Compare versions

Comparing version 10.0.0 to 10.0.1

dist/cjs/decorators.d.ts

17

dist/cjs/decorators.js

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

Object.defineProperty(exports, "__esModule", { value: true });
exports.remote = exports.property = exports.Supertype = exports.supertypeClass = void 0;
exports.remote = exports.property = exports.supertypeClass = void 0;
/**

@@ -21,6 +21,7 @@ * @TODO: This should be consolidated with Supertype's version when we finish converting to typescript

// 2nd pass: Semotus (sClass) -> Semotus (decorator) -> Supertype (eval ret) -> Semotus (return)
function supertypeClass(objectTemplate, SupertypeModule, target) {
function supertypeClass(getObjectTemplate, SupertypeModule, target) {
let ret;
let ObjectTemplate = SupertypeModule.default;
let syncStates = []; // Default syncStates to empty array
let objectTemplate = getObjectTemplate();
// Decorator workerbee

@@ -81,7 +82,4 @@ const decorator = function decorator(target) {

exports.supertypeClass = supertypeClass;
function Supertype(template, objectTemplate, Supertype) {
return Reflect.construct(Supertype, [objectTemplate], template.constructor);
}
exports.Supertype = Supertype;
function property(objectTemplate, SupertypeModule, props, toClientRuleSet, toServerRuleSet) {
function property(getObjectTemplate, SupertypeModule, props, toClientRuleSet, toServerRuleSet) {
const objectTemplate = getObjectTemplate();
props = props || {};

@@ -101,3 +99,4 @@ props.toClient = applyRuleSet(props.toClient, toClientRuleSet);

exports.property = property;
function remote(objectTemplate, defineProperty) {
function remote(getObjectTemplate, defineProperty) {
const objectTemplate = getObjectTemplate();
defineProperty = defineProperty || {};

@@ -144,2 +143,2 @@ /*

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7OztBQUdIOztHQUVHO0FBRUgsd0JBQXdCO0FBQ3hCLDJFQUEyRTtBQUMzRSxnR0FBZ0c7QUFDaEcsU0FBZ0IsY0FBYyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTTtJQUNsRSxJQUFJLEdBQUcsQ0FBQztJQUNSLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFDN0MsSUFBSSxVQUFVLEdBQWEsRUFBRSxDQUFDLENBQUUsb0NBQW9DO0lBRXBFLHNCQUFzQjtJQUN0QixNQUFNLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxNQUFNO1FBQ3ZDLG1GQUFtRjtRQUNuRiwwQkFBMEI7UUFDMUIsSUFBSSxHQUFHLEVBQUU7WUFDTCxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQTtTQUNwQzthQUFNO1lBQ0gsR0FBRyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsb0VBQW9FO1FBQ3BFLE1BQU0sQ0FBQyxjQUFjLEdBQUcsVUFBVSxZQUFZLEVBQUUsY0FBYztZQUMxRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JCLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FDMUQsWUFBWSxFQUNaLGNBQWMsQ0FBQyxJQUFJLEVBQ25CLGNBQWMsQ0FBQyxFQUFFLEVBQ2pCLGNBQWMsQ0FBQyxRQUFRLENBQzFCLENBQUM7YUFDTDtpQkFBTTtnQkFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQWMsQ0FBQztnQkFDbEUsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLEtB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LENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUM1QztJQUNMLENBQUMsQ0FBQztBQUNOLENBQUM7QUExQ0Qsd0JBMENDO0FBQUEsQ0FBQztBQUdGLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPO0lBQy9CLElBQUksSUFBSSxZQUFZLEtBQUssSUFBSSxPQUFPLFlBQVksS0FBSyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztLQUNOO1NBQU07UUFDSCxPQUFPLElBQUksQ0FBQztLQUNmO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXR0YWNoZXMgc3luY1N0YXRlcyBwcm9wcyB0byB0aGUgdGVtcGxhdGVcbiAqIElmIGEgY2xhc3MgaXMgZGVjb3JhdGVkIGxpa2UgQHN1cGVydHlwZUNsYXNzKHtzeW5jU3RhdGVzOiBbJ2ludGVybmFsJywgJ2hvbWUnXX0pLCBhbnkgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3NcbiAqIGluY2x1ZGluZyB0aG9zZSB0aGF0IGV4aXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFwcGxpY2F0aW9uLCBzaG91bGQgb25seSBiZSBzZW50IG92ZXIgd2hlbiB0aGUgY29udHJvbGxlciBzdGF0ZSBvblxuICogdGhlIHNlcnZlciBpbmRpY2F0ZXMgdGhhdCB0aGUgY29ycmVjdCBzeW5jU3RhdGUgKGlmIGFuZCBvbmx5IGlmIGNvbnRyb2xsZXIuc3luY1N0YXRlID0gJ2hvbWUnIG9yICdpbnRlcm5hbCcsIHRoZW4gYW5cbiAqIG9iamVjdCBvZiB0aGlzIGNsYXNzIHdpbGwgYmUgc2VudCwgb3RoZXJ3aXNlIHNlbW90dXMgd2lsbCByZWZyYWluIGZyb20gc2VuZGluZyBpdCBvdmVyKS4gVGhlIGNhdmVhdCwgaG93ZXZlciwgaXMgaWZcbiAqIHNlbW90dXMnIGNvbnRyb2xsZXIncyBzeW5jU3RhdGUgaXMgZGVmaW5lZCBhcyAnKicgdGhlbiB3ZSB3aWxsIGJ5IGRlZmF1bHQgc2VuZCBhbGwgdGVtcGxhdGVzIHVubGVzcyBzcGVjaWZpZWQgb3RoZXItXG4gKiB3aXNlICh0aGUgc2FtZSBhcyB0cmVhdGluZyBzeW5jU3RhdGU6IFsnKiddKVxuICpcbiAqL1xuXG5cbi8qKlxuICogQFRPRE86IFRoaXMgc2hvdWxkIGJlIGNvbnNvbGlkYXRlZCB3aXRoIFN1cGVydHlwZSdzIHZlcnNpb24gd2hlbiB3ZSBmaW5pc2ggY29udmVydGluZyB0byB0eXBlc2NyaXB0XG4gKi9cblxuLy8gQ29udGV4dCBTd2l0Y2ggQ2hhaW46XG4vLyAxc3QgcGFzczogU2Vtb3R1cyAoc0NsYXNzKSAtPiBTdXBlcnR5cGUgKHNDbGFzcykgLT4gU2Vtb3R1cyAocmV0dXJuIFJldClcbi8vIDJuZCBwYXNzOiBTZW1vdHVzIChzQ2xhc3MpIC0+IFNlbW90dXMgKGRlY29yYXRvcikgLT4gU3VwZXJ0eXBlIChldmFsIHJldCkgLT4gU2Vtb3R1cyAocmV0dXJuKVxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVydHlwZUNsYXNzKG9iamVjdFRlbXBsYXRlLCBTdXBlcnR5cGVNb2R1bGUsIHRhcmdldCk6IGFueSB7XG4gICAgbGV0IHJldDtcbiAgICBsZXQgT2JqZWN0VGVtcGxhdGUgPSBTdXBlcnR5cGVNb2R1bGUuZGVmYXVsdDtcbiAgICBsZXQgc3luY1N0YXRlczogU3RyaW5nW10gPSBbXTsgIC8vIERlZmF1bHQgc3luY1N0YXRlcyB0byBlbXB0eSBhcnJheVxuXG4gICAgLy8gRGVjb3JhdG9yIHdvcmtlcmJlZVxuICAgIGNvbnN0IGRlY29yYXRvciA9IGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQpIHtcbiAgICAgICAgLy8gc2Vjb25kIHRpbWUgd2UgbXVzdCBjYWxsIHRoZSBmdW5jdGlvbiByZXR1cm5lZCB0aGUgZmlyc3QgdGltZSBiZWNhdXNlIGl0IGhhcyB0aGVcbiAgICAgICAgLy8gcHJvcGVydGllcyBhcyBhIGNsb3N1cmVcbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgICAgcmV0ID0gcmV0KHRhcmdldCwgb2JqZWN0VGVtcGxhdGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXQgPSBTdXBlcnR5cGVNb2R1bGUuc3VwZXJ0eXBlQ2xhc3ModGFyZ2V0LCBvYmplY3RUZW1wbGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYWlubHkgZm9yIHBlcnNpc3RvciBwcm9wZXJ0aWVzIHRvIG1ha2Ugc3VyZSB0aGV5IGdldCB0cmFuc3BvcnRlZFxuICAgICAgICB0YXJnZXQuY3JlYXRlUHJvcGVydHkgPSBmdW5jdGlvbiAocHJvcGVydHlOYW1lLCBkZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICAgICAgaWYgKGRlZmluZVByb3BlcnR5LmJvZHkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQucHJvdG90eXBlW3Byb3BlcnR5TmFtZV0gPSBvYmplY3RUZW1wbGF0ZS5fc2V0dXBGdW5jdGlvbihcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eS5ib2R5LFxuICAgICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eS5vbixcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkudmFsaWRhdGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQucHJvdG90eXBlLl9fYW1vcnBoaWNwcm9wc19fW3Byb3BlcnR5TmFtZV0gPSBkZWZpbmVQcm9wZXJ0eTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRlZmluZVByb3BlcnR5LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlIGdldHRlciBhY3R1YWxseSBpbml0aWFsaXplcyB0aGUgcHJvcGVydHlcbiAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lU3BhY2VkUHJvcGVydHkgPSBgX18ke3Byb3BlcnR5TmFtZX1gO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpc1tuYW1lU3BhY2VkUHJvcGVydHldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2xvbmVUZW1wbGF0ZSA9IGRlZmluZVByb3BlcnR5Lm9mIHx8IGRlZmluZVByb3BlcnR5LnR5cGUgfHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbbmFtZVNwYWNlZFByb3BlcnR5XSA9IE9iamVjdFRlbXBsYXRlLmNsb25lKHZhbHVlLCBjbG9uZVRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1tuYW1lU3BhY2VkUHJvcGVydHldO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkZWZpbmVQcm9wZXJ0aWVzID0ge307XG4gICAgICAgICAgICAgICAgb2JqZWN0VGVtcGxhdGUuX3NldHVwUHJvcGVydHkocHJvcGVydHlOYW1lLCBkZWZpbmVQcm9wZXJ0eSwgdW5kZWZpbmVkLCBkZWZpbmVQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQucHJvdG90eXBlLCBkZWZpbmVQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBc3NpZ25pbmcgc3luYyBzdGF0ZXMgZnJvbSBwcm9wIGRlZmluaXRpb24gb250byB0aGUgdGVtcGxhdGVcbiAgICAgICAgaWYgKHN5bmNTdGF0ZXMpIHtcbiAgICAgICAgICAgIHRhcmdldC5zeW5jU3RhdGVzID0gc3luY1N0YXRlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfTtcblxuICAgIC8vIENhbGxpbmcgdGhlIGRlY29yYXRvciBwcm9jZXNzb3Igd2l0aCB0aGUgYWN0dWFsIFRlbXBsYXRlICgybmQgdGltZSlcbiAgICBpZiAodGFyZ2V0LnByb3RvdHlwZSkge1xuICAgICAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCk7XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LnN5bmNTdGF0ZXMgJiYgdGFyZ2V0LnN5bmNTdGF0ZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBzeW5jU3RhdGVzID0gdGFyZ2V0LnN5bmNTdGF0ZXM7XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LnN5bmNTdGF0ZXMgKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgU2Vtb3R1cyB3YXJuaW5nOiAke3RhcmdldC5zeW5jU3RhdGVzfSBpcyBub3QgYW4gYXJyYXkgdmFsdWUsIHNvIG5vdCBzZXR0aW5nIHVwIFN5bmNTdGF0ZXMgZm9yIHRoaXMgdGFyZ2V0OiAke3RhcmdldH1gKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsZWQgZmlyc3QgdGltZSB3aXRoIHBhcmFtZXRlcnMgKHByb3AgZGVmaW5pdGlvbikgcmF0aGVyIHRoYW4gdGFyZ2V0ICh0ZW1wbGF0ZSlcbiAgICAvLyBjYWxsIHN1cGVydHlwZXMgc3VwZXJ0eXBlQ2xhc3MgZnVuY3Rpb24gd2hpY2ggd2lsbCByZXR1cm4gYSBmdW5jdGlvbiB0aGF0IG11c3QgYmVcbiAgICAvLyBjYWxsZWQgb24gdGhlIDJuZCBwYXNzIHdoZW4gd2UgaGF2ZSBhIHRhcmdldC4gVGhpcyBmdW5jdGlvbidzIGNsb3N1cmUgd2lsbCBhbHNvIGhhdmUgYSByZWYgdG8gdGhlIG9yaWdpbmFsIHByb3BlcnRpZXNcbiAgICByZXQgPSBTdXBlcnR5cGVNb2R1bGUuc3VwZXJ0eXBlQ2xhc3ModGFyZ2V0LCBvYmplY3RUZW1wbGF0ZSk7XG4gICAgcmV0dXJuIGRlY29yYXRvcjsgLy8gZGVjb3JhdG9yIHdpbGwgYmUgY2FsbGVkIDJuZCB0aW1lIHdpdGggcmV0IGFzIGEgY2xvc3VyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU3VwZXJ0eXBlKHRlbXBsYXRlLCBvYmplY3RUZW1wbGF0ZSwgU3VwZXJ0eXBlKSB7XG4gICAgcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KFN1cGVydHlwZSwgW29iamVjdFRlbXBsYXRlXSwgdGVtcGxhdGUuY29uc3RydWN0b3IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHkob2JqZWN0VGVtcGxhdGUsIFN1cGVydHlwZU1vZHVsZSwgcHJvcHMsIHRvQ2xpZW50UnVsZVNldCwgdG9TZXJ2ZXJSdWxlU2V0KSB7XG4gICAgcHJvcHMgPSBwcm9wcyB8fCB7fTtcbiAgICBwcm9wcy50b0NsaWVudCA9IGFwcGx5UnVsZVNldChwcm9wcy50b0NsaWVudCwgdG9DbGllbnRSdWxlU2V0KTtcbiAgICBwcm9wcy50b1NlcnZlciA9IGFwcGx5UnVsZVNldChwcm9wcy50b1NlcnZlciwgdG9TZXJ2ZXJSdWxlU2V0KTtcbiAgICBjb25zdCBiYXNlRGVjb3JhdG9yID0gU3VwZXJ0eXBlTW9kdWxlLnByb3BlcnR5KHByb3BzLCBvYmplY3RUZW1wbGF0ZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSkge1xuICAgICAgICBiYXNlRGVjb3JhdG9yKHRhcmdldCwgdGFyZ2V0S2V5KTtcbiAgICAgICAgY29uc3QgZGVmaW5lUHJvcGVydGllcyA9IHt9O1xuICAgICAgICBwcm9wcy5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgICAgICAgcHJvcHMud3JpdGFibGUgPSB0cnVlO1xuICAgICAgICBvYmplY3RUZW1wbGF0ZS5fc2V0dXBQcm9wZXJ0eSh0YXJnZXRLZXksIHByb3BzLCB1bmRlZmluZWQsIGRlZmluZVByb3BlcnRpZXMpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIGRlZmluZVByb3BlcnRpZXMpO1xuICAgIH07XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW90ZShvYmplY3RUZW1wbGF0ZSwgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5IHx8IHt9O1xuXG4gICAgLypcbiAgICAgICAgaWYgd2UgaGF2ZW4ndCBzdXBwbGllZCBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGludG8gdGhlIGRlY29yYXRvcixcbiAgICAgICAgIGRlZmF1bHQgdGhlIHJvbGUgb2YgdGhpcyBmdW5jdGlvbiB0byBhIHNlcnZlciBBUEkgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBpZiAoIWRlZmluZVByb3BlcnR5Lm9uKSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5Lm9uID0gJ3NlcnZlcic7XG4gICAgfVxuXG4gICAgLy8gZnVuY3Rpb24gdGhhdCB3ZSBjYWxsIHRvIHZhbGlkYXRlIGFueSBjaGFuZ2VzIGZvciByZW1vdGUgY2FsbHNcbiAgICBsZXQgcmVtb3RlVmFsaWRhdG9yID0gZGVmaW5lUHJvcGVydHkuc2VydmVyVmFsaWRhdGlvbjtcbiAgICBsZXQgaXNQdWJsaWMgPSAhIWRlZmluZVByb3BlcnR5LnB1YmxpYztcblxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IG9iamVjdFRlbXBsYXRlLl9zZXR1cEZ1bmN0aW9uKFxuICAgICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZSxcbiAgICAgICAgICAgIGRlZmluZVByb3BlcnR5Lm9uLFxuICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkudmFsaWRhdGUsXG4gICAgICAgICAgICByZW1vdGVWYWxpZGF0b3IsXG4gICAgICAgICAgICBpc1B1YmxpYyxcbiAgICAgICAgICAgIGRlZmluZVByb3BlcnR5LnRhcmdldFxuICAgICAgICApO1xuXG4gICAgICAgIC8qXG4gICAgICAgICAgICB0aGlzIGZ1bmN0aW9uIGJlZW4gbWFya2VkIGFzIGEgc2VydmVyIEFQSSBlaXRoZXIgZXhwbGljaXRseSBvciBieSBkZWZhdWx0LlxuICAgICAgICAgICAgc2V0IHRoZSBhcHByb3ByaWF0ZSBtZXRhZGF0YS5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChkZWZpbmVQcm9wZXJ0eS5vbiA9PT0gJ3NlcnZlcicpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUuX19vbl9fID0gJ3NlcnZlcic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVmaW5lUHJvcGVydHkudHlwZSkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZS5fX3JldHVybnNfXyA9IGRlZmluZVByb3BlcnR5LnR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmluZVByb3BlcnR5Lm9mKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlLl9fcmV0dXJuc19fID0gZGVmaW5lUHJvcGVydHkub2Y7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlLl9fcmV0dXJuc2FycmF5X18gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5cblxuZnVuY3Rpb24gYXBwbHlSdWxlU2V0KHByb3AsIHJ1bGVTZXQpIHtcbiAgICBpZiAocHJvcCBpbnN0YW5jZW9mIEFycmF5ICYmIHJ1bGVTZXQgaW5zdGFuY2VvZiBBcnJheSAmJiBydWxlU2V0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHByb3Auc29tZShmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGVTZXQuaW5kZXhPZihyKSA+PSAwO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcHJvcDtcbiAgICB9XG59Il19
//# sourceMappingURL=decorators.js.map

@@ -79,2 +79,2 @@ "use strict";

exports.removeAll = removeAll;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbmdlR3JvdXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlcnMvQ2hhbmdlR3JvdXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQStFO0FBQy9FLCtEQUFpRDtBQUVqRCxTQUFnQixHQUFHLENBQUMsSUFBMkIsRUFBRSxjQUFjLEVBQUUsT0FBZ0I7SUFDN0UsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUUsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFIRCxrQkFHQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsY0FBYyxFQUFFLE9BQWdCO0lBQy9ELE9BQU8sR0FBRyxDQUFDLGNBQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFnQixDQUFDO0FBQy9ELENBQUM7QUFGRCxnREFFQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLElBQWdCLEVBQUUsY0FBYyxFQUFFLE9BQWdCO0lBQ2xGLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFlLENBQUM7QUFDNUQsQ0FBQztBQUZELGtEQUVDO0FBR0Q7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLElBQVksRUFBRSxjQUFjLEVBQUUsT0FBZ0I7SUFDakUsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxRSxDQUFDO0FBRkQsd0JBRUM7QUFHRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixTQUFTLENBQUMsSUFBWSxFQUFFLE9BQWdCO0lBQ3BELEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2hFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3ZDO0FBQ0wsQ0FBQztBQUpELDhCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyYXlHcm91cCwgQXJyYXlUeXBlcywgQ2hhbmdlLCBDaGFuZ2VHcm91cCwgU2Vtb3R1cyB9IGZyb20gJy4vVHlwZXMnO1xuaW1wb3J0ICogYXMgU3Vic2NyaXB0aW9ucyBmcm9tICcuL1N1YnNjcmlwdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0KHR5cGU6ICdjaGFuZ2UnIHwgQXJyYXlUeXBlcywgc3Vic2NyaXB0aW9uSWQsIHNlbW90dXM6IFNlbW90dXMpOiBDaGFuZ2VHcm91cCB8IEFycmF5R3JvdXAge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbnMuZ2V0U3Vic2NyaXB0aW9uKHNlbW90dXMsIHN1YnNjcmlwdGlvbklkKTtcbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uLmxvZ1t0eXBlXTtcbn1cblxuLyoqXG4gKiBHZXRzIFByb3BlcnR5IGNoYW5nZSBncm91cHMgKG5vbi1hcnJheSlcbiAqXG4gKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWRcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wQ2hhbmdlR3JvdXAoc3Vic2NyaXB0aW9uSWQsIHNlbW90dXM6IFNlbW90dXMpOiBDaGFuZ2VHcm91cCB7XG4gICAgcmV0dXJuIGdldChDaGFuZ2UsIHN1YnNjcmlwdGlvbklkLCBzZW1vdHVzKSBhcyBDaGFuZ2VHcm91cDtcbn1cblxuLyoqXG4gKiBHZXRzIEFycmF5IENoYW5nZSBHcm91cHNcbiAqXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHN1YnNjcmlwdGlvbklkXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJyYXlDaGFuZ2VHcm91cCh0eXBlOiBBcnJheVR5cGVzLCBzdWJzY3JpcHRpb25JZCwgc2Vtb3R1czogU2Vtb3R1cyk6IEFycmF5R3JvdXAge1xuICAgIHJldHVybiBnZXQodHlwZSwgc3Vic2NyaXB0aW9uSWQsIHNlbW90dXMpIGFzIEFycmF5R3JvdXA7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUgYSBjaGFuZ2UgZ3JvdXAgZnJvbSBhIHN1YnNjcmlwdGlvblxuICpcbiAqIEBwYXJhbSB0eXBlXG4gKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWQgdW5rbm93blxuICogQHBhcmFtIHNlbW90dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZSh0eXBlOiBzdHJpbmcsIHN1YnNjcmlwdGlvbklkLCBzZW1vdHVzOiBTZW1vdHVzKSB7XG4gICAgU3Vic2NyaXB0aW9ucy5nZXRTdWJzY3JpcHRpb24oc2Vtb3R1cywgc3Vic2NyaXB0aW9uSWQpLmxvZ1t0eXBlXSA9IHt9O1xufVxuXG5cbi8qKlxuICogUmVtb3ZlIGFsbCBjaGFuZ2UgZ3JvdXBzIGZyb20gYSBzdWJzY3JpcHRpb24gd2l0aCBnaXZlbiB0eXBlXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHNlbW90dXNcbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQWxsKHR5cGU6IHN0cmluZywgc2Vtb3R1czogU2Vtb3R1cykge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIGluIFN1YnNjcmlwdGlvbnMuZ2V0U3Vic2NyaXB0aW9ucyhzZW1vdHVzKSkge1xuICAgICAgICByZW1vdmUodHlwZSwgc3Vic2NyaXB0aW9uLCBzZW1vdHVzKTtcbiAgICB9XG59Il19
//# sourceMappingURL=ChangeGroups.js.map

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

function filterSyncStates(semotusClass, semotus) {
const { scope, state } = semotus.controller.syncState;
const { scope, state } = semotus.controller.syncState || {};
const syncStates = semotusClass.syncStates;

@@ -288,2 +288,2 @@ if (semotus.controller.__template__ === semotusClass) { // Don't filter out the controller

exports.logChanges = logChanges;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXJzL0NoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxxREFBdUM7QUFFdkM7O0dBRUc7QUFFSCw2RkFBNkY7QUFFN0YsU0FBUyxzQkFBc0IsQ0FBQyxPQUFnQjtJQUM1QyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvRixDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZ0IsRUFBRSxHQUFHO0lBQ2xELElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7U0FDSSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FBQztLQUNmO1NBQ0ksSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNyRSxPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDdEQ7U0FDSTtRQUNELE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0wsQ0FBQztBQWJELDRDQWFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsT0FBZ0IsRUFBRSxHQUFHO0lBQ3BELE9BQU8sT0FBTyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxZQUFZLEtBQUssS0FBSyxDQUFDO0FBQy9FLENBQUM7QUFGRCxnREFFQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsR0FBRztJQUNwRCxPQUFPLE9BQU8sQ0FB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Q0FBQztnQkFFMUQsSUFBSSxhQUFhLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtvQkFDMUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUMvQztnQkFFRCxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoQztTQUNKO0tBQ0o7QUFDTCxDQUFDO0FBMUNELGdDQTBDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW90ZWFibGVDbGFzcywgU2Vtb3R1cyB9IGZyb20gJy4vVHlwZXMnO1xuaW1wb3J0ICogYXMgU2Vzc2lvbnMgZnJvbSAnLi9TZXNzaW9ucyc7XG5cbi8qKlxuICogQFRPRE86IEZpbGwgb3V0IHdpdGggYXJyYXkgY2hhbmdlIGZ1bmN0aW9ucywgZXRjLlxuICovXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqIENoYW5nZSBNYW5hZ2VtZW50IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5mdW5jdGlvbiBjb250cm9sbGVySGFzU3luY1N0YXRlKHNlbW90dXM6IFNlbW90dXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiBzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLnN5bmNTdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0lzb2xhdGVkT2JqZWN0KHNlbW90dXM6IFNlbW90dXMsIG9iaik6IGJvb2xlYW4ge1xuICAgIGlmIChvYmplY3RPbkNsaWVudE9ubHkoc2Vtb3R1cywgb2JqKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAob2JqZWN0T25TZXJ2ZXJPbmx5KHNlbW90dXMsIG9iaikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2UgaWYgKG9iai5fX3RlbXBsYXRlX18uc3luY1N0YXRlcyAmJiBjb250cm9sbGVySGFzU3luY1N0YXRlKHNlbW90dXMpKSB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJTeW5jU3RhdGVzKG9iai5fX3RlbXBsYXRlX18sIHNlbW90dXMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdE9uQ2xpZW50T25seShzZW1vdHVzOiBTZW1vdHVzLCBvYmopIHtcbiAgICByZXR1cm4gc2Vtb3R1cy5yb2xlID09ICdjbGllbnQnICYmIG9iai5fX3RlbXBsYXRlX18uX190b1NlcnZlcl9fID09PSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdE9uU2VydmVyT25seShzZW1vdHVzOiBTZW1vdHVzLCBvYmopIHtcbiAgICByZXR1cm4gc2Vtb3R1cy5yb2xlID09ICdzZXJ2ZXInICYmIG9iai5fX3RlbXBsYXRlX18uX190b0NsaWVudF9fID09PSBmYWxzZTtcbn1cblxuXG4vKipcbiAqIEhlbHBlciBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIHNwZWNpZmllZCBzdGF0ZSBleGlzdHMgaW4gdGhpcyBhcnJheSBvZiBzeW5jU3RhdGVzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBzeW5jU3RhdGVzXG4gKiBAcGFyYW0gc2NvcGVcbiAqL1xuZnVuY3Rpb24gaGFzU3RhdGUoc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3luY1N0YXRlczogQXJyYXk8c3RyaW5nPiwgc2NvcGU6ICcrJyB8ICctJykge1xuICAgIC8vIElmIHRoZSBzdGF0ZSBpcyBlbXB0eSBzdHJpbmcsIG51bGwsIG9yIHVuZGVmaW5lZCwgd2lsbCBzeW5jIG9ubHkgc2Vtb3R1c0NsYXNzIHdpdGhvdXQgc3luY1N0YXRlcywgaWYgc3RhdGUgZXhpc3RzLCB3aWxsIGZpbHRlciBvdXQgYWxsIHRoYXQgZG8gbm90IGhhdmUgdGhhdCBzdGF0ZSBpbiB0aGVpciBzeW5jU3RhdGVzXG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICByZXR1cm4gc3luY1N0YXRlcy5sZW5ndGggPT09IDA7IC8vIElGIGFycmF5IGlzIGVtcHR5LCBUSEVOIGRlZmF1bHQgc3RhdGUgZXhpc3RzIGluIGFycmF5LiBFTFNFIElGIGFycmF5IGhhcyBhbnkgdmFsdWVzLCByZXR1cm5zIGZhbHNlXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoc3luY1N0YXRlcy5sZW5ndGggPT09IDAgJiYgc2NvcGUgPT09ICcrJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIFJldHVybiB0cnVlIG9uIGVtcHR5IHN5bmNTdGF0ZXMgYXJyYXksIG9ubHkgaWYgc2NvcGUgaXMgSU5DTFVTSVZFXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gc3luY1N0YXRlcy5pbmNsdWRlcyhzdGF0ZSk7IC8vIElGIGhhcyBzdGF0ZSBBTkQgZG9lcyBub3QgbWF0Y2ggYXJyYXkgaW5kZXhlcywgVEhFTiBzdGF0ZSBkb2VzIE5PVCBleGlzdFxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgZmlsdGVyIHRoaXMgcHJvcGVydHkgT1VUXG4gKiBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBub3QgZmlsdGVyIHRoaXMgcHJvcGVydHkgb3V0LCBhbmQgYWN0dWFsbHkgYWNjZXB0IGFuZCBjaGFuZ2UgcHJvcGVydGllcyBvbiB0aGlzIHJlZlxuICogICAgU2NvcGUgdmFsdWVzOlxuICogICAgSWYgJyonOiBFdmVyeXRoaW5nIGdldHMgc2VudCAoTm8gZXhwbGljaXQgY2hlY2sgZm9yIHRoaXMsIGp1c3QgY2hlY2tzIGZvciAtIGFuZCArKVxuICogICAgSWYgJy0nOiBFeGNsdXNpdmUgdG8gc3luY1N0YXRlc1xuICogICAgSWYgJysnOiBJbmNsdXNpdmUgb2YgW2RlZmF1bHRfc2V0LCBzeW5jU3RhdGVdXG4gKiBAcGFyYW0gc2Vtb3R1c0NsYXNzXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICovXG5mdW5jdGlvbiBmaWx0ZXJTeW5jU3RhdGVzKHNlbW90dXNDbGFzczogUmVtb3RlYWJsZUNsYXNzLCBzZW1vdHVzOiBTZW1vdHVzKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge3Njb3BlLCBzdGF0ZX0gPSBzZW1vdHVzLmNvbnRyb2xsZXIuc3luY1N0YXRlO1xuICAgIGNvbnN0IHN5bmNTdGF0ZXM6IEFycmF5PHN0cmluZz4gPSBzZW1vdHVzQ2xhc3Muc3luY1N0YXRlcztcblxuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIuX190ZW1wbGF0ZV9fID09PSBzZW1vdHVzQ2xhc3MpIHsgLy8gRG9uJ3QgZmlsdGVyIG91dCB0aGUgY29udHJvbGxlclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNjb3BlID09PSAnLScgfHwgc2NvcGUgPT09ICcrJykge1xuICAgICAgICByZXR1cm4gIWhhc1N0YXRlKHN0YXRlLCBzeW5jU3RhdGVzLCBzY29wZSk7XG4gICAgfVxuICAgIGVsc2UgeyAgLy8gc2NvcGUgaXMgZGVmYXVsdCAnKicsIG9yIGFueXRoaW5nIG5vdCAtIG9yICtcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEbyBub3QgZmlsdGVyIHRoaXMgc2Vtb3R1c0NsYXNzLCBkbyBub3QgYm90aGVyIGNoZWNraW5nIHN5bmNTdGF0ZVxuICAgIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBOT1QgY3JlYXRlIGNoYW5nZXMgZm9yIHRoZSBwcm9wZXJ0eSB0aGlzIGRlZmluZVByb3BlcnR5IG1ldGFkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aFxuICpcbiAqIE5vIG5lZWQgdG8gY2hlY2sgc3luY1N0YXRlcyBoZXJlIHNpbmNlIHRoaXMgaXMgb25seSBjYWxsZWQgd2hlblxuICogMSkgUmVhZGluZyB0aGUgc3RhdGljIHR5cGVzY3JpcHRcbiAqIDIpIE9uIHRoZSBjbGllbnQgc2lkZVxuICpcbiAqIEBwYXJhbSBkZWZpbmVQcm9wZXJ0eVxuICogQHBhcmFtIHNlbW90dXNDbGFzc1xuICogQHBhcmFtIHNlbW90dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvTm90Q2hhbmdlKGRlZmluZVByb3BlcnR5LCBzZW1vdHVzQ2xhc3M6ICBSZW1vdGVhYmxlQ2xhc3MgfCB1bmRlZmluZWQsIHNlbW90dXM6IFNlbW90dXMpIHtcbiAgICBpZiAoZGVmaW5lUHJvcGVydHkuaXNMb2NhbCkgeyAvLyBJZiB3ZSd2ZSBkZWZpbmVkIHRoZSBwcm9wZXJ0eSBhcyBsb2NhbCB0byB3aGVyZSBpdCdzIGNyZWF0ZWQgLyBtb2RpZmllZFxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZGVmaW5lUHJvcGVydHkudG9TZXJ2ZXIgPT09IGZhbHNlICYmIHNlbW90dXMucm9sZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIHdlJ3JlIHRyeWluZyB0byBzZW5kIHByb3BlcnR5IHRvIHRoZSBzZXJ2ZXIgZnJvbSBjbGllbnQsIHdoZW4gcHJvcCdzIHRvU2VydmVyID09IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIGlmIChkZWZpbmVQcm9wZXJ0eS50b0NsaWVudCA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIHNlbmQgcHJvcGVydHkgdG8gdGhlIGNsaWVudCBmcm9tIHNlcnZlciwgd2hlbiBwcm9wJ3MgdG9DbGllbnQgPT0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNlbW90dXNDbGFzcykgeyAvLyBEZWFsaW5nIHdpdGggYW4gYWN0dWFsIHNlbW90dXMgY2xhc3NcbiAgICAgICAgaWYgKHNlbW90dXNDbGFzcy5fX3RvU2VydmVyX18gPT09IGZhbHNlICYmIHNlbW90dXMucm9sZSA9PSAnY2xpZW50Jykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIHdlJ3JlIHRyeWluZyB0byBzZW5kIHByb3BlcnR5IHRvIHRoZSBzZXJ2ZXIgZnJvbSBjbGllbnQsIHdoZW4gdGhlIHdob2xlIHNlbW90dXNDbGFzcyBoYXMgdG9TZXJ2ZXIgPT0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2Vtb3R1c0NsYXNzLl9fdG9DbGllbnRfXyA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIHdlJ3JlIHRyeWluZyB0byBzZW5kIHByb3BlcnR5IHRvIHRoZSBjbGllbnQgZnJvbSBzZXJ2ZXIsIHdoZW4gdGhlIHdob2xlIHNlbW90dXNDbGFzcyBoYXMgdG9DbGllbnQgPT0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBub3QgYWNjZXB0IGNoYW5nZXMgZm9yIHRoZSBwcm9wZXJ0eSB0aGlzIGRlZmluZVByb3BlcnR5IG1ldGFkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aFxuICpcbiAqXG4gKiBAcGFyYW0gZGVmaW5lUHJvcGVydHlcbiAqIEBwYXJhbSBzZW1vdHVzQ2xhc3NcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb05vdEFjY2VwdChkZWZpbmVQcm9wZXJ0eSwgc2Vtb3R1c0NsYXNzOiBSZW1vdGVhYmxlQ2xhc3MsIHNlbW90dXM6IFNlbW90dXMpIHtcbiAgICBpZiAoZGVmaW5lUHJvcGVydHkuaXNMb2NhbCkgeyAvLyBJZiB3ZSd2ZSBkZWZpbmVkIHRoZSBwcm9wZXJ0eSBhcyBsb2NhbCB0byB3aGVyZSBpdCdzIGNyZWF0ZWQgLyBtb2RpZmllZFxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZGVmaW5lUHJvcGVydHkudG9TZXJ2ZXIgPT09IGZhbHNlICYmIHNlbW90dXMucm9sZSA9PT0gJ3NlcnZlcicpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIHdlJ3JlIHRyeWluZyB0byBhY2NlcHQgY2hhbmdlcyB3aGVyZSB0b1NlcnZlciA9PSBmYWxzZSwgYnV0IHdlJ3JlIG9uIHRoZSBzZXJ2ZXJcbiAgICB9XG4gICAgZWxzZSBpZiAoZGVmaW5lUHJvcGVydHkudG9DbGllbnQgPT09IGZhbHNlICYmIHNlbW90dXMucm9sZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIHdlJ3JlIHRyeWluZyB0byBhY2NlcHQgY2hhbmdlcyB3aGVyZSB0b0NsaWVudCBpcyBmYWxzZSwgYnV0IHdlJ3JlIG9uIHRoZSBjbGllbnRcbiAgICB9XG4gICAgZWxzZSBpZiAoc2Vtb3R1c0NsYXNzLl9fdG9TZXJ2ZXJfXyA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09ICdzZXJ2ZXInKSB7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gYWNjZXB0IGNoYW5nZXMgd2hlcmUgc2Vtb3R1c0NsYXNzJ3MgdG9TZXJ2ZXIgPT0gZmFsc2UsIGJ1dCB3ZSdyZSBvbiB0aGUgc2VydmVyXG4gICAgfVxuICAgIGVsc2UgaWYgKHNlbW90dXNDbGFzcy5fX3RvQ2xpZW50X18gPT09IGZhbHNlICYmIHNlbW90dXMucm9sZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIHdlJ3JlIHRyeWluZyB0byBhY2NlcHQgY2hhbmdlcyB3aGVyZSBzZW1vdHVzQ2xhc3MncyB0b0NsaWVudCBpcyBmYWxzZSwgYnV0IHdlJ3JlIG9uIHRoZSBjbGllbnRcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udHJvbGxlckhhc1N5bmNTdGF0ZShzZW1vdHVzKSkgeyAvLyBXZSd2ZSBzZXQgdGhlIHN5bmNTdGF0ZSBwcm9wZXJ0eSBvbiB0aGUgY29udHJvbGxlciwgYW5kIHdlIGhhdmUgYSBzZW1vdHVzQ2xhc3NcbiAgICAgICAgcmV0dXJuIGZpbHRlclN5bmNTdGF0ZXMoc2Vtb3R1c0NsYXNzLCBzZW1vdHVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgY2hhbmdlcyBzaG91bGQgYmUgYWNjZXB0ZWQgZm9yIGEgcHJvcGVydHlcbiAqXG4gKiBAcGFyYW0gZGVmaW5lUHJvcGVydHkgdW5rbm93blxuICogQHBhcmFtIHNlbW90dXNDbGFzcyB1bmtub3duXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICpcbiAqIEByZXR1cm5zIHtCb29sZWFufSB1bmtub3duXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjY2VwdChkZWZpbmVQcm9wZXJ0eSwgc2Vtb3R1c0NsYXNzOiBSZW1vdGVhYmxlQ2xhc3MsIHNlbW90dXM6IFNlbW90dXMpIHtcbiAgICByZXR1cm4gIShkb05vdEFjY2VwdChkZWZpbmVQcm9wZXJ0eSwgc2Vtb3R1c0NsYXNzLCBzZW1vdHVzKSk7XG59XG5cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBjaGFuZ2VzIG5lZWQgdG8gYmUgY3JlYXRlZCBmb3IgYSBwcm9wZXJ0eVxuICpcbiAqIEBwYXJhbSBkZWZpbmVQcm9wZXJ0eSB1bmtub3duXG4gKiBAcGFyYW0gc2Vtb3R1c0NsYXNzIHVua25vd25cbiAqIEBwYXJhbSBzZW1vdHVzXG4gKlxuICogQHJldHVybnMge0Jvb2xlYW59IHVua25vd25cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoZGVmaW5lUHJvcGVydHksIHNlbW90dXNDbGFzczogUmVtb3RlYWJsZUNsYXNzIHwgdW5kZWZpbmVkLCBzZW1vdHVzOiBTZW1vdHVzKSB7XG4gICAgcmV0dXJuICEoZG9Ob3RDaGFuZ2UoZGVmaW5lUHJvcGVydHksIHNlbW90dXNDbGFzcywgc2Vtb3R1cykpO1xufVxuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIGFueSB0cmFja2luZyBvZiBvbGQgdmFsdWVzIGlzIG5lZWRlZFxuICpcbiAqXG4gKiBGb3IgYSBzcGVjaWZpYyBwcm9wZXJ0eSBpZiBpc0xvY2FsIGlzIHRydWUsIGl0IG1lYW5zIHRoYXQgdGhlIHByb3BlcnR5IHdpbGwgbmV2ZXIgYmUgc3luY2VkIG92ZXIgdGhlIHdpcmVcbiAqIElmIHRvU2VydmVyID09PSBmYWxzZSBBTkQgdG9DbGllbnQgPT09IGZhbHNlLCBpdCBpcyBhbm90aGVyIGluZGljYXRvciB0aGF0IHRoaXMgcHJvcGVydHkgd2lsbCBuZXZlciBiZSBzeW5jZWQgb3ZlciB0aGUgd2lyZVxuICogQHBhcmFtIGRlZmluZVByb3BlcnR5IHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdW5rbm93blxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYW5hZ2UoZGVmaW5lUHJvcGVydHkpIHtcbiAgICBjb25zdCBpc0xvY2FsID0gZGVmaW5lUHJvcGVydHkuaXNMb2NhbCA9PT0gdHJ1ZTtcbiAgICBjb25zdCBpc0xvY2FsQWx0ID0gZGVmaW5lUHJvcGVydHkudG9TZXJ2ZXIgPT09IGZhbHNlICYmIGRlZmluZVByb3BlcnR5LnRvQ2xpZW50ID09PSBmYWxzZTtcbiAgICByZXR1cm4gIShpc0xvY2FsIHx8IGlzTG9jYWxBbHQpO1xufVxuXG5cbi8qKlxuICogUmVnaXN0ZXIgc29tZSBvZiB0aGUgbmV3IHByb3BlcnR5IGNoYW5nZXMgLyBjcmVhdGlvbnMgdG8gYSBsb2dcbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGUoc2Vtb3R1czogU2Vtb3R1cykge1xuICAgIGNvbnN0IHNlc3Npb24gPSBTZXNzaW9ucy5nZXQoc2Vtb3R1cyk7XG5cbiAgICBmb3IgKGNvbnN0IG9iaiBpbiBzZXNzaW9uLm9iamVjdHMpIHtcbiAgICAgICAgbG9nQ2hhbmdlcyhzZXNzaW9uLm9iamVjdHNbb2JqXSwgc2Vtb3R1cyk7XG4gICAgfVxufVxuXG4vKipcbiAqIERlbGV0ZSBzZXNzaW9uIG9iamVjdHMgZm9yIHRlc3RzLCBiZWNhdXNlIHVuaXQgdGVzdHMgZm9yIGNsaWVudCBvYmplY3QgZXJyb25lb3VzbHkgaGF2ZSBzZXJ2ZXIgc2Vzc2lvbiBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckNsaWVudFNlc3Npb24oc2Vtb3R1czogU2Vtb3R1cywgY29udHJvbGxlcikge1xuICAgIGNvbnN0IHNlc3Npb24gPSBTZXNzaW9ucy5nZXQoc2Vtb3R1cyk7XG5cbiAgICBmb3IgKGNvbnN0IG9iaiBpbiBzZXNzaW9uLm9iamVjdHMpIHtcbiAgICAgICAgaWYgKG9iaiAhPT0gY29udHJvbGxlci5fX2lkX18pIHtcbiAgICAgICAgICAgIGRlbGV0ZSBzZXNzaW9uLm9iamVjdHNbb2JqXTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBTaW11bGF0ZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIGJ5IHRyYWNraW5nIHRoZSBvbGQgdmFsdWUgYW5kIGlmIGl0XG4gKiBoYXMgY2hhbmdlZCwgY3JlYXRpbmcgYSBjaGFuZ2UgbG9nLiAgbG9jYWwgcHJvcGVydGllcyBhcmUgaWdub3JlZFxuICogYW5kIHByb3BlcnRpZXMgbm90IHRvIGJlIHRyYW5zbWl0dGVkIHRvIHRoZSBvdGhlciBwYXJ0eSBkbyBub3RcbiAqIGdlbmVyYXRlIGNoYW5nZXMgYnV0IHN0aWxsIHRyYWNrIHRoZSBvbGQgdmFsdWUgc28gdGhhdCBjaGFuZ2VzXG4gKiBjYW4gYmUgYXBwbGllZCBmcm9tIHRoZSBvdGhlciBwYXJ0eVxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gb2JqIC0gb2JqZWN0IHRvIGJlIHByb2Nlc3NlZFxuICogQHBhcmFtIHNlbW90dXNcbiAqXG4gKiBAcHJpdmF0ZVxuICogT05MWSBDQUxMRUQgRlJPTSBDTElFTlRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvZ0NoYW5nZXMob2JqLCBzZW1vdHVzOiBTZW1vdHVzKSB7XG4gICAgLy8gR28gdGhyb3VnaCBhbGwgdGhlIHByb3BlcnRpZXMgYW5kIHRyYW5zZmVyIHRoZW0gdG8gbmV3bHkgY3JlYXRlZCBvYmplY3RcbiAgICBjb25zdCBwcm9wcyA9IG9iai5fX3RlbXBsYXRlX18uZ2V0UHJvcGVydGllcygpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIGluIHByb3BzKSB7XG4gICAgICAgIGNvbnN0IGRlZmluZVByb3BlcnR5ID0gcHJvcHNbcHJvcF07XG4gICAgICAgIGNvbnN0IHR5cGUgPSBkZWZpbmVQcm9wZXJ0eS50eXBlO1xuXG4gICAgICAgIGlmICh0eXBlICYmIG1hbmFnZShkZWZpbmVQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZUNoYW5nZXMgPSBjcmVhdGUoZGVmaW5lUHJvcGVydHksIG9iai5fX3RlbXBsYXRlX18sIHNlbW90dXMpO1xuXG4gICAgICAgICAgICBpZiAodHlwZSA9PSBBcnJheSkge1xuICAgICAgICAgICAgICAgIGlmIChjcmVhdGVDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmpbYF9fJHtwcm9wfWBdICYmICFvYmpbcHJvcF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCB0byBudWxsIHRyZWF0ZWQgbGlrZSBhIHByb3BlcnR5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vtb3R1cy5fY2hhbmdlZFZhbHVlKG9iaiwgcHJvcCwgb2JqW3Byb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvYmpbcHJvcF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCBmcm9tIG51bGwgbGlrZSBhbiBhcnJheSByZWYgd2hlcmUgYXJyYXkgd2lsbCBiZSBjcmVhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9ialtgX18ke3Byb3B9YF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqW3Byb3BdLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCB0byBlbXB0eSBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW1vdHVzLl9jaGFuZ2VkVmFsdWUob2JqLCBwcm9wLCBvYmpbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtgX18ke3Byb3B9YF0gPSBbXTsgLy8gU3RhcnQgZnJvbSBzY3JhdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbW90dXMuX3JlZmVyZW5jZWRBcnJheShvYmosIHByb3AsIG9ialtgX18ke3Byb3B9YF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyVmFsdWUgPSBzZW1vdHVzLl9jb252ZXJ0VmFsdWUob2JqW3Byb3BdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2VmFsdWUgPSBzZW1vdHVzLl9jb252ZXJ0VmFsdWUob2JqW2BfXyR7cHJvcH1gXSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY3JlYXRlQ2hhbmdlcyAmJiBjdXJyVmFsdWUgIT09IHByZXZWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZW1vdHVzLl9jaGFuZ2VkVmFsdWUob2JqLCBwcm9wLCBvYmpbcHJvcF0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9ialtgX18ke3Byb3B9YF0gPSBvYmpbcHJvcF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=Changes.js.map

@@ -424,2 +424,2 @@ "use strict";

exports.postCallErrorLog = postCallErrorLog;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvY2Vzc0NhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9Qcm9jZXNzQ2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUQ7QUFHdkQsTUFBTSxVQUFVLEdBQUcsaUNBQWlDLENBQUM7QUFFckQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUFDLE9BQTJCLEVBQUUsV0FBcUI7SUFFaEYsSUFBSTtRQUNBLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsTUFBTSxXQUFXLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksVUFBVSxHQUFHLE1BQU0sMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsVUFBVSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzFDO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDVixNQUFNLGVBQWUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdkM7QUFDTCxDQUFDO0FBYkQsa0NBYUM7QUFHRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLFNBQVMsQ0FBQyxPQUEyQjtJQUNoRCxNQUFNLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUMsR0FBRyxPQUFPLENBQUM7SUFFbEgsSUFBSSxzQkFBc0IsRUFBRTtRQUN4QixzQkFBc0IsRUFBRSxD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QVE7WUFDbEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQ3JCLFFBQVEsRUFBRSxJQUFBLG1CQUFPLEVBQUMsV0FBVyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtTQUNoQztLQUNKLENBQUM7SUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQWxCRCw0Q0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWxheSwgZ2V0RXJyb3IsIGxvZ1RpbWUgfSBmcm9tICcuL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBDYWxsQ29udGV4dCwgUHJvY2Vzc0NhbGxQYXlsb2FkLCBSZW1vdGVDYWxsLCBTZW1vdHVzLCBTZXNzaW9uIH0gZnJvbSAnLi9UeXBlcyc7XG5cbmNvbnN0IG1vZHVsZU5hbWUgPSBgc2Vtb3R1cy9zcmMvaGVscGVycy9Qcm9jZXNzQ2FsbGA7XG5cbi8qKlxuICogV2UgcHJvY2VzcyB0aGUgY2FsbCB0aGUgcmVtb3RlIG1ldGhvZCBpbiBzdGFnZXMgc3RhcnRpbmcgYnkgbGV0dGluZyB0aGUgY29udHJvbGxlciBleGFtaW5lIHRoZVxuICogY2hhbmdlcyAocHJlQ2FsbEhvb2spIGFuZCBnaXZpbmcgaXQgYSBjaGFuY2UgdG8gcmVmcmVzaCBkYXRhIGlmIGl0IG5lZWRzIHRvLiAgVGhlbiB3ZSBhcHBseSBhbnlcbiAqIGNoYW5nZXMgaW4gdGhlIG1lc3NhZ2VzIGFuZCBnaXZlIHRoZSBvYmplY3Qgb3duaW5nIHRoZSBtZXRob2QgYSBjaGFuY2UgdG8gdmFsaWRhdGUgdGhhdCB0aGVcbiAqIGNhbGwgaXMgdmFsaWQgYW5kIHRha2UgY2FyZSBvZiBhbnkgYXV0aG9yaXphdGlvbiBjb25jZXJucy4gIEZpbmFsbHkgd2UgbGV0IHRoZSBjb250cm9sbGVyIHBlcmZvcm1cbiAqIGFueSBwb3N0LWNhbGwgcHJvY2Vzc2luZyBzdWNoIGFzIGNvbW1pdGluZyBkYXRhIGFuZCB0aGVuIHdlIGRlYWwgd2l0aCBhIGZhaWx1cmUgb3Igc3VjY2Vzcy5cbiAqXG4gKiBAcGFyYW0gcGF5bG9hZFxuICogQHBhcmFtIHt1bmtub3dufSBmb3JjZXVwZGF0ZSB1bmtub3duXG4gKlxuICogQHJldHVybnMge3Vua25vd259IHVua25vd25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDYWxsKHBheWxvYWQ6IFByb2Nlc3NDYWxsUGF5bG9hZCwgZm9yY2V1cGRhdGU/OiBib29sZWFuKSB7XG5cbiAgICB0cnkge1xuICAgICAgICBmb3JjZXVwZGF0ZSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShmb3JjZXVwZGF0ZSk7XG4gICAgICAgIGF3YWl0IHByZUNhbGxIb29rKHBheWxvYWQsIGZvcmNldXBkYXRlKTtcbiAgICAgICAgbGV0IHZhbGlkYXRpb24gPSBhd2FpdCBhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwocGF5bG9hZCk7XG4gICAgICAgIHZhbGlkYXRpb24gPSBhd2FpdCBjdXN0b21WYWxpZGF0aW9uKHBheWxvYWQsIHZhbGlkYXRpb24pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWxsSWZWYWxpZChwYXlsb2FkLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgYXdhaXQgcG9zdENhbGxIb29rKHBheWxvYWQsIHJlc3VsdCk7XG4gICAgICAgIGF3YWl0IHBvc3RDYWxsU3VjY2VzcyhwYXlsb2FkLCByZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBhd2FpdCBwb3N0Q2FsbEZhaWx1cmUocGF5bG9hZCwgZXJyKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBJZiB0aGVyZSBpcyBhbiB1cGRhdGUgY29uZmxpY3Qgd2Ugd2FudCB0byByZXRyeSBhZnRlciByZXN0b3JpbmcgdGhlIHNlc3Npb25cbiAqXG4gKiBAcmV0dXJucyB7Kn0gdW5rbm93blxuICovXG5hc3luYyBmdW5jdGlvbiByZXRyeUNhbGwocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkKSB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG5cbiAgICBpZiAocmVzdG9yZVNlc3Npb25DYWxsYmFjaykge1xuICAgICAgICByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NDYWxsKHBheWxvYWQsIHRydWUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSB3aGF0IG9iamVjdHMgY2hhbmdlZCBhbmQgcGFzcyB0aGlzIHRvIHRoZSBwcmVTZXJ2ZXJDYWxsIG1ldGhvZCBvbiB0aGUgY29udHJvbGxlclxuICpcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0gIGZvcmNldXBkYXRlIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyAgdW5rbm93blxuICovXG5hc3luYyBmdW5jdGlvbiBwcmVDYWxsSG9vayhwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIGZvcmNldXBkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIHNlc3Npb24sIGNhbGxDb250ZXh0LCBIVFRQT2Jqc30gPSBwYXlsb2FkO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHByZUNhbGxIb29rLm5hbWU7XG4gICAgc2Vtb3R1cy5sb2dnZXIuaW5mbyhcbiAgICAgICAge1xuICAgICAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICAgICAgZnVuY3Rpb246IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiAnbWlsZXN0b25lJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogJ3ByZVNlcnZlckNhbGwnLFxuICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLnByZVNlcnZlckNhbGwpIHtcbiAgICAgICAgbGV0IGNoYW5nZXMgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBvYmpJZCBpbiBKU09OLnBhcnNlKHJlbW90ZUNhbGwuY2hhbmdlcykpIHtcbiAgICAgICAgICAgIGNoYW5nZXNbc2Vtb3R1cy5fX2RpY3Rpb25hcnlfX1tvYmpJZC5yZXBsYWNlKC9bXi1dKi0vLCAnJykucmVwbGFjZSgvLS4qLywgJycpXS5fX25hbWVfX10gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IHNlc3Npb24ub2JqZWN0c1tyZW1vdGVDYWxsLmlkXTtcblxuICAgICAgICAvLyBOZWVkIHRvIGRvdWJsZSBjaGVjayBpZiBub3QgaW4gc2Vzc2lvbiwgd2hhdCB0aGUgdGVtcGxhdGUgaXMuXG4gICAgICAgIGxldCByZW1vdGVUZW1wbGF0ZSA9IHNlbW90dXMuX19kaWN0aW9uYXJ5X19bcmVtb3RlQ2FsbC5pZC5yZXBsYWNlKC9bXi1dKi0vLCAnJykucmVwbGFjZSgvLS4qLywgJycpXTtcbiAgICAgICAgbGV0IGlzUHVibGljID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHJlbW90ZU9iamVjdCkge1xuICAgICAgICAgICAgaXNQdWJsaWMgPSBzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInICYmIHJlbW90ZU9iamVjdFtyZW1vdGVDYWxsLm5hbWVdICYmIHJlbW90ZU9iamVjdFtyZW1vdGVDYWxsLm5hbWVdLnJlbW90ZVB1YmxpYztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyZW1vdGVUZW1wbGF0ZSkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNsYXNzIGRvZXNuJ3QgZXhpc3QsIHdlIHNob3VsZCBnZXQgdGhlIHJlbW90ZSBmdW5jdGlvbiBmcm9tIHRoZSBwcm90b3R5cGVcbiAgICAgICAgICAgIGlzUHVibGljID0gc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiByZW1vdGVUZW1wbGF0ZS5wcm90b3R5cGVbcmVtb3RlQ2FsbC5uYW1lXSAmJiByZW1vdGVUZW1wbGF0ZS5wcm90b3R5cGVbcmVtb3RlQ2FsbC5uYW1lXS5yZW1vdGVQdWJsaWM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZW1vdHVzLmxvZ2dlci5lcnJvcih7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICdtaWxlc3RvbmUnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZmluZCB0ZW1wbGF0ZSBmb3IgJyArIG9iaklkLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHk6ICdwcmVTZXJ2ZXJDYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbW90dXMuY29udHJvbGxlci5wcmVTZXJ2ZXJDYWxsLmNhbGwoXG4gICAgICAgICAgICBzZW1vdHVzLmNvbnRyb2xsZXIsXG4gICAgICAgICAgICByZW1vdGVDYWxsLmNoYW5nZXMubGVuZ3RoID4gMixcbiAgICAgICAgICAgIGNoYW5nZXMsXG4gICAgICAgICAgICBjYWxsQ29udGV4dCxcbiAgICAgICAgICAgIGZvcmNldXBkYXRlLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbCxcbiAgICAgICAgICAgIGlzUHVibGljLFxuICAgICAgICAgICAgSFRUUE9ianNcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbi8qKlxuICogQXBwbHkgY2hhbmdlcyBpbiB0aGUgbWVzc2FnZSBhbmQgdGhlbiB2YWxpZGF0ZSB0aGUgY2FsbC4gIFRocm93IFwiU3luYyBFcnJvclwiIGlmIGNoYW5nZXMgY2FuJ3QgYmUgYXBwbGllZFxuICpcbiAqIEByZXR1cm5zIHt1bmtub3dufSB1bmtub3duXG4gKi9cbmZ1bmN0aW9uIGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbChwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcbiAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwubmFtZTtcblxuICAgIHNlbW90dXMubG9nZ2VyLmluZm8oXG4gICAgICAgIHtcbiAgICAgICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHk6ICdhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwnLFxuICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZSxcbiAgICAgICAgICAgICAgICByZW1vdGVDYWxsSWQ6IHJlbW90ZUNhbGwuaWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBsZXQgY2hhbmdlcyA9IEpTT04ucGFyc2UocmVtb3RlQ2FsbC5jaGFuZ2VzKTtcblxuICAgIGNvbnN0IHJlcyA9IHNlbW90dXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzLCBzZW1vdHVzLnJvbGUgPT09ICdjbGllbnQnLCBzdWJzY3JpcHRpb25JZCwgY2FsbENvbnRleHQpO1xuICAgIGlmIChyZXMpIHtcbiAgICAgICAgY29uc3Qgb2JqID0gc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdO1xuXG4gICAgICAgIGlmICghb2JqKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIG9iamVjdCBmb3IgcmVtb3RlIGNhbGwgJHtyZW1vdGVDYWxsLmlkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRoaXMgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gY2xpZW50XG4gICAgICAgIGlmIChvYmouX19wcm90b19fW3JlbW90ZUNhbGwubmFtZV0uX19vbl9fICE9PSAnc2VydmVyJykge1xuICAgICAgICAgICAgdGhyb3cgJ0ludmFsaWQgRnVuY3Rpb24gQ2FsbDsgbm90IGFuIEFQSSBmdW5jdGlvbic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiBvYmoudmFsaWRhdGVTZXJ2ZXJDYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnZhbGlkYXRlU2VydmVyQ2FsbC5jYWxsKG9iaiwgcmVtb3RlQ2FsbC5uYW1lLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAnU3luYyBFcnJvcic7XG4gICAgfVxufVxuXG4vKipcbiAqIEFwcGx5IGZ1bmN0aW9uIHNwZWNpZmljIGN1c3RvbSBzZXJ2ZXJTaWRlIHZhbGlkYXRpb24gZnVuY3Rpb25zXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWYWxpZCAtIFJlc3VsdCBvZiBwcmV2aW91cyB2YWxpZGF0aW9uIHN0ZXAgKGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbClcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgcGFzc2VkIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbVZhbGlkYXRpb24ocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBpc1ZhbGlkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gY3VzdG9tVmFsaWRhdGlvbi5uYW1lO1xuXG4gICAgbGV0IGxvZ2dlck9iamVjdCA9IHtcbiAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnY3VzdG9tVmFsaWRhdGlvbicsXG4gICAgICAgICAgICBjYWxsOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZSxcbiAgICAgICAgICAgIHJlbW90ZUNhbGxJZDogcmVtb3RlQ2FsbC5pZFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGxldCByZW1vdGVPYmplY3QgPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG5cbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKGxvZ2dlck9iamVjdCk7XG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiByZW1vdGVPYmplY3RbcmVtb3RlQ2FsbC5uYW1lXS5zZXJ2ZXJWYWxpZGF0aW9uKSB7XG4gICAgICAgIGxldCBhcmdzID0gc2Vtb3R1cy5fZXh0cmFjdEFyZ3VtZW50cyhyZW1vdGVDYWxsKTtcbiAgICAgICAgYXJncy51bnNoaWZ0KHJlbW90ZU9iamVjdCk7XG5cbiAgICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdFtyZW1vdGVDYWxsLm5hbWVdLnNlcnZlclZhbGlkYXRpb24uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuXG4vKipcbiAqIElmIHRoZSBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgYW5kIHRoZSB2YWxpZGF0aW9uIHdhcyBzdWNjZXNzZnVsIGNhbGwgdGhlIG1ldGhvZFxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmFsaWQgLSB0YWtlcyBhIGZsYWcgaWYgdGhlIGNhbGwgaXMgdmFsaWQgb3Igbm90LCBpZiBpdCBpcyB0aGVuIHdlIHByb2NlZWQgbm9ybWFsbHksXG4gKiBvdGhlcndpc2UsIHdlIHRocm93IGFuIGVycm9yIGFuZCBzdG9wIGV4ZWN1dGlvblxuICpcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHJldHVybnMge3Vua25vd259IHVua25vd25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2FsbElmVmFsaWQocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBpc1ZhbGlkOiBib29sZWFuKSB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gY2FsbElmVmFsaWQubmFtZTtcblxuICAgIGxldCBsb2dnZXJPYmplY3QgPSB7XG4gICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgZnVuY3Rpb246IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgY2F0ZWdvcnk6ICdtaWxlc3RvbmUnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhY3Rpdml0eTogJ2NhbGxJZlZhbGlkJyxcbiAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsLmlkXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgc2Vtb3R1cy5sb2dnZXIuaW5mbyhsb2dnZXJPYmplY3QpO1xuXG4gICAgbGV0IG9iaiA9IHNlc3Npb24ub2JqZWN0c1tyZW1vdGVDYWxsLmlkXTtcblxuICAgIGlmICghb2JqW3JlbW90ZUNhbGwubmFtZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlbW90ZUNhbGwubmFtZSArICcgZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1ZhbGlkICYmIHJlbW90ZUNhbGwgJiYgcmVtb3RlQ2FsbC5uYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZW1vdGVDYWxsLm5hbWUgKyAnIHJlZnVzZWQnKTtcbiAgICB9XG5cbiAgICBsZXQgYXJncyA9IHNlbW90dXMuX2V4dHJhY3RBcmd1bWVudHMocmVtb3RlQ2FsbCk7XG5cbiAgICByZXR1cm4gb2JqW3JlbW90ZUNhbGwubmFtZV0uYXBwbHkob2JqLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBMZXQgdGhlIGNvbnRyb2xsZXIga25vdyB0aGF0IHRoZSBtZXRob2Qgd2FzIGNvbXBsZXRlZCBhbmQgZ2l2ZSBpdCBhIGNoYW5jZSB0byBjb21taXQgY2hhbmdlc1xuICpcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0gIHJldHVyblZhbHVlIHVua25vd25cbiAqXG4gKiBAcmV0dXJuc1xuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0Q2FsbEhvb2socGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCByZXR1cm5WYWx1ZSkge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCwgSFRUUE9ianN9ID0gcGF5bG9hZDtcblxuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLnBvc3RTZXJ2ZXJDYWxsKSB7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXM6IGJvb2xlYW4gPSByZW1vdGVDYWxsLmNoYW5nZXMubGVuZ3RoID4gMjtcbiAgICAgICAgYXdhaXQgc2Vtb3R1cy5jb250cm9sbGVyLnBvc3RTZXJ2ZXJDYWxsLmNhbGwoc2Vtb3R1cy5jb250cm9sbGVyLCBoYXNDaGFuZ2VzLCBjYWxsQ29udGV4dCwgc2Vtb3R1cy5jaGFuZ2VTdHJpbmcsIEhUVFBPYmpzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIFBhY2thZ2UgdXAgYW55IGNoYW5nZXMgcmVzdWx0aW5nIGZyb20gdGhlIGV4ZWN1dGlvbiBhbmQgc2VuZCB0aGVtIGJhY2sgaW4gdGhlIG1lc3NhZ2UsIGNsZWFyaW5nXG4gKiBvdXIgY2hhbmdlIHF1ZXVlIHRvIGFjY3VtdWxhdGUgbW9yZSBjaGFuZ2VzIGZvciB0aGUgbmV4dCBjYWxsXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbElkXG4gKiBAcGFyYW0ge3Vua25vd259IHJldCB1bmtub3duXG4gKi9cbmZ1bmN0aW9uIHBvc3RDYWxsU3VjY2VzcyhwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIHJldCk6IHZvaWQge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCwgc2Vzc2lvbiwgcmVtb3RlQ2FsbElkfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcG9zdENhbGxTdWNjZXNzLm5hbWU7XG5cbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKFxuICAgICAgICB7XG4gICAgICAgICAgICBtb2R1bGU6IG1vZHVsZU5hbWUsXG4gICAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgY2F0ZWdvcnk6ICdtaWxlc3RvbmUnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5OiAncG9zdENhbGwuc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgIGNhbGxUaW1lOiBsb2dUaW1lKGNhbGxDb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHBhY2thZ2VDaGFuZ2VzKHNlbW90dXMsIHNlc3Npb24se1xuICAgICAgICB0eXBlOiAncmVzcG9uc2UnLFxuICAgICAgICBzeW5jOiB0cnVlLFxuICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoc2Vtb3R1cy5fdG9UcmFuc3BvcnQocmV0KSksXG4gICAgICAgIG5hbWU6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgcmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsSWRcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gaWRlbnRpZnkgaWYgdGhlcmUncyBhIHBvc3RTZXJ2ZXJFcnJvckhhbmRsZXIgY2FsbGJhY2sgb24gdGhlIGJhc2UgY29udHJvbGxlclxuICogSWYgdGhlcmUgaXMsIHdlIGV4ZWN1dGUgdGhlIGhhbmRsZXIsIGFuZCBpZiB3ZSBjYXRjaCBhbiBlcnJvciBpbiB0aGUgaGFuZGxlciwgd2UgcHJvcG9nYXRlIGl0IHVwIHRvIHRoZSBsb2dnZXIuXG4gKiBAcGFyYW0gbG9nZ2VyXG4gKiBAcGFyYW0geyp9IGNvbnRyb2xsZXJcbiAqIEBwYXJhbSB0eXBlXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHBhcmFtIHJlbW90ZUNhbGxJZFxuICogQHBhcmFtIGNhbGxDb250ZXh0XG4gKiBAcGFyYW0gY2hhbmdlU3RyaW5nXG4gKiBAcGFyYW0gc2Vzc2lvblxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlRXJyb3JIYW5kbGVyKGxvZ2dlciwgY29udHJvbGxlcjogYW55LCB0eXBlLCByZW1vdGVDYWxsOiBSZW1vdGVDYWxsLCByZW1vdGVDYWxsSWQsIGNhbGxDb250ZXh0OiBDYWxsQ29udGV4dCwgY2hhbmdlU3RyaW5nLCBzZXNzaW9uOiBTZXNzaW9uKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVzb2x2ZUVycm9ySGFuZGxlci5uYW1lO1xuICAgIGlmIChjb250cm9sbGVyICYmIGNvbnRyb2xsZXIucG9zdFNlcnZlckVycm9ySGFuZGxlcikge1xuICAgICAgICBsZXQgZXJyb3JUeXBlID0gdHlwZTtcbiAgICAgICAgbGV0IHJlbW90ZUNhbGxOYW1lID0gcmVtb3RlQ2FsbC5uYW1lO1xuICAgICAgICBsZXQgb2JqID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdKSB7XG4gICAgICAgICAgICBvYmogPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNvbnRyb2xsZXIucG9zdFNlcnZlckVycm9ySGFuZGxlci5jYWxsKGNvbnRyb2xsZXIsIGVycm9yVHlwZSwgcmVtb3RlQ2FsbElkLCBvYmosIHJlbW90ZUNhbGxOYW1lLCBjYWxsQ29udGV4dCwgY2hhbmdlU3RyaW5nKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxldCBsb2dCb2R5ID0ge1xuICAgICAgICAgICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnbWlsZXN0b25lJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ1VzZXIgZGVmaW5lZCBwb3N0U2VydmVyRXJyb3JIYW5kbGVyIHRocmV3IGFuIGVycm9yJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5OiAncG9zdENhbGwucmVzb2x2ZUVycm9ySGFuZGxlcicsXG4gICAgICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IobG9nQm9keSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogSGFuZGxlIGVycm9ycyBieSByZXR1cm5pbmcgYW4gYXByb3ByaWF0ZSBtZXNzYWdlLiAgSW4gYWxsIGNhc2VzIGNoYW5nZXMgc2VudCBiYWNrIHRob3VnaCB0aGV5XG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcGFyYW0gY2FsbENvbnRleHRcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0ge3Vua25vd259IGVyciB1bmtub3duXG4gKlxuICogQHJldHVybnMge3Vua25vd259IEEgUHJvbWlzZVxuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0Q2FsbEZhaWx1cmUocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBlcnIpIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIGxldCBsb2dTdHJpbmcgPSAnJztcblxuICAgIGxldCBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7fTtcblxuICAgIGxldCB1cGRhdGVDb25mbGljdFJldHJ5ID0gZmFsc2U7XG5cbiAgICBpZiAoZXJyID09PSAnU3luYyBFcnJvcicpIHtcbiAgICAgICAgcG9zdENhbGxFcnJvckxvZyhzZW1vdHVzLmxvZ2dlciwgJ3Bvc3RDYWxsLnN5bmNFcnJvcicsIHVuZGVmaW5lZCwgJ2Vycm9yJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIHBhY2thZ2VDaGFuZ2VzUGF5bG9hZCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdyZXNwb25zZScsXG4gICAgICAgICAgICBzeW5jOiBmYWxzZSxcbiAgICAgICAgICAgIGNoYW5nZXM6ICcnXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSA9PSAnVXBkYXRlIENvbmZsaWN0Jykge1xuICAgICAgICAvLyBOb3QgdGhpcyBtYXkgYmUgY2F1Z2h0IGluIHRoZSB0cmFuc3BvcnQgKGUuZy4gQW1vcnBoaWMpIGFuZCByZXRyaWVkKVxuXG4gICAgICAgIC8vIGluY3JlbWVudCBjYWxsQ29udGV4dC5yZXRyaWVzIGFmdGVyIGNoZWNraW5nIGlmIDwgMy4gU2hvdWxkIHJldHJ5IDMgdGltZXMuXG4gICAgICAgIGlmIChjYWxsQ29udGV4dC5yZXRyaWVzKysgPCAzKSB7XG4gICAgICAgICAgICBwb3N0Q2FsbEVycm9yTG9nKHNlbW90dXMubG9nZ2VyLCAncG9zdENhbGwudXBkYXRlQ29uZmxpY3QnLCB1bmRlZmluZWQsICd3YXJuJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgICAgICB1cGRhdGVDb25mbGljdFJldHJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzaWdubWVudCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBlcnJvciBoYW5kbGVyXG4gICAgICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JldHJ5J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC51cGRhdGVDb25mbGljdCcsIHVuZGVmaW5lZCwgJ2Vycm9yJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JldHJ5JyxcbiAgICAgICAgICAgICAgICBzeW5jOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghKGVyciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgICAgcG9zdENhbGxFcnJvckxvZyhzZW1vdHVzLmxvZ2dlciwgJ3Bvc3RDYWxsLmVycm9yJywgSlNPTi5zdHJpbmdpZnkoZXJyKSwgJ2luZm8nLCByZW1vdGVDYWxsLm5hbWUsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChlcnIuc3RhY2spIHtcbiAgICAgICAgICAgICAgICBsb2dTdHJpbmcgPSAnRXhjZXB0aW9uIGluICcgKyByZW1vdGVDYWxsLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlICsgKCcgJyArIGVyci5zdGFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ1N0cmluZyA9ICdFeGNlcHRpb24gaW4gJyArIHJlbW90ZUNhbGwubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC5leGNlcHRpb24nLCBlcnIubWVzc2FnZSwgJ2Vycm9yJywgbG9nU3RyaW5nLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgc3luYzogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBnZXRFcnJvcihlcnIpLFxuICAgICAgICAgICAgbmFtZTogcmVtb3RlQ2FsbC5uYW1lXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgT2JqZWN0LmFzc2lnbihwYWNrYWdlQ2hhbmdlc1BheWxvYWQsIHtyZW1vdGVDYWxsSWQ6IHJlbW90ZUNhbGxJZH0pO1xuXG4gICAgYXdhaXQgcmVzb2x2ZUVycm9ySGFuZGxlcihcbiAgICAgICAgc2Vtb3R1cy5sb2dnZXIsXG4gICAgICAgIHNlbW90dXMuY29udHJvbGxlcixcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQudHlwZSxcbiAgICAgICAgcmVtb3RlQ2FsbCxcbiAgICAgICAgcmVtb3RlQ2FsbElkLFxuICAgICAgICBjYWxsQ29udGV4dCxcbiAgICAgICAgc2Vtb3R1cy5jaGFuZ2VTdHJpbmcsXG4gICAgICAgIHNlc3Npb25cbiAgICApO1xuXG4gICAgaWYgKHVwZGF0ZUNvbmZsaWN0UmV0cnkpIHtcbiAgICAgICAgYXdhaXQgZGVsYXkoY2FsbENvbnRleHQucmV0cmllcyAqIDEwMDApO1xuICAgICAgICByZXR1cm4gcmV0cnlDYWxsKHBheWxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYWNrYWdlQ2hhbmdlcyhzZW1vdHVzLCBzZXNzaW9uLCBwYWNrYWdlQ2hhbmdlc1BheWxvYWQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBEZWFsIHdpdGggY2hhbmdlcyBnb2luZyBiYWNrIHRvIHRoZSBjYWxsZXIgLSBBY3R1YWxseSBub3QgQXN5bmMhXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0ge3Vua25vd259IG1lc3NhZ2UgdW5rbm93blxuICovXG5mdW5jdGlvbiBwYWNrYWdlQ2hhbmdlcyhzZW1vdHVzOiBTZW1vdHVzLCBzZXNzaW9uOiBTZXNzaW9uLCBtZXNzYWdlKSB7XG4gICAgc2Vtb3R1cy5fY29udmVydEFycmF5UmVmZXJlbmNlc1RvQ2hhbmdlcygpO1xuICAgIG1lc3NhZ2UuY2hhbmdlcyA9IEpTT04uc3RyaW5naWZ5KHNlbW90dXMuZ2V0Q2hhbmdlcygpKTtcblxuICAgIGlmIChzZW1vdHVzLm1lbVNlc3Npb24gJiYgc2Vtb3R1cy5tZW1TZXNzaW9uLnNlbW90dXMgJiYgc2Vtb3R1cy5tZW1TZXNzaW9uLnNlbW90dXMuY2FsbFN0YXJ0VGltZSkge1xuICAgICAgICBzZW1vdHVzLm1lbVNlc3Npb24uc2Vtb3R1cy5jYWxsU3RhcnRUaW1lID0gMDtcbiAgICB9XG5cbiAgICAvLyBJbnNwZWN0IGEgY29weSBvZiB0aGUgbWVzc2FnZSBvbiB0aGUgc2VydmVyIG9ubHkgYmVmb3JlIHNlbnQgb3V0LiBPbmx5IGZvciBkZWJ1ZyBwdXJwb3Nlc1xuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLmluc3BlY3RNZXNzYWdlKSB7XG4gICAgICAgIHNlbW90dXMuY29udHJvbGxlci5pbnNwZWN0TWVzc2FnZShPYmplY3QuYXNzaWduKHt9LCBtZXNzYWdlKSk7XG4gICAgfVxuXG4gICAgc2Vzc2lvbi5zZW5kTWVzc2FnZShtZXNzYWdlKTtcbiAgICBzZW1vdHVzLl9kZWxldGVDaGFuZ2VzKCk7XG4gICAgc2Vtb3R1cy5fcHJvY2Vzc1F1ZXVlKCk7XG59XG5cblxuLyoqXG4gKiAgSGVscGVyIGZ1bmN0aW9uIHRvIGxvZyBhbW9ycGhpYyBlcnJvcnMuXG4gKiBAcGFyYW0geyp9IGxvZ2dlclxuICogQHBhcmFtIHsqfSBhY3Rpdml0eVxuICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gKiBAcGFyYW0geyp9IGxvZ1R5cGVcbiAqIEBwYXJhbSB7Kn0gbG9nU3RyaW5nXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHBhcmFtIGNhbGxDb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0Q2FsbEVycm9yTG9nKGxvZ2dlciwgYWN0aXZpdHksIG1lc3NhZ2UsIGxvZ1R5cGUsIGxvZ1N0cmluZywgcmVtb3RlQ2FsbDogUmVtb3RlQ2FsbCwgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0KSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcHJvY2Vzc0NhbGwubmFtZTtcbiAgICBcbiAgICBsZXQgbG9nQm9keSA9IHtcbiAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgIG1lc3NhZ2U6IGxvZ1N0cmluZyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgIGFjdGl2aXR5OiBhY3Rpdml0eSxcbiAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIGNhbGxUaW1lOiBsb2dUaW1lKGNhbGxDb250ZXh0KSxcbiAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlLFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGxvZ2dlcltsb2dUeXBlXShsb2dCb2R5KTtcbn1cbiJdfQ==
//# sourceMappingURL=ProcessCall.js.map

@@ -165,2 +165,2 @@ "use strict";

exports.save = save;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Vzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9TZXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFNLFVBQVUsR0FBRyw4QkFBOEIsQ0FBQztBQUVsRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixNQUFNLENBQUMsT0FBZ0IsRUFBRSxJQUFJLEVBQUUsV0FBd0IsRUFBRSxTQUFTO0lBQzlFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQ25CLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7S0FDekI7SUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ1osU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztLQUN2QztJQUVELE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRztRQUMxQixhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsV0FBVztRQUN4QixrQkFBa0IsRUFBRSxDQUFDLENBQUMsV0FBVztRQUNqQyxXQUFXLEVBQUUsRUFBRTtRQUNmLGtCQUFrQixFQUFFLEVBQUU7UUFDdEIsdUJBQXVCLEVBQUUsQ0FBQztRQUMxQixpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsRUFBRSxDQUFDO1FBQ2pCLGtCQUFrQixFQUFFLENBQUM7UUFDckIsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQztRQUNaLGNBQWMsRUFBRSxJQUFJLENBQUMsdUJBQXVCO0tBQy9DLENBQUM7SUFFRixJQUFJLElBQUksWUFBWSxLQUFLLEVBQUU7UUFDdkIsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxH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Ozs7O0dBT0c7QUFDSCxTQUFnQixJQUFJLENBQUMsT0FBZ0IsRUFBRSxTQUFTO0lBQzVDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUUvQixPQUFPLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUMxRCxPQUFPLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztJQUNuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBRXJCLE1BQU0sWUFBWSxHQUFHO1FBQ2pCLFNBQVMsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1FBQ2pELFFBQVEsRUFBRSxPQUFPLENBQUMsY0FBYztRQUNoQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7UUFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsdUJBQXVCO0tBQ3hELENBQUM7SUFFRixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMxQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQixNQUFNLEVBQUUsVUFBVTtRQUNsQixRQUFRLEVBQUUsWUFBWTtRQUN0QixRQUFRLEVBQUUsV0FBVztRQUNyQixJQUFJLEVBQUU7WUFDRixRQUFRLEVBQUUsTUFBTTtTQUNuQjtLQUNKLENBQUMsQ0FBQztJQUVILE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUM7QUEzQkQsb0JBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2F2ZWRTZXNzaW9uLCBTZW1vdHVzLCBTZW5kTWVzc2FnZSwgU2Vzc2lvbiB9IGZyb20gJy4vVHlwZXMnO1xuXG5jb25zdCBtb2R1bGVOYW1lID0gYHNlbW90dXMvc3JjL2hlbHBlcnMvU2Vzc2lvbnNgO1xuXG4vKipcbiAqIE9idGFpbiBhIHNlc3Npb24gZm9yIHRyYWNraW5nIHN1YnNjcmlwdGlvbnNcbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICogQHBhcmFtIHt1bmtub3dufSByb2xlIHVua25vd25cbiAqIEBwYXJhbSB7dW5rbm93bn0gc2VuZE1lc3NhZ2UgdW5rbm93blxuICogQHBhcmFtIHt1bmtub3dufSBzZXNzaW9uSWQgdW5rbm93blxuICpcbiAqIEByZXR1cm5zIHsqfSB1bmtub3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoc2Vtb3R1czogU2Vtb3R1cywgcm9sZSwgc2VuZE1lc3NhZ2U6IFNlbmRNZXNzYWdlLCBzZXNzaW9uSWQpOiBhbnkge1xuICAgIGlmICghc2Vtb3R1cy5zZXNzaW9ucykge1xuICAgICAgICBzZW1vdHVzLm5leHRTdWJzY3JpcHRpb25JZCA9IDA7XG4gICAgICAgIHNlbW90dXMubmV4dFNlc3Npb25JZCA9IDE7XG4gICAgICAgIHNlbW90dXMuc2Vzc2lvbnMgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgICBzZXNzaW9uSWQgPSBzZW1vdHVzLm5leHRTZXNzaW9uSWQrKztcbiAgICB9XG5cbiAgICBzZW1vdHVzLnNldFNlc3Npb24oc2Vzc2lvbklkKTtcblxuICAgIHNlbW90dXMuc2Vzc2lvbnNbc2Vzc2lvbklkXSA9IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uczoge30sIC8vIENoYW5nZSBsaXN0ZW5lcnNcbiAgICAgICAgc2VuZE1lc3NhZ2U6IHNlbmRNZXNzYWdlLCAvLyBTZW5kIG1lc3NhZ2UgY2FsbGJhY2tcbiAgICAgICAgc2VuZE1lc3NhZ2VFbmFibGVkOiAhIXNlbmRNZXNzYWdlLFxuICAgICAgICByZW1vdGVDYWxsczogW10sIC8vIFJlbW90ZSBjYWxscyBxdWV1ZWQgdG8gZ28gb3V0XG4gICAgICAgIHBlbmRpbmdSZW1vdGVDYWxsczoge30sIC8vIFJlbW90ZSBjYWxscyB3YWl0aW5nIGZvciByZXNwb25zZVxuICAgICAgICBuZXh0UGVuZGluZ1JlbW90ZUNhbGxJZDogMSxcbiAgICAgICAgbmV4dFNhdmVTZXNzaW9uSWQ6IDEsXG4gICAgICAgIHNhdmVkU2Vzc2lvbklkOiAwLFxuICAgICAgICBuZXh0U3Vic2NyaXB0aW9uSWQ6IDAsXG4gICAgICAgIG9iamVjdHM6IHt9LFxuICAgICAgICBuZXh0T2JqSWQ6IDEsXG4gICAgICAgIGRpc3BlbnNlTmV4dElkOiBudWxsIC8vIEZvcmNlIG5leHQgb2JqZWN0IElkXG4gICAgfTtcblxuICAgIGlmIChyb2xlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZm9yICh2YXIgaXggPSAwOyBpeCA8IHJvbGUubGVuZ3RoOyArK2l4KSB7XG4gICAgICAgICAgICBzZW1vdHVzLnN1YnNjcmliZShyb2xlW2l4XSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZW1vdHVzLnJvbGUgPSByb2xlWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbW90dXMuc3Vic2NyaWJlKHJvbGUpO1xuICAgICAgICBzZW1vdHVzLnJvbGUgPSByb2xlO1xuICAgIH1cblxuICAgIHJldHVybiBzZXNzaW9uSWQ7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUgdGhlIHNlc3Npb24gZnJvbSB0aGUgc2Vzc2lvbnMgbWFwLCByZWplY3RpbmcgYW55IG91dHN0YW5kaW5nIHByb21pc2VzXG4gKiBXQVJOSU5HOiBBc3luYyBzaWRlIGVmZmVjdHNcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge3Vua25vd259IHNlc3Npb25JZCB1bmtub3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmUoc2Vtb3R1czogU2Vtb3R1cywgc2Vzc2lvbklkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBsZXQgc2Vzc2lvbiA9IGdldChzZW1vdHVzLCBzZXNzaW9uSWQpO1xuXG4gICAgZm9yICh2YXIgY2FsbHMgaW4gc2Vzc2lvbi5yZW1vdGVDYWxscykge1xuICAgICAgICBzZXNzaW9uLnJlbW90ZUNhbGxzW2NhbGxzXS5kZWZlcnJlZC5yZWplY3Qoe2NvZGU6ICdyZXNldCcsIHRleHQ6ICdTZXNzaW9uIHJlc3luY2hyb25pemVkJ30pO1xuICAgIH1cblxuICAgIGlmIChzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF0pIHtcbiAgICAgICAgZGVsZXRlIHNlbW90dXMuc2Vzc2lvbnNbc2Vzc2lvbklkXTtcbiAgICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IHNlc3Npb24gc3RydWN0dXJlXG4gKlxuICogQHJldHVybnMgeyp9IHRoZSBzZXNzaW9uXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldChzZW1vdHVzOiBTZW1vdHVzLCBfc2lkPyk6IFNlc3Npb24gfCBudWxsIHtcbiAgICBpZiAoIXNlbW90dXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBzZW1vdHVzLnNlc3Npb25zW3NlbW90dXMuY3VycmVudFNlc3Npb25dO1xufVxuXG5cbi8qKlxuICogSW5kaWNhdGUgdGhhdCBhbGwgY2hhbmdlcyBoYXZlIGJlZW4gYWNjZXB0ZWQgb3V0c2lkZSBvZiB0aGUgbWVzc2FnZVxuICogbWVjaGFuaXNtIGFzIHdvdWxkIHVzdWFsbHkgaGFwcGVuIHdoZW4gYSBzZXNzaW9uIGlzIHN0YXJ0aW5nIHVwXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7dW5rbm93bn0gc2Vzc2lvbklkIHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bmMoc2Vtb3R1czogU2Vtb3R1cywgc2Vzc2lvbklkKSB7XG4gICAgZ2V0KHNlbW90dXMsIHNlc3Npb25JZCk7XG4gICAgc2Vtb3R1cy5nZXRDaGFuZ2VzKCk7XG4gICAgc2Vtb3R1cy5fZGVsZXRlQ2hhbmdlcygpO1xufVxuXG5cbi8qKlxuICogUmVzdG9yZSBzZXNzaW9uIHRoYXQgd2FzIHBvdGVudGlhbGx5IHNlcmlhbGl6ZWQvZGVzZXJpYWxpemVkXG4gKlxuICogQSByZXZpc2lvbiBudW1iZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgaW4tbWVtb3J5IGNvcHkgaXMgZ29vZFxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge3Vua25vd259IHNlc3Npb25JZCAtIHRoZSBpZCB1bmRlciB3aGljaCBpdCB3YXMgY3JlYXRlZCB3aXRoIGNyZWF0ZVNlc3Npb25cbiAqIEBwYXJhbSB7dW5rbm93bn0gc2F2ZWRTZXNzaW9uIC0gdGhlIFBPSk8gdmVyc2lvbiBvZiB0aGUgc2Vzc2lvbiBkYXRhXG4gKiBAcGFyYW0ge3Vua25vd259IHNlbmRNZXNzYWdlIC0gbmV3IG1lc3NhZ2UgZnVuY3Rpb24gdG8gYmUgaW4gZWZmZWN0XG4gKlxuICogQHJldHVybnMge0Jvb2xlYW59IGZhbHNlIG1lYW5zIHRoYXQgbWVzc2FnZXMgd2VyZSBpbiBmbGlnaHQgYW5kIGEgcmVzZXQgaXMgbmVlZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlKHNlbW90dXM6IFNlbW90dXMsIHNlc3Npb25JZCwgc2F2ZWRTZXNzaW9uOiBTYXZlZFNlc3Npb24sIHNlbmRNZXNzYWdlOiBTZW5kTWVzc2FnZSkge1xuICAgIHNlbW90dXMuc2V0U2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF07XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVzdG9yZS5uYW1lO1xuXG4gICAgc2Vtb3R1cy5sb2dnZXIuZGVidWcoe1xuICAgICAgICBtb2R1bGU6IG1vZHVsZU5hbWUsIFxuICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnc2F2ZSdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNlc3Npb24pIHtcbiAgICAgICAgaWYgKHNlc3Npb24uc2F2ZWRTZXNzaW9uSWQgPT0gc2F2ZWRTZXNzaW9uLnJldmlzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF0gPSBKU09OLnBhcnNlKHNhdmVkU2Vzc2lvbi5kYXRhKTtcbiAgICBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF0uc2VuZE1lc3NhZ2UgPSBzZW5kTWVzc2FnZTtcblxuICAgIHJldHVybiBzYXZlZFNlc3Npb24uY2FsbENvdW50ID4gMDtcbn1cblxuLyoqXG4gKiBTYXZlIHRoZSBzZXNzaW9uIGRhdGEgaW4gYSB3YXkgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC9kZS1zZXJpYWxpemVkXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7dW5rbm93bn0gc2Vzc2lvbklkIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSB1bmtub3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYXZlKHNlbW90dXM6IFNlbW90dXMsIHNlc3Npb25JZCk6IFNhdmVkU2Vzc2lvbiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IGdldChzZW1vdHVzLCBzZXNzaW9uSWQpO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHNhdmUubmFtZTtcblxuICAgIHNlc3Npb24ubmV4dFNhdmVTZXNzaW9uSWQgPSBzZXNzaW9uLm5leHRTYXZlU2Vzc2lvbklkICsgMTtcbiAgICBzZXNzaW9uLnNhdmVkU2Vzc2lvbklkID0gc2Vzc2lvbi5uZXh0U2F2ZVNlc3Npb25JZDtcbiAgICBjb25zdCBvYmplY3RzID0gc2Vzc2lvbi5vYmplY3RzO1xuICAgIHNlc3Npb24ub2JqZWN0cyA9IHt9O1xuXG4gICAgY29uc3Qgc2F2ZWRTZXNzaW9uID0ge1xuICAgICAgICBjYWxsQ291bnQ6IHNlbW90dXMuZ2V0UGVuZGluZ0NhbGxDb3VudChzZXNzaW9uSWQpLCAvLyBDYW4ndCBqdXN0IHJlc3RvcmUgb24gYW5vdGhlciBzZXJ2ZXIgYW5kIGNhcnJ5IG9uXG4gICAgICAgIHJldmlzaW9uOiBzZXNzaW9uLnNhdmVkU2Vzc2lvbklkLCAvLyBVc2VkIHRvIHNlZSBpZiBvdXIgbWVtb3J5IGNvcHkgZ29vZCBlbm91Z2hcbiAgICAgICAgcmVmZXJlbmNlZDogbmV3IERhdGUoKS5nZXRUaW1lKCksIC8vIFVzZWQgZm9yIHJlYXBpbmcgb2xkIHNlc3Npb25zXG4gICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHNlc3Npb24pIC8vIEFsbCB0aGUgc2Vzc2lvbiBkYXRhXG4gICAgfTtcblxuICAgIHNlc3Npb24ub2JqZWN0cyA9IG9iamVjdHM7XG4gICAgc2Vtb3R1cy5sb2dnZXIuZGVidWcoe1xuICAgICAgICBtb2R1bGU6IG1vZHVsZU5hbWUsXG4gICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgIGNhdGVnb3J5OiAnbWlsZXN0b25lJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYWN0aXZpdHk6ICdzYXZlJ1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2F2ZWRTZXNzaW9uO1xufVxuIl19
//# sourceMappingURL=Sessions.js.map

@@ -86,2 +86,2 @@ "use strict";

exports.subscribe = subscribe;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Vic2NyaXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXJzL1N1YnNjcmlwdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBdUM7QUFHdkM7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQWdCLEVBQUUsY0FBZTtJQUM3RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRkQsMENBRUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFnQixFQUFFLFNBQVU7SUFDekQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFakQsSUFBSSxPQUFPLEVBQUU7UUFDVCxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDaEM7U0FBTTtRQUNILE9BQU8sSUFBSSxDQUFDO0tBQ2Y7QUFDTCxDQUFDO0FBUkQsNENBUUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixTQUFTLENBQUMsT0FBZ0IsRUFBRSxJQUFJO0lBQzVDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFFcEQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRztRQUNwQyxJQUFJLEVBQUUsSUFBSTtRQUNWLEdBQUcsRUFBRTtZQUNELEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLEVBQUU7WUFDVixVQUFVLEVBQUUsRUFBRTtTQUNqQjtLQUNKLENBQUM7SUFFRixPQUFPLGNBQWMsQ0FBQztBQUMxQixDQUFDO0FBZEQsOEJBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTZXNzaW9ucyBmcm9tICcuL1Nlc3Npb25zJztcbmltcG9ydCB7IFNlbW90dXMsIFN1YnNjcmlwdGlvbiwgU3Vic2NyaXB0aW9ucyB9IGZyb20gJy4vVHlwZXMnO1xuXG4vKipcbiAqIFB1cnBvc2UgdW5rbm93blxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge3Vua25vd259IHN1YnNjcmlwdGlvbklkIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7dW5rbm93bn0gdW5rbm93blxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJzY3JpcHRpb24oc2Vtb3R1czogU2Vtb3R1cywgc3Vic2NyaXB0aW9uSWQ/KTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gU2Vzc2lvbnMuZ2V0KHNlbW90dXMpLnN1YnNjcmlwdGlvbnNbc3Vic2NyaXB0aW9uSWQgfHwgMF07XG59XG5cbi8qKlxuICogUHVycG9zZSB1bmtub3duXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7dW5rbm93bn0gc2Vzc2lvbklkIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7dW5rbm93bn0gdW5rbm93blxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJzY3JpcHRpb25zKHNlbW90dXM6IFNlbW90dXMsIHNlc3Npb25JZD8pOiBudWxsIHwgU3Vic2NyaXB0aW9ucyB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IFNlc3Npb25zLmdldChzZW1vdHVzLCBzZXNzaW9uSWQpO1xuXG4gICAgaWYgKHNlc3Npb24pIHtcbiAgICAgICAgcmV0dXJuIHNlc3Npb24uc3Vic2NyaXB0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbi8qKlxuICogU3Vic2NyaWJlIHRvIGNoYW5nZXMgYW5kIG9wdGlvbmFsbHkgZXN0YWJsaXNoIHN1YnNjcmlwdGlvbiBhcyB0aGVcbiAqIHNvbGUgcmVjaXBpZW50IG9mIHJlbW90ZSBjYWxsIG1lc3NhZ2VzLiAgQ2hhbmdlIHRyYWNraW5nIGlzIHRoZW4gbWFuYWdlZFxuICogYnkgdGhlIGZ1bmN0aW9ucyB0aGF0IGZvbGxvdy5cbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICogQHBhcmFtIHt1bmtub3dufSByb2xlIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7Kn0gdW5rbm93blxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic2NyaWJlKHNlbW90dXM6IFNlbW90dXMsIHJvbGUpIHtcbiAgICBjb25zdCBzZXNzaW9uID0gU2Vzc2lvbnMuZ2V0KHNlbW90dXMpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbklkID0gc2Vzc2lvbi5uZXh0U3Vic2NyaXB0aW9uSWQrKztcblxuICAgIHNlc3Npb24uc3Vic2NyaXB0aW9uc1tzdWJzY3JpcHRpb25JZF0gPSB7XG4gICAgICAgIHJvbGU6IHJvbGUsXG4gICAgICAgIGxvZzoge1xuICAgICAgICAgICAgYXJyYXk6IHt9LFxuICAgICAgICAgICAgY2hhbmdlOiB7fSxcbiAgICAgICAgICAgIGFycmF5RGlydHk6IHt9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbklkO1xufSJdfQ==
//# sourceMappingURL=Subscriptions.js.map

@@ -5,2 +5,2 @@ "use strict";

exports.Change = 'change';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9UeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFhYSxRQUFBLE1BQU0sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdXBlcnR5cGUgfSBmcm9tICdAaGF2ZW50ZWNoL3N1cGVydHlwZSc7XG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuZXhwb3J0IHR5cGUgSFRUUE9ianMgPSB7IHJlcXVlc3Q6IFJlcXVlc3QsIHJlc3BvbnNlOiBSZXNwb25zZSB9O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb24gPSB7XG4gICAgcm9sZTogc3RyaW5nO1xuICAgIGxvZzoge1xuICAgICAgICBhcnJheTogQXJyYXlHcm91cDtcbiAgICAgICAgYXJyYXlEaXJ0eTogQXJyYXlHcm91cDtcbiAgICAgICAgY2hhbmdlOiBDaGFuZ2VHcm91cDtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBDaGFuZ2UgPSAnY2hhbmdlJztcbmV4cG9ydCB0eXBlIEFycmF5VHlwZXMgPSAnYXJyYXknIHwgJ2FycmF5RGlydHknO1xuZXhwb3J0IHR5cGUgRXJyb3JUeXBlID0gJ2Vycm9yJyB8ICdyZXRyeScgfCAncmVzcG9uc2UnO1xuXG5leHBvcnQgdHlwZSBDYWxsQ29udGV4dCA9IHsgcmV0cmllczogbnVtYmVyOyBzdGFydFRpbWU6IERhdGUgfTtcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc0NhbGxQYXlsb2FkID0ge1xuICAgIHNlbW90dXM6IFNlbW90dXM7XG4gICAgcmVtb3RlQ2FsbDogUmVtb3RlQ2FsbDtcbiAgICBjYWxsQ29udGV4dDogQ2FsbENvbnRleHQ7XG4gICAgc2Vzc2lvbjogU2Vzc2lvbjtcbiAgICBzdWJzY3JpcHRpb25JZDogYW55O1xuICAgIHJlbW90ZUNhbGxJZDogYW55O1xuICAgIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgICBIVFRQT2Jqcz86IEhUVFBPYmpzO1xufVxuXG4vKipcbiAqICBpZCBpcyB0aGUgaWQgb2YgdGhlIG9iamVjdCArICcvJyArIHByb3BlcnR5LlxuICogIEV4OiB0aGVyZSBhcmUgMSBTY2hvb2wgdG8gTWFueSBTdHVkZW50c1xuICpcbiAqICBTY2hvb2wge1xuICogICAgICBzdHVkZW50czogQXJyYXk8U3R1ZGVudHM+XG4gKiAgfVxuICpcbiAqICBJbiB0aGlzIGNhc2UsIG9uZSBlbnRyeSB3aXRoaW4gdGhpcyBBcnJheUdyb3VwIG1heSBiZSAnc2VydmVyLVNjaG9vbC0xL3N0dWRlbnRzJzogW1wic2VydmVyLVN0dWRlbnQtM1wiLCBcInNlcnZlci1TdHVkZW50LTVcIl1cbiAqXG4gKiAgSWYgdGhhdCdzIGFsbCB0aGUgY2hhbmdlcyB0aGVuIHRoZSBBcnJheUdyb3VwIHdvdWxkIGJlIHsnc2VydmVyLVNjaG9vbC0xL3N0dWRlbnRzJzogW1wic2VydmVyLVN0dWRlbnQtM1wiLCBcInNlcnZlci1TdHVkZW50LTVcIl19XG4gKi9cbmV4cG9ydCB0eXBlIEFycmF5R3JvdXAgPSB7IFtpZDogc3RyaW5nXTogQXJyYXlDaGFuZ2VzIH07XG5cbi8qKlxuICogQW4gYXJyYXkgb2YgSWQgcmVmZXJlbmNlcyB0byBTdXBlcnR5cGUgT2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzXG4gKi9cbnR5cGUgQXJyYXlDaGFuZ2VzID0gQXJyYXk8YW55PjtcbmV4cG9ydCB0eXBlIENoYW5nZUdyb3VwID0geyBbb2JqSWQ6IHN0cmluZ106IFByb3BDaGFuZ2VzIH07XG50eXBlIFByb3BDaGFuZ2VzID0geyBbcHJvcDogc3RyaW5nXTogQ2hhbmdlcyB9O1xuXG4vLyBDaGFuZ2VzWzBdIGlzIG9sZFZhbHVlLCBDaGFuZ2VzWzFdIGlzIG5ld1ZhbHVlXG50eXBlIG9sZFZhbCA9IGFueTtcbnR5cGUgbmV3VmFsID0gYW55O1xudHlwZSBDaGFuZ2VzID0gW29sZFZhbCwgbmV3VmFsXVtdO1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25zID0geyBba2V5OiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfTtcblxuZXhwb3J0IHR5cGUgUmVtb3RlQ2FsbCA9IHtcbiAgICByZW1vdGVDYWxsSWQ6IGFueTtcbiAgICBpZDogYW55O1xuICAgIGNoYW5nZXM6IHN0cmluZzsgLy8gVGhlIHN0cmluZyBpcyBvZiB0eXBlIENoYW5nZUdyb3VwXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNlcXVlbmNlOiBhbnk7XG4gICAgdHlwZTogYW55O1xuICAgIHN5bmM6IGFueTtcbiAgICB2YWx1ZTogYW55O1xufVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uID0ge1xuICAgIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbnM7XG4gICAgc2VuZE1lc3NhZ2U6IFNlbmRNZXNzYWdlO1xuICAgIHNlbmRNZXNzYWdlRW5hYmxlZDogYm9vbGVhbjtcbiAgICByZW1vdGVDYWxsczogQXJyYXk8YW55PjtcbiAgICBwZW5kaW5nUmVtb3RlQ2FsbHM6IGFueTtcbiAgICBuZXh0UGVuZGluZ1JlbW90ZUNhbGxJZDogbnVtYmVyO1xuICAgIG5leHRTYXZlU2Vzc2lvbklkOiBudW1iZXI7XG4gICAgc2F2ZWRTZXNzaW9uSWQ6IG51bWJlcjtcbiAgICBuZXh0U3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICBvYmplY3RzOiBhbnk7XG4gICAgbmV4dE9iaklkOiBudW1iZXI7XG4gICAgZGlzcGVuc2VOZXh0SWQ6IG51bGw7IC8vIG5vdCB1c2VkIGFueXdoZXJlXG59XG5cblxuZXhwb3J0IHR5cGUgU2Vzc2lvbnMgPSB7IFtzZXNzaW9uSWQ6IG51bWJlcl06IFNlc3Npb24gfTtcblxuZXhwb3J0IHR5cGUgU2VuZE1lc3NhZ2UgPSAobWVzc2FnZTogYW55KSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBTYXZlZFNlc3Npb24gPSB7XG4gICAgcmV2aXNpb246IG51bWJlcjtcbiAgICBkYXRhOiBzdHJpbmc7IC8vIFNlcmlhbGl6ZWQgU2Vzc2lvbiBkYXRhXG4gICAgY2FsbENvdW50OiBudW1iZXI7XG4gICAgcmVmZXJlbmNlZDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVhYmxlQ2xhc3MgZXh0ZW5kcyBTdXBlcnR5cGUge1xuICAgIHN5bmNTdGF0ZXM6IEFycmF5PHN0cmluZz47XG4gICAgX190b0NsaWVudF9fOiBib29sZWFuO1xuICAgIF9fdG9TZXJ2ZXJfXzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ2hhbmdlU3RyaW5nID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbnR5cGUgUHJlU2VydmVyQ2FsbENoYW5nZXMgPSB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgQ29udHJvbGxlclN5bmNTdGF0ZSA9IHtcbiAgICBzY29wZTogJysnIHwgJyonIHwgJy0nXG4gICAgc3RhdGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZW1vdHVzQ29udHJvbGxlciB7XG4gICAgX190ZW1wbGF0ZV9fOiBhbnk7XG4gICAgc3luY1N0YXRlPzogQ29udHJvbGxlclN5bmNTdGF0ZVxuXG4gICAgLyoqXG4gICAgICogQHNlcnZlclxuICAgICAqXG4gICAgICogQ2FsbGJhY2sgYWZ0ZXIgYSBzdWNjZXNzZnVsIHJlbW90ZSBmdW5jdGlvbiBjYWxsIChqdXN0IHRoZSBhcHBsaWNhdGlvbiBvZiBjaGFuZ2VzIGFuZCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBmdW5jdGlvbiBjYWxsKVxuICAgICAqIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgbWVhbiB3ZSBjYW4ndCBlcnJvciBvdXQgb24gdGhpcyBvciBzdWJzZXF1ZW50IHN0ZXBzIG9mIGEgcmVtb3RlIGNhbGwuXG4gICAgICpcbiAgICAgKiBXZSBjYW4gdXRpbGl6ZSB0aGlzIGZ1bmN0aW9uIGFzIGEgZ2VuZXJpYyBmdW5jdGlvbiBoYW5kbGVyIHRvIHJ1biBhZnRlciB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBjYWxsZWQgYSByZW1vdGUgZnVuY3Rpb24uXG4gICAgICogT25lIHN1Y2ggdXNlIG1heSBiZSB0byBzZWUgdGhlIGNoYW5nZXMgdGhhdCB3ZXJlIGFwcGxpZWQgZnJvbSB0aGUgY2xpZW50XG4gICAgICpcbiAgICAgKiBOT1RFIFRIQVQgVEhFIENIQU5HRVNUUklORyBET0VTIE5PVCBJTkNMVURFIENIQU5HRVMgRE9ORSBXSVRISU4gVEhFIFJFTU9URSBGVU5DVElPTiBDQUxMIElUU0VMRiwgT05MWSBDSEFOR0VTIEZST00gVEhFIENMSUVOVFxuICAgICAqXG4gICAgICogU2VlIHJlbW90ZSBjYWxsIGRvY3VtZW50YXRpb24gdG8ga25vdyB3aGVyZSB0aGlzIGV4ZWN1dGVzIGluIHRoZSBsaWZlY3ljbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzQ2hhbmdlcyAtIFdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYXBwbGllZCBjbGllbnQgY2hhbmdlcyBvbnRvIHRoZSBzZXJ2ZXIncyBvYmplY3QgZ3JhcGhcbiAgICAgKiBAcGFyYW0ge0NhbGxDb250ZXh0fSBjYWxsQ29udGV4dCAtIENvbnRleHQgKG51bWJlciBvZiByZXRyaWVzIGV0YylcbiAgICAgKiBAcGFyYW0ge2NoYW5nZVN0cmluZ30gY2hhbmdlU3RyaW5nIC0gT2JqZWN0IG9mIENoYW5nZXMgLSBLZXkgaXMgW0NsYXNzTmFtZV0uW3Byb3BlcnR5TmFtZV0sIFZhbHVlIGlzIFtjaGFuZ2VkVmFsdWVdIGV4YW1wbGU6IHsnQ3VzdG9tZXIubWlkZGxlbmFtZSc6ICdLYXJlbid9LCBTZWUgYWJvdmUgbm90ZVxuICAgICAqIEBwYXJhbSBIVFRQT2Jqc1xuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICogQG1lbWJlcm9mIENvbnRyb2xsZXJcbiAgICAgKi9cbiAgICBwb3N0U2VydmVyQ2FsbD8oaGFzQ2hhbmdlczogYm9vbGVhbiwgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0LCBjaGFuZ2VTdHJpbmc6IENoYW5nZVN0cmluZywgSFRUUE9ianM/OiBIVFRQT2Jqcyk6IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIENhbGxiYWNrIHRvIGhhbmRsZSBlcnJvcnMgb24gYSByZW1vdGUgY2FsbC5cbiAgICAgKlxuICAgICAqIEV4ZWN1dGVzIGFmdGVyIGV2ZXJ5IG90aGVyIHN0ZXAgaW4gdGhlIHJlbW90ZSBjYWxsIHBpcGVsaW5lIChzZWUgcmVtb3RlIGNhbGwgZG9jdW1lbnRhdGlvbilcbiAgICAgKiBidXQgYmVmb3JlIHJldHJ5aW5nIHRoZSBjYWxsIChvciBwYWNrYWdpbmcgcmVzcG9uc2UgYW5kIHNlbmRpbmcgYmFjayB0byBjbGllbnQpXG4gICAgICpcbiAgICAgKiBOT1RFIFRIQVQgVEhFIENIQU5HRVNUUklORyBET0VTIE5PVCBJTkNMVURFIENIQU5HRVMgRE9ORSBXSVRISU4gVEhFIFJFTU9URSBGVU5DVElPTiBDQUxMIElUU0VMRiwgT05MWSBDSEFOR0VTIEZST00gVEhFIENMSUVOVFxuICAgICAqXG4gICAgICogQHBhcmFtIHtFcnJvclR5cGV9IGVycm9yVHlwZSAtIEVycm9yIHR5cGUgYXNzb2NpYXRlZCAoZXJyb3IsIHJldHJ5LCByZXNwb25zZSlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVtb3RlQ2FsbElkIC0gSWQgZm9yIHJlbW90ZSBjYWxsXG4gICAgICogQHBhcmFtIHtleHRlbmRzIFN1cGVydHlwZX0gcmVtb3RlT2JqIC0gSW5zdGFuY2UgZm9yIHdoaWNoIHRoZSByZW1vdGUgb2JqZWN0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgLSBAVE9ETzogcmV2aXNpdCB3aGVuIHdlIGNyZWF0ZSBhIHByb3BlciByZW1vdGVhYmxlIHR5cGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lIC0gTmFtZSBvZiBmdW5jdGlvbiBiZWluZyBjYWxsZWRcbiAgICAgKiBAcGFyYW0ge0NhbGxDb250ZXh0fSBjYWxsQ29udGV4dCAtIENvbnRleHQgKG51bWJlciBvZiByZXRyaWVzIGV0YylcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVN0cmluZ30gY2hhbmdlU3RyaW5nIC0gT2JqZWN0IG9mIENoYW5nZXMgLSBLZXkgaXMgW0NsYXNzTmFtZV0uW3Byb3BlcnR5TmFtZV0sIFZhbHVlIGlzIFtjaGFuZ2VkVmFsdWVdIGV4YW1wbGU6IHsnQ3VzdG9tZXIubWlkZGxlbmFtZSc6ICdLYXJlbid9LCBTZWUgYWJvdmUgbm90ZVxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICogQG1lbWJlcm9mIENvbnRyb2xsZXJcbiAgICAgKi9cbiAgICBwb3N0U2VydmVyRXJyb3JIYW5kbGVyPyhlcnJvclR5cGU6IEVycm9yVHlwZSwgcmVtb3RlQ2FsbElkOiBudW1iZXIsIHJlbW90ZU9iajogU3VwZXJ0eXBlLCBmdW5jdGlvbk5hbWU6IHN0cmluZywgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0LCBjaGFuZ2VTdHJpbmc6IENoYW5nZVN0cmluZyk6IFByb21pc2U8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBAc2VydmVyXG4gICAgICpcbiAgICAgKiBDYWxsYmFjayBiZWZvcmUgYSByZW1vdGUgZnVuY3Rpb24gY2FsbCAoMXN0IHN0ZXAgb2YgYSByZW1vdGUgY2FsbClcbiAgICAgKlxuICAgICAqIFdlIGNhbiB1dGlsaXplIHRoaXMgZnVuY3Rpb24gYXMgYSBnZW5lcmljIGZ1bmN0aW9uIGhhbmRsZXIgdG8gcnVuIGJlZm9yZSB3ZSBjYWxsIGFcbiAgICAgKiByZW1vdGUgZnVuY3Rpb24gb3IgYmVmb3JlIHdlIGFwcGx5IGNoYW5nZXMgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIFdlIGNhbiBhbHNvIHV0aWxpemUgdGhpcyBmdW5jdGlvbiB0byBkbyBhbnkgY29udGV4dC1zcGVjaWZpYyBwcmVwIHdvcmsgLyBsb2FkaW5nXG4gICAgICogaWYgdGhpcyBhIHN1YnNlcXVlbnQgdHJ5IG9mIHRoaXMgZnVuY3Rpb24gZHVlIHRvIGFuIHVwZGF0ZSBjb25mbGljdC5cbiAgICAgKlxuICAgICAqIFNlZSByZW1vdGUgY2FsbCBkb2N1bWVudGF0aW9uIHRvIGtub3cgd2hlcmUgdGhpcyBleGVjdXRlcyBpbiB0aGUgbGlmZWN5Y2xlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc0NoYW5nZXMgLSBXaGV0aGVyIG9yIG5vdCB3ZSBoYXZlIGFwcGxpZWQgY2xpZW50IGNoYW5nZXMgb250byB0aGUgc2VydmVyJ3Mgb2JqZWN0IGdyYXBoXG4gICAgICogQHBhcmFtIHtQcmVTZXJ2ZXJDYWxsQ2hhbmdlc30gY2hhbmdlcyAtIERpY3Rpb25hcnkgb2YgT2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkIGZyb20gdGhlIGNsaWVudFxuICAgICAqIEBwYXJhbSB7Q2FsbENvbnRleHR9IGNhbGxDb250ZXh0IC0gQ29udGV4dCAobnVtYmVyIG9mIHJldHJpZXMgZXRjKVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZvcmNlVXBkYXRlXSAtIE9wdGlvbmFsIHBhcmFtZXRlciBwYXNzZWQgaW4uIFRydWUgaWYgdGhpcyBpcyBhIHJldHJ5IG9mIHRoZSBjYWxsIGJhc2VkIG9uIGFuIHVwZGF0ZSBjb25mbGljdC4gRmFsc2UgLyB1bmRlZmluZWQgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZ1bmN0aW9uTmFtZVxuICAgICAqIEBwYXJhbSByZW1vdGVDYWxsXG4gICAgICogQHBhcmFtIGlzUHVibGljXG4gICAgICogQHBhcmFtIEhUVFBPYmpzXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICogQG1lbWJlcm9mIENvbnRyb2xsZXJcbiAgICAgKi9cbiAgICBwcmVTZXJ2ZXJDYWxsPyhoYXNDaGFuZ2VzOiBib29sZWFuLCBjaGFuZ2VzOiBQcmVTZXJ2ZXJDYWxsQ2hhbmdlcywgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0LCBmb3JjZVVwZGF0ZTogdW5kZWZpbmVkIHwgYm9vbGVhbiwgZnVuY3Rpb25OYW1lOiBzdHJpbmcsIHJlbW90ZUNhbGw6IFJlbW90ZUNhbGwsIGlzUHVibGljOiBib29sZWFuLCBIVFRQT2Jqcz86IEhUVFBPYmpzICk6IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYSBoYW5kbGVyIHRoYXQgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZyBwdXJwb3Nlc1xuICAgICAqXG4gICAgICogV2hlbiB0aGlzIGlzIHVzZWQsIGFsbG93cyB1cyB0byBpbnNwZWN0IHRoZSBtZXNzYWdlIGJvZHkgYmVmb3JlIHdlIHNlbmQgaXQgb3V0IGluICdwYWNrYWdlQ2hhbmdlcydcbiAgICAgKlxuICAgICAqIERPIE5PVCBVU0UgVEhJUyBJTiBQUk9EVUNUSU9OIENPREVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZXNzYWdlXG4gICAgICovXG4gICAgaW5zcGVjdE1lc3NhZ2U/KG1lc3NhZ2UpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vtb3R1cyB7XG4gICAgc2V0U3luY1N0YXRlOiAoc3RyKSA9PiB2b2lkO1xuICAgIHN5bmNTdGF0ZTogc3RyaW5nO1xuICAgIGdldFN5bmNTdGF0ZTogKCkgPT4gYW55O1xuICAgIG1heENhbGxUaW1lOiBudW1iZXI7XG4gICAgX19kaWN0aW9uYXJ5X186IGFueTtcbiAgICBtZW1TZXNzaW9uOiB7IHNlbW90dXM6IHsgY2FsbFN0YXJ0VGltZTogbnVtYmVyIH0gfTtcbiAgICBfaW5qZWN0SW50b1RlbXBsYXRlOiAodGVtcGxhdGUpID0+IHZvaWQ7XG4gICAgc2VyaWFsaXplQW5kR2FyYmFnZUNvbGxlY3Q6ICgpID0+IGFueTtcbiAgICBnZXRNZXNzYWdlOiAoc2Vzc2lvbklkLCBmb3JjZU1lc3NhZ2UpID0+IGFueTtcbiAgICBjbGVhclBlbmRpbmdDYWxsczogKHNlc3Npb25JZCkgPT4gdm9pZDtcbiAgICBnZXRDaGFuZ2VHcm91cDogKHR5cGUsIHN1YnNjcmlwdGlvbklkKSA9PiBDaGFuZ2VHcm91cDtcbiAgICBkZWxldGVDaGFuZ2VHcm91cDogKHR5cGU6IGFueSwgc3Vic2NyaXB0aW9uSWQ6IGFueSkgPT4gdm9pZDtcbiAgICBnZXRDaGFuZ2VTdGF0dXM6ICgpID0+IHN0cmluZztcbiAgICBfc3Rhc2hPYmplY3Q6IChvYmosIHRlbXBsYXRlKSA9PiBib29sZWFuO1xuICAgIHNlc3Npb25pemU6IChvYmosIHJlZmVyZW5jaW5nT2JqKSA9PiAodW5kZWZpbmVkIHwgYW55KTtcbiAgICBfc2V0dXBGdW5jdGlvbjogKHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSwgcm9sZSwgdmFsaWRhdGUsIHNlcnZlclZhbGlkYXRpb24sIGlzUHVibGljOiBib29sZWFuLCB0ZW1wbGF0ZSkgPT4gKGFueSk7XG4gICAgX3NldHVwUHJvcGVydHk6IChwcm9wZXJ0eU5hbWUsIGRlZmluZVByb3BlcnR5LCBvYmplY3RQcm9wZXJ0aWVzLCBkZWZpbmVQcm9wZXJ0aWVzKSA9PiB2b2lkO1xuICAgIHdpdGhvdXRDaGFuZ2VUcmFja2luZzogKGNiKSA9PiB2b2lkO1xuICAgIF9jaGFuZ2VkVmFsdWU6IChvYmosIHByb3AsIHZhbHVlKSA9PiB2b2lkO1xuICAgIF9yZWZlcmVuY2VkQXJyYXk6IChvYmosIHByb3AsIGFycmF5UmVmLCBzZXNzaW9uSWQ/KSA9PiB2b2lkO1xuICAgIF9jb252ZXJ0QXJyYXlSZWZlcmVuY2VzVG9DaGFuZ2VzOiAoKSA9PiB2b2lkO1xuICAgIE1hcmtDaGFuZ2VkQXJyYXlSZWZlcmVuY2VzOiAoKSA9PiB2b2lkO1xuICAgIF9jb252ZXJ0VmFsdWU6ICh2YWx1ZSkgPT4gKGFueVtdIHwgbnVsbCk7XG4gICAgZ2V0T2JqZWN0OiAob2JqSWQsIHRlbXBsYXRlKSA9PiAoYW55IHwgbnVsbCk7XG4gICAgX2FwcGx5Q2hhbmdlczogKGNoYW5nZXMsIGZvcmNlLCBzdWJzY3JpcHRpb25JZCwgY2FsbENvbnRleHQpID0+IChudW1iZXIpO1xuICAgIF9hcHBseU9iamVjdENoYW5nZXM6IChjaGFuZ2VzLCByb2xsYmFjaywgb2JqLCBmb3JjZSkgPT4gKGJvb2xlYW4pO1xuICAgIF92YWxpZGF0ZVNlcnZlckluY29taW5nUHJvcGVydHk6IChvYmosIHByb3AsIGRlZmluZVByb3BlcnR5LCBuZXdWYWx1ZSkgPT4gKGJvb2xlYW4pO1xuICAgIF9hcHBseVByb3BlcnR5Q2hhbmdlOiAoY2hhbmdlcywgcm9sbGJhY2ssIG9iaiwgcHJvcCwgaXgsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgZm9yY2UpID0+IChib29sZWFuKTtcbiAgICBfcm9sbGJhY2s6IChyb2xsYmFjaykgPT4gdm9pZDtcbiAgICBfcm9sbGJhY2tDaGFuZ2VzOiAoKSA9PiB2b2lkO1xuICAgIF9jcmVhdGVPYmplY3Q6ICgpID0+IGFueTtcbiAgICBfY3JlYXRlRW1wdHlPYmplY3Q6ICh0ZW1wbGF0ZSwgb2JqSWQsIGRlZmluZVByb3BlcnR5LCBpc1RyYW5zaWVudCkgPT4gYW55O1xuICAgIGluamVjdDogKHRlbXBsYXRlLCBpbmplY3RvcikgPT4gdm9pZDtcbiAgICBfcXVldWVSZW1vdGVDYWxsOiAob2JqSWQsIGZ1bmN0aW9uTmFtZSwgZGVmZXJyZWQsIGFyZ3MpID0+IHZvaWQ7XG4gICAgX3Byb2Nlc3NRdWV1ZTogKCkgPT4gdm9pZDtcbiAgICBfdG9UcmFuc3BvcnQ6IChvYmopID0+IGFueTtcbiAgICBfZnJvbVRyYW5zcG9ydDogKG9iaikgPT4gYW55O1xuICAgIF9leHRyYWN0QXJndW1lbnRzOiAocmVtb3RlQ2FsbCkgPT4gYW55O1xuICAgIF90cmltQXJyYXk6IChhcnJheSkgPT4gdm9pZDtcbiAgICBfZGVsZXRlQ2hhbmdlR3JvdXBzOiAodHlwZSkgPT4gdm9pZDtcbiAgICBfZ2V0U3Vic2NyaXB0aW9uczogKHNlc3Npb25JZD8pID0+IFN1YnNjcmlwdGlvbnMgfCBudWxsO1xuICAgIF9nZXRTdWJzY3JpcHRpb246IChzdWJzY3JpcHRpb25JZD8pID0+IFN1YnNjcmlwdGlvbjtcbiAgICBjbGVhblByaXZhdGVWYWx1ZXM6IChwcm9wLCBsb2dWYWx1ZSwgZGVmaW5lUHJvcGVydHkpID0+IChzdHJpbmcgfCBhbnkpO1xuICAgIFJlbW90ZWFibGU6IChCYXNlKSA9PiAoKSA9PiBhbnk7XG4gICAgQmluZGFibGU6IChCYXNlKSA9PiAoKSA9PiBhbnk7XG4gICAgUGVyc2lzdGFibGU6IChCYXNlKSA9PiAoKSA9PiBhbnk7XG4gICAgYmluZERlY29yYXRvcnM6IChvYmplY3RUZW1wbGF0ZT8pID0+IHZvaWQ7XG4gICAgcHJvY2Vzc01lc3NhZ2U6IChyZW1vdGVDYWxsLCBzdWJzY3JpcHRpb25JZCwgcmVzdG9yZVNlc3Npb25DYWxsYmFjaywgcmVxPzogUmVxdWVzdCwgcmVzPzogUmVzcG9uc2UpID0+ICh1bmRlZmluZWQgfCBhbnkpO1xuICAgIGVuYWJsZVNlbmRNZXNzYWdlOiAodmFsdWUsIG1lc3NhZ2VDYWxsYmFjaywgc2Vzc2lvbklkKSA9PiB2b2lkO1xuICAgIHN5bmNTZXNzaW9uOiAoc2Vzc2lvbklkKSA9PiB2b2lkO1xuICAgIHJlc3RvcmVTZXNzaW9uOiAoc2Vzc2lvbklkLCBzYXZlZFNlc3Npb246IFNhdmVkU2Vzc2lvbiwgc2VuZE1lc3NhZ2U6IFNlbmRNZXNzYWdlKSA9PiBib29sZWFuO1xuICAgIHNhdmVTZXNzaW9uOiAoc2Vzc2lvbklkKSA9PiBTYXZlZFNlc3Npb247XG4gICAgc2V0TWluaW11bVNlcXVlbmNlOiAobmV4dE9iaklkKSA9PiB2b2lkO1xuICAgIGRlbGV0ZVNlc3Npb246IChzZXNzaW9uSWQpID0+IHZvaWQ7XG4gICAgY3JlYXRlU2Vzc2lvbjogKHJvbGU6IGFueSwgc2VuZE1lc3NhZ2U6IFNlbmRNZXNzYWdlLCBzZXNzaW9uSWQ6IGFueSkgPT4gYW55O1xuICAgIGxvZzogKGxldmVsLCBkYXRhKSA9PiB2b2lkO1xuICAgIG5leHRPYmpJZDogbnVtYmVyO1xuICAgIG1heENsaWVudFNlcXVlbmNlOiBudW1iZXI7XG4gICAgbG9nTGV2ZWw6IG51bWJlcjtcbiAgICBfX2NvbmZsaWN0TW9kZV9fOiBzdHJpbmc7XG4gICAgX19jaGFuZ2VUcmFja2luZ19fOiBib29sZWFuO1xuICAgIF91c2VHZXR0ZXJzU2V0dGVyczogYm9vbGVhbjtcbiAgICBsb2dnZXI6IGFueTtcbiAgICByb2xlOiBhbnk7XG4gICAgY3VycmVudFNlc3Npb246IGFueTtcbiAgICBzZXNzaW9ucz86IFNlc3Npb25zO1xuICAgIG5leHRTdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuICAgIG5leHRTZXNzaW9uSWQ6IG51bWJlcjtcbiAgICBjb250cm9sbGVyOiBJU2Vtb3R1c0NvbnRyb2xsZXI7XG4gICAgY2hhbmdlU3RyaW5nOiBzdHJpbmc7XG5cblxuICAgIF9nZXRTZXNzaW9uKF9zaWQ/OiBhbnkpOiBTZXNzaW9uO1xuXG4gICAgc3Vic2NyaWJlKHJvbGU6IGFueSk6IG51bWJlcjtcblxuICAgIHNldFNlc3Npb24oc2Vzc2lvbklkOiBhbnkpOiB2b2lkO1xuXG4gICAgZ2V0Q2hhbmdlcyhzdWJzY3JpcHRpb25JZD86IGFueSk6IENoYW5nZUdyb3VwO1xuXG4gICAgX2RlbGV0ZUNoYW5nZXMoKTogdm9pZDtcblxuICAgIGdldFBlbmRpbmdDYWxsQ291bnQoc2Vzc2lvbklkOiBhbnkpOiBhbnk7XG59XG4iXX0=
//# sourceMappingURL=Types.js.map

@@ -47,2 +47,2 @@ "use strict";

exports.logTime = logTime;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlcnMvVXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3QkFBd0I7OztBQUl4QixTQUFnQixLQUFLLENBQUMsRUFBVTtJQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFGRCxzQkFFQztBQUVELFNBQWdCLEtBQUs7SUFDakIsTUFBTSxNQUFNLEdBQW1ELEVBQUUsQ0FBQztJQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU07UUFDbEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBUEQsc0JBT0M7QUFHRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixRQUFRLENBQUMsR0FBRztJQUN4QixJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7UUFDdEIsT0FBTyxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUMsQ0FBQztLQUN2RTtTQUFNO1FBQ0gsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDekIsT0FBTyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUMsQ0FBQztTQUN6QjthQUFNO1lBQ0gsT0FBTyxHQUFHLENBQUM7U0FDZDtLQUNKO0FBQ0wsQ0FBQztBQVZELDRCQVVDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLFdBQXdCO0lBQzVDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7UUFDdkIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBSEQsMEJBR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBRIFJlcGxhY2VtZW50IEhlbHBlcnNcblxuaW1wb3J0IHsgQ2FsbENvbnRleHQgfSBmcm9tICcuL1R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoXyA9PiBzZXRUaW1lb3V0KF8sIG1zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZlcigpIHtcbiAgICBjb25zdCByZXN1bHQ6IHsgcHJvbWlzZT86IGFueSwgcmVzb2x2ZT86IGFueSwgcmVqZWN0PzogYW55IH0gPSB7fTtcbiAgICByZXN1bHQucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgcmVzdWx0LnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICByZXN1bHQucmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG9cbiAqXG4gKiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGFuIGFjdHVhbCBlcnJvciAod2lsbCB0aHJvdyBhbiBFcnJvciBvYmplY3QpIGFuZCBhIHN0cmluZyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBtYXlcbiAqIHRocm93IHdoaWNoIGlzIHRvIGdldCBwaXBlZCBiYWNrIHRvIHRoZSBjYWxsZXIuICBGb3IgYW4gYWN0dWFsIGVycm9yIHdlIHdhbnQgdG8gbG9nIHRoZSBzdGFjayB0cmFjZVxuICpcbiAqIEBwYXJhbSBlcnIgdW5rbm93blxuICpcbiAqIEByZXR1cm5zIHsqfSB1bmtub3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvcihlcnIpIHtcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHtjb2RlOiAnaW50ZXJuYWxfZXJyb3InLCB0ZXh0OiAnQW4gaW50ZXJuYWwgZXJyb3Igb2NjdXJyZWQnfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB7bWVzc2FnZTogZXJyfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBlcnI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2dUaW1lKGNhbGxDb250ZXh0OiBDYWxsQ29udGV4dCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtXG4gICAgICAgIGNhbGxDb250ZXh0LnN0YXJ0VGltZS5nZXRUaW1lKCk7XG59Il19
//# sourceMappingURL=Utilities.js.map

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

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -43,3 +43,3 @@ return class_1;

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -54,3 +54,3 @@ return class_1;

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -61,2 +61,2 @@ return class_1;

exports.Bindable = Bindable;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBFeHRlbmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NldHVwRXh0ZW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0hBQWtIO0FBQ2xILCtFQUErRTs7O0FBRS9FLE1BQU0sU0FBUyxHQUNYLENBQUMsSUFBSSxJQUFLLElBQVksQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQztRQUNHLE1BQU0sYUFBYSxHQUNmLE1BQU0sQ0FBQyxjQUFjO1lBQ3JCLENBQUMsRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLFlBQVksS0FBSztnQkFDN0IsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDVixDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDO1lBQ04sVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDVixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDYixJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2Y7aUJBQ0o7WUFDTCxDQUFDLENBQUM7UUFDTixPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakIsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVwQixTQUFTLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUVELENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsRUFBRSxDQUFDO0FBRVQsU0FBZ0IsV0FBVyxDQUFDLElBQUk7SUFDNUIsT0FBTyxDQUFDLFVBQVUsTUFBTTtRQUNwQixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNCLFNBQVMsT0FBTztZQUNaLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMvRSxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDWixDQUFDO0FBVkQsa0NBVUM7QUFFRCxTQUFnQixVQUFVLENBQUMsSUFBSTtJQUMzQixPQUFPLENBQUMsVUFBVSxNQUFNO1FBQ3BCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0IsU0FBUyxPQUFPO1lBQ1osT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQy9FLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNaLENBQUM7QUFWRCxnQ0FVQztBQUVELFNBQWdCLFFBQVEsQ0FBQyxJQUFJO0lBQ3pCLE9BQU8sQ0FBQyxVQUFVLE1BQU07UUFDcEIsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzQixTQUFTLE9BQU87WUFDWixPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDL0UsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ1osQ0FBQztBQVZELDRCQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlc2UgdHdvIG1peGlucyBhbmQgZXh0ZW5kZXIgZnVuY3Rpb25zIGFyZSBuZWVkZWQgYmVjYXVzZSBpbiB0aGUgYnJvd3NlciB3ZSBvbmx5IGluY2x1ZGUgc3VwZXJ0eXBlIGFuZCBzZW1vdHVzXG4vLyBhbmQgc2luY2UgY2xhc3NlcyB1c2UgdGhlc2UgaW4gdGhlaXIgZXh0ZW5kcyBoaWVyYXJjaHkgdGhleSBtdXN0IGJlIGRlZmluZWQuXG5cbmNvbnN0IF9fZXh0ZW5kcyA9XG4gICAgKHRoaXMgJiYgKHRoaXMgYXMgYW55KS5fX2V4dGVuZHMpIHx8XG4gICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5kU3RhdGljcyA9XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7X19wcm90b19fOiBbXX0gaW5zdGFuY2VvZiBBcnJheSAmJlxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICAgICAgICAgICAgICB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRbcF0gPSBiW3BdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6ICgoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUpLCBuZXcgX18oKSk7XG4gICAgICAgIH07XG4gICAgfSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFBlcnNpc3RhYmxlKEJhc2UpIHtcbiAgICByZXR1cm4gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICAgICAgX19leHRlbmRzKGNsYXNzXzEsIF9zdXBlcik7XG5cbiAgICAgICAgZnVuY3Rpb24gY2xhc3NfMSgpIHtcbiAgICAgICAgICAgIHJldHVybiAoX3N1cGVyICE9PSBudWxsICYmIFJlZmxlY3QuYXBwbHkoX3N1cGVyLCB0aGlzLCBhcmd1bWVudHMpKSB8fCB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsYXNzXzE7XG4gICAgfSkoQmFzZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlbW90ZWFibGUoQmFzZSkge1xuICAgIHJldHVybiAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgICAgICBfX2V4dGVuZHMoY2xhc3NfMSwgX3N1cGVyKTtcblxuICAgICAgICBmdW5jdGlvbiBjbGFzc18xKCkge1xuICAgICAgICAgICAgcmV0dXJuIChfc3VwZXIgIT09IG51bGwgJiYgUmVmbGVjdC5hcHBseShfc3VwZXIsIHRoaXMsIGFyZ3VtZW50cykpIHx8IHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xhc3NfMTtcbiAgICB9KShCYXNlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQmluZGFibGUoQmFzZSkge1xuICAgIHJldHVybiAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgICAgICBfX2V4dGVuZHMoY2xhc3NfMSwgX3N1cGVyKTtcblxuICAgICAgICBmdW5jdGlvbiBjbGFzc18xKCkge1xuICAgICAgICAgICAgcmV0dXJuIChfc3VwZXIgIT09IG51bGwgJiYgUmVmbGVjdC5hcHBseShfc3VwZXIsIHRoaXMsIGFyZ3VtZW50cykpIHx8IHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xhc3NfMTtcbiAgICB9KShCYXNlKVxufVxuXG5cbiJdfQ==
//# sourceMappingURL=setupExtends.js.map

@@ -17,6 +17,7 @@ /**

// 2nd pass: Semotus (sClass) -> Semotus (decorator) -> Supertype (eval ret) -> Semotus (return)
export function supertypeClass(objectTemplate, SupertypeModule, target) {
export function supertypeClass(getObjectTemplate, SupertypeModule, target) {
let ret;
let ObjectTemplate = SupertypeModule.default;
let syncStates = []; // Default syncStates to empty array
let objectTemplate = getObjectTemplate();
// Decorator workerbee

@@ -76,6 +77,4 @@ const decorator = function decorator(target) {

}
export function Supertype(template, objectTemplate, Supertype) {
return Reflect.construct(Supertype, [objectTemplate], template.constructor);
}
export function property(objectTemplate, SupertypeModule, props, toClientRuleSet, toServerRuleSet) {
export function property(getObjectTemplate, SupertypeModule, props, toClientRuleSet, toServerRuleSet) {
const objectTemplate = getObjectTemplate();
props = props || {};

@@ -94,3 +93,4 @@ props.toClient = applyRuleSet(props.toClient, toClientRuleSet);

}
export function remote(objectTemplate, defineProperty) {
export function remote(getObjectTemplate, defineProperty) {
const objectTemplate = getObjectTemplate();
defineProperty = defineProperty || {};

@@ -136,2 +136,2 @@ /*

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUdIOztHQUVHO0FBRUgsd0JBQXdCO0FBQ3hCLDJFQUEyRTtBQUMzRSxnR0FBZ0c7QUFDaEcsTUFBTSxVQUFVLGNBQWMsQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU07SUFDbEUsSUFBSSxHQUFHLENBQUM7SUFDUixJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBQzdDLElBQUksVUFBVSxHQUFhLEVBQUUsQ0FBQyxDQUFFLG9DQUFvQztJQUVwRSxzQkFBc0I7SUFDdEIsTUFBTSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsTUFBTTtRQUN2QyxtRkFBbUY7UUFDbkYsMEJBQTBCO1FBQzFCLElBQUksR0FBRyxFQUFFO1lBQ0wsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUE7U0FDcEM7YUFBTTtZQUNILEdBQUcsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztTQUNoRTtRQUVELG9FQUFvRTtRQUNwRSxNQUFNLENBQUMsY0FBYyxHQUFHLFVBQVUsWUFBWSxFQUFFLGNBQWM7WUFDMUQsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFO2dCQUNyQixNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQzFELFlBQVksRUFDWixjQUFjLENBQUMsSUFBSSxFQUNuQixjQUFjLENBQUMsRUFBRSxFQUNqQixjQUFjLENBQUMsUUFBUSxDQUMxQixDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxjQUFjLENBQUM7Z0JBQ2xFLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBRW5DLCtDQUErQztnQkFDL0MsY0FBYyxDQUFDLEdBQUcsR0FBRztvQkFDakIsSUFBSSxrQkFBa0IsR0FBRyxLQUFLLFlBQVksRUFBRSxDQUFDO29CQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7d0JBQzNCLElBQUksYUFBYSxHQUFHLGNBQWMsQ0FBQyxFQUFFLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7d0JBQ3JFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO3FCQUN6RTtvQkFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUM7Z0JBRUYsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7Z0JBQzVCLGNBQWMsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDekYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUMvRDtRQUNMLENBQUMsQ0FBQztRQUVGLCtEQUErRDtRQUMvRCxJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQU0sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixzRUFBc0U7SUFDdEUsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2xCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzVCO1NBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxZQUFZLEtBQUssRUFBRTtRQUMxRSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztLQUNsQztTQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUc7UUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLFVBQVUseUVBQXlFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDeEk7SUFFRCxvRkFBb0Y7SUFDcEYsb0ZBQW9GO0lBQ3BGLHdIQUF3SDtJQUN4SCxHQUFHLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsT0FBTyxTQUFTLENBQUMsQ0FBQywwREFBMEQ7QUFDaEYsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxTQUFTO0lBQ3pELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLGVBQWU7SUFDN0YsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDcEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMvRCxLQUFLLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RFLE9BQU8sVUFBVSxNQUFNLEVBQUUsU0FBUztRQUM5QixhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUdELE1BQU0sVUFBVSxNQUFNLENBQUMsY0FBYyxFQUFFLGNBQWM7SUFDakQsY0FBYyxHQUFHLGNBQWMsSUFBSSxFQUFFLENBQUM7SUFFdEM7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUU7UUFDcEIsY0FBYyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUM7S0FDaEM7SUFFRCxpRUFBaUU7SUFDakUsSUFBSSxlQUFlLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDO0lBQ3RELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBRXZDLE9BQU8sVUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVU7UUFDN0MsVUFBVSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsY0FBYyxDQUM1QyxZQUFZLEVBQ1osVUFBVSxDQUFDLEtBQUssRUFDaEIsY0FBYyxDQUFDLEVBQUUsRUFDakIsY0FBYyxDQUFDLFFBQVEsRUFDdkIsZUFBZSxFQUNmLFFBQVEsRUFDUixjQUFjLENBQUMsTUFBTSxDQUN4QixDQUFDO1FBRUY7OztXQUdHO1FBQ0gsSUFBSSxjQUFjLENBQUMsRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7U0FDdEM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDckIsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztTQUN0RDtRQUNELElBQUksY0FBYyxDQUFDLEVBQUUsRUFBRTtZQUNuQixVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzVDO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUFBLENBQUM7QUFHRixTQUFTLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTztJQUMvQixJQUFJLElBQUksWUFBWSxLQUFLLElBQUksT0FBTyxZQUFZLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN6RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7S0FDTjtTQUFNO1FBQ0gsT0FBTyxJQUFJLENBQUM7S0FDZjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF0dGFjaGVzIHN5bmNTdGF0ZXMgcHJvcHMgdG8gdGhlIHRlbXBsYXRlXG4gKiBJZiBhIGNsYXNzIGlzIGRlY29yYXRlZCBsaWtlIEBzdXBlcnR5cGVDbGFzcyh7c3luY1N0YXRlczogWydpbnRlcm5hbCcsICdob21lJ119KSwgYW55IGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzXG4gKiBpbmNsdWRpbmcgdGhvc2UgdGhhdCBleGlzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcHBsaWNhdGlvbiwgc2hvdWxkIG9ubHkgYmUgc2VudCBvdmVyIHdoZW4gdGhlIGNvbnRyb2xsZXIgc3RhdGUgb25cbiAqIHRoZSBzZXJ2ZXIgaW5kaWNhdGVzIHRoYXQgdGhlIGNvcnJlY3Qgc3luY1N0YXRlIChpZiBhbmQgb25seSBpZiBjb250cm9sbGVyLnN5bmNTdGF0ZSA9ICdob21lJyBvciAnaW50ZXJuYWwnLCB0aGVuIGFuXG4gKiBvYmplY3Qgb2YgdGhpcyBjbGFzcyB3aWxsIGJlIHNlbnQsIG90aGVyd2lzZSBzZW1vdHVzIHdpbGwgcmVmcmFpbiBmcm9tIHNlbmRpbmcgaXQgb3ZlcikuIFRoZSBjYXZlYXQsIGhvd2V2ZXIsIGlzIGlmXG4gKiBzZW1vdHVzJyBjb250cm9sbGVyJ3Mgc3luY1N0YXRlIGlzIGRlZmluZWQgYXMgJyonIHRoZW4gd2Ugd2lsbCBieSBkZWZhdWx0IHNlbmQgYWxsIHRlbXBsYXRlcyB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyLVxuICogd2lzZSAodGhlIHNhbWUgYXMgdHJlYXRpbmcgc3luY1N0YXRlOiBbJyonXSlcbiAqXG4gKi9cblxuXG4vKipcbiAqIEBUT0RPOiBUaGlzIHNob3VsZCBiZSBjb25zb2xpZGF0ZWQgd2l0aCBTdXBlcnR5cGUncyB2ZXJzaW9uIHdoZW4gd2UgZmluaXNoIGNvbnZlcnRpbmcgdG8gdHlwZXNjcmlwdFxuICovXG5cbi8vIENvbnRleHQgU3dpdGNoIENoYWluOlxuLy8gMXN0IHBhc3M6IFNlbW90dXMgKHNDbGFzcykgLT4gU3VwZXJ0eXBlIChzQ2xhc3MpIC0+IFNlbW90dXMgKHJldHVybiBSZXQpXG4vLyAybmQgcGFzczogU2Vtb3R1cyAoc0NsYXNzKSAtPiBTZW1vdHVzIChkZWNvcmF0b3IpIC0+IFN1cGVydHlwZSAoZXZhbCByZXQpIC0+IFNlbW90dXMgKHJldHVybilcbmV4cG9ydCBmdW5jdGlvbiBzdXBlcnR5cGVDbGFzcyhvYmplY3RUZW1wbGF0ZSwgU3VwZXJ0eXBlTW9kdWxlLCB0YXJnZXQpOiBhbnkge1xuICAgIGxldCByZXQ7XG4gICAgbGV0IE9iamVjdFRlbXBsYXRlID0gU3VwZXJ0eXBlTW9kdWxlLmRlZmF1bHQ7XG4gICAgbGV0IHN5bmNTdGF0ZXM6IFN0cmluZ1tdID0gW107ICAvLyBEZWZhdWx0IHN5bmNTdGF0ZXMgdG8gZW1wdHkgYXJyYXlcblxuICAgIC8vIERlY29yYXRvciB3b3JrZXJiZWVcbiAgICBjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0KSB7XG4gICAgICAgIC8vIHNlY29uZCB0aW1lIHdlIG11c3QgY2FsbCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgdGhlIGZpcnN0IHRpbWUgYmVjYXVzZSBpdCBoYXMgdGhlXG4gICAgICAgIC8vIHByb3BlcnRpZXMgYXMgYSBjbG9zdXJlXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICAgIHJldCA9IHJldCh0YXJnZXQsIG9iamVjdFRlbXBsYXRlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0ID0gU3VwZXJ0eXBlTW9kdWxlLnN1cGVydHlwZUNsYXNzKHRhcmdldCwgb2JqZWN0VGVtcGxhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFpbmx5IGZvciBwZXJzaXN0b3IgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBnZXQgdHJhbnNwb3J0ZWRcbiAgICAgICAgdGFyZ2V0LmNyZWF0ZVByb3BlcnR5ID0gZnVuY3Rpb24gKHByb3BlcnR5TmFtZSwgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgICAgIGlmIChkZWZpbmVQcm9wZXJ0eS5ib2R5KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtwcm9wZXJ0eU5hbWVdID0gb2JqZWN0VGVtcGxhdGUuX3NldHVwRnVuY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkuYm9keSxcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkub24sXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZVByb3BlcnR5LnZhbGlkYXRlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnByb3RvdHlwZS5fX2Ftb3JwaGljcHJvcHNfX1twcm9wZXJ0eU5hbWVdID0gZGVmaW5lUHJvcGVydHk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkZWZpbmVQcm9wZXJ0eS52YWx1ZTtcblxuICAgICAgICAgICAgICAgIC8vIFRoZSBnZXR0ZXIgYWN0dWFsbHkgaW5pdGlhbGl6ZXMgdGhlIHByb3BlcnR5XG4gICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZVNwYWNlZFByb3BlcnR5ID0gYF9fJHtwcm9wZXJ0eU5hbWV9YDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXNbbmFtZVNwYWNlZFByb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsb25lVGVtcGxhdGUgPSBkZWZpbmVQcm9wZXJ0eS5vZiB8fCBkZWZpbmVQcm9wZXJ0eS50eXBlIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW25hbWVTcGFjZWRQcm9wZXJ0eV0gPSBPYmplY3RUZW1wbGF0ZS5jbG9uZSh2YWx1ZSwgY2xvbmVUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbbmFtZVNwYWNlZFByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmaW5lUHJvcGVydGllcyA9IHt9O1xuICAgICAgICAgICAgICAgIG9iamVjdFRlbXBsYXRlLl9zZXR1cFByb3BlcnR5KHByb3BlcnR5TmFtZSwgZGVmaW5lUHJvcGVydHksIHVuZGVmaW5lZCwgZGVmaW5lUHJvcGVydGllcyk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LnByb3RvdHlwZSwgZGVmaW5lUHJvcGVydGllcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQXNzaWduaW5nIHN5bmMgc3RhdGVzIGZyb20gcHJvcCBkZWZpbml0aW9uIG9udG8gdGhlIHRlbXBsYXRlXG4gICAgICAgIGlmIChzeW5jU3RhdGVzKSB7XG4gICAgICAgICAgICB0YXJnZXQuc3luY1N0YXRlcyA9IHN5bmNTdGF0ZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH07XG5cbiAgICAvLyBDYWxsaW5nIHRoZSBkZWNvcmF0b3IgcHJvY2Vzc29yIHdpdGggdGhlIGFjdHVhbCBUZW1wbGF0ZSAoMm5kIHRpbWUpXG4gICAgaWYgKHRhcmdldC5wcm90b3R5cGUpIHtcbiAgICAgICAgcmV0dXJuIGRlY29yYXRvcih0YXJnZXQpO1xuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5zeW5jU3RhdGVzICYmIHRhcmdldC5zeW5jU3RhdGVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgc3luY1N0YXRlcyA9IHRhcmdldC5zeW5jU3RhdGVzO1xuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5zeW5jU3RhdGVzICkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFNlbW90dXMgd2FybmluZzogJHt0YXJnZXQuc3luY1N0YXRlc30gaXMgbm90IGFuIGFycmF5IHZhbHVlLCBzbyBub3Qgc2V0dGluZyB1cCBTeW5jU3RhdGVzIGZvciB0aGlzIHRhcmdldDogJHt0YXJnZXR9YCk7XG4gICAgfVxuXG4gICAgLy8gQ2FsbGVkIGZpcnN0IHRpbWUgd2l0aCBwYXJhbWV0ZXJzIChwcm9wIGRlZmluaXRpb24pIHJhdGhlciB0aGFuIHRhcmdldCAodGVtcGxhdGUpXG4gICAgLy8gY2FsbCBzdXBlcnR5cGVzIHN1cGVydHlwZUNsYXNzIGZ1bmN0aW9uIHdoaWNoIHdpbGwgcmV0dXJuIGEgZnVuY3Rpb24gdGhhdCBtdXN0IGJlXG4gICAgLy8gY2FsbGVkIG9uIHRoZSAybmQgcGFzcyB3aGVuIHdlIGhhdmUgYSB0YXJnZXQuIFRoaXMgZnVuY3Rpb24ncyBjbG9zdXJlIHdpbGwgYWxzbyBoYXZlIGEgcmVmIHRvIHRoZSBvcmlnaW5hbCBwcm9wZXJ0aWVzXG4gICAgcmV0ID0gU3VwZXJ0eXBlTW9kdWxlLnN1cGVydHlwZUNsYXNzKHRhcmdldCwgb2JqZWN0VGVtcGxhdGUpO1xuICAgIHJldHVybiBkZWNvcmF0b3I7IC8vIGRlY29yYXRvciB3aWxsIGJlIGNhbGxlZCAybmQgdGltZSB3aXRoIHJldCBhcyBhIGNsb3N1cmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN1cGVydHlwZSh0ZW1wbGF0ZSwgb2JqZWN0VGVtcGxhdGUsIFN1cGVydHlwZSkge1xuICAgIHJldHVybiBSZWZsZWN0LmNvbnN0cnVjdChTdXBlcnR5cGUsIFtvYmplY3RUZW1wbGF0ZV0sIHRlbXBsYXRlLmNvbnN0cnVjdG9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5KG9iamVjdFRlbXBsYXRlLCBTdXBlcnR5cGVNb2R1bGUsIHByb3BzLCB0b0NsaWVudFJ1bGVTZXQsIHRvU2VydmVyUnVsZVNldCkge1xuICAgIHByb3BzID0gcHJvcHMgfHwge307XG4gICAgcHJvcHMudG9DbGllbnQgPSBhcHBseVJ1bGVTZXQocHJvcHMudG9DbGllbnQsIHRvQ2xpZW50UnVsZVNldCk7XG4gICAgcHJvcHMudG9TZXJ2ZXIgPSBhcHBseVJ1bGVTZXQocHJvcHMudG9TZXJ2ZXIsIHRvU2VydmVyUnVsZVNldCk7XG4gICAgY29uc3QgYmFzZURlY29yYXRvciA9IFN1cGVydHlwZU1vZHVsZS5wcm9wZXJ0eShwcm9wcywgb2JqZWN0VGVtcGxhdGUpO1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXkpIHtcbiAgICAgICAgYmFzZURlY29yYXRvcih0YXJnZXQsIHRhcmdldEtleSk7XG4gICAgICAgIGNvbnN0IGRlZmluZVByb3BlcnRpZXMgPSB7fTtcbiAgICAgICAgcHJvcHMuZW51bWVyYWJsZSA9IHRydWU7XG4gICAgICAgIHByb3BzLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICAgb2JqZWN0VGVtcGxhdGUuX3NldHVwUHJvcGVydHkodGFyZ2V0S2V5LCBwcm9wcywgdW5kZWZpbmVkLCBkZWZpbmVQcm9wZXJ0aWVzKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBkZWZpbmVQcm9wZXJ0aWVzKTtcbiAgICB9O1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdGUob2JqZWN0VGVtcGxhdGUsIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eSB8fCB7fTtcblxuICAgIC8qXG4gICAgICAgIGlmIHdlIGhhdmVuJ3Qgc3VwcGxpZWQgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbnRvIHRoZSBkZWNvcmF0b3IsXG4gICAgICAgICBkZWZhdWx0IHRoZSByb2xlIG9mIHRoaXMgZnVuY3Rpb24gdG8gYSBzZXJ2ZXIgQVBJIGZ1bmN0aW9uXG4gICAgICovXG4gICAgaWYgKCFkZWZpbmVQcm9wZXJ0eS5vbikge1xuICAgICAgICBkZWZpbmVQcm9wZXJ0eS5vbiA9ICdzZXJ2ZXInO1xuICAgIH1cblxuICAgIC8vIGZ1bmN0aW9uIHRoYXQgd2UgY2FsbCB0byB2YWxpZGF0ZSBhbnkgY2hhbmdlcyBmb3IgcmVtb3RlIGNhbGxzXG4gICAgbGV0IHJlbW90ZVZhbGlkYXRvciA9IGRlZmluZVByb3BlcnR5LnNlcnZlclZhbGlkYXRpb247XG4gICAgbGV0IGlzUHVibGljID0gISFkZWZpbmVQcm9wZXJ0eS5wdWJsaWM7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSB7XG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBvYmplY3RUZW1wbGF0ZS5fc2V0dXBGdW5jdGlvbihcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUsXG4gICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eS5vbixcbiAgICAgICAgICAgIGRlZmluZVByb3BlcnR5LnZhbGlkYXRlLFxuICAgICAgICAgICAgcmVtb3RlVmFsaWRhdG9yLFxuICAgICAgICAgICAgaXNQdWJsaWMsXG4gICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eS50YXJnZXRcbiAgICAgICAgKTtcblxuICAgICAgICAvKlxuICAgICAgICAgICAgdGhpcyBmdW5jdGlvbiBiZWVuIG1hcmtlZCBhcyBhIHNlcnZlciBBUEkgZWl0aGVyIGV4cGxpY2l0bHkgb3IgYnkgZGVmYXVsdC5cbiAgICAgICAgICAgIHNldCB0aGUgYXBwcm9wcmlhdGUgbWV0YWRhdGEuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZGVmaW5lUHJvcGVydHkub24gPT09ICdzZXJ2ZXInKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnZhbHVlLl9fb25fXyA9ICdzZXJ2ZXInO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlZmluZVByb3BlcnR5LnR5cGUpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsdWUuX19yZXR1cm5zX18gPSBkZWZpbmVQcm9wZXJ0eS50eXBlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZpbmVQcm9wZXJ0eS5vZikge1xuICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZS5fX3JldHVybnNfXyA9IGRlZmluZVByb3BlcnR5Lm9mO1xuICAgICAgICAgICAgZGVzY3JpcHRvci52YWx1ZS5fX3JldHVybnNhcnJheV9fID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5cbmZ1bmN0aW9uIGFwcGx5UnVsZVNldChwcm9wLCBydWxlU2V0KSB7XG4gICAgaWYgKHByb3AgaW5zdGFuY2VvZiBBcnJheSAmJiBydWxlU2V0IGluc3RhbmNlb2YgQXJyYXkgJiYgcnVsZVNldC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBwcm9wLnNvbWUoZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlU2V0LmluZGV4T2YocikgPj0gMDtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHByb3A7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=decorators.js.map

@@ -48,2 +48,2 @@ import { Change } from "./Types.js";

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbmdlR3JvdXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlcnMvQ2hhbmdlR3JvdXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEIsTUFBTSxFQUF3QixtQkFBZ0I7QUFDL0UsT0FBTyxLQUFLLGFBQWEsMkJBQXdCO0FBRWpELE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBMkIsRUFBRSxjQUFjLEVBQUUsT0FBZ0I7SUFDN0UsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUUsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsT0FBZ0I7SUFDL0QsT0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQWdCLENBQUM7QUFDL0QsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFnQixFQUFFLGNBQWMsRUFBRSxPQUFnQjtJQUNsRixPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBZSxDQUFDO0FBQzVELENBQUM7QUFHRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLElBQVksRUFBRSxjQUFjLEVBQUUsT0FBZ0I7SUFDakUsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxRSxDQUFDO0FBR0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFZLEVBQUUsT0FBZ0I7SUFDcEQsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDaEUsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDdkM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyYXlHcm91cCwgQXJyYXlUeXBlcywgQ2hhbmdlLCBDaGFuZ2VHcm91cCwgU2Vtb3R1cyB9IGZyb20gJy4vVHlwZXMnO1xuaW1wb3J0ICogYXMgU3Vic2NyaXB0aW9ucyBmcm9tICcuL1N1YnNjcmlwdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0KHR5cGU6ICdjaGFuZ2UnIHwgQXJyYXlUeXBlcywgc3Vic2NyaXB0aW9uSWQsIHNlbW90dXM6IFNlbW90dXMpOiBDaGFuZ2VHcm91cCB8IEFycmF5R3JvdXAge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbnMuZ2V0U3Vic2NyaXB0aW9uKHNlbW90dXMsIHN1YnNjcmlwdGlvbklkKTtcbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uLmxvZ1t0eXBlXTtcbn1cblxuLyoqXG4gKiBHZXRzIFByb3BlcnR5IGNoYW5nZSBncm91cHMgKG5vbi1hcnJheSlcbiAqXG4gKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWRcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wQ2hhbmdlR3JvdXAoc3Vic2NyaXB0aW9uSWQsIHNlbW90dXM6IFNlbW90dXMpOiBDaGFuZ2VHcm91cCB7XG4gICAgcmV0dXJuIGdldChDaGFuZ2UsIHN1YnNjcmlwdGlvbklkLCBzZW1vdHVzKSBhcyBDaGFuZ2VHcm91cDtcbn1cblxuLyoqXG4gKiBHZXRzIEFycmF5IENoYW5nZSBHcm91cHNcbiAqXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHN1YnNjcmlwdGlvbklkXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJyYXlDaGFuZ2VHcm91cCh0eXBlOiBBcnJheVR5cGVzLCBzdWJzY3JpcHRpb25JZCwgc2Vtb3R1czogU2Vtb3R1cyk6IEFycmF5R3JvdXAge1xuICAgIHJldHVybiBnZXQodHlwZSwgc3Vic2NyaXB0aW9uSWQsIHNlbW90dXMpIGFzIEFycmF5R3JvdXA7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUgYSBjaGFuZ2UgZ3JvdXAgZnJvbSBhIHN1YnNjcmlwdGlvblxuICpcbiAqIEBwYXJhbSB0eXBlXG4gKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWQgdW5rbm93blxuICogQHBhcmFtIHNlbW90dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZSh0eXBlOiBzdHJpbmcsIHN1YnNjcmlwdGlvbklkLCBzZW1vdHVzOiBTZW1vdHVzKSB7XG4gICAgU3Vic2NyaXB0aW9ucy5nZXRTdWJzY3JpcHRpb24oc2Vtb3R1cywgc3Vic2NyaXB0aW9uSWQpLmxvZ1t0eXBlXSA9IHt9O1xufVxuXG5cbi8qKlxuICogUmVtb3ZlIGFsbCBjaGFuZ2UgZ3JvdXBzIGZyb20gYSBzdWJzY3JpcHRpb24gd2l0aCBnaXZlbiB0eXBlXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHNlbW90dXNcbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQWxsKHR5cGU6IHN0cmluZywgc2Vtb3R1czogU2Vtb3R1cykge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIGluIFN1YnNjcmlwdGlvbnMuZ2V0U3Vic2NyaXB0aW9ucyhzZW1vdHVzKSkge1xuICAgICAgICByZW1vdmUodHlwZSwgc3Vic2NyaXB0aW9uLCBzZW1vdHVzKTtcbiAgICB9XG59Il19
//# sourceMappingURL=ChangeGroups.js.map

@@ -60,3 +60,3 @@ import * as Sessions from "./Sessions.js";

function filterSyncStates(semotusClass, semotus) {
const { scope, state } = semotus.controller.syncState;
const { scope, state } = semotus.controller.syncState || {};
const syncStates = semotusClass.syncStates;

@@ -251,2 +251,2 @@ if (semotus.controller.__template__ === semotusClass) { // Don't filter out the controller

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXJzL0NoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLFFBQVEsc0JBQW1CO0FBRXZDOztHQUVHO0FBRUgsNkZBQTZGO0FBRTdGLFNBQVMsc0JBQXNCLENBQUMsT0FBZ0I7SUFDNUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0YsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFnQixFQUFFLEdBQUc7SUFDbEQsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDbEMsT0FBTyxJQUFJLENBQUM7S0FDZjtTQUNJLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7U0FDSSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxJQUFJLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3JFLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN0RDtTQUNJO1FBQ0QsT0FBTyxLQUFLLENBQUM7S0FDaEI7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsR0FBRztJQUNwRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQztBQUMvRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsR0FBRztJQUNwRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJ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QUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUMvQztnQkFFRCxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoQztTQUNKO0tBQ0o7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3RlYWJsZUNsYXNzLCBTZW1vdHVzIH0gZnJvbSAnLi9UeXBlcyc7XG5pbXBvcnQgKiBhcyBTZXNzaW9ucyBmcm9tICcuL1Nlc3Npb25zJztcblxuLyoqXG4gKiBAVE9ETzogRmlsbCBvdXQgd2l0aCBhcnJheSBjaGFuZ2UgZnVuY3Rpb25zLCBldGMuXG4gKi9cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogQ2hhbmdlIE1hbmFnZW1lbnQgRnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmZ1bmN0aW9uIGNvbnRyb2xsZXJIYXNTeW5jU3RhdGUoc2Vtb3R1czogU2Vtb3R1cyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInICYmIHNlbW90dXMuY29udHJvbGxlciAmJiBzZW1vdHVzLmNvbnRyb2xsZXIuc3luY1N0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSXNvbGF0ZWRPYmplY3Qoc2Vtb3R1czogU2Vtb3R1cywgb2JqKTogYm9vbGVhbiB7XG4gICAgaWYgKG9iamVjdE9uQ2xpZW50T25seShzZW1vdHVzLCBvYmopKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmIChvYmplY3RPblNlcnZlck9ubHkoc2Vtb3R1cywgb2JqKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAob2JqLl9fdGVtcGxhdGVfXy5zeW5jU3RhdGVzICYmIGNvbnRyb2xsZXJIYXNTeW5jU3RhdGUoc2Vtb3R1cykpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlclN5bmNTdGF0ZXMob2JqLl9fdGVtcGxhdGVfXywgc2Vtb3R1cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0T25DbGllbnRPbmx5KHNlbW90dXM6IFNlbW90dXMsIG9iaikge1xuICAgIHJldHVybiBzZW1vdHVzLnJvbGUgPT0gJ2NsaWVudCcgJiYgb2JqLl9fdGVtcGxhdGVfXy5fX3RvU2VydmVyX18gPT09IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0T25TZXJ2ZXJPbmx5KHNlbW90dXM6IFNlbW90dXMsIG9iaikge1xuICAgIHJldHVybiBzZW1vdHVzLnJvbGUgPT0gJ3NlcnZlcicgJiYgb2JqLl9fdGVtcGxhdGVfXy5fX3RvQ2xpZW50X18gPT09IGZhbHNlO1xufVxuXG5cbi8qKlxuICogSGVscGVyIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgc3BlY2lmaWVkIHN0YXRlIGV4aXN0cyBpbiB0aGlzIGFycmF5IG9mIHN5bmNTdGF0ZXNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIHN5bmNTdGF0ZXNcbiAqIEBwYXJhbSBzY29wZVxuICovXG5mdW5jdGlvbiBoYXNTdGF0ZShzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzeW5jU3RhdGVzOiBBcnJheTxzdHJpbmc+LCBzY29wZTogJysnIHwgJy0nKSB7XG4gICAgLy8gSWYgdGhlIHN0YXRlIGlzIGVtcHR5IHN0cmluZywgbnVsbCwgb3IgdW5kZWZpbmVkLCB3aWxsIHN5bmMgb25seSBzZW1vdHVzQ2xhc3Mgd2l0aG91dCBzeW5jU3RhdGVzLCBpZiBzdGF0ZSBleGlzdHMsIHdpbGwgZmlsdGVyIG91dCBhbGwgdGhhdCBkbyBub3QgaGF2ZSB0aGF0IHN0YXRlIGluIHRoZWlyIHN5bmNTdGF0ZXNcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgIHJldHVybiBzeW5jU3RhdGVzLmxlbmd0aCA9PT0gMDsgLy8gSUYgYXJyYXkgaXMgZW1wdHksIFRIRU4gZGVmYXVsdCBzdGF0ZSBleGlzdHMgaW4gYXJyYXkuIEVMU0UgSUYgYXJyYXkgaGFzIGFueSB2YWx1ZXMsIHJldHVybnMgZmFsc2VcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmIChzeW5jU3RhdGVzLmxlbmd0aCA9PT0gMCAmJiBzY29wZSA9PT0gJysnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gUmV0dXJuIHRydWUgb24gZW1wdHkgc3luY1N0YXRlcyBhcnJheSwgb25seSBpZiBzY29wZSBpcyBJTkNMVVNJVkVcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBzeW5jU3RhdGVzLmluY2x1ZGVzKHN0YXRlKTsgLy8gSUYgaGFzIHN0YXRlIEFORCBkb2VzIG5vdCBtYXRjaCBhcnJheSBpbmRleGVzLCBUSEVOIHN0YXRlIGRvZXMgTk9UIGV4aXN0XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBmaWx0ZXIgdGhpcyBwcm9wZXJ0eSBPVVRcbiAqIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIG5vdCBmaWx0ZXIgdGhpcyBwcm9wZXJ0eSBvdXQsIGFuZCBhY3R1YWxseSBhY2NlcHQgYW5kIGNoYW5nZSBwcm9wZXJ0aWVzIG9uIHRoaXMgcmVmXG4gKiAgICBTY29wZSB2YWx1ZXM6XG4gKiAgICBJZiAnKic6IEV2ZXJ5dGhpbmcgZ2V0cyBzZW50IChObyBleHBsaWNpdCBjaGVjayBmb3IgdGhpcywganVzdCBjaGVja3MgZm9yIC0gYW5kICspXG4gKiAgICBJZiAnLSc6IEV4Y2x1c2l2ZSB0byBzeW5jU3RhdGVzXG4gKiAgICBJZiAnKyc6IEluY2x1c2l2ZSBvZiBbZGVmYXVsdF9zZXQsIHN5bmNTdGF0ZV1cbiAqIEBwYXJhbSBzZW1vdHVzQ2xhc3NcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKi9cbmZ1bmN0aW9uIGZpbHRlclN5bmNTdGF0ZXMoc2Vtb3R1c0NsYXNzOiBSZW1vdGVhYmxlQ2xhc3MsIHNlbW90dXM6IFNlbW90dXMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7c2NvcGUsIHN0YXRlfSA9IHNlbW90dXMuY29udHJvbGxlci5zeW5jU3RhdGU7XG4gICAgY29uc3Qgc3luY1N0YXRlczogQXJyYXk8c3RyaW5nPiA9IHNlbW90dXNDbGFzcy5zeW5jU3RhdGVzO1xuXG4gICAgaWYgKHNlbW90dXMuY29udHJvbGxlci5fX3RlbXBsYXRlX18gPT09IHNlbW90dXNDbGFzcykgeyAvLyBEb24ndCBmaWx0ZXIgb3V0IHRoZSBjb250cm9sbGVyXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2NvcGUgPT09ICctJyB8fCBzY29wZSA9PT0gJysnKSB7XG4gICAgICAgIHJldHVybiAhaGFzU3RhdGUoc3RhdGUsIHN5bmNTdGF0ZXMsIHNjb3BlKTtcbiAgICB9XG4gICAgZWxzZSB7ICAvLyBzY29wZSBpcyBkZWZhdWx0ICcqJywgb3IgYW55dGhpbmcgbm90IC0gb3IgK1xuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERvIG5vdCBmaWx0ZXIgdGhpcyBzZW1vdHVzQ2xhc3MsIGRvIG5vdCBib3RoZXIgY2hlY2tpbmcgc3luY1N0YXRlXG4gICAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIE5PVCBjcmVhdGUgY2hhbmdlcyBmb3IgdGhlIHByb3BlcnR5IHRoaXMgZGVmaW5lUHJvcGVydHkgbWV0YWRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoXG4gKlxuICogTm8gbmVlZCB0byBjaGVjayBzeW5jU3RhdGVzIGhlcmUgc2luY2UgdGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuXG4gKiAxKSBSZWFkaW5nIHRoZSBzdGF0aWMgdHlwZXNjcmlwdFxuICogMikgT24gdGhlIGNsaWVudCBzaWRlXG4gKlxuICogQHBhcmFtIGRlZmluZVByb3BlcnR5XG4gKiBAcGFyYW0gc2Vtb3R1c0NsYXNzXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZG9Ob3RDaGFuZ2UoZGVmaW5lUHJvcGVydHksIHNlbW90dXNDbGFzczogIFJlbW90ZWFibGVDbGFzcyB8IHVuZGVmaW5lZCwgc2Vtb3R1czogU2Vtb3R1cykge1xuICAgIGlmIChkZWZpbmVQcm9wZXJ0eS5pc0xvY2FsKSB7IC8vIElmIHdlJ3ZlIGRlZmluZWQgdGhlIHByb3BlcnR5IGFzIGxvY2FsIHRvIHdoZXJlIGl0J3MgY3JlYXRlZCAvIG1vZGlmaWVkXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmIChkZWZpbmVQcm9wZXJ0eS50b1NlcnZlciA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09PSAnY2xpZW50Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIHNlbmQgcHJvcGVydHkgdG8gdGhlIHNlcnZlciBmcm9tIGNsaWVudCwgd2hlbiBwcm9wJ3MgdG9TZXJ2ZXIgPT0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKGRlZmluZVByb3BlcnR5LnRvQ2xpZW50ID09PSBmYWxzZSAmJiBzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInKSB7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gc2VuZCBwcm9wZXJ0eSB0byB0aGUgY2xpZW50IGZyb20gc2VydmVyLCB3aGVuIHByb3AncyB0b0NsaWVudCA9PSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2Vtb3R1c0NsYXNzKSB7IC8vIERlYWxpbmcgd2l0aCBhbiBhY3R1YWwgc2Vtb3R1cyBjbGFzc1xuICAgICAgICBpZiAoc2Vtb3R1c0NsYXNzLl9fdG9TZXJ2ZXJfXyA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09ICdjbGllbnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIHNlbmQgcHJvcGVydHkgdG8gdGhlIHNlcnZlciBmcm9tIGNsaWVudCwgd2hlbiB0aGUgd2hvbGUgc2Vtb3R1c0NsYXNzIGhhcyB0b1NlcnZlciA9PSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZW1vdHVzQ2xhc3MuX190b0NsaWVudF9fID09PSBmYWxzZSAmJiBzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIHNlbmQgcHJvcGVydHkgdG8gdGhlIGNsaWVudCBmcm9tIHNlcnZlciwgd2hlbiB0aGUgd2hvbGUgc2Vtb3R1c0NsYXNzIGhhcyB0b0NsaWVudCA9PSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIG5vdCBhY2NlcHQgY2hhbmdlcyBmb3IgdGhlIHByb3BlcnR5IHRoaXMgZGVmaW5lUHJvcGVydHkgbWV0YWRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoXG4gKlxuICpcbiAqIEBwYXJhbSBkZWZpbmVQcm9wZXJ0eVxuICogQHBhcmFtIHNlbW90dXNDbGFzc1xuICogQHBhcmFtIHNlbW90dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvTm90QWNjZXB0KGRlZmluZVByb3BlcnR5LCBzZW1vdHVzQ2xhc3M6IFJlbW90ZWFibGVDbGFzcywgc2Vtb3R1czogU2Vtb3R1cykge1xuICAgIGlmIChkZWZpbmVQcm9wZXJ0eS5pc0xvY2FsKSB7IC8vIElmIHdlJ3ZlIGRlZmluZWQgdGhlIHByb3BlcnR5IGFzIGxvY2FsIHRvIHdoZXJlIGl0J3MgY3JlYXRlZCAvIG1vZGlmaWVkXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmIChkZWZpbmVQcm9wZXJ0eS50b1NlcnZlciA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGFjY2VwdCBjaGFuZ2VzIHdoZXJlIHRvU2VydmVyID09IGZhbHNlLCBidXQgd2UncmUgb24gdGhlIHNlcnZlclxuICAgIH1cbiAgICBlbHNlIGlmIChkZWZpbmVQcm9wZXJ0eS50b0NsaWVudCA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09PSAnY2xpZW50Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGFjY2VwdCBjaGFuZ2VzIHdoZXJlIHRvQ2xpZW50IGlzIGZhbHNlLCBidXQgd2UncmUgb24gdGhlIGNsaWVudFxuICAgIH1cbiAgICBlbHNlIGlmIChzZW1vdHVzQ2xhc3MuX190b1NlcnZlcl9fID09PSBmYWxzZSAmJiBzZW1vdHVzLnJvbGUgPT0gJ3NlcnZlcicpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIHdlJ3JlIHRyeWluZyB0byBhY2NlcHQgY2hhbmdlcyB3aGVyZSBzZW1vdHVzQ2xhc3MncyB0b1NlcnZlciA9PSBmYWxzZSwgYnV0IHdlJ3JlIG9uIHRoZSBzZXJ2ZXJcbiAgICB9XG4gICAgZWxzZSBpZiAoc2Vtb3R1c0NsYXNzLl9fdG9DbGllbnRfXyA9PT0gZmFsc2UgJiYgc2Vtb3R1cy5yb2xlID09PSAnY2xpZW50Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGFjY2VwdCBjaGFuZ2VzIHdoZXJlIHNlbW90dXNDbGFzcydzIHRvQ2xpZW50IGlzIGZhbHNlLCBidXQgd2UncmUgb24gdGhlIGNsaWVudFxuICAgIH1cbiAgICBlbHNlIGlmIChjb250cm9sbGVySGFzU3luY1N0YXRlKHNlbW90dXMpKSB7IC8vIFdlJ3ZlIHNldCB0aGUgc3luY1N0YXRlIHByb3BlcnR5IG9uIHRoZSBjb250cm9sbGVyLCBhbmQgd2UgaGF2ZSBhIHNlbW90dXNDbGFzc1xuICAgICAgICByZXR1cm4gZmlsdGVyU3luY1N0YXRlcyhzZW1vdHVzQ2xhc3MsIHNlbW90dXMpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBjaGFuZ2VzIHNob3VsZCBiZSBhY2NlcHRlZCBmb3IgYSBwcm9wZXJ0eVxuICpcbiAqIEBwYXJhbSBkZWZpbmVQcm9wZXJ0eSB1bmtub3duXG4gKiBAcGFyYW0gc2Vtb3R1c0NsYXNzIHVua25vd25cbiAqIEBwYXJhbSBzZW1vdHVzXG4gKlxuICogQHJldHVybnMge0Jvb2xlYW59IHVua25vd25cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWNjZXB0KGRlZmluZVByb3BlcnR5LCBzZW1vdHVzQ2xhc3M6IFJlbW90ZWFibGVDbGFzcywgc2Vtb3R1czogU2Vtb3R1cykge1xuICAgIHJldHVybiAhKGRvTm90QWNjZXB0KGRlZmluZVByb3BlcnR5LCBzZW1vdHVzQ2xhc3MsIHNlbW90dXMpKTtcbn1cblxuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIGNoYW5nZXMgbmVlZCB0byBiZSBjcmVhdGVkIGZvciBhIHByb3BlcnR5XG4gKlxuICogQHBhcmFtIGRlZmluZVByb3BlcnR5IHVua25vd25cbiAqIEBwYXJhbSBzZW1vdHVzQ2xhc3MgdW5rbm93blxuICogQHBhcmFtIHNlbW90dXNcbiAqXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdW5rbm93blxuICpcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShkZWZpbmVQcm9wZXJ0eSwgc2Vtb3R1c0NsYXNzOiBSZW1vdGVhYmxlQ2xhc3MgfCB1bmRlZmluZWQsIHNlbW90dXM6IFNlbW90dXMpIHtcbiAgICByZXR1cm4gIShkb05vdENoYW5nZShkZWZpbmVQcm9wZXJ0eSwgc2Vtb3R1c0NsYXNzLCBzZW1vdHVzKSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgYW55IHRyYWNraW5nIG9mIG9sZCB2YWx1ZXMgaXMgbmVlZGVkXG4gKlxuICpcbiAqIEZvciBhIHNwZWNpZmljIHByb3BlcnR5IGlmIGlzTG9jYWwgaXMgdHJ1ZSwgaXQgbWVhbnMgdGhhdCB0aGUgcHJvcGVydHkgd2lsbCBuZXZlciBiZSBzeW5jZWQgb3ZlciB0aGUgd2lyZVxuICogSWYgdG9TZXJ2ZXIgPT09IGZhbHNlIEFORCB0b0NsaWVudCA9PT0gZmFsc2UsIGl0IGlzIGFub3RoZXIgaW5kaWNhdG9yIHRoYXQgdGhpcyBwcm9wZXJ0eSB3aWxsIG5ldmVyIGJlIHN5bmNlZCBvdmVyIHRoZSB3aXJlXG4gKiBAcGFyYW0gZGVmaW5lUHJvcGVydHkgdW5rbm93blxuICpcbiAqIEByZXR1cm5zIHtCb29sZWFufSB1bmtub3duXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmFnZShkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGlzTG9jYWwgPSBkZWZpbmVQcm9wZXJ0eS5pc0xvY2FsID09PSB0cnVlO1xuICAgIGNvbnN0IGlzTG9jYWxBbHQgPSBkZWZpbmVQcm9wZXJ0eS50b1NlcnZlciA9PT0gZmFsc2UgJiYgZGVmaW5lUHJvcGVydHkudG9DbGllbnQgPT09IGZhbHNlO1xuICAgIHJldHVybiAhKGlzTG9jYWwgfHwgaXNMb2NhbEFsdCk7XG59XG5cblxuLyoqXG4gKiBSZWdpc3RlciBzb21lIG9mIHRoZSBuZXcgcHJvcGVydHkgY2hhbmdlcyAvIGNyZWF0aW9ucyB0byBhIGxvZ1xuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZShzZW1vdHVzOiBTZW1vdHVzKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IFNlc3Npb25zLmdldChzZW1vdHVzKTtcblxuICAgIGZvciAoY29uc3Qgb2JqIGluIHNlc3Npb24ub2JqZWN0cykge1xuICAgICAgICBsb2dDaGFuZ2VzKHNlc3Npb24ub2JqZWN0c1tvYmpdLCBzZW1vdHVzKTtcbiAgICB9XG59XG5cbi8qKlxuICogRGVsZXRlIHNlc3Npb24gb2JqZWN0cyBmb3IgdGVzdHMsIGJlY2F1c2UgdW5pdCB0ZXN0cyBmb3IgY2xpZW50IG9iamVjdCBlcnJvbmVvdXNseSBoYXZlIHNlcnZlciBzZXNzaW9uIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ2xpZW50U2Vzc2lvbihzZW1vdHVzOiBTZW1vdHVzLCBjb250cm9sbGVyKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IFNlc3Npb25zLmdldChzZW1vdHVzKTtcblxuICAgIGZvciAoY29uc3Qgb2JqIGluIHNlc3Npb24ub2JqZWN0cykge1xuICAgICAgICBpZiAob2JqICE9PSBjb250cm9sbGVyLl9faWRfXykge1xuICAgICAgICAgICAgZGVsZXRlIHNlc3Npb24ub2JqZWN0c1tvYmpdO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFNpbXVsYXRlIGdldHRlcnMgYW5kIHNldHRlcnMgYnkgdHJhY2tpbmcgdGhlIG9sZCB2YWx1ZSBhbmQgaWYgaXRcbiAqIGhhcyBjaGFuZ2VkLCBjcmVhdGluZyBhIGNoYW5nZSBsb2cuICBsb2NhbCBwcm9wZXJ0aWVzIGFyZSBpZ25vcmVkXG4gKiBhbmQgcHJvcGVydGllcyBub3QgdG8gYmUgdHJhbnNtaXR0ZWQgdG8gdGhlIG90aGVyIHBhcnR5IGRvIG5vdFxuICogZ2VuZXJhdGUgY2hhbmdlcyBidXQgc3RpbGwgdHJhY2sgdGhlIG9sZCB2YWx1ZSBzbyB0aGF0IGNoYW5nZXNcbiAqIGNhbiBiZSBhcHBsaWVkIGZyb20gdGhlIG90aGVyIHBhcnR5XG4gKlxuICogQHBhcmFtIHt1bmtub3dufSBvYmogLSBvYmplY3QgdG8gYmUgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICpcbiAqIEBwcml2YXRlXG4gKiBPTkxZIENBTExFRCBGUk9NIENMSUVOVFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nQ2hhbmdlcyhvYmosIHNlbW90dXM6IFNlbW90dXMpIHtcbiAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgcHJvcGVydGllcyBhbmQgdHJhbnNmZXIgdGhlbSB0byBuZXdseSBjcmVhdGVkIG9iamVjdFxuICAgIGNvbnN0IHByb3BzID0gb2JqLl9fdGVtcGxhdGVfXy5nZXRQcm9wZXJ0aWVzKCk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gcHJvcHMpIHtcbiAgICAgICAgY29uc3QgZGVmaW5lUHJvcGVydHkgPSBwcm9wc1twcm9wXTtcbiAgICAgICAgY29uc3QgdHlwZSA9IGRlZmluZVByb3BlcnR5LnR5cGU7XG5cbiAgICAgICAgaWYgKHR5cGUgJiYgbWFuYWdlKGRlZmluZVByb3BlcnR5KSkge1xuICAgICAgICAgICAgY29uc3QgY3JlYXRlQ2hhbmdlcyA9IGNyZWF0ZShkZWZpbmVQcm9wZXJ0eSwgb2JqLl9fdGVtcGxhdGVfXywgc2Vtb3R1cyk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlID09IEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNyZWF0ZUNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9ialtgX18ke3Byb3B9YF0gJiYgIW9ialtwcm9wXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIHRvIG51bGwgdHJlYXRlZCBsaWtlIGEgcHJvcGVydHkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgICBzZW1vdHVzLl9jaGFuZ2VkVmFsdWUob2JqLCBwcm9wLCBvYmpbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9ialtwcm9wXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIGZyb20gbnVsbCBsaWtlIGFuIGFycmF5IHJlZiB3aGVyZSBhcnJheSB3aWxsIGJlIGNyZWF0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb2JqW2BfXyR7cHJvcH1gXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmpbcHJvcF0ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIHRvIGVtcHR5IGFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbW90dXMuX2NoYW5nZWRWYWx1ZShvYmosIHByb3AsIG9ialtwcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2BfXyR7cHJvcH1gXSA9IFtdOyAvLyBTdGFydCBmcm9tIHNjcmF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vtb3R1cy5fcmVmZXJlbmNlZEFycmF5KG9iaiwgcHJvcCwgb2JqW2BfXyR7cHJvcH1gXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJWYWx1ZSA9IHNlbW90dXMuX2NvbnZlcnRWYWx1ZShvYmpbcHJvcF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHNlbW90dXMuX2NvbnZlcnRWYWx1ZShvYmpbYF9fJHtwcm9wfWBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChjcmVhdGVDaGFuZ2VzICYmIGN1cnJWYWx1ZSAhPT0gcHJldlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbW90dXMuX2NoYW5nZWRWYWx1ZShvYmosIHByb3AsIG9ialtwcm9wXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb2JqW2BfXyR7cHJvcH1gXSA9IG9ialtwcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=Changes.js.map

@@ -419,2 +419,2 @@ import { delay, getError, logTime } from "./Utilities.js";

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvY2Vzc0NhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9Qcm9jZXNzQ2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsdUJBQW9CO0FBR3ZELE1BQU0sVUFBVSxHQUFHLGlDQUFpQyxDQUFDO0FBRXJEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsT0FBMkIsRUFBRSxXQUFxQjtJQUVoRixJQUFJO1FBQ0EsV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDeEMsSUFBSSxVQUFVLEdBQUcsTUFBTSwyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RCxVQUFVLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDMUM7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNWLE1BQU0sZUFBZSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN2QztBQUNMLENBQUM7QUFHRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLFNBQVMsQ0FBQyxPQUEyQjtJQUNoRCxNQUFNLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUMsR0FBRyxPQUFPLENBQUM7SUFFbEgs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QUFPO1lBQ2hCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUM5QixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7U0FDaEM7S0FDSixDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWxheSwgZ2V0RXJyb3IsIGxvZ1RpbWUgfSBmcm9tICcuL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBDYWxsQ29udGV4dCwgUHJvY2Vzc0NhbGxQYXlsb2FkLCBSZW1vdGVDYWxsLCBTZW1vdHVzLCBTZXNzaW9uIH0gZnJvbSAnLi9UeXBlcyc7XG5cbmNvbnN0IG1vZHVsZU5hbWUgPSBgc2Vtb3R1cy9zcmMvaGVscGVycy9Qcm9jZXNzQ2FsbGA7XG5cbi8qKlxuICogV2UgcHJvY2VzcyB0aGUgY2FsbCB0aGUgcmVtb3RlIG1ldGhvZCBpbiBzdGFnZXMgc3RhcnRpbmcgYnkgbGV0dGluZyB0aGUgY29udHJvbGxlciBleGFtaW5lIHRoZVxuICogY2hhbmdlcyAocHJlQ2FsbEhvb2spIGFuZCBnaXZpbmcgaXQgYSBjaGFuY2UgdG8gcmVmcmVzaCBkYXRhIGlmIGl0IG5lZWRzIHRvLiAgVGhlbiB3ZSBhcHBseSBhbnlcbiAqIGNoYW5nZXMgaW4gdGhlIG1lc3NhZ2VzIGFuZCBnaXZlIHRoZSBvYmplY3Qgb3duaW5nIHRoZSBtZXRob2QgYSBjaGFuY2UgdG8gdmFsaWRhdGUgdGhhdCB0aGVcbiAqIGNhbGwgaXMgdmFsaWQgYW5kIHRha2UgY2FyZSBvZiBhbnkgYXV0aG9yaXphdGlvbiBjb25jZXJucy4gIEZpbmFsbHkgd2UgbGV0IHRoZSBjb250cm9sbGVyIHBlcmZvcm1cbiAqIGFueSBwb3N0LWNhbGwgcHJvY2Vzc2luZyBzdWNoIGFzIGNvbW1pdGluZyBkYXRhIGFuZCB0aGVuIHdlIGRlYWwgd2l0aCBhIGZhaWx1cmUgb3Igc3VjY2Vzcy5cbiAqXG4gKiBAcGFyYW0gcGF5bG9hZFxuICogQHBhcmFtIHt1bmtub3dufSBmb3JjZXVwZGF0ZSB1bmtub3duXG4gKlxuICogQHJldHVybnMge3Vua25vd259IHVua25vd25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDYWxsKHBheWxvYWQ6IFByb2Nlc3NDYWxsUGF5bG9hZCwgZm9yY2V1cGRhdGU/OiBib29sZWFuKSB7XG5cbiAgICB0cnkge1xuICAgICAgICBmb3JjZXVwZGF0ZSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShmb3JjZXVwZGF0ZSk7XG4gICAgICAgIGF3YWl0IHByZUNhbGxIb29rKHBheWxvYWQsIGZvcmNldXBkYXRlKTtcbiAgICAgICAgbGV0IHZhbGlkYXRpb24gPSBhd2FpdCBhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwocGF5bG9hZCk7XG4gICAgICAgIHZhbGlkYXRpb24gPSBhd2FpdCBjdXN0b21WYWxpZGF0aW9uKHBheWxvYWQsIHZhbGlkYXRpb24pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWxsSWZWYWxpZChwYXlsb2FkLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgYXdhaXQgcG9zdENhbGxIb29rKHBheWxvYWQsIHJlc3VsdCk7XG4gICAgICAgIGF3YWl0IHBvc3RDYWxsU3VjY2VzcyhwYXlsb2FkLCByZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBhd2FpdCBwb3N0Q2FsbEZhaWx1cmUocGF5bG9hZCwgZXJyKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBJZiB0aGVyZSBpcyBhbiB1cGRhdGUgY29uZmxpY3Qgd2Ugd2FudCB0byByZXRyeSBhZnRlciByZXN0b3JpbmcgdGhlIHNlc3Npb25cbiAqXG4gKiBAcmV0dXJucyB7Kn0gdW5rbm93blxuICovXG5hc3luYyBmdW5jdGlvbiByZXRyeUNhbGwocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkKSB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG5cbiAgICBpZiAocmVzdG9yZVNlc3Npb25DYWxsYmFjaykge1xuICAgICAgICByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NDYWxsKHBheWxvYWQsIHRydWUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSB3aGF0IG9iamVjdHMgY2hhbmdlZCBhbmQgcGFzcyB0aGlzIHRvIHRoZSBwcmVTZXJ2ZXJDYWxsIG1ldGhvZCBvbiB0aGUgY29udHJvbGxlclxuICpcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0gIGZvcmNldXBkYXRlIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyAgdW5rbm93blxuICovXG5hc3luYyBmdW5jdGlvbiBwcmVDYWxsSG9vayhwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIGZvcmNldXBkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIHNlc3Npb24sIGNhbGxDb250ZXh0LCBIVFRQT2Jqc30gPSBwYXlsb2FkO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHByZUNhbGxIb29rLm5hbWU7XG4gICAgc2Vtb3R1cy5sb2dnZXIuaW5mbyhcbiAgICAgICAge1xuICAgICAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICAgICAgZnVuY3Rpb246IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiAnbWlsZXN0b25lJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogJ3ByZVNlcnZlckNhbGwnLFxuICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLnByZVNlcnZlckNhbGwpIHtcbiAgICAgICAgbGV0IGNoYW5nZXMgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBvYmpJZCBpbiBKU09OLnBhcnNlKHJlbW90ZUNhbGwuY2hhbmdlcykpIHtcbiAgICAgICAgICAgIGNoYW5nZXNbc2Vtb3R1cy5fX2RpY3Rpb25hcnlfX1tvYmpJZC5yZXBsYWNlKC9bXi1dKi0vLCAnJykucmVwbGFjZSgvLS4qLywgJycpXS5fX25hbWVfX10gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IHNlc3Npb24ub2JqZWN0c1tyZW1vdGVDYWxsLmlkXTtcblxuICAgICAgICAvLyBOZWVkIHRvIGRvdWJsZSBjaGVjayBpZiBub3QgaW4gc2Vzc2lvbiwgd2hhdCB0aGUgdGVtcGxhdGUgaXMuXG4gICAgICAgIGxldCByZW1vdGVUZW1wbGF0ZSA9IHNlbW90dXMuX19kaWN0aW9uYXJ5X19bcmVtb3RlQ2FsbC5pZC5yZXBsYWNlKC9bXi1dKi0vLCAnJykucmVwbGFjZSgvLS4qLywgJycpXTtcbiAgICAgICAgbGV0IGlzUHVibGljID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHJlbW90ZU9iamVjdCkge1xuICAgICAgICAgICAgaXNQdWJsaWMgPSBzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInICYmIHJlbW90ZU9iamVjdFtyZW1vdGVDYWxsLm5hbWVdICYmIHJlbW90ZU9iamVjdFtyZW1vdGVDYWxsLm5hbWVdLnJlbW90ZVB1YmxpYztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyZW1vdGVUZW1wbGF0ZSkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNsYXNzIGRvZXNuJ3QgZXhpc3QsIHdlIHNob3VsZCBnZXQgdGhlIHJlbW90ZSBmdW5jdGlvbiBmcm9tIHRoZSBwcm90b3R5cGVcbiAgICAgICAgICAgIGlzUHVibGljID0gc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiByZW1vdGVUZW1wbGF0ZS5wcm90b3R5cGVbcmVtb3RlQ2FsbC5uYW1lXSAmJiByZW1vdGVUZW1wbGF0ZS5wcm90b3R5cGVbcmVtb3RlQ2FsbC5uYW1lXS5yZW1vdGVQdWJsaWM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZW1vdHVzLmxvZ2dlci5lcnJvcih7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICdtaWxlc3RvbmUnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZmluZCB0ZW1wbGF0ZSBmb3IgJyArIG9iaklkLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHk6ICdwcmVTZXJ2ZXJDYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbW90dXMuY29udHJvbGxlci5wcmVTZXJ2ZXJDYWxsLmNhbGwoXG4gICAgICAgICAgICBzZW1vdHVzLmNvbnRyb2xsZXIsXG4gICAgICAgICAgICByZW1vdGVDYWxsLmNoYW5nZXMubGVuZ3RoID4gMixcbiAgICAgICAgICAgIGNoYW5nZXMsXG4gICAgICAgICAgICBjYWxsQ29udGV4dCxcbiAgICAgICAgICAgIGZvcmNldXBkYXRlLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbCxcbiAgICAgICAgICAgIGlzUHVibGljLFxuICAgICAgICAgICAgSFRUUE9ianNcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbi8qKlxuICogQXBwbHkgY2hhbmdlcyBpbiB0aGUgbWVzc2FnZSBhbmQgdGhlbiB2YWxpZGF0ZSB0aGUgY2FsbC4gIFRocm93IFwiU3luYyBFcnJvclwiIGlmIGNoYW5nZXMgY2FuJ3QgYmUgYXBwbGllZFxuICpcbiAqIEByZXR1cm5zIHt1bmtub3dufSB1bmtub3duXG4gKi9cbmZ1bmN0aW9uIGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbChwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcbiAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwubmFtZTtcblxuICAgIHNlbW90dXMubG9nZ2VyLmluZm8oXG4gICAgICAgIHtcbiAgICAgICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHk6ICdhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwnLFxuICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZSxcbiAgICAgICAgICAgICAgICByZW1vdGVDYWxsSWQ6IHJlbW90ZUNhbGwuaWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBsZXQgY2hhbmdlcyA9IEpTT04ucGFyc2UocmVtb3RlQ2FsbC5jaGFuZ2VzKTtcblxuICAgIGNvbnN0IHJlcyA9IHNlbW90dXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzLCBzZW1vdHVzLnJvbGUgPT09ICdjbGllbnQnLCBzdWJzY3JpcHRpb25JZCwgY2FsbENvbnRleHQpO1xuICAgIGlmIChyZXMpIHtcbiAgICAgICAgY29uc3Qgb2JqID0gc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdO1xuXG4gICAgICAgIGlmICghb2JqKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIG9iamVjdCBmb3IgcmVtb3RlIGNhbGwgJHtyZW1vdGVDYWxsLmlkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRoaXMgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gY2xpZW50XG4gICAgICAgIGlmIChvYmouX19wcm90b19fW3JlbW90ZUNhbGwubmFtZV0uX19vbl9fICE9PSAnc2VydmVyJykge1xuICAgICAgICAgICAgdGhyb3cgJ0ludmFsaWQgRnVuY3Rpb24gQ2FsbDsgbm90IGFuIEFQSSBmdW5jdGlvbic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiBvYmoudmFsaWRhdGVTZXJ2ZXJDYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnZhbGlkYXRlU2VydmVyQ2FsbC5jYWxsKG9iaiwgcmVtb3RlQ2FsbC5uYW1lLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAnU3luYyBFcnJvcic7XG4gICAgfVxufVxuXG4vKipcbiAqIEFwcGx5IGZ1bmN0aW9uIHNwZWNpZmljIGN1c3RvbSBzZXJ2ZXJTaWRlIHZhbGlkYXRpb24gZnVuY3Rpb25zXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWYWxpZCAtIFJlc3VsdCBvZiBwcmV2aW91cyB2YWxpZGF0aW9uIHN0ZXAgKGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbClcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgcGFzc2VkIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbVZhbGlkYXRpb24ocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBpc1ZhbGlkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gY3VzdG9tVmFsaWRhdGlvbi5uYW1lO1xuXG4gICAgbGV0IGxvZ2dlck9iamVjdCA9IHtcbiAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnY3VzdG9tVmFsaWRhdGlvbicsXG4gICAgICAgICAgICBjYWxsOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZSxcbiAgICAgICAgICAgIHJlbW90ZUNhbGxJZDogcmVtb3RlQ2FsbC5pZFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGxldCByZW1vdGVPYmplY3QgPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG5cbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKGxvZ2dlck9iamVjdCk7XG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiByZW1vdGVPYmplY3RbcmVtb3RlQ2FsbC5uYW1lXS5zZXJ2ZXJWYWxpZGF0aW9uKSB7XG4gICAgICAgIGxldCBhcmdzID0gc2Vtb3R1cy5fZXh0cmFjdEFyZ3VtZW50cyhyZW1vdGVDYWxsKTtcbiAgICAgICAgYXJncy51bnNoaWZ0KHJlbW90ZU9iamVjdCk7XG5cbiAgICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdFtyZW1vdGVDYWxsLm5hbWVdLnNlcnZlclZhbGlkYXRpb24uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuXG4vKipcbiAqIElmIHRoZSBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgYW5kIHRoZSB2YWxpZGF0aW9uIHdhcyBzdWNjZXNzZnVsIGNhbGwgdGhlIG1ldGhvZFxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzVmFsaWQgLSB0YWtlcyBhIGZsYWcgaWYgdGhlIGNhbGwgaXMgdmFsaWQgb3Igbm90LCBpZiBpdCBpcyB0aGVuIHdlIHByb2NlZWQgbm9ybWFsbHksXG4gKiBvdGhlcndpc2UsIHdlIHRocm93IGFuIGVycm9yIGFuZCBzdG9wIGV4ZWN1dGlvblxuICpcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHJldHVybnMge3Vua25vd259IHVua25vd25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2FsbElmVmFsaWQocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBpc1ZhbGlkOiBib29sZWFuKSB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gY2FsbElmVmFsaWQubmFtZTtcblxuICAgIGxldCBsb2dnZXJPYmplY3QgPSB7XG4gICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgZnVuY3Rpb246IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgY2F0ZWdvcnk6ICdtaWxlc3RvbmUnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhY3Rpdml0eTogJ2NhbGxJZlZhbGlkJyxcbiAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsLmlkXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgc2Vtb3R1cy5sb2dnZXIuaW5mbyhsb2dnZXJPYmplY3QpO1xuXG4gICAgbGV0IG9iaiA9IHNlc3Npb24ub2JqZWN0c1tyZW1vdGVDYWxsLmlkXTtcblxuICAgIGlmICghb2JqW3JlbW90ZUNhbGwubmFtZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlbW90ZUNhbGwubmFtZSArICcgZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1ZhbGlkICYmIHJlbW90ZUNhbGwgJiYgcmVtb3RlQ2FsbC5uYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZW1vdGVDYWxsLm5hbWUgKyAnIHJlZnVzZWQnKTtcbiAgICB9XG5cbiAgICBsZXQgYXJncyA9IHNlbW90dXMuX2V4dHJhY3RBcmd1bWVudHMocmVtb3RlQ2FsbCk7XG5cbiAgICByZXR1cm4gb2JqW3JlbW90ZUNhbGwubmFtZV0uYXBwbHkob2JqLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBMZXQgdGhlIGNvbnRyb2xsZXIga25vdyB0aGF0IHRoZSBtZXRob2Qgd2FzIGNvbXBsZXRlZCBhbmQgZ2l2ZSBpdCBhIGNoYW5jZSB0byBjb21taXQgY2hhbmdlc1xuICpcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0gIHJldHVyblZhbHVlIHVua25vd25cbiAqXG4gKiBAcmV0dXJuc1xuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0Q2FsbEhvb2socGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCByZXR1cm5WYWx1ZSkge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCwgSFRUUE9ianN9ID0gcGF5bG9hZDtcblxuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLnBvc3RTZXJ2ZXJDYWxsKSB7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXM6IGJvb2xlYW4gPSByZW1vdGVDYWxsLmNoYW5nZXMubGVuZ3RoID4gMjtcbiAgICAgICAgYXdhaXQgc2Vtb3R1cy5jb250cm9sbGVyLnBvc3RTZXJ2ZXJDYWxsLmNhbGwoc2Vtb3R1cy5jb250cm9sbGVyLCBoYXNDaGFuZ2VzLCBjYWxsQ29udGV4dCwgc2Vtb3R1cy5jaGFuZ2VTdHJpbmcsIEhUVFBPYmpzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIFBhY2thZ2UgdXAgYW55IGNoYW5nZXMgcmVzdWx0aW5nIGZyb20gdGhlIGV4ZWN1dGlvbiBhbmQgc2VuZCB0aGVtIGJhY2sgaW4gdGhlIG1lc3NhZ2UsIGNsZWFyaW5nXG4gKiBvdXIgY2hhbmdlIHF1ZXVlIHRvIGFjY3VtdWxhdGUgbW9yZSBjaGFuZ2VzIGZvciB0aGUgbmV4dCBjYWxsXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbElkXG4gKiBAcGFyYW0ge3Vua25vd259IHJldCB1bmtub3duXG4gKi9cbmZ1bmN0aW9uIHBvc3RDYWxsU3VjY2VzcyhwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIHJldCk6IHZvaWQge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCwgc2Vzc2lvbiwgcmVtb3RlQ2FsbElkfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcG9zdENhbGxTdWNjZXNzLm5hbWU7XG5cbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKFxuICAgICAgICB7XG4gICAgICAgICAgICBtb2R1bGU6IG1vZHVsZU5hbWUsXG4gICAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgY2F0ZWdvcnk6ICdtaWxlc3RvbmUnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5OiAncG9zdENhbGwuc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgIGNhbGxUaW1lOiBsb2dUaW1lKGNhbGxDb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHBhY2thZ2VDaGFuZ2VzKHNlbW90dXMsIHNlc3Npb24se1xuICAgICAgICB0eXBlOiAncmVzcG9uc2UnLFxuICAgICAgICBzeW5jOiB0cnVlLFxuICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoc2Vtb3R1cy5fdG9UcmFuc3BvcnQocmV0KSksXG4gICAgICAgIG5hbWU6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgcmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsSWRcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gaWRlbnRpZnkgaWYgdGhlcmUncyBhIHBvc3RTZXJ2ZXJFcnJvckhhbmRsZXIgY2FsbGJhY2sgb24gdGhlIGJhc2UgY29udHJvbGxlclxuICogSWYgdGhlcmUgaXMsIHdlIGV4ZWN1dGUgdGhlIGhhbmRsZXIsIGFuZCBpZiB3ZSBjYXRjaCBhbiBlcnJvciBpbiB0aGUgaGFuZGxlciwgd2UgcHJvcG9nYXRlIGl0IHVwIHRvIHRoZSBsb2dnZXIuXG4gKiBAcGFyYW0gbG9nZ2VyXG4gKiBAcGFyYW0geyp9IGNvbnRyb2xsZXJcbiAqIEBwYXJhbSB0eXBlXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHBhcmFtIHJlbW90ZUNhbGxJZFxuICogQHBhcmFtIGNhbGxDb250ZXh0XG4gKiBAcGFyYW0gY2hhbmdlU3RyaW5nXG4gKiBAcGFyYW0gc2Vzc2lvblxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlRXJyb3JIYW5kbGVyKGxvZ2dlciwgY29udHJvbGxlcjogYW55LCB0eXBlLCByZW1vdGVDYWxsOiBSZW1vdGVDYWxsLCByZW1vdGVDYWxsSWQsIGNhbGxDb250ZXh0OiBDYWxsQ29udGV4dCwgY2hhbmdlU3RyaW5nLCBzZXNzaW9uOiBTZXNzaW9uKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVzb2x2ZUVycm9ySGFuZGxlci5uYW1lO1xuICAgIGlmIChjb250cm9sbGVyICYmIGNvbnRyb2xsZXIucG9zdFNlcnZlckVycm9ySGFuZGxlcikge1xuICAgICAgICBsZXQgZXJyb3JUeXBlID0gdHlwZTtcbiAgICAgICAgbGV0IHJlbW90ZUNhbGxOYW1lID0gcmVtb3RlQ2FsbC5uYW1lO1xuICAgICAgICBsZXQgb2JqID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdKSB7XG4gICAgICAgICAgICBvYmogPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNvbnRyb2xsZXIucG9zdFNlcnZlckVycm9ySGFuZGxlci5jYWxsKGNvbnRyb2xsZXIsIGVycm9yVHlwZSwgcmVtb3RlQ2FsbElkLCBvYmosIHJlbW90ZUNhbGxOYW1lLCBjYWxsQ29udGV4dCwgY2hhbmdlU3RyaW5nKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxldCBsb2dCb2R5ID0ge1xuICAgICAgICAgICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnbWlsZXN0b25lJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ1VzZXIgZGVmaW5lZCBwb3N0U2VydmVyRXJyb3JIYW5kbGVyIHRocmV3IGFuIGVycm9yJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5OiAncG9zdENhbGwucmVzb2x2ZUVycm9ySGFuZGxlcicsXG4gICAgICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IobG9nQm9keSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogSGFuZGxlIGVycm9ycyBieSByZXR1cm5pbmcgYW4gYXByb3ByaWF0ZSBtZXNzYWdlLiAgSW4gYWxsIGNhc2VzIGNoYW5nZXMgc2VudCBiYWNrIHRob3VnaCB0aGV5XG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcGFyYW0gY2FsbENvbnRleHRcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0ge3Vua25vd259IGVyciB1bmtub3duXG4gKlxuICogQHJldHVybnMge3Vua25vd259IEEgUHJvbWlzZVxuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0Q2FsbEZhaWx1cmUocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBlcnIpIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIGxldCBsb2dTdHJpbmcgPSAnJztcblxuICAgIGxldCBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7fTtcblxuICAgIGxldCB1cGRhdGVDb25mbGljdFJldHJ5ID0gZmFsc2U7XG5cbiAgICBpZiAoZXJyID09PSAnU3luYyBFcnJvcicpIHtcbiAgICAgICAgcG9zdENhbGxFcnJvckxvZyhzZW1vdHVzLmxvZ2dlciwgJ3Bvc3RDYWxsLnN5bmNFcnJvcicsIHVuZGVmaW5lZCwgJ2Vycm9yJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIHBhY2thZ2VDaGFuZ2VzUGF5bG9hZCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdyZXNwb25zZScsXG4gICAgICAgICAgICBzeW5jOiBmYWxzZSxcbiAgICAgICAgICAgIGNoYW5nZXM6ICcnXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSA9PSAnVXBkYXRlIENvbmZsaWN0Jykge1xuICAgICAgICAvLyBOb3QgdGhpcyBtYXkgYmUgY2F1Z2h0IGluIHRoZSB0cmFuc3BvcnQgKGUuZy4gQW1vcnBoaWMpIGFuZCByZXRyaWVkKVxuXG4gICAgICAgIC8vIGluY3JlbWVudCBjYWxsQ29udGV4dC5yZXRyaWVzIGFmdGVyIGNoZWNraW5nIGlmIDwgMy4gU2hvdWxkIHJldHJ5IDMgdGltZXMuXG4gICAgICAgIGlmIChjYWxsQ29udGV4dC5yZXRyaWVzKysgPCAzKSB7XG4gICAgICAgICAgICBwb3N0Q2FsbEVycm9yTG9nKHNlbW90dXMubG9nZ2VyLCAncG9zdENhbGwudXBkYXRlQ29uZmxpY3QnLCB1bmRlZmluZWQsICd3YXJuJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgICAgICB1cGRhdGVDb25mbGljdFJldHJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzaWdubWVudCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBlcnJvciBoYW5kbGVyXG4gICAgICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JldHJ5J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC51cGRhdGVDb25mbGljdCcsIHVuZGVmaW5lZCwgJ2Vycm9yJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JldHJ5JyxcbiAgICAgICAgICAgICAgICBzeW5jOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghKGVyciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgICAgcG9zdENhbGxFcnJvckxvZyhzZW1vdHVzLmxvZ2dlciwgJ3Bvc3RDYWxsLmVycm9yJywgSlNPTi5zdHJpbmdpZnkoZXJyKSwgJ2luZm8nLCByZW1vdGVDYWxsLm5hbWUsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChlcnIuc3RhY2spIHtcbiAgICAgICAgICAgICAgICBsb2dTdHJpbmcgPSAnRXhjZXB0aW9uIGluICcgKyByZW1vdGVDYWxsLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlICsgKCcgJyArIGVyci5zdGFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ1N0cmluZyA9ICdFeGNlcHRpb24gaW4gJyArIHJlbW90ZUNhbGwubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC5leGNlcHRpb24nLCBlcnIubWVzc2FnZSwgJ2Vycm9yJywgbG9nU3RyaW5nLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgc3luYzogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBnZXRFcnJvcihlcnIpLFxuICAgICAgICAgICAgbmFtZTogcmVtb3RlQ2FsbC5uYW1lXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgT2JqZWN0LmFzc2lnbihwYWNrYWdlQ2hhbmdlc1BheWxvYWQsIHtyZW1vdGVDYWxsSWQ6IHJlbW90ZUNhbGxJZH0pO1xuXG4gICAgYXdhaXQgcmVzb2x2ZUVycm9ySGFuZGxlcihcbiAgICAgICAgc2Vtb3R1cy5sb2dnZXIsXG4gICAgICAgIHNlbW90dXMuY29udHJvbGxlcixcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQudHlwZSxcbiAgICAgICAgcmVtb3RlQ2FsbCxcbiAgICAgICAgcmVtb3RlQ2FsbElkLFxuICAgICAgICBjYWxsQ29udGV4dCxcbiAgICAgICAgc2Vtb3R1cy5jaGFuZ2VTdHJpbmcsXG4gICAgICAgIHNlc3Npb25cbiAgICApO1xuXG4gICAgaWYgKHVwZGF0ZUNvbmZsaWN0UmV0cnkpIHtcbiAgICAgICAgYXdhaXQgZGVsYXkoY2FsbENvbnRleHQucmV0cmllcyAqIDEwMDApO1xuICAgICAgICByZXR1cm4gcmV0cnlDYWxsKHBheWxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYWNrYWdlQ2hhbmdlcyhzZW1vdHVzLCBzZXNzaW9uLCBwYWNrYWdlQ2hhbmdlc1BheWxvYWQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBEZWFsIHdpdGggY2hhbmdlcyBnb2luZyBiYWNrIHRvIHRoZSBjYWxsZXIgLSBBY3R1YWxseSBub3QgQXN5bmMhXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0ge3Vua25vd259IG1lc3NhZ2UgdW5rbm93blxuICovXG5mdW5jdGlvbiBwYWNrYWdlQ2hhbmdlcyhzZW1vdHVzOiBTZW1vdHVzLCBzZXNzaW9uOiBTZXNzaW9uLCBtZXNzYWdlKSB7XG4gICAgc2Vtb3R1cy5fY29udmVydEFycmF5UmVmZXJlbmNlc1RvQ2hhbmdlcygpO1xuICAgIG1lc3NhZ2UuY2hhbmdlcyA9IEpTT04uc3RyaW5naWZ5KHNlbW90dXMuZ2V0Q2hhbmdlcygpKTtcblxuICAgIGlmIChzZW1vdHVzLm1lbVNlc3Npb24gJiYgc2Vtb3R1cy5tZW1TZXNzaW9uLnNlbW90dXMgJiYgc2Vtb3R1cy5tZW1TZXNzaW9uLnNlbW90dXMuY2FsbFN0YXJ0VGltZSkge1xuICAgICAgICBzZW1vdHVzLm1lbVNlc3Npb24uc2Vtb3R1cy5jYWxsU3RhcnRUaW1lID0gMDtcbiAgICB9XG5cbiAgICAvLyBJbnNwZWN0IGEgY29weSBvZiB0aGUgbWVzc2FnZSBvbiB0aGUgc2VydmVyIG9ubHkgYmVmb3JlIHNlbnQgb3V0LiBPbmx5IGZvciBkZWJ1ZyBwdXJwb3Nlc1xuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLmluc3BlY3RNZXNzYWdlKSB7XG4gICAgICAgIHNlbW90dXMuY29udHJvbGxlci5pbnNwZWN0TWVzc2FnZShPYmplY3QuYXNzaWduKHt9LCBtZXNzYWdlKSk7XG4gICAgfVxuXG4gICAgc2Vzc2lvbi5zZW5kTWVzc2FnZShtZXNzYWdlKTtcbiAgICBzZW1vdHVzLl9kZWxldGVDaGFuZ2VzKCk7XG4gICAgc2Vtb3R1cy5fcHJvY2Vzc1F1ZXVlKCk7XG59XG5cblxuLyoqXG4gKiAgSGVscGVyIGZ1bmN0aW9uIHRvIGxvZyBhbW9ycGhpYyBlcnJvcnMuXG4gKiBAcGFyYW0geyp9IGxvZ2dlclxuICogQHBhcmFtIHsqfSBhY3Rpdml0eVxuICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gKiBAcGFyYW0geyp9IGxvZ1R5cGVcbiAqIEBwYXJhbSB7Kn0gbG9nU3RyaW5nXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHBhcmFtIGNhbGxDb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0Q2FsbEVycm9yTG9nKGxvZ2dlciwgYWN0aXZpdHksIG1lc3NhZ2UsIGxvZ1R5cGUsIGxvZ1N0cmluZywgcmVtb3RlQ2FsbDogUmVtb3RlQ2FsbCwgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0KSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcHJvY2Vzc0NhbGwubmFtZTtcbiAgICBcbiAgICBsZXQgbG9nQm9keSA9IHtcbiAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgIG1lc3NhZ2U6IGxvZ1N0cmluZyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgIGFjdGl2aXR5OiBhY3Rpdml0eSxcbiAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIGNhbGxUaW1lOiBsb2dUaW1lKGNhbGxDb250ZXh0KSxcbiAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlLFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGxvZ2dlcltsb2dUeXBlXShsb2dCb2R5KTtcbn1cbiJdfQ==
//# sourceMappingURL=ProcessCall.js.map

@@ -156,2 +156,2 @@ const moduleName = `semotus/src/helpers/Sessions`;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Vzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9TZXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsR0FBRyw4QkFBOEIsQ0FBQztBQUVsRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLE9BQWdCLEVBQUUsSUFBSSxFQUFFLFdBQXdCLEVBQUUsU0FBUztJQUM5RSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtRQUNuQixPQUFPLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0tBQ3pCO0lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNaLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7S0FDdkM7SUFFRCxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUc7UUFDMUIsYUFBYSxFQUFFLEVBQUU7UUFDakIsV0FBVyxFQUFFLFdBQVc7UUFDeEIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFdBQVc7UUFDakMsV0FBVyxFQUFFLEVBQUU7UUFDZixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLHVCQUF1QixFQUFFLENBQUM7UUFDMUIsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixjQUFjLEVBQUUsQ0FBQztRQUNqQixrQkFBa0IsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUM7UUFDWixjQUFjLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtLQUMvQyxDQUFDO0lBRUYsSUFBSSxJQUFJLFlBQVksS0FBSyxFQUFFO1FBQ3ZCLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUs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QUUsU0FBUztJQUM1QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFFL0IsT0FBTyxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDMUQsT0FBTyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDbkQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxPQUFPLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUVyQixNQUFNLFlBQVksR0FBRztRQUNqQixTQUFTLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztRQUNqRCxRQUFRLEVBQUUsT0FBTyxDQUFDLGNBQWM7UUFDaEMsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLHVCQUF1QjtLQUN4RCxDQUFDO0lBRUYsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDakIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsUUFBUSxFQUFFLFlBQVk7UUFDdEIsUUFBUSxFQUFFLFdBQVc7UUFDckIsSUFBSSxFQUFFO1lBQ0YsUUFBUSxFQUFFLE1BQU07U0FDbkI7S0FDSixDQUFDLENBQUM7SUFFSCxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2F2ZWRTZXNzaW9uLCBTZW1vdHVzLCBTZW5kTWVzc2FnZSwgU2Vzc2lvbiB9IGZyb20gJy4vVHlwZXMnO1xuXG5jb25zdCBtb2R1bGVOYW1lID0gYHNlbW90dXMvc3JjL2hlbHBlcnMvU2Vzc2lvbnNgO1xuXG4vKipcbiAqIE9idGFpbiBhIHNlc3Npb24gZm9yIHRyYWNraW5nIHN1YnNjcmlwdGlvbnNcbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICogQHBhcmFtIHt1bmtub3dufSByb2xlIHVua25vd25cbiAqIEBwYXJhbSB7dW5rbm93bn0gc2VuZE1lc3NhZ2UgdW5rbm93blxuICogQHBhcmFtIHt1bmtub3dufSBzZXNzaW9uSWQgdW5rbm93blxuICpcbiAqIEByZXR1cm5zIHsqfSB1bmtub3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoc2Vtb3R1czogU2Vtb3R1cywgcm9sZSwgc2VuZE1lc3NhZ2U6IFNlbmRNZXNzYWdlLCBzZXNzaW9uSWQpOiBhbnkge1xuICAgIGlmICghc2Vtb3R1cy5zZXNzaW9ucykge1xuICAgICAgICBzZW1vdHVzLm5leHRTdWJzY3JpcHRpb25JZCA9IDA7XG4gICAgICAgIHNlbW90dXMubmV4dFNlc3Npb25JZCA9IDE7XG4gICAgICAgIHNlbW90dXMuc2Vzc2lvbnMgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgICBzZXNzaW9uSWQgPSBzZW1vdHVzLm5leHRTZXNzaW9uSWQrKztcbiAgICB9XG5cbiAgICBzZW1vdHVzLnNldFNlc3Npb24oc2Vzc2lvbklkKTtcblxuICAgIHNlbW90dXMuc2Vzc2lvbnNbc2Vzc2lvbklkXSA9IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uczoge30sIC8vIENoYW5nZSBsaXN0ZW5lcnNcbiAgICAgICAgc2VuZE1lc3NhZ2U6IHNlbmRNZXNzYWdlLCAvLyBTZW5kIG1lc3NhZ2UgY2FsbGJhY2tcbiAgICAgICAgc2VuZE1lc3NhZ2VFbmFibGVkOiAhIXNlbmRNZXNzYWdlLFxuICAgICAgICByZW1vdGVDYWxsczogW10sIC8vIFJlbW90ZSBjYWxscyBxdWV1ZWQgdG8gZ28gb3V0XG4gICAgICAgIHBlbmRpbmdSZW1vdGVDYWxsczoge30sIC8vIFJlbW90ZSBjYWxscyB3YWl0aW5nIGZvciByZXNwb25zZVxuICAgICAgICBuZXh0UGVuZGluZ1JlbW90ZUNhbGxJZDogMSxcbiAgICAgICAgbmV4dFNhdmVTZXNzaW9uSWQ6IDEsXG4gICAgICAgIHNhdmVkU2Vzc2lvbklkOiAwLFxuICAgICAgICBuZXh0U3Vic2NyaXB0aW9uSWQ6IDAsXG4gICAgICAgIG9iamVjdHM6IHt9LFxuICAgICAgICBuZXh0T2JqSWQ6IDEsXG4gICAgICAgIGRpc3BlbnNlTmV4dElkOiBudWxsIC8vIEZvcmNlIG5leHQgb2JqZWN0IElkXG4gICAgfTtcblxuICAgIGlmIChyb2xlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZm9yICh2YXIgaXggPSAwOyBpeCA8IHJvbGUubGVuZ3RoOyArK2l4KSB7XG4gICAgICAgICAgICBzZW1vdHVzLnN1YnNjcmliZShyb2xlW2l4XSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZW1vdHVzLnJvbGUgPSByb2xlWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbW90dXMuc3Vic2NyaWJlKHJvbGUpO1xuICAgICAgICBzZW1vdHVzLnJvbGUgPSByb2xlO1xuICAgIH1cblxuICAgIHJldHVybiBzZXNzaW9uSWQ7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUgdGhlIHNlc3Npb24gZnJvbSB0aGUgc2Vzc2lvbnMgbWFwLCByZWplY3RpbmcgYW55IG91dHN0YW5kaW5nIHByb21pc2VzXG4gKiBXQVJOSU5HOiBBc3luYyBzaWRlIGVmZmVjdHNcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge3Vua25vd259IHNlc3Npb25JZCB1bmtub3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmUoc2Vtb3R1czogU2Vtb3R1cywgc2Vzc2lvbklkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBsZXQgc2Vzc2lvbiA9IGdldChzZW1vdHVzLCBzZXNzaW9uSWQpO1xuXG4gICAgZm9yICh2YXIgY2FsbHMgaW4gc2Vzc2lvbi5yZW1vdGVDYWxscykge1xuICAgICAgICBzZXNzaW9uLnJlbW90ZUNhbGxzW2NhbGxzXS5kZWZlcnJlZC5yZWplY3Qoe2NvZGU6ICdyZXNldCcsIHRleHQ6ICdTZXNzaW9uIHJlc3luY2hyb25pemVkJ30pO1xuICAgIH1cblxuICAgIGlmIChzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF0pIHtcbiAgICAgICAgZGVsZXRlIHNlbW90dXMuc2Vzc2lvbnNbc2Vzc2lvbklkXTtcbiAgICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IHNlc3Npb24gc3RydWN0dXJlXG4gKlxuICogQHJldHVybnMgeyp9IHRoZSBzZXNzaW9uXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldChzZW1vdHVzOiBTZW1vdHVzLCBfc2lkPyk6IFNlc3Npb24gfCBudWxsIHtcbiAgICBpZiAoIXNlbW90dXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBzZW1vdHVzLnNlc3Npb25zW3NlbW90dXMuY3VycmVudFNlc3Npb25dO1xufVxuXG5cbi8qKlxuICogSW5kaWNhdGUgdGhhdCBhbGwgY2hhbmdlcyBoYXZlIGJlZW4gYWNjZXB0ZWQgb3V0c2lkZSBvZiB0aGUgbWVzc2FnZVxuICogbWVjaGFuaXNtIGFzIHdvdWxkIHVzdWFsbHkgaGFwcGVuIHdoZW4gYSBzZXNzaW9uIGlzIHN0YXJ0aW5nIHVwXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7dW5rbm93bn0gc2Vzc2lvbklkIHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bmMoc2Vtb3R1czogU2Vtb3R1cywgc2Vzc2lvbklkKSB7XG4gICAgZ2V0KHNlbW90dXMsIHNlc3Npb25JZCk7XG4gICAgc2Vtb3R1cy5nZXRDaGFuZ2VzKCk7XG4gICAgc2Vtb3R1cy5fZGVsZXRlQ2hhbmdlcygpO1xufVxuXG5cbi8qKlxuICogUmVzdG9yZSBzZXNzaW9uIHRoYXQgd2FzIHBvdGVudGlhbGx5IHNlcmlhbGl6ZWQvZGVzZXJpYWxpemVkXG4gKlxuICogQSByZXZpc2lvbiBudW1iZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgaW4tbWVtb3J5IGNvcHkgaXMgZ29vZFxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge3Vua25vd259IHNlc3Npb25JZCAtIHRoZSBpZCB1bmRlciB3aGljaCBpdCB3YXMgY3JlYXRlZCB3aXRoIGNyZWF0ZVNlc3Npb25cbiAqIEBwYXJhbSB7dW5rbm93bn0gc2F2ZWRTZXNzaW9uIC0gdGhlIFBPSk8gdmVyc2lvbiBvZiB0aGUgc2Vzc2lvbiBkYXRhXG4gKiBAcGFyYW0ge3Vua25vd259IHNlbmRNZXNzYWdlIC0gbmV3IG1lc3NhZ2UgZnVuY3Rpb24gdG8gYmUgaW4gZWZmZWN0XG4gKlxuICogQHJldHVybnMge0Jvb2xlYW59IGZhbHNlIG1lYW5zIHRoYXQgbWVzc2FnZXMgd2VyZSBpbiBmbGlnaHQgYW5kIGEgcmVzZXQgaXMgbmVlZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlKHNlbW90dXM6IFNlbW90dXMsIHNlc3Npb25JZCwgc2F2ZWRTZXNzaW9uOiBTYXZlZFNlc3Npb24sIHNlbmRNZXNzYWdlOiBTZW5kTWVzc2FnZSkge1xuICAgIHNlbW90dXMuc2V0U2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF07XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVzdG9yZS5uYW1lO1xuXG4gICAgc2Vtb3R1cy5sb2dnZXIuZGVidWcoe1xuICAgICAgICBtb2R1bGU6IG1vZHVsZU5hbWUsIFxuICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICBjYXRlZ29yeTogJ21pbGVzdG9uZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnc2F2ZSdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNlc3Npb24pIHtcbiAgICAgICAgaWYgKHNlc3Npb24uc2F2ZWRTZXNzaW9uSWQgPT0gc2F2ZWRTZXNzaW9uLnJldmlzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF0gPSBKU09OLnBhcnNlKHNhdmVkU2Vzc2lvbi5kYXRhKTtcbiAgICBzZW1vdHVzLnNlc3Npb25zW3Nlc3Npb25JZF0uc2VuZE1lc3NhZ2UgPSBzZW5kTWVzc2FnZTtcblxuICAgIHJldHVybiBzYXZlZFNlc3Npb24uY2FsbENvdW50ID4gMDtcbn1cblxuLyoqXG4gKiBTYXZlIHRoZSBzZXNzaW9uIGRhdGEgaW4gYSB3YXkgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC9kZS1zZXJpYWxpemVkXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7dW5rbm93bn0gc2Vzc2lvbklkIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSB1bmtub3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYXZlKHNlbW90dXM6IFNlbW90dXMsIHNlc3Npb25JZCk6IFNhdmVkU2Vzc2lvbiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IGdldChzZW1vdHVzLCBzZXNzaW9uSWQpO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHNhdmUubmFtZTtcblxuICAgIHNlc3Npb24ubmV4dFNhdmVTZXNzaW9uSWQgPSBzZXNzaW9uLm5leHRTYXZlU2Vzc2lvbklkICsgMTtcbiAgICBzZXNzaW9uLnNhdmVkU2Vzc2lvbklkID0gc2Vzc2lvbi5uZXh0U2F2ZVNlc3Npb25JZDtcbiAgICBjb25zdCBvYmplY3RzID0gc2Vzc2lvbi5vYmplY3RzO1xuICAgIHNlc3Npb24ub2JqZWN0cyA9IHt9O1xuXG4gICAgY29uc3Qgc2F2ZWRTZXNzaW9uID0ge1xuICAgICAgICBjYWxsQ291bnQ6IHNlbW90dXMuZ2V0UGVuZGluZ0NhbGxDb3VudChzZXNzaW9uSWQpLCAvLyBDYW4ndCBqdXN0IHJlc3RvcmUgb24gYW5vdGhlciBzZXJ2ZXIgYW5kIGNhcnJ5IG9uXG4gICAgICAgIHJldmlzaW9uOiBzZXNzaW9uLnNhdmVkU2Vzc2lvbklkLCAvLyBVc2VkIHRvIHNlZSBpZiBvdXIgbWVtb3J5IGNvcHkgZ29vZCBlbm91Z2hcbiAgICAgICAgcmVmZXJlbmNlZDogbmV3IERhdGUoKS5nZXRUaW1lKCksIC8vIFVzZWQgZm9yIHJlYXBpbmcgb2xkIHNlc3Npb25zXG4gICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHNlc3Npb24pIC8vIEFsbCB0aGUgc2Vzc2lvbiBkYXRhXG4gICAgfTtcblxuICAgIHNlc3Npb24ub2JqZWN0cyA9IG9iamVjdHM7XG4gICAgc2Vtb3R1cy5sb2dnZXIuZGVidWcoe1xuICAgICAgICBtb2R1bGU6IG1vZHVsZU5hbWUsXG4gICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgIGNhdGVnb3J5OiAnbWlsZXN0b25lJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYWN0aXZpdHk6ICdzYXZlJ1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2F2ZWRTZXNzaW9uO1xufVxuIl19
//# sourceMappingURL=Sessions.js.map

@@ -57,2 +57,2 @@ import * as Sessions from "./Sessions.js";

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Vic2NyaXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXJzL1N1YnNjcmlwdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFFBQVEsc0JBQW1CO0FBR3ZDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBZ0IsRUFBRSxjQUFlO0lBQzdELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZ0IsRUFBRSxTQUFVO0lBQ3pELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWpELElBQUksT0FBTyxFQUFFO1FBQ1QsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDO0tBQ2hDO1NBQU07UUFDSCxPQUFPLElBQUksQ0FBQztLQUNmO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBZ0IsRUFBRSxJQUFJO0lBQzVDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFFcEQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRztRQUNwQyxJQUFJLEVBQUUsSUFBSTtRQUNWLEdBQUcsRUFBRTtZQUNELEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLEVBQUU7WUFDVixVQUFVLEVBQUUsRUFBRTtTQUNqQjtLQUNKLENBQUM7SUFFRixPQUFPLGNBQWMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgU2Vzc2lvbnMgZnJvbSAnLi9TZXNzaW9ucyc7XG5pbXBvcnQgeyBTZW1vdHVzLCBTdWJzY3JpcHRpb24sIFN1YnNjcmlwdGlvbnMgfSBmcm9tICcuL1R5cGVzJztcblxuLyoqXG4gKiBQdXJwb3NlIHVua25vd25cbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICogQHBhcmFtIHt1bmtub3dufSBzdWJzY3JpcHRpb25JZCB1bmtub3duXG4gKlxuICogQHJldHVybnMge3Vua25vd259IHVua25vd25cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3Vic2NyaXB0aW9uKHNlbW90dXM6IFNlbW90dXMsIHN1YnNjcmlwdGlvbklkPyk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIFNlc3Npb25zLmdldChzZW1vdHVzKS5zdWJzY3JpcHRpb25zW3N1YnNjcmlwdGlvbklkIHx8IDBdO1xufVxuXG4vKipcbiAqIFB1cnBvc2UgdW5rbm93blxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0ge3Vua25vd259IHNlc3Npb25JZCB1bmtub3duXG4gKlxuICogQHJldHVybnMge3Vua25vd259IHVua25vd25cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3Vic2NyaXB0aW9ucyhzZW1vdHVzOiBTZW1vdHVzLCBzZXNzaW9uSWQ/KTogbnVsbCB8IFN1YnNjcmlwdGlvbnMge1xuICAgIGNvbnN0IHNlc3Npb24gPSBTZXNzaW9ucy5nZXQoc2Vtb3R1cywgc2Vzc2lvbklkKTtcblxuICAgIGlmIChzZXNzaW9uKSB7XG4gICAgICAgIHJldHVybiBzZXNzaW9uLnN1YnNjcmlwdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG4vKipcbiAqIFN1YnNjcmliZSB0byBjaGFuZ2VzIGFuZCBvcHRpb25hbGx5IGVzdGFibGlzaCBzdWJzY3JpcHRpb24gYXMgdGhlXG4gKiBzb2xlIHJlY2lwaWVudCBvZiByZW1vdGUgY2FsbCBtZXNzYWdlcy4gIENoYW5nZSB0cmFja2luZyBpcyB0aGVuIG1hbmFnZWRcbiAqIGJ5IHRoZSBmdW5jdGlvbnMgdGhhdCBmb2xsb3cuXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7dW5rbm93bn0gcm9sZSB1bmtub3duXG4gKlxuICogQHJldHVybnMgeyp9IHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZShzZW1vdHVzOiBTZW1vdHVzLCByb2xlKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IFNlc3Npb25zLmdldChzZW1vdHVzKTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25JZCA9IHNlc3Npb24ubmV4dFN1YnNjcmlwdGlvbklkKys7XG5cbiAgICBzZXNzaW9uLnN1YnNjcmlwdGlvbnNbc3Vic2NyaXB0aW9uSWRdID0ge1xuICAgICAgICByb2xlOiByb2xlLFxuICAgICAgICBsb2c6IHtcbiAgICAgICAgICAgIGFycmF5OiB7fSxcbiAgICAgICAgICAgIGNoYW5nZToge30sXG4gICAgICAgICAgICBhcnJheURpcnR5OiB7fVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBzdWJzY3JpcHRpb25JZDtcbn0iXX0=
//# sourceMappingURL=Subscriptions.js.map
export const Change = 'change';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9UeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VwZXJ0eXBlIH0gZnJvbSAnQGhhdmVudGVjaC9zdXBlcnR5cGUnO1xuaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmV4cG9ydCB0eXBlIEhUVFBPYmpzID0geyByZXF1ZXN0OiBSZXF1ZXN0LCByZXNwb25zZTogUmVzcG9uc2UgfTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICAgIHJvbGU6IHN0cmluZztcbiAgICBsb2c6IHtcbiAgICAgICAgYXJyYXk6IEFycmF5R3JvdXA7XG4gICAgICAgIGFycmF5RGlydHk6IEFycmF5R3JvdXA7XG4gICAgICAgIGNoYW5nZTogQ2hhbmdlR3JvdXA7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgQ2hhbmdlID0gJ2NoYW5nZSc7XG5leHBvcnQgdHlwZSBBcnJheVR5cGVzID0gJ2FycmF5JyB8ICdhcnJheURpcnR5JztcbmV4cG9ydCB0eXBlIEVycm9yVHlwZSA9ICdlcnJvcicgfCAncmV0cnknIHwgJ3Jlc3BvbnNlJztcblxuZXhwb3J0IHR5cGUgQ2FsbENvbnRleHQgPSB7IHJldHJpZXM6IG51bWJlcjsgc3RhcnRUaW1lOiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NDYWxsUGF5bG9hZCA9IHtcbiAgICBzZW1vdHVzOiBTZW1vdHVzO1xuICAgIHJlbW90ZUNhbGw6IFJlbW90ZUNhbGw7XG4gICAgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0O1xuICAgIHNlc3Npb246IFNlc3Npb247XG4gICAgc3Vic2NyaXB0aW9uSWQ6IGFueTtcbiAgICByZW1vdGVDYWxsSWQ6IGFueTtcbiAgICByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrPzogRnVuY3Rpb247XG4gICAgSFRUUE9ianM/OiBIVFRQT2Jqcztcbn1cblxuLyoqXG4gKiAgaWQgaXMgdGhlIGlkIG9mIHRoZSBvYmplY3QgKyAnLycgKyBwcm9wZXJ0eS5cbiAqICBFeDogdGhlcmUgYXJlIDEgU2Nob29sIHRvIE1hbnkgU3R1ZGVudHNcbiAqXG4gKiAgU2Nob29sIHtcbiAqICAgICAgc3R1ZGVudHM6IEFycmF5PFN0dWRlbnRzPlxuICogIH1cbiAqXG4gKiAgSW4gdGhpcyBjYXNlLCBvbmUgZW50cnkgd2l0aGluIHRoaXMgQXJyYXlHcm91cCBtYXkgYmUgJ3NlcnZlci1TY2hvb2wtMS9zdHVkZW50cyc6IFtcInNlcnZlci1TdHVkZW50LTNcIiwgXCJzZXJ2ZXItU3R1ZGVudC01XCJdXG4gKlxuICogIElmIHRoYXQncyBhbGwgdGhlIGNoYW5nZXMgdGhlbiB0aGUgQXJyYXlHcm91cCB3b3VsZCBiZSB7J3NlcnZlci1TY2hvb2wtMS9zdHVkZW50cyc6IFtcInNlcnZlci1TdHVkZW50LTNcIiwgXCJzZXJ2ZXItU3R1ZGVudC01XCJdfVxuICovXG5leHBvcnQgdHlwZSBBcnJheUdyb3VwID0geyBbaWQ6IHN0cmluZ106IEFycmF5Q2hhbmdlcyB9O1xuXG4vKipcbiAqIEFuIGFycmF5IG9mIElkIHJlZmVyZW5jZXMgdG8gU3VwZXJ0eXBlIE9iamVjdHMgb3IgcHJpbWl0aXZlIHZhbHVlc1xuICovXG50eXBlIEFycmF5Q2hhbmdlcyA9IEFycmF5PGFueT47XG5leHBvcnQgdHlwZSBDaGFuZ2VHcm91cCA9IHsgW29iaklkOiBzdHJpbmddOiBQcm9wQ2hhbmdlcyB9O1xudHlwZSBQcm9wQ2hhbmdlcyA9IHsgW3Byb3A6IHN0cmluZ106IENoYW5nZXMgfTtcblxuLy8gQ2hhbmdlc1swXSBpcyBvbGRWYWx1ZSwgQ2hhbmdlc1sxXSBpcyBuZXdWYWx1ZVxudHlwZSBvbGRWYWwgPSBhbnk7XG50eXBlIG5ld1ZhbCA9IGFueTtcbnR5cGUgQ2hhbmdlcyA9IFtvbGRWYWwsIG5ld1ZhbF1bXTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9ucyA9IHsgW2tleTogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH07XG5cbmV4cG9ydCB0eXBlIFJlbW90ZUNhbGwgPSB7XG4gICAgcmVtb3RlQ2FsbElkOiBhbnk7XG4gICAgaWQ6IGFueTtcbiAgICBjaGFuZ2VzOiBzdHJpbmc7IC8vIFRoZSBzdHJpbmcgaXMgb2YgdHlwZSBDaGFuZ2VHcm91cFxuICAgIG5hbWU6IHN0cmluZztcbiAgICBzZXF1ZW5jZTogYW55O1xuICAgIHR5cGU6IGFueTtcbiAgICBzeW5jOiBhbnk7XG4gICAgdmFsdWU6IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgU2Vzc2lvbiA9IHtcbiAgICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25zO1xuICAgIHNlbmRNZXNzYWdlOiBTZW5kTWVzc2FnZTtcbiAgICBzZW5kTWVzc2FnZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcmVtb3RlQ2FsbHM6IEFycmF5PGFueT47XG4gICAgcGVuZGluZ1JlbW90ZUNhbGxzOiBhbnk7XG4gICAgbmV4dFBlbmRpbmdSZW1vdGVDYWxsSWQ6IG51bWJlcjtcbiAgICBuZXh0U2F2ZVNlc3Npb25JZDogbnVtYmVyO1xuICAgIHNhdmVkU2Vzc2lvbklkOiBudW1iZXI7XG4gICAgbmV4dFN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG4gICAgb2JqZWN0czogYW55O1xuICAgIG5leHRPYmpJZDogbnVtYmVyO1xuICAgIGRpc3BlbnNlTmV4dElkOiBudWxsOyAvLyBub3QgdXNlZCBhbnl3aGVyZVxufVxuXG5cbmV4cG9ydCB0eXBlIFNlc3Npb25zID0geyBbc2Vzc2lvbklkOiBudW1iZXJdOiBTZXNzaW9uIH07XG5cbmV4cG9ydCB0eXBlIFNlbmRNZXNzYWdlID0gKG1lc3NhZ2U6IGFueSkgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgU2F2ZWRTZXNzaW9uID0ge1xuICAgIHJldmlzaW9uOiBudW1iZXI7XG4gICAgZGF0YTogc3RyaW5nOyAvLyBTZXJpYWxpemVkIFNlc3Npb24gZGF0YVxuICAgIGNhbGxDb3VudDogbnVtYmVyO1xuICAgIHJlZmVyZW5jZWQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlYWJsZUNsYXNzIGV4dGVuZHMgU3VwZXJ0eXBlIHtcbiAgICBzeW5jU3RhdGVzOiBBcnJheTxzdHJpbmc+O1xuICAgIF9fdG9DbGllbnRfXzogYm9vbGVhbjtcbiAgICBfX3RvU2VydmVyX186IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENoYW5nZVN0cmluZyA9IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG50eXBlIFByZVNlcnZlckNhbGxDaGFuZ2VzID0geyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG5cbmV4cG9ydCB0eXBlIENvbnRyb2xsZXJTeW5jU3RhdGUgPSB7XG4gICAgc2NvcGU6ICcrJyB8ICcqJyB8ICctJ1xuICAgIHN0YXRlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2Vtb3R1c0NvbnRyb2xsZXIge1xuICAgIF9fdGVtcGxhdGVfXzogYW55O1xuICAgIHN5bmNTdGF0ZT86IENvbnRyb2xsZXJTeW5jU3RhdGVcblxuICAgIC8qKlxuICAgICAqIEBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIENhbGxiYWNrIGFmdGVyIGEgc3VjY2Vzc2Z1bCByZW1vdGUgZnVuY3Rpb24gY2FsbCAoanVzdCB0aGUgYXBwbGljYXRpb24gb2YgY2hhbmdlcyBhbmQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24gY2FsbClcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IG1lYW4gd2UgY2FuJ3QgZXJyb3Igb3V0IG9uIHRoaXMgb3Igc3Vic2VxdWVudCBzdGVwcyBvZiBhIHJlbW90ZSBjYWxsLlxuICAgICAqXG4gICAgICogV2UgY2FuIHV0aWxpemUgdGhpcyBmdW5jdGlvbiBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gaGFuZGxlciB0byBydW4gYWZ0ZXIgd2UgaGF2ZSBzdWNjZXNzZnVsbHkgY2FsbGVkIGEgcmVtb3RlIGZ1bmN0aW9uLlxuICAgICAqIE9uZSBzdWNoIHVzZSBtYXkgYmUgdG8gc2VlIHRoZSBjaGFuZ2VzIHRoYXQgd2VyZSBhcHBsaWVkIGZyb20gdGhlIGNsaWVudFxuICAgICAqXG4gICAgICogTk9URSBUSEFUIFRIRSBDSEFOR0VTVFJJTkcgRE9FUyBOT1QgSU5DTFVERSBDSEFOR0VTIERPTkUgV0lUSElOIFRIRSBSRU1PVEUgRlVOQ1RJT04gQ0FMTCBJVFNFTEYsIE9OTFkgQ0hBTkdFUyBGUk9NIFRIRSBDTElFTlRcbiAgICAgKlxuICAgICAqIFNlZSByZW1vdGUgY2FsbCBkb2N1bWVudGF0aW9uIHRvIGtub3cgd2hlcmUgdGhpcyBleGVjdXRlcyBpbiB0aGUgbGlmZWN5Y2xlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc0NoYW5nZXMgLSBXaGV0aGVyIG9yIG5vdCB3ZSBoYXZlIGFwcGxpZWQgY2xpZW50IGNoYW5nZXMgb250byB0aGUgc2VydmVyJ3Mgb2JqZWN0IGdyYXBoXG4gICAgICogQHBhcmFtIHtDYWxsQ29udGV4dH0gY2FsbENvbnRleHQgLSBDb250ZXh0IChudW1iZXIgb2YgcmV0cmllcyBldGMpXG4gICAgICogQHBhcmFtIHtjaGFuZ2VTdHJpbmd9IGNoYW5nZVN0cmluZyAtIE9iamVjdCBvZiBDaGFuZ2VzIC0gS2V5IGlzIFtDbGFzc05hbWVdLltwcm9wZXJ0eU5hbWVdLCBWYWx1ZSBpcyBbY2hhbmdlZFZhbHVlXSBleGFtcGxlOiB7J0N1c3RvbWVyLm1pZGRsZW5hbWUnOiAnS2FyZW4nfSwgU2VlIGFib3ZlIG5vdGVcbiAgICAgKiBAcGFyYW0gSFRUUE9ianNcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqIEBtZW1iZXJvZiBDb250cm9sbGVyXG4gICAgICovXG4gICAgcG9zdFNlcnZlckNhbGw/KGhhc0NoYW5nZXM6IGJvb2xlYW4sIGNhbGxDb250ZXh0OiBDYWxsQ29udGV4dCwgY2hhbmdlU3RyaW5nOiBDaGFuZ2VTdHJpbmcsIEhUVFBPYmpzPzogSFRUUE9ianMpOiBQcm9taXNlPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAc2VydmVyXG4gICAgICpcbiAgICAgKiBDYWxsYmFjayB0byBoYW5kbGUgZXJyb3JzIG9uIGEgcmVtb3RlIGNhbGwuXG4gICAgICpcbiAgICAgKiBFeGVjdXRlcyBhZnRlciBldmVyeSBvdGhlciBzdGVwIGluIHRoZSByZW1vdGUgY2FsbCBwaXBlbGluZSAoc2VlIHJlbW90ZSBjYWxsIGRvY3VtZW50YXRpb24pXG4gICAgICogYnV0IGJlZm9yZSByZXRyeWluZyB0aGUgY2FsbCAob3IgcGFja2FnaW5nIHJlc3BvbnNlIGFuZCBzZW5kaW5nIGJhY2sgdG8gY2xpZW50KVxuICAgICAqXG4gICAgICogTk9URSBUSEFUIFRIRSBDSEFOR0VTVFJJTkcgRE9FUyBOT1QgSU5DTFVERSBDSEFOR0VTIERPTkUgV0lUSElOIFRIRSBSRU1PVEUgRlVOQ1RJT04gQ0FMTCBJVFNFTEYsIE9OTFkgQ0hBTkdFUyBGUk9NIFRIRSBDTElFTlRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RXJyb3JUeXBlfSBlcnJvclR5cGUgLSBFcnJvciB0eXBlIGFzc29jaWF0ZWQgKGVycm9yLCByZXRyeSwgcmVzcG9uc2UpXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJlbW90ZUNhbGxJZCAtIElkIGZvciByZW1vdGUgY2FsbFxuICAgICAqIEBwYXJhbSB7ZXh0ZW5kcyBTdXBlcnR5cGV9IHJlbW90ZU9iaiAtIEluc3RhbmNlIGZvciB3aGljaCB0aGUgcmVtb3RlIG9iamVjdCBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIC0gQFRPRE86IHJldmlzaXQgd2hlbiB3ZSBjcmVhdGUgYSBwcm9wZXIgcmVtb3RlYWJsZSB0eXBlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZ1bmN0aW9uTmFtZSAtIE5hbWUgb2YgZnVuY3Rpb24gYmVpbmcgY2FsbGVkXG4gICAgICogQHBhcmFtIHtDYWxsQ29udGV4dH0gY2FsbENvbnRleHQgLSBDb250ZXh0IChudW1iZXIgb2YgcmV0cmllcyBldGMpXG4gICAgICogQHBhcmFtIHtDaGFuZ2VTdHJpbmd9IGNoYW5nZVN0cmluZyAtIE9iamVjdCBvZiBDaGFuZ2VzIC0gS2V5IGlzIFtDbGFzc05hbWVdLltwcm9wZXJ0eU5hbWVdLCBWYWx1ZSBpcyBbY2hhbmdlZFZhbHVlXSBleGFtcGxlOiB7J0N1c3RvbWVyLm1pZGRsZW5hbWUnOiAnS2FyZW4nfSwgU2VlIGFib3ZlIG5vdGVcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqIEBtZW1iZXJvZiBDb250cm9sbGVyXG4gICAgICovXG4gICAgcG9zdFNlcnZlckVycm9ySGFuZGxlcj8oZXJyb3JUeXBlOiBFcnJvclR5cGUsIHJlbW90ZUNhbGxJZDogbnVtYmVyLCByZW1vdGVPYmo6IFN1cGVydHlwZSwgZnVuY3Rpb25OYW1lOiBzdHJpbmcsIGNhbGxDb250ZXh0OiBDYWxsQ29udGV4dCwgY2hhbmdlU3RyaW5nOiBDaGFuZ2VTdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICogQHNlcnZlclxuICAgICAqXG4gICAgICogQ2FsbGJhY2sgYmVmb3JlIGEgcmVtb3RlIGZ1bmN0aW9uIGNhbGwgKDFzdCBzdGVwIG9mIGEgcmVtb3RlIGNhbGwpXG4gICAgICpcbiAgICAgKiBXZSBjYW4gdXRpbGl6ZSB0aGlzIGZ1bmN0aW9uIGFzIGEgZ2VuZXJpYyBmdW5jdGlvbiBoYW5kbGVyIHRvIHJ1biBiZWZvcmUgd2UgY2FsbCBhXG4gICAgICogcmVtb3RlIGZ1bmN0aW9uIG9yIGJlZm9yZSB3ZSBhcHBseSBjaGFuZ2VzIGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBXZSBjYW4gYWxzbyB1dGlsaXplIHRoaXMgZnVuY3Rpb24gdG8gZG8gYW55IGNvbnRleHQtc3BlY2lmaWMgcHJlcCB3b3JrIC8gbG9hZGluZ1xuICAgICAqIGlmIHRoaXMgYSBzdWJzZXF1ZW50IHRyeSBvZiB0aGlzIGZ1bmN0aW9uIGR1ZSB0byBhbiB1cGRhdGUgY29uZmxpY3QuXG4gICAgICpcbiAgICAgKiBTZWUgcmVtb3RlIGNhbGwgZG9jdW1lbnRhdGlvbiB0byBrbm93IHdoZXJlIHRoaXMgZXhlY3V0ZXMgaW4gdGhlIGxpZmVjeWNsZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSBoYXNDaGFuZ2VzIC0gV2hldGhlciBvciBub3Qgd2UgaGF2ZSBhcHBsaWVkIGNsaWVudCBjaGFuZ2VzIG9udG8gdGhlIHNlcnZlcidzIG9iamVjdCBncmFwaFxuICAgICAqIEBwYXJhbSB7UHJlU2VydmVyQ2FsbENoYW5nZXN9IGNoYW5nZXMgLSBEaWN0aW9uYXJ5IG9mIE9iamVjdHMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlZCBmcm9tIHRoZSBjbGllbnRcbiAgICAgKiBAcGFyYW0ge0NhbGxDb250ZXh0fSBjYWxsQ29udGV4dCAtIENvbnRleHQgKG51bWJlciBvZiByZXRyaWVzIGV0YylcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmb3JjZVVwZGF0ZV0gLSBPcHRpb25hbCBwYXJhbWV0ZXIgcGFzc2VkIGluLiBUcnVlIGlmIHRoaXMgaXMgYSByZXRyeSBvZiB0aGUgY2FsbCBiYXNlZCBvbiBhbiB1cGRhdGUgY29uZmxpY3QuIEZhbHNlIC8gdW5kZWZpbmVkIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmdW5jdGlvbk5hbWVcbiAgICAgKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICAgICAqIEBwYXJhbSBpc1B1YmxpY1xuICAgICAqIEBwYXJhbSBIVFRQT2Jqc1xuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqIEBtZW1iZXJvZiBDb250cm9sbGVyXG4gICAgICovXG4gICAgcHJlU2VydmVyQ2FsbD8oaGFzQ2hhbmdlczogYm9vbGVhbiwgY2hhbmdlczogUHJlU2VydmVyQ2FsbENoYW5nZXMsIGNhbGxDb250ZXh0OiBDYWxsQ29udGV4dCwgZm9yY2VVcGRhdGU6IHVuZGVmaW5lZCB8IGJvb2xlYW4sIGZ1bmN0aW9uTmFtZTogc3RyaW5nLCByZW1vdGVDYWxsOiBSZW1vdGVDYWxsLCBpc1B1YmxpYzogYm9vbGVhbiwgSFRUUE9ianM/OiBIVFRQT2JqcyApOiBQcm9taXNlPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGEgaGFuZGxlciB0aGF0IHdpbGwgb25seSBiZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcgcHVycG9zZXNcbiAgICAgKlxuICAgICAqIFdoZW4gdGhpcyBpcyB1c2VkLCBhbGxvd3MgdXMgdG8gaW5zcGVjdCB0aGUgbWVzc2FnZSBib2R5IGJlZm9yZSB3ZSBzZW5kIGl0IG91dCBpbiAncGFja2FnZUNoYW5nZXMnXG4gICAgICpcbiAgICAgKiBETyBOT1QgVVNFIFRISVMgSU4gUFJPRFVDVElPTiBDT0RFXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgICAqL1xuICAgIGluc3BlY3RNZXNzYWdlPyhtZXNzYWdlKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbW90dXMge1xuICAgIHNldFN5bmNTdGF0ZTogKHN0cikgPT4gdm9pZDtcbiAgICBzeW5jU3RhdGU6IHN0cmluZztcbiAgICBnZXRTeW5jU3RhdGU6ICgpID0+IGFueTtcbiAgICBtYXhDYWxsVGltZTogbnVtYmVyO1xuICAgIF9fZGljdGlvbmFyeV9fOiBhbnk7XG4gICAgbWVtU2Vzc2lvbjogeyBzZW1vdHVzOiB7IGNhbGxTdGFydFRpbWU6IG51bWJlciB9IH07XG4gICAgX2luamVjdEludG9UZW1wbGF0ZTogKHRlbXBsYXRlKSA9PiB2b2lkO1xuICAgIHNlcmlhbGl6ZUFuZEdhcmJhZ2VDb2xsZWN0OiAoKSA9PiBhbnk7XG4gICAgZ2V0TWVzc2FnZTogKHNlc3Npb25JZCwgZm9yY2VNZXNzYWdlKSA9PiBhbnk7XG4gICAgY2xlYXJQZW5kaW5nQ2FsbHM6IChzZXNzaW9uSWQpID0+IHZvaWQ7XG4gICAgZ2V0Q2hhbmdlR3JvdXA6ICh0eXBlLCBzdWJzY3JpcHRpb25JZCkgPT4gQ2hhbmdlR3JvdXA7XG4gICAgZGVsZXRlQ2hhbmdlR3JvdXA6ICh0eXBlOiBhbnksIHN1YnNjcmlwdGlvbklkOiBhbnkpID0+IHZvaWQ7XG4gICAgZ2V0Q2hhbmdlU3RhdHVzOiAoKSA9PiBzdHJpbmc7XG4gICAgX3N0YXNoT2JqZWN0OiAob2JqLCB0ZW1wbGF0ZSkgPT4gYm9vbGVhbjtcbiAgICBzZXNzaW9uaXplOiAob2JqLCByZWZlcmVuY2luZ09iaikgPT4gKHVuZGVmaW5lZCB8IGFueSk7XG4gICAgX3NldHVwRnVuY3Rpb246IChwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUsIHJvbGUsIHZhbGlkYXRlLCBzZXJ2ZXJWYWxpZGF0aW9uLCBpc1B1YmxpYzogYm9vbGVhbiwgdGVtcGxhdGUpID0+IChhbnkpO1xuICAgIF9zZXR1cFByb3BlcnR5OiAocHJvcGVydHlOYW1lLCBkZWZpbmVQcm9wZXJ0eSwgb2JqZWN0UHJvcGVydGllcywgZGVmaW5lUHJvcGVydGllcykgPT4gdm9pZDtcbiAgICB3aXRob3V0Q2hhbmdlVHJhY2tpbmc6IChjYikgPT4gdm9pZDtcbiAgICBfY2hhbmdlZFZhbHVlOiAob2JqLCBwcm9wLCB2YWx1ZSkgPT4gdm9pZDtcbiAgICBfcmVmZXJlbmNlZEFycmF5OiAob2JqLCBwcm9wLCBhcnJheVJlZiwgc2Vzc2lvbklkPykgPT4gdm9pZDtcbiAgICBfY29udmVydEFycmF5UmVmZXJlbmNlc1RvQ2hhbmdlczogKCkgPT4gdm9pZDtcbiAgICBNYXJrQ2hhbmdlZEFycmF5UmVmZXJlbmNlczogKCkgPT4gdm9pZDtcbiAgICBfY29udmVydFZhbHVlOiAodmFsdWUpID0+IChhbnlbXSB8IG51bGwpO1xuICAgIGdldE9iamVjdDogKG9iaklkLCB0ZW1wbGF0ZSkgPT4gKGFueSB8IG51bGwpO1xuICAgIF9hcHBseUNoYW5nZXM6IChjaGFuZ2VzLCBmb3JjZSwgc3Vic2NyaXB0aW9uSWQsIGNhbGxDb250ZXh0KSA9PiAobnVtYmVyKTtcbiAgICBfYXBwbHlPYmplY3RDaGFuZ2VzOiAoY2hhbmdlcywgcm9sbGJhY2ssIG9iaiwgZm9yY2UpID0+IChib29sZWFuKTtcbiAgICBfdmFsaWRhdGVTZXJ2ZXJJbmNvbWluZ1Byb3BlcnR5OiAob2JqLCBwcm9wLCBkZWZpbmVQcm9wZXJ0eSwgbmV3VmFsdWUpID0+IChib29sZWFuKTtcbiAgICBfYXBwbHlQcm9wZXJ0eUNoYW5nZTogKGNoYW5nZXMsIHJvbGxiYWNrLCBvYmosIHByb3AsIGl4LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIGZvcmNlKSA9PiAoYm9vbGVhbik7XG4gICAgX3JvbGxiYWNrOiAocm9sbGJhY2spID0+IHZvaWQ7XG4gICAgX3JvbGxiYWNrQ2hhbmdlczogKCkgPT4gdm9pZDtcbiAgICBfY3JlYXRlT2JqZWN0OiAoKSA9PiBhbnk7XG4gICAgX2NyZWF0ZUVtcHR5T2JqZWN0OiAodGVtcGxhdGUsIG9iaklkLCBkZWZpbmVQcm9wZXJ0eSwgaXNUcmFuc2llbnQpID0+IGFueTtcbiAgICBpbmplY3Q6ICh0ZW1wbGF0ZSwgaW5qZWN0b3IpID0+IHZvaWQ7XG4gICAgX3F1ZXVlUmVtb3RlQ2FsbDogKG9iaklkLCBmdW5jdGlvbk5hbWUsIGRlZmVycmVkLCBhcmdzKSA9PiB2b2lkO1xuICAgIF9wcm9jZXNzUXVldWU6ICgpID0+IHZvaWQ7XG4gICAgX3RvVHJhbnNwb3J0OiAob2JqKSA9PiBhbnk7XG4gICAgX2Zyb21UcmFuc3BvcnQ6IChvYmopID0+IGFueTtcbiAgICBfZXh0cmFjdEFyZ3VtZW50czogKHJlbW90ZUNhbGwpID0+IGFueTtcbiAgICBfdHJpbUFycmF5OiAoYXJyYXkpID0+IHZvaWQ7XG4gICAgX2RlbGV0ZUNoYW5nZUdyb3VwczogKHR5cGUpID0+IHZvaWQ7XG4gICAgX2dldFN1YnNjcmlwdGlvbnM6IChzZXNzaW9uSWQ/KSA9PiBTdWJzY3JpcHRpb25zIHwgbnVsbDtcbiAgICBfZ2V0U3Vic2NyaXB0aW9uOiAoc3Vic2NyaXB0aW9uSWQ/KSA9PiBTdWJzY3JpcHRpb247XG4gICAgY2xlYW5Qcml2YXRlVmFsdWVzOiAocHJvcCwgbG9nVmFsdWUsIGRlZmluZVByb3BlcnR5KSA9PiAoc3RyaW5nIHwgYW55KTtcbiAgICBSZW1vdGVhYmxlOiAoQmFzZSkgPT4gKCkgPT4gYW55O1xuICAgIEJpbmRhYmxlOiAoQmFzZSkgPT4gKCkgPT4gYW55O1xuICAgIFBlcnNpc3RhYmxlOiAoQmFzZSkgPT4gKCkgPT4gYW55O1xuICAgIGJpbmREZWNvcmF0b3JzOiAob2JqZWN0VGVtcGxhdGU/KSA9PiB2b2lkO1xuICAgIHByb2Nlc3NNZXNzYWdlOiAocmVtb3RlQ2FsbCwgc3Vic2NyaXB0aW9uSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2ssIHJlcT86IFJlcXVlc3QsIHJlcz86IFJlc3BvbnNlKSA9PiAodW5kZWZpbmVkIHwgYW55KTtcbiAgICBlbmFibGVTZW5kTWVzc2FnZTogKHZhbHVlLCBtZXNzYWdlQ2FsbGJhY2ssIHNlc3Npb25JZCkgPT4gdm9pZDtcbiAgICBzeW5jU2Vzc2lvbjogKHNlc3Npb25JZCkgPT4gdm9pZDtcbiAgICByZXN0b3JlU2Vzc2lvbjogKHNlc3Npb25JZCwgc2F2ZWRTZXNzaW9uOiBTYXZlZFNlc3Npb24sIHNlbmRNZXNzYWdlOiBTZW5kTWVzc2FnZSkgPT4gYm9vbGVhbjtcbiAgICBzYXZlU2Vzc2lvbjogKHNlc3Npb25JZCkgPT4gU2F2ZWRTZXNzaW9uO1xuICAgIHNldE1pbmltdW1TZXF1ZW5jZTogKG5leHRPYmpJZCkgPT4gdm9pZDtcbiAgICBkZWxldGVTZXNzaW9uOiAoc2Vzc2lvbklkKSA9PiB2b2lkO1xuICAgIGNyZWF0ZVNlc3Npb246IChyb2xlOiBhbnksIHNlbmRNZXNzYWdlOiBTZW5kTWVzc2FnZSwgc2Vzc2lvbklkOiBhbnkpID0+IGFueTtcbiAgICBsb2c6IChsZXZlbCwgZGF0YSkgPT4gdm9pZDtcbiAgICBuZXh0T2JqSWQ6IG51bWJlcjtcbiAgICBtYXhDbGllbnRTZXF1ZW5jZTogbnVtYmVyO1xuICAgIGxvZ0xldmVsOiBudW1iZXI7XG4gICAgX19jb25mbGljdE1vZGVfXzogc3RyaW5nO1xuICAgIF9fY2hhbmdlVHJhY2tpbmdfXzogYm9vbGVhbjtcbiAgICBfdXNlR2V0dGVyc1NldHRlcnM6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBhbnk7XG4gICAgcm9sZTogYW55O1xuICAgIGN1cnJlbnRTZXNzaW9uOiBhbnk7XG4gICAgc2Vzc2lvbnM/OiBTZXNzaW9ucztcbiAgICBuZXh0U3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICBuZXh0U2Vzc2lvbklkOiBudW1iZXI7XG4gICAgY29udHJvbGxlcjogSVNlbW90dXNDb250cm9sbGVyO1xuICAgIGNoYW5nZVN0cmluZzogc3RyaW5nO1xuXG5cbiAgICBfZ2V0U2Vzc2lvbihfc2lkPzogYW55KTogU2Vzc2lvbjtcblxuICAgIHN1YnNjcmliZShyb2xlOiBhbnkpOiBudW1iZXI7XG5cbiAgICBzZXRTZXNzaW9uKHNlc3Npb25JZDogYW55KTogdm9pZDtcblxuICAgIGdldENoYW5nZXMoc3Vic2NyaXB0aW9uSWQ/OiBhbnkpOiBDaGFuZ2VHcm91cDtcblxuICAgIF9kZWxldGVDaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgICBnZXRQZW5kaW5nQ2FsbENvdW50KHNlc3Npb25JZDogYW55KTogYW55O1xufVxuIl19
//# sourceMappingURL=Types.js.map

@@ -40,2 +40,2 @@ // Q Replacement Helpers

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlcnMvVXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUF3QjtBQUl4QixNQUFNLFVBQVUsS0FBSyxDQUFDLEVBQVU7SUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUs7SUFDakIsTUFBTSxNQUFNLEdBQW1ELEVBQUUsQ0FBQztJQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU07UUFDbEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBR0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFHO0lBQ3hCLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRTtRQUN0QixPQUFPLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBQyxDQUFDO0tBQ3ZFO1NBQU07UUFDSCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDO1NBQ3pCO2FBQU07WUFDSCxPQUFPLEdBQUcsQ0FBQztTQUNkO0tBQ0o7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxXQUF3QjtJQUM1QyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQ3ZCLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFEgUmVwbGFjZW1lbnQgSGVscGVyc1xuXG5pbXBvcnQgeyBDYWxsQ29udGV4dCB9IGZyb20gJy4vVHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVsYXkobXM6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShfID0+IHNldFRpbWVvdXQoXywgbXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmVyKCkge1xuICAgIGNvbnN0IHJlc3VsdDogeyBwcm9taXNlPzogYW55LCByZXNvbHZlPzogYW55LCByZWplY3Q/OiBhbnkgfSA9IHt9O1xuICAgIHJlc3VsdC5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICByZXN1bHQucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHJlc3VsdC5yZWplY3QgPSByZWplY3Q7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0b1xuICpcbiAqIERpc3Rpbmd1aXNoIGJldHdlZW4gYW4gYWN0dWFsIGVycm9yICh3aWxsIHRocm93IGFuIEVycm9yIG9iamVjdCkgYW5kIGEgc3RyaW5nIHRoYXQgdGhlIGFwcGxpY2F0aW9uIG1heVxuICogdGhyb3cgd2hpY2ggaXMgdG8gZ2V0IHBpcGVkIGJhY2sgdG8gdGhlIGNhbGxlci4gIEZvciBhbiBhY3R1YWwgZXJyb3Igd2Ugd2FudCB0byBsb2cgdGhlIHN0YWNrIHRyYWNlXG4gKlxuICogQHBhcmFtIGVyciB1bmtub3duXG4gKlxuICogQHJldHVybnMgeyp9IHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4ge2NvZGU6ICdpbnRlcm5hbF9lcnJvcicsIHRleHQ6ICdBbiBpbnRlcm5hbCBlcnJvciBvY2N1cnJlZCd9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHttZXNzYWdlOiBlcnJ9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGVycjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ1RpbWUoY2FsbENvbnRleHQ6IENhbGxDb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC1cbiAgICAgICAgY2FsbENvbnRleHQuc3RhcnRUaW1lLmdldFRpbWUoKTtcbn0iXX0=
//# sourceMappingURL=Utilities.js.map

@@ -29,3 +29,3 @@ // These two mixins and extender functions are needed because in the browser we only include supertype and semotus

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -39,3 +39,3 @@ return class_1;

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -49,3 +49,3 @@ return class_1;

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -55,2 +55,2 @@ return class_1;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBFeHRlbmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NldHVwRXh0ZW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrSEFBa0g7QUFDbEgsK0VBQStFO0FBRS9FLE1BQU0sU0FBUyxHQUNYLENBQUMsSUFBSSxJQUFLLElBQVksQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQztRQUNHLE1BQU0sYUFBYSxHQUNmLE1BQU0sQ0FBQyxjQUFjO1lBQ3JCLENBQUMsRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLFlBQVksS0FBSztnQkFDN0IsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDVixDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDO1lBQ04sVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDVixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDYixJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2Y7aUJBQ0o7WUFDTCxDQUFDLENBQUM7UUFDTixPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakIsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVwQixTQUFTLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUVELENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsRUFBRSxDQUFDO0FBRVQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFJO0lBQzVCLE9BQU8sQ0FBQyxVQUFVLE1BQU07UUFDcEIsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzQixTQUFTLE9BQU87WUFDWixPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDL0UsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBSTtJQUMzQixPQUFPLENBQUMsVUFBVSxNQUFNO1FBQ3BCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0IsU0FBUyxPQUFPO1lBQ1osT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQy9FLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQUk7SUFDekIsT0FBTyxDQUFDLFVBQVUsTUFBTTtRQUNwQixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNCLFNBQVMsT0FBTztZQUNaLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMvRSxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlc2UgdHdvIG1peGlucyBhbmQgZXh0ZW5kZXIgZnVuY3Rpb25zIGFyZSBuZWVkZWQgYmVjYXVzZSBpbiB0aGUgYnJvd3NlciB3ZSBvbmx5IGluY2x1ZGUgc3VwZXJ0eXBlIGFuZCBzZW1vdHVzXG4vLyBhbmQgc2luY2UgY2xhc3NlcyB1c2UgdGhlc2UgaW4gdGhlaXIgZXh0ZW5kcyBoaWVyYXJjaHkgdGhleSBtdXN0IGJlIGRlZmluZWQuXG5cbmNvbnN0IF9fZXh0ZW5kcyA9XG4gICAgKHRoaXMgJiYgKHRoaXMgYXMgYW55KS5fX2V4dGVuZHMpIHx8XG4gICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5kU3RhdGljcyA9XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7X19wcm90b19fOiBbXX0gaW5zdGFuY2VvZiBBcnJheSAmJlxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICAgICAgICAgICAgICB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRbcF0gPSBiW3BdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6ICgoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUpLCBuZXcgX18oKSk7XG4gICAgICAgIH07XG4gICAgfSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFBlcnNpc3RhYmxlKEJhc2UpIHtcbiAgICByZXR1cm4gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICAgICAgX19leHRlbmRzKGNsYXNzXzEsIF9zdXBlcik7XG5cbiAgICAgICAgZnVuY3Rpb24gY2xhc3NfMSgpIHtcbiAgICAgICAgICAgIHJldHVybiAoX3N1cGVyICE9PSBudWxsICYmIFJlZmxlY3QuYXBwbHkoX3N1cGVyLCB0aGlzLCBhcmd1bWVudHMpKSB8fCB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsYXNzXzE7XG4gICAgfSkoQmFzZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlbW90ZWFibGUoQmFzZSkge1xuICAgIHJldHVybiAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgICAgICBfX2V4dGVuZHMoY2xhc3NfMSwgX3N1cGVyKTtcblxuICAgICAgICBmdW5jdGlvbiBjbGFzc18xKCkge1xuICAgICAgICAgICAgcmV0dXJuIChfc3VwZXIgIT09IG51bGwgJiYgUmVmbGVjdC5hcHBseShfc3VwZXIsIHRoaXMsIGFyZ3VtZW50cykpIHx8IHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xhc3NfMTtcbiAgICB9KShCYXNlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQmluZGFibGUoQmFzZSkge1xuICAgIHJldHVybiAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgICAgICBfX2V4dGVuZHMoY2xhc3NfMSwgX3N1cGVyKTtcblxuICAgICAgICBmdW5jdGlvbiBjbGFzc18xKCkge1xuICAgICAgICAgICAgcmV0dXJuIChfc3VwZXIgIT09IG51bGwgJiYgUmVmbGVjdC5hcHBseShfc3VwZXIsIHRoaXMsIGFyZ3VtZW50cykpIHx8IHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xhc3NfMTtcbiAgICB9KShCYXNlKVxufVxuXG5cbiJdfQ==
//# sourceMappingURL=setupExtends.js.map

@@ -0,1 +1,7 @@

## 10.0.1
* fixes decorators and Supertype export after the ESM refactor.
* support for ES6+ classes with the Persistable, Remoteable and Bindable decorators.
* support for ES6+ classes with the Supertype class
* target es2020. es2020 is fully supported for Node 16.3.0+. see https://node.green/#ES2020
* add *.d.ts files for tsc
## 10.0.0

@@ -2,0 +8,0 @@ * ESM/CJS Hybrid, depending on the import type either through require or import

{
"name": "@haventech/semotus",
"version": "10.0.0",
"version": "10.0.1",
"description": "A subclass of supertype that synchronizes sets of objects.",

@@ -33,3 +33,3 @@ "homepage": "https://github.com/haven-life/amorphic-framework",

"compile:test:types": "tsc -p ./test/typesTs/tsconfig.json",
"copyStatics": "cp ./src/index.d.ts ./dist/cjs/index.d.ts && cp ./src/helpers/Types.ts ./dist/cjs/helpers/Types.ts && cp ./src/index.d.ts ./dist/esm/index.d.ts && cp ./src/helpers/Types.ts ./dist/esm/helpers/Types.ts",
"copyStatics": "cp ./src/index.d.ts ./dist/cjs/index.d.ts && cp ./src/index.d.ts ./dist/esm/index.d.ts",
"coverage": "nyc npm run test",

@@ -52,3 +52,3 @@ "coverage:ts": "nyc npm run test:ts",

"devDependencies": {
"@haventech/supertype": "^9.0.0",
"@haventech/supertype": "^9.0.2",
"@types/chai": "4.3.4",

@@ -72,3 +72,3 @@ "@types/express": "4.17.16",

"peerDependencies": {
"@haventech/supertype": "^9.0.0"
"@haventech/supertype": "^9.0.2"
},

@@ -75,0 +75,0 @@ "engines": {

@@ -20,6 +20,7 @@ /**

// 2nd pass: Semotus (sClass) -> Semotus (decorator) -> Supertype (eval ret) -> Semotus (return)
export function supertypeClass(objectTemplate, SupertypeModule, target): any {
export function supertypeClass(getObjectTemplate, SupertypeModule?, target?) {
let ret;
let ObjectTemplate = SupertypeModule.default;
let syncStates: String[] = []; // Default syncStates to empty array
let objectTemplate = getObjectTemplate();

@@ -90,7 +91,4 @@ // Decorator workerbee

export function Supertype(template, objectTemplate, Supertype) {
return Reflect.construct(Supertype, [objectTemplate], template.constructor);
}
export function property(objectTemplate, SupertypeModule, props, toClientRuleSet, toServerRuleSet) {
export function property(getObjectTemplate, SupertypeModule?, props?, toClientRuleSet?, toServerRuleSet?) {
const objectTemplate = getObjectTemplate();
props = props || {};

@@ -111,3 +109,4 @@ props.toClient = applyRuleSet(props.toClient, toClientRuleSet);

export function remote(objectTemplate, defineProperty) {
export function remote(getObjectTemplate, defineProperty) {
const objectTemplate = getObjectTemplate()
defineProperty = defineProperty || {};

@@ -114,0 +113,0 @@

@@ -70,3 +70,3 @@ import { RemoteableClass, Semotus } from './Types';

function filterSyncStates(semotusClass: RemoteableClass, semotus: Semotus): boolean {
const {scope, state} = semotus.controller.syncState;
const {scope, state} = semotus.controller.syncState || {};
const syncStates: Array<string> = semotusClass.syncStates;

@@ -73,0 +73,0 @@

@@ -36,3 +36,3 @@ // These two mixins and extender functions are needed because in the browser we only include supertype and semotus

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -49,3 +49,3 @@

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -62,3 +62,3 @@

function class_1() {
return (_super !== null && Reflect.apply(_super, this, arguments)) || this;
return (_super !== null && Reflect.construct(_super, arguments, this.constructor)) || this;
}

@@ -65,0 +65,0 @@

@@ -5,7 +5,7 @@ {

"outDir": "../dist/esm",
"module": "esnext",
"module": "ES2020",
"plugins": [
{ "transform": "@haventech/supertype/transformers/appendJsExtension.ts", "after": true }
{ "transform": "../../../build/transformers/appendJsExtension.ts", "after": true }
]
}
}

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 not supported yet

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