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

@glimmer/runtime

Package Overview
Dependencies
Maintainers
10
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/runtime - npm Package Compare versions

Comparing version 0.24.0-beta.3 to 0.24.0-beta.4

7

dist/commonjs/es2017/lib/environment.js

@@ -240,3 +240,3 @@ 'use strict';

begin() {
(0, _util.assert)(!this._transaction, 'Cannot start a nested transaction');
(0, _util.assert)(!this._transaction, 'a glimmer transaction was begun, but one already exists. You may have a nested transaction');
this._transaction = new Transaction();

@@ -263,4 +263,5 @@ }

commit() {
this.transaction.commit();
let transaction = this.transaction;
this._transaction = null;
transaction.commit();
}

@@ -283,2 +284,2 @@ attributeFor(element, attr, isTrusting, namespace) {

exports.default = Environment;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6WyJTY29wZSIsImNvbnN0cnVjdG9yIiwic2xvdHMiLCJjYWxsZXJTY29wZSIsImV2YWxTY29wZSIsInBhcnRpYWxNYXAiLCJyb290Iiwic2VsZiIsInNpemUiLCJyZWZzIiwiQXJyYXkiLCJpIiwiaW5pdCIsInNpemVkIiwiZ2V0U2VsZiIsImdldCIsImdldFN5bWJvbCIsInN5bWJvbCIsImdldEJsb2NrIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0UGFydGlhbE1hcCIsImJpbmQiLCJ2YWx1ZSIsInNldCIsImJpbmRTZWxmIiwiYmluZFN5bWJvbCIsImJpbmRCbG9jayIsImJpbmRFdmFsU2NvcGUiLCJtYXAiLCJiaW5kUGFydGlhbE1hcCIsImJpbmRDYWxsZXJTY29wZSIsInNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJjaGlsZCIsInNsaWNlIiwiaW5kZXgiLCJsZW5ndGgiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMiLCJzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIiwic2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VycyIsInNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyIsImNyZWF0ZWRDb21wb25lbnRzIiwiY3JlYXRlZE1hbmFnZXJzIiwidXBkYXRlZENvbXBvbmVudHMiLCJ1cGRhdGVkTWFuYWdlcnMiLCJkZXN0cnVjdG9ycyIsImRpZENyZWF0ZSIsImNvbXBvbmVudCIsIm1hbmFnZXIiLCJwdXNoIiwiZGlkVXBkYXRlIiwic2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIiLCJtb2RpZmllciIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJkaWREZXN0cm95IiwiZCIsImNvbW1pdCIsImRlc3Ryb3kiLCJpbnN0YWxsIiwidXBkYXRlIiwiT3Bjb2RlIiwiYXJyYXkiLCJvZmZzZXQiLCJ0eXBlIiwib3AxIiwib3AyIiwib3AzIiwiUHJvZ3JhbSIsIm9wY29kZXMiLCJfb2Zmc2V0IiwiX29wY29kZSIsIm5leHQiLCJjdXJyZW50Iiwib3Bjb2RlIiwicG9zIiwiRW52aXJvbm1lbnQiLCJhcHBlbmRPcGVyYXRpb25zIiwidXBkYXRlT3BlcmF0aW9ucyIsIl9tYWNyb3MiLCJfdHJhbnNhY3Rpb24iLCJjb25zdGFudHMiLCJwcm9ncmFtIiwidG9Db25kaXRpb25hbFJlZmVyZW5jZSIsInJlZmVyZW5jZSIsImdldEFwcGVuZE9wZXJhdGlvbnMiLCJnZXRET00iLCJnZXRJZGVudGl0eSIsIm9iamVjdCIsImJlZ2luIiwidHJhbnNhY3Rpb24iLCJhdHRyaWJ1dGVGb3IiLCJlbGVtZW50IiwiYXR0ciIsImlzVHJ1c3RpbmciLCJuYW1lc3BhY2UiLCJ1bmRlZmluZWQiLCJtYWNyb3MiLCJwb3B1bGF0ZUJ1aWx0aW5zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ08sTUFBTUEsS0FBTixDQUFZO0FBQ2ZDO0FBQ0E7QUFDQUMsU0FGQSxFQUVPQyxXQUZQO0FBR0E7QUFDQUMsYUFKQTtBQUtBO0FBQ0FDLGNBTkEsRUFNWTtBQUNSLGFBQUtILEtBQUwsR0FBYUEsS0FBYjtBQUNBLGFBQUtDLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsYUFBS0MsU0FBTCxHQUFpQkEsU0FBakI7QUFDQSxhQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUNIO0FBQ0QsV0FBT0MsSUFBUCxDQUFZQyxJQUFaLEVBQWtCQyxPQUFPLENBQXpCLEVBQTRCO0FBQ3hCLFlBQUlDLE9BQU8sSUFBSUMsS0FBSixDQUFVRixPQUFPLENBQWpCLENBQVg7QUFDQSxhQUFLLElBQUlHLElBQUksQ0FBYixFQUFnQkEsS0FBS0gsSUFBckIsRUFBMkJHLEdBQTNCLEVBQWdDO0FBQzVCRixpQkFBS0UsQ0FBTDtBQUNIO0FBQ0QsZUFBTyxJQUFJWCxLQUFKLENBQVVTLElBQVYsRUFBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEIsSUFBNUIsRUFBa0NHLElBQWxDLENBQXVD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TUFBakI7QUFDQSxhQUFLdUIsWUFBTCxHQUFvQixJQUFwQjtBQUNIO0FBQ0RXLGlCQUFhQyxPQUFiLEVBQXNCQyxJQUF0QixFQUE0QkMsVUFBNUIsRUFBd0NDLFNBQXhDLEVBQW1EO0FBQy9DLGVBQU8sd0NBQWdCSCxPQUFoQixFQUF5QkMsSUFBekIsRUFBK0JDLFVBQS9CLEVBQTJDQyxjQUFjQyxTQUFkLEdBQTBCLElBQTFCLEdBQWlDRCxTQUE1RSxDQUFQO0FBQ0g7QUFDREUsYUFBUztBQUNMLFlBQUlBLFNBQVMsS0FBS2xCLE9BQWxCO0FBQ0EsWUFBSSxDQUFDa0IsTUFBTCxFQUFhO0FBQ1QsaUJBQUtsQixPQUFMLEdBQWVrQixTQUFTLEtBQUtDLGdCQUFMLEVBQXhCO0FBQ0g7QUFDRCxlQUFPRCxNQUFQO0FBQ0g7QUFDREMsdUJBQW1CO0FBQ2YsZUFBTyxrQ0FBUDtBQUNIO0FBM0RvQjtRQUFadEIsVyxHQUFBQSxXO2tCQTZERUEsVyIsImZpbGUiOiJsaWIvZW52aXJvbm1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3B1bGF0ZUJ1aWx0aW5zIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UsIENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IGRlZmF1bHRNYW5hZ2VycyB9IGZyb20gJy4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5pbXBvcnQgeyBhc3NlcnQsIGVuc3VyZUd1aWQsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvLyB0aGUgMHRoIHNsb3QgaXMgYHNlbGZgXG4gICAgc2xvdHMsIGNhbGxlclNjb3BlLFxuICAgIC8vIG5hbWVkIGFyZ3VtZW50cyBhbmQgYmxvY2tzIHBhc3NlZCB0byBhIGxheW91dCB0aGF0IHVzZXMgZXZhbFxuICAgIGV2YWxTY29wZSxcbiAgICAvLyBsb2NhbHMgaW4gc2NvcGUgd2hlbiB0aGUgcGFydGlhbCB3YXMgaW52b2tlZFxuICAgIHBhcnRpYWxNYXApIHtcbiAgICAgICAgdGhpcy5zbG90cyA9IHNsb3RzO1xuICAgICAgICB0aGlzLmNhbGxlclNjb3BlID0gY2FsbGVyU2NvcGU7XG4gICAgICAgIHRoaXMuZXZhbFNjb3BlID0gZXZhbFNjb3BlO1xuICAgICAgICB0aGlzLnBhcnRpYWxNYXAgPSBwYXJ0aWFsTWFwO1xuICAgIH1cbiAgICBzdGF0aWMgcm9vdChzZWxmLCBzaXplID0gMCkge1xuICAgICAgICBsZXQgcmVmcyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY29wZShyZWZzLCBudWxsLCBudWxsLCBudWxsKS5pbml0KHsgc2VsZiB9KTtcbiAgICB9XG4gICAgc3RhdGljIHNpemVkKHNpemUgPSAwKSB7XG4gICAgICAgIGxldCByZWZzID0gbmV3IEFycmF5KHNpemUgKyAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMsIG51bGwsIG51bGwsIG51bGwpO1xuICAgIH1cbiAgICBpbml0KHsgc2VsZiB9KSB7XG4gICAgICAgIHRoaXMuc2xvdHNbMF0gPSBzZWxmO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZ2V0U2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KDApO1xuICAgIH1cbiAgICBnZXRTeW1ib2woc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChzeW1ib2wpO1xuICAgIH1cbiAgICBnZXRCbG9jayhzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHN5bWJvbCk7XG4gICAgfVxuICAgIGdldEV2YWxTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbFNjb3BlO1xuICAgIH1cbiAgICBnZXRQYXJ0aWFsTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWFsTWFwO1xuICAgIH1cbiAgICBiaW5kKHN5bWJvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gICAgfVxuICAgIGJpbmRTZWxmKHNlbGYpIHtcbiAgICAgICAgdGhpcy5zZXQoMCwgc2VsZik7XG4gICAgfVxuICAgIGJpbmRTeW1ib2woc3ltYm9sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgICB9XG4gICAgYmluZEJsb2NrKHN5bWJvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gICAgfVxuICAgIGJpbmRFdmFsU2NvcGUobWFwKSB7XG4gICAgICAgIHRoaXMuZXZhbFNjb3BlID0gbWFwO1xuICAgIH1cbiAgICBiaW5kUGFydGlhbE1hcChtYXApIHtcbiAgICAgICAgdGhpcy5wYXJ0aWFsTWFwID0gbWFwO1xuICAgIH1cbiAgICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGUpIHtcbiAgICAgICAgdGhpcy5jYWxsZXJTY29wZSA9IHNjb3BlO1xuICAgIH1cbiAgICBnZXRDYWxsZXJTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbGVyU2NvcGU7XG4gICAgfVxuICAgIGNoaWxkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSwgdGhpcy5jYWxsZXJTY29wZSwgdGhpcy5ldmFsU2NvcGUsIHRoaXMucGFydGlhbE1hcCk7XG4gICAgfVxuICAgIGdldChpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzW2luZGV4XTtcbiAgICB9XG4gICAgc2V0KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2xvdHNbaW5kZXhdID0gdmFsdWU7XG4gICAgfVxufVxuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzID0gW107XG4gICAgICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZWRNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLmRlc3RydWN0b3JzID0gW107XG4gICAgfVxuICAgIGRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgfVxuICAgIGRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgfVxuICAgIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgfVxuICAgIGRpZERlc3Ryb3koZCkge1xuICAgICAgICB0aGlzLmRlc3RydWN0b3JzLnB1c2goZCk7XG4gICAgfVxuICAgIGNvbW1pdCgpIHtcbiAgICAgICAgbGV0IHsgY3JlYXRlZENvbXBvbmVudHMsIGNyZWF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjcmVhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudCA9IGNyZWF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSBjcmVhdGVkTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBtYW5hZ2VyLmRpZENyZWF0ZShjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHVwZGF0ZWRDb21wb25lbnRzLCB1cGRhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXBkYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSB1cGRhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gdXBkYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci5kaWRVcGRhdGUoY29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBkZXN0cnVjdG9ycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXN0cnVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZGVzdHJ1Y3RvcnNbaV0uZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycywgc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIuaW5zdGFsbChtb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycywgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vyc1tpXTtcbiAgICAgICAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIudXBkYXRlKG1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGFycmF5KSB7XG4gICAgICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgIH1cbiAgICBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXRdO1xuICAgIH1cbiAgICBnZXQgb3AxKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDFdO1xuICAgIH1cbiAgICBnZXQgb3AyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDJdO1xuICAgIH1cbiAgICBnZXQgb3AzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDNdO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQcm9ncmFtIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5vcGNvZGVzID0gW107XG4gICAgICAgIHRoaXMuX29mZnNldCA9IDA7XG4gICAgICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5vcGNvZGVzKTtcbiAgICB9XG4gICAgZ2V0IG5leHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XG4gICAgfVxuICAgIGdldCBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2Zmc2V0IC0gNDtcbiAgICB9XG4gICAgb3Bjb2RlKG9mZnNldCkge1xuICAgICAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICAgIH1cbiAgICBzZXQocG9zLCB0eXBlLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3NdID0gdHlwZTtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3BvcyArIDFdID0gb3AxO1xuICAgICAgICB0aGlzLm9wY29kZXNbcG9zICsgMl0gPSBvcDI7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAzXSA9IG9wMztcbiAgICB9XG4gICAgcHVzaCh0eXBlLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIGxldCBvZmZzZXQgPSB0aGlzLl9vZmZzZXQ7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSB0eXBlO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AxO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AyO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AzO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gICAgY29uc3RydWN0b3IoeyBhcHBlbmRPcGVyYXRpb25zLCB1cGRhdGVPcGVyYXRpb25zIH0pIHtcbiAgICAgICAgdGhpcy5fbWFjcm9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IG5ldyBDb25zdGFudHMoKTtcbiAgICAgICAgdGhpcy5wcm9ncmFtID0gbmV3IFByb2dyYW0oKTtcbiAgICAgICAgdGhpcy5hcHBlbmRPcGVyYXRpb25zID0gYXBwZW5kT3BlcmF0aW9ucztcbiAgICAgICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gdXBkYXRlT3BlcmF0aW9ucztcbiAgICB9XG4gICAgdG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICAgIH1cbiAgICBnZXRBcHBlbmRPcGVyYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRPcGVyYXRpb25zO1xuICAgIH1cbiAgICBnZXRET00oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7XG4gICAgfVxuICAgIGdldElkZW50aXR5KG9iamVjdCkge1xuICAgICAgICByZXR1cm4gZW5zdXJlR3VpZChvYmplY3QpICsgJyc7XG4gICAgfVxuICAgIGJlZ2luKCkge1xuICAgICAgICBhc3NlcnQoIXRoaXMuX3RyYW5zYWN0aW9uLCAnQ2Fubm90IHN0YXJ0IGEgbmVzdGVkIHRyYW5zYWN0aW9uJyk7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKCk7XG4gICAgfVxuICAgIGdldCB0cmFuc2FjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLl90cmFuc2FjdGlvbiwgJ211c3QgYmUgaW4gYSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBkaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxuICAgIGRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgfVxuICAgIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgZGlkRGVzdHJveShkKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkRGVzdHJveShkKTtcbiAgICB9XG4gICAgY29tbWl0KCkge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmNvbW1pdCgpO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG51bGw7XG4gICAgfVxuICAgIGF0dHJpYnV0ZUZvcihlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICBtYWNyb3MoKSB7XG4gICAgICAgIGxldCBtYWNyb3MgPSB0aGlzLl9tYWNyb3M7XG4gICAgICAgIGlmICghbWFjcm9zKSB7XG4gICAgICAgICAgICB0aGlzLl9tYWNyb3MgPSBtYWNyb3MgPSB0aGlzLnBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFjcm9zO1xuICAgIH1cbiAgICBwb3B1bGF0ZUJ1aWx0aW5zKCkge1xuICAgICAgICByZXR1cm4gcG9wdWxhdGVCdWlsdGlucygpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50OyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6WyJTY29wZSIsImNvbnN0cnVjdG9yIiwic2xvdHMiLCJjYWxsZXJTY29wZSIsImV2YWxTY29wZSIsInBhcnRpYWxNYXAiLCJyb290Iiwic2VsZiIsInNpemUiLCJyZWZzIiwiQXJyYXkiLCJpIiwiaW5pdCIsInNpemVkIiwiZ2V0U2VsZiIsImdldCIsImdldFN5bWJvbCIsInN5bWJvbCIsImdldEJsb2NrIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0UGFydGlhbE1hcCIsImJpbmQiLCJ2YWx1ZSIsInNldCIsImJpbmRTZWxmIiwiYmluZFN5bWJvbCIsImJpbmRCbG9jayIsImJpbmRFdmFsU2NvcGUiLCJtYXAiLCJiaW5kUGFydGlhbE1hcCIsImJpbmRDYWxsZXJTY29wZSIsInNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJjaGlsZCIsInNsaWNlIiwiaW5kZXgiLCJsZW5ndGgiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMiLCJzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIiwic2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VycyIsInNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyIsImNyZWF0ZWRDb21wb25lbnRzIiwiY3JlYXRlZE1hbmFnZXJzIiwidXBkYXRlZENvbXBvbmVudHMiLCJ1cGRhdGVkTWFuYWdlcnMiLCJkZXN0cnVjdG9ycyIsImRpZENyZWF0ZSIsImNvbXBvbmVudCIsIm1hbmFnZXIiLCJwdXNoIiwiZGlkVXBkYXRlIiwic2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIiLCJtb2RpZmllciIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJkaWREZXN0cm95IiwiZCIsImNvbW1pdCIsImRlc3Ryb3kiLCJpbnN0YWxsIiwidXBkYXRlIiwiT3Bjb2RlIiwiYXJyYXkiLCJvZmZzZXQiLCJ0eXBlIiwib3AxIiwib3AyIiwib3AzIiwiUHJvZ3JhbSIsIm9wY29kZXMiLCJfb2Zmc2V0IiwiX29wY29kZSIsIm5leHQiLCJjdXJyZW50Iiwib3Bjb2RlIiwicG9zIiwiRW52aXJvbm1lbnQiLCJhcHBlbmRPcGVyYXRpb25zIiwidXBkYXRlT3BlcmF0aW9ucyIsIl9tYWNyb3MiLCJfdHJhbnNhY3Rpb24iLCJjb25zdGFudHMiLCJwcm9ncmFtIiwidG9Db25kaXRpb25hbFJlZmVyZW5jZSIsInJlZmVyZW5jZSIsImdldEFwcGVuZE9wZXJhdGlvbnMiLCJnZXRET00iLCJnZXRJZGVudGl0eSIsIm9iamVjdCIsImJlZ2luIiwidHJhbnNhY3Rpb24iLCJhdHRyaWJ1dGVGb3IiLCJlbGVtZW50IiwiYXR0ciIsImlzVHJ1c3RpbmciLCJuYW1lc3BhY2UiLCJ1bmRlZmluZWQiLCJtYWNyb3MiLCJwb3B1bGF0ZUJ1aWx0aW5zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ08sTUFBTUEsS0FBTixDQUFZO0FBQ2ZDO0FBQ0E7QUFDQUMsU0FGQSxFQUVPQyxXQUZQO0FBR0E7QUFDQUMsYUFKQTtBQUtBO0FBQ0FDLGNBTkEsRUFNWTtBQUNSLGFBQUtILEtBQUwsR0FBYUEsS0FBYjtBQUNBLGFBQUtDLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsYUFBS0MsU0FBTCxHQUFpQkEsU0FBakI7QUFDQSxhQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUNIO0FBQ0QsV0FBT0MsSUFBUCxDQUFZQyxJQUFaLEVBQWtCQyxPQUFPLENBQXpCLEVBQTRCO0FBQ3hCLFlBQUlDLE9BQU8sSUFBSUMsS0FBSixDQUFVRixPQUFPLENBQWpCLENBQVg7QUFDQSxhQUFLLElBQUlHLElBQUksQ0FBYixFQUFnQkEsS0FBS0gsSUFBckIsRUFBMkJHLEdBQTNCLEVBQWdDO0FBQzVCRixpQkFBS0UsQ0FBTDtBQUNIO0FBQ0QsZUFBTyxJQUFJWCxLQUFKLENBQVVTLElBQVYsRUFBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEIsSUFBNUIsRUFBa0NHLElBQWxDLENBQXVD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QXZCO0FBQ0EsYUFBS1YsWUFBTCxHQUFvQixJQUFwQjtBQUNBVSxvQkFBWWpDLE1BQVo7QUFDSDtBQUNEa0MsaUJBQWFDLE9BQWIsRUFBc0JDLElBQXRCLEVBQTRCQyxVQUE1QixFQUF3Q0MsU0FBeEMsRUFBbUQ7QUFDL0MsZUFBTyx3Q0FBZ0JILE9BQWhCLEVBQXlCQyxJQUF6QixFQUErQkMsVUFBL0IsRUFBMkNDLGNBQWNDLFNBQWQsR0FBMEIsSUFBMUIsR0FBaUNELFNBQTVFLENBQVA7QUFDSDtBQUNERSxhQUFTO0FBQ0wsWUFBSUEsU0FBUyxLQUFLbEIsT0FBbEI7QUFDQSxZQUFJLENBQUNrQixNQUFMLEVBQWE7QUFDVCxpQkFBS2xCLE9BQUwsR0FBZWtCLFNBQVMsS0FBS0MsZ0JBQUwsRUFBeEI7QUFDSDtBQUNELGVBQU9ELE1BQVA7QUFDSDtBQUNEQyx1QkFBbUI7QUFDZixlQUFPLGtDQUFQO0FBQ0g7QUE1RG9CO1FBQVp0QixXLEdBQUFBLFc7a0JBOERFQSxXIiwiZmlsZSI6ImxpYi9lbnZpcm9ubWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvcHVsYXRlQnVpbHRpbnMgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgZGVmYXVsdE1hbmFnZXJzIH0gZnJvbSAnLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcbmltcG9ydCB7IGFzc2VydCwgZW5zdXJlR3VpZCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5leHBvcnQgY2xhc3MgU2NvcGUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRoZSAwdGggc2xvdCBpcyBgc2VsZmBcbiAgICBzbG90cywgY2FsbGVyU2NvcGUsXG4gICAgLy8gbmFtZWQgYXJndW1lbnRzIGFuZCBibG9ja3MgcGFzc2VkIHRvIGEgbGF5b3V0IHRoYXQgdXNlcyBldmFsXG4gICAgZXZhbFNjb3BlLFxuICAgIC8vIGxvY2FscyBpbiBzY29wZSB3aGVuIHRoZSBwYXJ0aWFsIHdhcyBpbnZva2VkXG4gICAgcGFydGlhbE1hcCkge1xuICAgICAgICB0aGlzLnNsb3RzID0gc2xvdHM7XG4gICAgICAgIHRoaXMuY2FsbGVyU2NvcGUgPSBjYWxsZXJTY29wZTtcbiAgICAgICAgdGhpcy5ldmFsU2NvcGUgPSBldmFsU2NvcGU7XG4gICAgICAgIHRoaXMucGFydGlhbE1hcCA9IHBhcnRpYWxNYXA7XG4gICAgfVxuICAgIHN0YXRpYyByb290KHNlbGYsIHNpemUgPSAwKSB7XG4gICAgICAgIGxldCByZWZzID0gbmV3IEFycmF5KHNpemUgKyAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMsIG51bGwsIG51bGwsIG51bGwpLmluaXQoeyBzZWxmIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgc2l6ZWQoc2l6ZSA9IDApIHtcbiAgICAgICAgbGV0IHJlZnMgPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHJlZnNbaV0gPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU2NvcGUocmVmcywgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIGluaXQoeyBzZWxmIH0pIHtcbiAgICAgICAgdGhpcy5zbG90c1swXSA9IHNlbGY7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBnZXRTZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCk7XG4gICAgfVxuICAgIGdldFN5bWJvbChzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHN5bWJvbCk7XG4gICAgfVxuICAgIGdldEJsb2NrKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoc3ltYm9sKTtcbiAgICB9XG4gICAgZ2V0RXZhbFNjb3BlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmFsU2NvcGU7XG4gICAgfVxuICAgIGdldFBhcnRpYWxNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWxNYXA7XG4gICAgfVxuICAgIGJpbmQoc3ltYm9sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgICB9XG4gICAgYmluZFNlbGYoc2VsZikge1xuICAgICAgICB0aGlzLnNldCgwLCBzZWxmKTtcbiAgICB9XG4gICAgYmluZFN5bWJvbChzeW1ib2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0KHN5bWJvbCwgdmFsdWUpO1xuICAgIH1cbiAgICBiaW5kQmxvY2soc3ltYm9sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgICB9XG4gICAgYmluZEV2YWxTY29wZShtYXApIHtcbiAgICAgICAgdGhpcy5ldmFsU2NvcGUgPSBtYXA7XG4gICAgfVxuICAgIGJpbmRQYXJ0aWFsTWFwKG1hcCkge1xuICAgICAgICB0aGlzLnBhcnRpYWxNYXAgPSBtYXA7XG4gICAgfVxuICAgIGJpbmRDYWxsZXJTY29wZShzY29wZSkge1xuICAgICAgICB0aGlzLmNhbGxlclNjb3BlID0gc2NvcGU7XG4gICAgfVxuICAgIGdldENhbGxlclNjb3BlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsZXJTY29wZTtcbiAgICB9XG4gICAgY2hpbGQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2NvcGUodGhpcy5zbG90cy5zbGljZSgpLCB0aGlzLmNhbGxlclNjb3BlLCB0aGlzLmV2YWxTY29wZSwgdGhpcy5wYXJ0aWFsTWFwKTtcbiAgICB9XG4gICAgZ2V0KGluZGV4KSB7XG4gICAgICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHNbaW5kZXhdO1xuICAgIH1cbiAgICBzZXQoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zbG90c1tpbmRleF0gPSB2YWx1ZTtcbiAgICB9XG59XG5jbGFzcyBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyA9IFtdO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cyA9IFtdO1xuICAgICAgICB0aGlzLmNyZWF0ZWRNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMuZGVzdHJ1Y3RvcnMgPSBbXTtcbiAgICB9XG4gICAgZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLmNyZWF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB9XG4gICAgZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH1cbiAgICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9XG4gICAgZGlkRGVzdHJveShkKSB7XG4gICAgICAgIHRoaXMuZGVzdHJ1Y3RvcnMucHVzaChkKTtcbiAgICB9XG4gICAgY29tbWl0KCkge1xuICAgICAgICBsZXQgeyBjcmVhdGVkQ29tcG9uZW50cywgY3JlYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNyZWF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gY3JlYXRlZENvbXBvbmVudHNbaV07XG4gICAgICAgICAgICBsZXQgbWFuYWdlciA9IGNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgdXBkYXRlZENvbXBvbmVudHMsIHVwZGF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cGRhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudCA9IHVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSB1cGRhdGVkTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZShjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IGRlc3RydWN0b3JzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc3RydWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkZXN0cnVjdG9yc1tpXS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLCBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci5pbnN0YWxsKG1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci51cGRhdGUobW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICAgICAgdGhpcy5hcnJheSA9IGFycmF5O1xuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgfVxuICAgIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldF07XG4gICAgfVxuICAgIGdldCBvcDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMV07XG4gICAgfVxuICAgIGdldCBvcDIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMl07XG4gICAgfVxuICAgIGdldCBvcDMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgM107XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFByb2dyYW0ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgICAgICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLm9wY29kZXMpO1xuICAgIH1cbiAgICBnZXQgbmV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29mZnNldDtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQgLSA0O1xuICAgIH1cbiAgICBvcGNvZGUob2Zmc2V0KSB7XG4gICAgICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gICAgfVxuICAgIHNldChwb3MsIHR5cGUsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3Bvc10gPSB0eXBlO1xuICAgICAgICB0aGlzLm9wY29kZXNbcG9zICsgMV0gPSBvcDE7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAyXSA9IG9wMjtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3BvcyArIDNdID0gb3AzO1xuICAgIH1cbiAgICBwdXNoKHR5cGUsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICAgICAgbGV0IG9mZnNldCA9IHRoaXMuX29mZnNldDtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IHR5cGU7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDE7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDI7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDM7XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgICBjb25zdHJ1Y3Rvcih7IGFwcGVuZE9wZXJhdGlvbnMsIHVwZGF0ZU9wZXJhdGlvbnMgfSkge1xuICAgICAgICB0aGlzLl9tYWNyb3MgPSBudWxsO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gbmV3IENvbnN0YW50cygpO1xuICAgICAgICB0aGlzLnByb2dyYW0gPSBuZXcgUHJvZ3JhbSgpO1xuICAgICAgICB0aGlzLmFwcGVuZE9wZXJhdGlvbnMgPSBhcHBlbmRPcGVyYXRpb25zO1xuICAgICAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSB1cGRhdGVPcGVyYXRpb25zO1xuICAgIH1cbiAgICB0b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gICAgfVxuICAgIGdldEFwcGVuZE9wZXJhdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGVuZE9wZXJhdGlvbnM7XG4gICAgfVxuICAgIGdldERPTSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlT3BlcmF0aW9ucztcbiAgICB9XG4gICAgZ2V0SWRlbnRpdHkob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBlbnN1cmVHdWlkKG9iamVjdCkgKyAnJztcbiAgICB9XG4gICAgYmVnaW4oKSB7XG4gICAgICAgIGFzc2VydCghdGhpcy5fdHJhbnNhY3Rpb24sICdhIGdsaW1tZXIgdHJhbnNhY3Rpb24gd2FzIGJlZ3VuLCBidXQgb25lIGFscmVhZHkgZXhpc3RzLiBZb3UgbWF5IGhhdmUgYSBuZXN0ZWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgICB9XG4gICAgZ2V0IHRyYW5zYWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuX3RyYW5zYWN0aW9uLCAnbXVzdCBiZSBpbiBhIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbiAgICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIH1cbiAgICBkaWREZXN0cm95KGQpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5kaWREZXN0cm95KGQpO1xuICAgIH1cbiAgICBjb21taXQoKSB7XG4gICAgICAgIGxldCB0cmFuc2FjdGlvbiA9IHRoaXMudHJhbnNhY3Rpb247XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbnVsbDtcbiAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7XG4gICAgfVxuICAgIGF0dHJpYnV0ZUZvcihlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICBtYWNyb3MoKSB7XG4gICAgICAgIGxldCBtYWNyb3MgPSB0aGlzLl9tYWNyb3M7XG4gICAgICAgIGlmICghbWFjcm9zKSB7XG4gICAgICAgICAgICB0aGlzLl9tYWNyb3MgPSBtYWNyb3MgPSB0aGlzLnBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFjcm9zO1xuICAgIH1cbiAgICBwb3B1bGF0ZUJ1aWx0aW5zKCkge1xuICAgICAgICByZXR1cm4gcG9wdWxhdGVCdWlsdGlucygpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50OyJdfQ==

@@ -67,2 +67,4 @@ 'use strict';

addFallback(statement, newStatements);
} else {
newStatements.push(statement);
}

@@ -113,2 +115,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIldpcmVGb3JtYXQiLCJDbGllbnRTaWRlIiwiT3BzIiwiU2Nhbm5lciIsImNvbnN0cnVjdG9yIiwiYmxvY2siLCJlbnYiLCJzY2FuRW50cnlQb2ludCIsIm1ldGEiLCJzdGF0ZW1lbnRzIiwic3ltYm9scyIsImhhc0V2YWwiLCJzY2FuQmxvY2siLCJwYXJhbWV0ZXJzIiwic2NhbkxheW91dCIsImF0dHJzIiwiY29tcG9uZW50TmFtZSIsInN5bWJvbFRhYmxlIiwibmV3U3RhdGVtZW50cyIsInRvcGxldmVsIiwiaW5Ub3BMZXZlbCIsImkiLCJsZW5ndGgiLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnRzIiwiaXNDb21wb25lbnQiLCJ0YWdOYW1lIiwiaGFzQ29tcG9uZW50RGVmaW5pdGlvbiIsInRlbXBsYXRlTWV0YSIsInVuZGVmaW5lZCIsInB1c2giLCJPcGVuRWxlbWVudCIsImRlY29yYXRlVG9wTGV2ZWxFbGVtZW50IiwiYWRkRmFsbGJhY2siLCJpc09wZW5FbGVtZW50IiwiaXNGbHVzaEVsZW1lbnQiLCJpc01vZGlmaWVyIiwiRXJyb3IiLCJDbGllbnRTaWRlU3RhdGVtZW50IiwiRGlkUmVuZGVyTGF5b3V0IiwiYnVmZmVyIiwiRmx1c2hFbGVtZW50IiwiQ2xvc2VFbGVtZW50IiwiYXR0cnNTeW1ib2wiLCJPcGVuQ29tcG9uZW50RWxlbWVudCIsIkRpZENyZWF0ZUVsZW1lbnQiLCJZaWVsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0lBQVlBLFU7O0FBQ1o7O0lBQVlDLFU7O0FBQ1o7Ozs7QUFDQTs7Ozs7O0FBQ0EsSUFBSUMsTUFBTUYsV0FBV0UsR0FBckI7QUFDZSxNQUFNQyxPQUFOLENBQWM7QUFDekJDLGdCQUFZQyxLQUFaLEVBQW1CQyxHQUFuQixFQUF3QjtBQUNwQixhQUFLRCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDSDtBQUNEQyxtQkFBZUMs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QUFMLEVBQTBCckMsV0FBV0MsR0FBWCxDQUFlMkMsZ0JBQXpDLENBQVo7QUFDQUwsV0FBT1YsSUFBUCxDQUFZLENBQUM1QixJQUFJNEMsS0FBTCxFQUFZSCxXQUFaLG9CQUFaO0FBQ0FILFdBQU9WLElBQVAsQ0FBWSxHQUFHZixLQUFmO0FBQ0giLCJmaWxlIjoibGliL3NjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgKiBhcyBDbGllbnRTaWRlIGZyb20gJy4vc3ludGF4L2NsaWVudC1zaWRlJztcbmltcG9ydCBDb21waWxhYmxlVGVtcGxhdGUgZnJvbSAnLi9zeW50YXgvY29tcGlsYWJsZS10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBBVFRSU19CTE9DSyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG52YXIgT3BzID0gV2lyZUZvcm1hdC5PcHM7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgICBjb25zdHJ1Y3RvcihibG9jaywgZW52KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgfVxuICAgIHNjYW5FbnRyeVBvaW50KG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IG1ldGEsIHN5bWJvbHMsIGhhc0V2YWwgfSk7XG4gICAgfVxuICAgIHNjYW5CbG9jayhtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBibG9jaztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBtZXRhLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9KTtcbiAgICB9XG4gICAgc2NhbkxheW91dChtZXRhLCBhdHRycywgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgICAgICBsZXQgbmV3U3RhdGVtZW50cyA9IFtdO1xuICAgICAgICBsZXQgdG9wbGV2ZWw7XG4gICAgICAgIGxldCBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHN0YXRlbWVudCA9IHN0YXRlbWVudHNbaV07XG4gICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzQ29tcG9uZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFnTmFtZSA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW52Lmhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZSwgbWV0YS50ZW1wbGF0ZU1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnTmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgdGFnTmFtZSA9PT0gY29tcG9uZW50TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmFsbGJhY2soc3RhdGVtZW50LCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzT3BlbkVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICAgICAgaW5Ub3BMZXZlbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRvcGxldmVsLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluVG9wTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBGb3VuZCBtb2RpZmllciBcIiR7c3RhdGVtZW50WzFdfVwiIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudCBvZiBcIiR7Y29tcG9uZW50TmFtZX1cIlxcLiBNb2RpZmllcnMgY2Fubm90IGJlIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUobmV3U3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgYnVmZmVyKSB7XG4gICAgbGV0IFssLCBhdHRycywsIGJsb2NrXSA9IHN0YXRlbWVudDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKGF0dHJzW2ldKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cyB9ID0gYmxvY2s7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbn1cbmZ1bmN0aW9uIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBidWZmZXIpIHtcbiAgICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ05hbWVdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldKTtcbiAgICBidWZmZXIucHVzaCguLi5hdHRycyk7XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIldpcmVGb3JtYXQiLCJDbGllbnRTaWRlIiwiT3BzIiwiU2Nhbm5lciIsImNvbnN0cnVjdG9yIiwiYmxvY2siLCJlbnYiLCJzY2FuRW50cnlQb2ludCIsIm1ldGEiLCJzdGF0ZW1lbnRzIiwic3ltYm9scyIsImhhc0V2YWwiLCJzY2FuQmxvY2siLCJwYXJhbWV0ZXJzIiwic2NhbkxheW91dCIsImF0dHJzIiwiY29tcG9uZW50TmFtZSIsInN5bWJvbFRhYmxlIiwibmV3U3RhdGVtZW50cyIsInRvcGxldmVsIiwiaW5Ub3BMZXZlbCIsImkiLCJsZW5ndGgiLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnRzIiwiaXNDb21wb25lbnQiLCJ0YWdOYW1lIiwiaGFzQ29tcG9uZW50RGVmaW5pdGlvbiIsInRlbXBsYXRlTWV0YSIsInVuZGVmaW5lZCIsInB1c2giLCJPcGVuRWxlbWVudCIsImRlY29yYXRlVG9wTGV2ZWxFbGVtZW50IiwiYWRkRmFsbGJhY2siLCJpc09wZW5FbGVtZW50IiwiaXNGbHVzaEVsZW1lbnQiLCJpc01vZGlmaWVyIiwiRXJyb3IiLCJDbGllbnRTaWRlU3RhdGVtZW50IiwiRGlkUmVuZGVyTGF5b3V0IiwiYnVmZmVyIiwiRmx1c2hFbGVtZW50IiwiQ2xvc2VFbGVtZW50IiwiYXR0cnNTeW1ib2wiLCJPcGVuQ29tcG9uZW50RWxlbWVudCIsIkRpZENyZWF0ZUVsZW1lbnQiLCJZaWVsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0lBQVlBLFU7O0FBQ1o7O0lBQVlDLFU7O0FBQ1o7Ozs7QUFDQTs7Ozs7O0FBQ0EsSUFBSUMsTUFBTUYsV0FBV0UsR0FBckI7QUFDZSxNQUFNQyxPQUFOLENBQWM7QUFDekJDLGdCQUFZQyxLQUFaLEVBQW1CQyxHQUFuQixFQUF3QjtBQUNwQixhQUFLRCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDSDtBQUNEQyxtQkFBZUMs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QS9ELENBQVo7QUFDQWMsV0FBT1YsSUFBUCxDQUFZLENBQUM1QixJQUFJb0MsbUJBQUwsRUFBMEJyQyxXQUFXQyxHQUFYLENBQWUyQyxnQkFBekMsQ0FBWjtBQUNBTCxXQUFPVixJQUFQLENBQVksQ0FBQzVCLElBQUk0QyxLQUFMLEVBQVlILFdBQVosb0JBQVo7QUFDQUgsV0FBT1YsSUFBUCxDQUFZLEdBQUdmLEtBQWY7QUFDSCIsImZpbGUiOiJsaWIvc2Nhbm5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCAqIGFzIENsaWVudFNpZGUgZnJvbSAnLi9zeW50YXgvY2xpZW50LXNpZGUnO1xuaW1wb3J0IENvbXBpbGFibGVUZW1wbGF0ZSBmcm9tICcuL3N5bnRheC9jb21waWxhYmxlLXRlbXBsYXRlJztcbmltcG9ydCB7IEFUVFJTX0JMT0NLIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbnZhciBPcHMgPSBXaXJlRm9ybWF0Lk9wcztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYW5uZXIge1xuICAgIGNvbnN0cnVjdG9yKGJsb2NrLCBlbnYpIHtcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2NrO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICB9XG4gICAgc2NhbkVudHJ5UG9pbnQobWV0YSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgbWV0YSwgc3ltYm9scywgaGFzRXZhbCB9KTtcbiAgICB9XG4gICAgc2NhbkJsb2NrKG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMgfSA9IGJsb2NrO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IG1ldGEsIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0pO1xuICAgIH1cbiAgICBzY2FuTGF5b3V0KG1ldGEsIGF0dHJzLCBjb21wb25lbnROYW1lKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzLCBzeW1ib2xzLCBoYXNFdmFsIH0gPSBibG9jaztcbiAgICAgICAgbGV0IHN5bWJvbFRhYmxlID0geyBtZXRhLCBoYXNFdmFsLCBzeW1ib2xzIH07XG4gICAgICAgIGxldCBuZXdTdGF0ZW1lbnRzID0gW107XG4gICAgICAgIGxldCB0b3BsZXZlbDtcbiAgICAgICAgbGV0IGluVG9wTGV2ZWwgPSBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgc3RhdGVtZW50ID0gc3RhdGVtZW50c1tpXTtcbiAgICAgICAgICAgIGlmIChXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNDb21wb25lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGxldCB0YWdOYW1lID0gc3RhdGVtZW50WzFdO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbnYuaGFzQ29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lLCBtZXRhLnRlbXBsYXRlTWV0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChbT3BzLk9wZW5FbGVtZW50LCB0YWdOYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHRhZ05hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWRkRmFsbGJhY2soc3RhdGVtZW50LCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9wbGV2ZWwgPT09IHVuZGVmaW5lZCAmJiB0YWdOYW1lID09PSBjb21wb25lbnROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHRhZ05hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCA9PT0gdW5kZWZpbmVkICYmIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc09wZW5FbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSBzdGF0ZW1lbnRbMV07XG4gICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0b3BsZXZlbCwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpblRvcExldmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgRm91bmQgbW9kaWZpZXIgXCIke3N0YXRlbWVudFsxXX1cIiBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnQgb2YgXCIke2NvbXBvbmVudE5hbWV9XCJcXC4gTW9kaWZpZXJzIGNhbm5vdCBiZSBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKG5ld1N0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIGJ1ZmZlcikge1xuICAgIGxldCBbLCwgYXR0cnMsLCBibG9ja10gPSBzdGF0ZW1lbnQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBidWZmZXIucHVzaChhdHRyc1tpXSk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMgfSA9IGJsb2NrO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKHN0YXRlbWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG59XG5mdW5jdGlvbiBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgYnVmZmVyKSB7XG4gICAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCB0YWdOYW1lXSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5ZaWVsZCwgYXR0cnNTeW1ib2wsIEVNUFRZX0FSUkFZXSk7XG4gICAgYnVmZmVyLnB1c2goLi4uYXR0cnMpO1xufSJdfQ==

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

Environment.prototype.begin = function begin() {
(0, _util.assert)(!this._transaction, 'Cannot start a nested transaction');
(0, _util.assert)(!this._transaction, 'a glimmer transaction was begun, but one already exists. You may have a nested transaction');
this._transaction = new Transaction();

@@ -374,4 +374,5 @@ };

Environment.prototype.commit = function commit() {
this.transaction.commit();
var transaction = this.transaction;
this._transaction = null;
transaction.commit();
};

@@ -405,2 +406,2 @@

exports.default = Environment;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6WyJwb3B1bGF0ZUJ1aWx0aW5zIiwiQ29uc3RhbnRzIiwiVU5ERUZJTkVEX1JFRkVSRU5DRSIsIkNvbmRpdGlvbmFsUmVmZXJlbmNlIiwiZGVmYXVsdE1hbmFnZXJzIiwiYXNzZXJ0IiwiZW5zdXJlR3VpZCIsIlNjb3BlIiwic2xvdHMiLCJjYWxsZXJTY29wZSIsImV2YWxTY29wZSIsInBhcnRpYWxNYXAiLCJyb290Iiwic2VsZiIsInNpemUiLCJyZWZzIiwiQXJyYXkiLCJpIiwiaW5pdCIsInNpemVkIiwiZ2V0U2VsZiIsImdldCIsImdldFN5bWJvbCIsInN5bWJvbCIsImdldEJsb2NrIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0UGFydGlhbE1hcCIsImJpbmQiLCJ2YWx1ZSIsInNldCIsImJpbmRTZWxmIiwiYmluZFN5bWJvbCIsImJpbmRCbG9jayIsImJpbmRFdmFsU2NvcGUiLCJtYXAiLCJiaW5kUGFydGlhbE1hcCIsImJpbmRDYWxsZXJTY29wZSIsInNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJjaGlsZCIsInNsaWNlIiwiaW5kZXgiLCJsZW5ndGgiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMiLCJzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIiwic2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VycyIsInNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyIsImNyZWF0ZWRDb21wb25lbnRzIiwiY3JlYXRlZE1hbmFnZXJzIiwidXBkYXRlZENvbXBvbmVudHMiLCJ1cGRhdGVkTWFuYWdlcnMiLCJkZXN0cnVjdG9ycyIsImRpZENyZWF0ZSIsImNvbXBvbmVudCIsIm1hbmFnZXIiLCJwdXNoIiwiZGlkVXBkYXRlIiwic2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIiLCJtb2RpZmllciIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJkaWREZXN0cm95IiwiZCIsImNvbW1pdCIsImRlc3Ryb3kiLCJpbnN0YWxsIiwidXBkYXRlIiwiT3Bjb2RlIiwiYXJyYXkiLCJvZmZzZXQiLCJQcm9ncmFtIiwib3Bjb2RlcyIsIl9vZmZzZXQiLCJfb3Bjb2RlIiwib3Bjb2RlIiwicG9zIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIkVudmlyb25tZW50IiwiYXBwZW5kT3BlcmF0aW9ucyIsInVwZGF0ZU9wZXJhdGlvbnMiLCJfbWFjcm9zIiwiX3RyYW5zYWN0aW9uIiwiY29uc3RhbnRzIiwicHJvZ3JhbSIsInRvQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJnZXRBcHBlbmRPcGVyYXRpb25zIiwiZ2V0RE9NIiwiZ2V0SWRlbnRpdHkiLCJvYmplY3QiLCJiZWdpbiIsInRyYW5zYWN0aW9uIiwiYXR0cmlidXRlRm9yIiwiZWxlbWVudCIsImF0dHIiLCJpc1RydXN0aW5nIiwibmFtZXNwYWNlIiwidW5kZWZpbmVkIiwibWFjcm9zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUF3Qjs7QUFDakMsQUFBUyxBQUFpQjs7QUFDMUIsQUFBUyxBQUFxQixBQUE0Qjs7QUFDMUQsQUFBUyxBQUF1Qjs7QUFDaEMsQUFBUyxBQUFRLEFBQTBCLEFBQzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxBQUFhLG9DQUNUO2FBQ0E7QUFDQTtBQUZBLFdBQUEsQUFFTyxBQUNQO0FBQ0E7QUFKQSxBQUtBO0FBQ0E7QUFOQSxnQkFNWTs4QkFDUjs7YUFBQSxBQUFLLFFBQUwsQUFBYSxBQUNiO2FBQUEsQUFBSyxjQUFMLEFBQW1CLEFBQ25CO2FBQUEsQUFBSyxZQUFMLEFBQWlCLEFBQ2pCO2FBQUEsQUFBSyxhQUFMLEFBQWtCLEFBQ3JCO0FBWkw7O1VBQUEsQUFhVyxxQkFiWCxBQWFnQixNQUFnQjtZQUFWLEFBQVUsMkVBQUgsQUFBRyxBQUN4Qjs7WUFBSSxPQUFPLElBQUEsQUFBSSxNQUFNLE9BQXJCLEFBQVcsQUFBaUIsQUFDNUI7YUFBSyxJQUFJLElBQVQsQUFBYSxHQUFHLEtB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LEFBQUssWUFBTCxBQUFpQix3QkFBakIsQUFBeUMsVUFBekMsQUFBbUQsQUFDdEQ7QUFwQ0w7OzBCQUFBLEFBcUNJLHlEQXJDSixBQXFDMkIsVUFyQzNCLEFBcUNxQyxTQUFTLEFBQ3RDO2FBQUEsQUFBSyxZQUFMLEFBQWlCLHVCQUFqQixBQUF3QyxVQUF4QyxBQUFrRCxBQUNyRDtBQXZDTDs7MEJBQUEsQUF3Q0ksaUNBeENKLEFBd0NlLEdBQUcsQUFDVjthQUFBLEFBQUssWUFBTCxBQUFpQixXQUFqQixBQUE0QixBQUMvQjtBQTFDTDs7MEJBQUEsQUEyQ0ksMkJBQVMsQUFDTDthQUFBLEFBQUssWUFBTCxBQUFpQixBQUNqQjthQUFBLEFBQUssZUFBTCxBQUFvQixBQUN2QjtBQTlDTDs7MEJBQUEsQUErQ0kscUNBL0NKLEFBK0NpQixTQS9DakIsQUErQzBCLE1BL0MxQixBQStDZ0MsWUEvQ2hDLEFBK0M0QyxXQUFXLEFBQy9DO2VBQU8sd0NBQUEsQUFBZ0IsU0FBaEIsQUFBeUIsTUFBekIsQUFBK0IsWUFBWSxjQUFBLEFBQWMsWUFBZCxBQUEwQixPQUE1RSxBQUFPLEFBQTRFLEFBQ3RGO0FBakRMOzswQkFBQSxBQWtESSwyQkFBUyxBQUNMO1lBQUksU0FBUyxLQUFiLEFBQWtCLEFBQ2xCO1lBQUksQ0FBSixBQUFLLFFBQVEsQUFDVDtpQkFBQSxBQUFLLFVBQVUsU0FBUyxLQUF4QixBQUF3QixBQUFLLEFBQ2hDO0FBQ0Q7ZUFBQSxBQUFPLEFBQ1Y7QUF4REw7OzBCQUFBLEFBeURJLCtDQUFtQixBQUNmO2VBQUEsQUFBTyxBQUNWO0FBM0RMOzs7YUFBQTt5QkF5QnNCLEFBQ2Q7bUJBQWMsS0FBZCxBQUFtQixBQUN0QjtBQTNCTDtBQUFBOztXQUFBO0FBNkRBO2tCQUFBLEFBQWUiLCJmaWxlIjoibGliL2Vudmlyb25tZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9wdWxhdGVCdWlsdGlucyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBkZWZhdWx0TWFuYWdlcnMgfSBmcm9tICcuL2RvbS9hdHRyaWJ1dGUtbWFuYWdlcnMnO1xuaW1wb3J0IHsgYXNzZXJ0LCBlbnN1cmVHdWlkLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgLy8gdGhlIDB0aCBzbG90IGlzIGBzZWxmYFxuICAgIHNsb3RzLCBjYWxsZXJTY29wZSxcbiAgICAvLyBuYW1lZCBhcmd1bWVudHMgYW5kIGJsb2NrcyBwYXNzZWQgdG8gYSBsYXlvdXQgdGhhdCB1c2VzIGV2YWxcbiAgICBldmFsU2NvcGUsXG4gICAgLy8gbG9jYWxzIGluIHNjb3BlIHdoZW4gdGhlIHBhcnRpYWwgd2FzIGludm9rZWRcbiAgICBwYXJ0aWFsTWFwKSB7XG4gICAgICAgIHRoaXMuc2xvdHMgPSBzbG90cztcbiAgICAgICAgdGhpcy5jYWxsZXJTY29wZSA9IGNhbGxlclNjb3BlO1xuICAgICAgICB0aGlzLmV2YWxTY29wZSA9IGV2YWxTY29wZTtcbiAgICAgICAgdGhpcy5wYXJ0aWFsTWFwID0gcGFydGlhbE1hcDtcbiAgICB9XG4gICAgc3RhdGljIHJvb3Qoc2VsZiwgc2l6ZSA9IDApIHtcbiAgICAgICAgbGV0IHJlZnMgPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHJlZnNbaV0gPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU2NvcGUocmVmcywgbnVsbCwgbnVsbCwgbnVsbCkuaW5pdCh7IHNlbGYgfSk7XG4gICAgfVxuICAgIHN0YXRpYyBzaXplZChzaXplID0gMCkge1xuICAgICAgICBsZXQgcmVmcyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY29wZShyZWZzLCBudWxsLCBudWxsLCBudWxsKTtcbiAgICB9XG4gICAgaW5pdCh7IHNlbGYgfSkge1xuICAgICAgICB0aGlzLnNsb3RzWzBdID0gc2VsZjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGdldFNlbGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgwKTtcbiAgICB9XG4gICAgZ2V0U3ltYm9sKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoc3ltYm9sKTtcbiAgICB9XG4gICAgZ2V0QmxvY2soc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChzeW1ib2wpO1xuICAgIH1cbiAgICBnZXRFdmFsU2NvcGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2YWxTY29wZTtcbiAgICB9XG4gICAgZ2V0UGFydGlhbE1hcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFydGlhbE1hcDtcbiAgICB9XG4gICAgYmluZChzeW1ib2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0KHN5bWJvbCwgdmFsdWUpO1xuICAgIH1cbiAgICBiaW5kU2VsZihzZWxmKSB7XG4gICAgICAgIHRoaXMuc2V0KDAsIHNlbGYpO1xuICAgIH1cbiAgICBiaW5kU3ltYm9sKHN5bWJvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gICAgfVxuICAgIGJpbmRCbG9jayhzeW1ib2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0KHN5bWJvbCwgdmFsdWUpO1xuICAgIH1cbiAgICBiaW5kRXZhbFNjb3BlKG1hcCkge1xuICAgICAgICB0aGlzLmV2YWxTY29wZSA9IG1hcDtcbiAgICB9XG4gICAgYmluZFBhcnRpYWxNYXAobWFwKSB7XG4gICAgICAgIHRoaXMucGFydGlhbE1hcCA9IG1hcDtcbiAgICB9XG4gICAgYmluZENhbGxlclNjb3BlKHNjb3BlKSB7XG4gICAgICAgIHRoaXMuY2FsbGVyU2NvcGUgPSBzY29wZTtcbiAgICB9XG4gICAgZ2V0Q2FsbGVyU2NvcGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxlclNjb3BlO1xuICAgIH1cbiAgICBjaGlsZCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTY29wZSh0aGlzLnNsb3RzLnNsaWNlKCksIHRoaXMuY2FsbGVyU2NvcGUsIHRoaXMuZXZhbFNjb3BlLCB0aGlzLnBhcnRpYWxNYXApO1xuICAgIH1cbiAgICBnZXQoaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zbG90c1tpbmRleF07XG4gICAgfVxuICAgIHNldChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNsb3RzW2luZGV4XSA9IHZhbHVlO1xuICAgIH1cbn1cbmNsYXNzIFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzID0gW107XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyA9IFtdO1xuICAgICAgICB0aGlzLmNyZWF0ZWRDb21wb25lbnRzID0gW107XG4gICAgICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlZENvbXBvbmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5kZXN0cnVjdG9ycyA9IFtdO1xuICAgIH1cbiAgICBkaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgICB0aGlzLmNyZWF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIH1cbiAgICBkaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgICB0aGlzLnVwZGF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIH1cbiAgICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgfVxuICAgIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH1cbiAgICBkaWREZXN0cm95KGQpIHtcbiAgICAgICAgdGhpcy5kZXN0cnVjdG9ycy5wdXNoKGQpO1xuICAgIH1cbiAgICBjb21taXQoKSB7XG4gICAgICAgIGxldCB7IGNyZWF0ZWRDb21wb25lbnRzLCBjcmVhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3JlYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSBjcmVhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gY3JlYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci5kaWRDcmVhdGUoY29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyB1cGRhdGVkQ29tcG9uZW50cywgdXBkYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVwZGF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gdXBkYXRlZENvbXBvbmVudHNbaV07XG4gICAgICAgICAgICBsZXQgbWFuYWdlciA9IHVwZGF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlKGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgZGVzdHJ1Y3RvcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzdHJ1Y3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGRlc3RydWN0b3JzW2ldLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMsIHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vyc1tpXTtcbiAgICAgICAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnNbaV07XG4gICAgICAgICAgICBtYW5hZ2VyLmluc3RhbGwobW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMsIHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnNbaV07XG4gICAgICAgICAgICBtYW5hZ2VyLnVwZGF0ZShtb2RpZmllcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihhcnJheSkge1xuICAgICAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgZ2V0IHR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0XTtcbiAgICB9XG4gICAgZ2V0IG9wMSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAxXTtcbiAgICB9XG4gICAgZ2V0IG9wMigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAyXTtcbiAgICB9XG4gICAgZ2V0IG9wMygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAzXTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUHJvZ3JhbSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IFtdO1xuICAgICAgICB0aGlzLl9vZmZzZXQgPSAwO1xuICAgICAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMub3Bjb2Rlcyk7XG4gICAgfVxuICAgIGdldCBuZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2Zmc2V0O1xuICAgIH1cbiAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29mZnNldCAtIDQ7XG4gICAgfVxuICAgIG9wY29kZShvZmZzZXQpIHtcbiAgICAgICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgICB9XG4gICAgc2V0KHBvcywgdHlwZSwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgICAgICB0aGlzLm9wY29kZXNbcG9zXSA9IHR5cGU7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAxXSA9IG9wMTtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3BvcyArIDJdID0gb3AyO1xuICAgICAgICB0aGlzLm9wY29kZXNbcG9zICsgM10gPSBvcDM7XG4gICAgfVxuICAgIHB1c2godHlwZSwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0O1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gdHlwZTtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMTtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMjtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMztcbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQge1xuICAgIGNvbnN0cnVjdG9yKHsgYXBwZW5kT3BlcmF0aW9ucywgdXBkYXRlT3BlcmF0aW9ucyB9KSB7XG4gICAgICAgIHRoaXMuX21hY3JvcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBuZXcgQ29uc3RhbnRzKCk7XG4gICAgICAgIHRoaXMucHJvZ3JhbSA9IG5ldyBQcm9ncmFtKCk7XG4gICAgICAgIHRoaXMuYXBwZW5kT3BlcmF0aW9ucyA9IGFwcGVuZE9wZXJhdGlvbnM7XG4gICAgICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IHVwZGF0ZU9wZXJhdGlvbnM7XG4gICAgfVxuICAgIHRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgZ2V0QXBwZW5kT3BlcmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwZW5kT3BlcmF0aW9ucztcbiAgICB9XG4gICAgZ2V0RE9NKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVPcGVyYXRpb25zO1xuICAgIH1cbiAgICBnZXRJZGVudGl0eShvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGVuc3VyZUd1aWQob2JqZWN0KSArICcnO1xuICAgIH1cbiAgICBiZWdpbigpIHtcbiAgICAgICAgYXNzZXJ0KCF0aGlzLl90cmFuc2FjdGlvbiwgJ0Nhbm5vdCBzdGFydCBhIG5lc3RlZCB0cmFuc2FjdGlvbicpO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbigpO1xuICAgIH1cbiAgICBnZXQgdHJhbnNhY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5fdHJhbnNhY3Rpb24sICdtdXN0IGJlIGluIGEgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbiAgICBkaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxuICAgIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIH1cbiAgICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgfVxuICAgIGRpZERlc3Ryb3koZCkge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZERlc3Ryb3koZCk7XG4gICAgfVxuICAgIGNvbW1pdCgpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5jb21taXQoKTtcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBudWxsO1xuICAgIH1cbiAgICBhdHRyaWJ1dGVGb3IoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0TWFuYWdlcnMoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogbmFtZXNwYWNlKTtcbiAgICB9XG4gICAgbWFjcm9zKCkge1xuICAgICAgICBsZXQgbWFjcm9zID0gdGhpcy5fbWFjcm9zO1xuICAgICAgICBpZiAoIW1hY3Jvcykge1xuICAgICAgICAgICAgdGhpcy5fbWFjcm9zID0gbWFjcm9zID0gdGhpcy5wb3B1bGF0ZUJ1aWx0aW5zKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hY3JvcztcbiAgICB9XG4gICAgcG9wdWxhdGVCdWlsdGlucygpIHtcbiAgICAgICAgcmV0dXJuIHBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudDsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6WyJwb3B1bGF0ZUJ1aWx0aW5zIiwiQ29uc3RhbnRzIiwiVU5ERUZJTkVEX1JFRkVSRU5DRSIsIkNvbmRpdGlvbmFsUmVmZXJlbmNlIiwiZGVmYXVsdE1hbmFnZXJzIiwiYXNzZXJ0IiwiZW5zdXJlR3VpZCIsIlNjb3BlIiwic2xvdHMiLCJjYWxsZXJTY29wZSIsImV2YWxTY29wZSIsInBhcnRpYWxNYXAiLCJyb290Iiwic2VsZiIsInNpemUiLCJyZWZzIiwiQXJyYXkiLCJpIiwiaW5pdCIsInNpemVkIiwiZ2V0U2VsZiIsImdldCIsImdldFN5bWJvbCIsInN5bWJvbCIsImdldEJsb2NrIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0UGFydGlhbE1hcCIsImJpbmQiLCJ2YWx1ZSIsInNldCIsImJpbmRTZWxmIiwiYmluZFN5bWJvbCIsImJpbmRCbG9jayIsImJpbmRFdmFsU2NvcGUiLCJtYXAiLCJiaW5kUGFydGlhbE1hcCIsImJpbmRDYWxsZXJTY29wZSIsInNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJjaGlsZCIsInNsaWNlIiwiaW5kZXgiLCJsZW5ndGgiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMiLCJzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIiwic2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VycyIsInNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyIsImNyZWF0ZWRDb21wb25lbnRzIiwiY3JlYXRlZE1hbmFnZXJzIiwidXBkYXRlZENvbXBvbmVudHMiLCJ1cGRhdGVkTWFuYWdlcnMiLCJkZXN0cnVjdG9ycyIsImRpZENyZWF0ZSIsImNvbXBvbmVudCIsIm1hbmFnZXIiLCJwdXNoIiwiZGlkVXBkYXRlIiwic2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIiLCJtb2RpZmllciIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJkaWREZXN0cm95IiwiZCIsImNvbW1pdCIsImRlc3Ryb3kiLCJpbnN0YWxsIiwidXBkYXRlIiwiT3Bjb2RlIiwiYXJyYXkiLCJvZmZzZXQiLCJQcm9ncmFtIiwib3Bjb2RlcyIsIl9vZmZzZXQiLCJfb3Bjb2RlIiwib3Bjb2RlIiwicG9zIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIkVudmlyb25tZW50IiwiYXBwZW5kT3BlcmF0aW9ucyIsInVwZGF0ZU9wZXJhdGlvbnMiLCJfbWFjcm9zIiwiX3RyYW5zYWN0aW9uIiwiY29uc3RhbnRzIiwicHJvZ3JhbSIsInRvQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJnZXRBcHBlbmRPcGVyYXRpb25zIiwiZ2V0RE9NIiwiZ2V0SWRlbnRpdHkiLCJvYmplY3QiLCJiZWdpbiIsInRyYW5zYWN0aW9uIiwiYXR0cmlidXRlRm9yIiwiZWxlbWVudCIsImF0dHIiLCJpc1RydXN0aW5nIiwibmFtZXNwYWNlIiwidW5kZWZpbmVkIiwibWFjcm9zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUF3Qjs7QUFDakMsQUFBUyxBQUFpQjs7QUFDMUIsQUFBUyxBQUFxQixBQUE0Qjs7QUFDMUQsQUFBUyxBQUF1Qjs7QUFDaEMsQUFBUyxBQUFRLEFBQTBCLEFBQzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxBQUFhLG9DQUNUO2FBQ0E7QUFDQTtBQUZBLFdBQUEsQUFFTyxBQUNQO0FBQ0E7QUFKQSxBQUtBO0FBQ0E7QUFOQSxnQkFNWTs4QkFDUjs7YUFBQSxBQUFLLFFBQUwsQUFBYSxBQUNiO2FBQUEsQUFBSyxjQUFMLEFBQW1CLEFBQ25CO2FBQUEsQUFBSyxZQUFMLEFBQWlCLEFBQ2pCO2FBQUEsQUFBSyxhQUFMLEFBQWtCLEFBQ3JCO0FBWkw7O1VBQUEsQUFhVyxxQkFiWCxBQWFnQixNQUFnQjtZQUFWLEFBQVUsMkVBQUgsQUFBRyxBQUN4Qjs7WUFBSSxPQUFPLElBQUEsQUFBSSxNQUFNLE9BQXJCLEFBQVcsQUFBaUIsQUFDNUI7YUFBSyxJQUFJLElBQVQsQUFBYSxHQUFHLEtB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LEFBQUssWUFBTCxBQUFpQix3QkFBakIsQUFBeUMsVUFBekMsQUFBbUQsQUFDdEQ7QUFwQ0w7OzBCQUFBLEFBcUNJLHlEQXJDSixBQXFDMkIsVUFyQzNCLEFBcUNxQyxTQUFTLEFBQ3RDO2FBQUEsQUFBSyxZQUFMLEFBQWlCLHVCQUFqQixBQUF3QyxVQUF4QyxBQUFrRCxBQUNyRDtBQXZDTDs7MEJBQUEsQUF3Q0ksaUNBeENKLEFBd0NlLEdBQUcsQUFDVjthQUFBLEFBQUssWUFBTCxBQUFpQixXQUFqQixBQUE0QixBQUMvQjtBQTFDTDs7MEJBQUEsQUEyQ0ksMkJBQVMsQUFDTDtZQUFJLGNBQWMsS0FBbEIsQUFBdUIsQUFDdkI7YUFBQSxBQUFLLGVBQUwsQUFBb0IsQUFDcEI7b0JBQUEsQUFBWSxBQUNmO0FBL0NMOzswQkFBQSxBQWdESSxxQ0FoREosQUFnRGlCLFNBaERqQixBQWdEMEIsTUFoRDFCLEFBZ0RnQyxZQWhEaEMsQUFnRDRDLFdBQVcsQUFDL0M7ZUFBTyx3Q0FBQSxBQUFnQixTQUFoQixBQUF5QixNQUF6QixBQUErQixZQUFZLGNBQUEsQUFBYyxZQUFkLEFBQTBCLE9BQTVFLEFBQU8sQUFBNEUsQUFDdEY7QUFsREw7OzBCQUFBLEFBbURJLDJCQUFTLEFBQ0w7WUFBSSxTQUFTLEtBQWIsQUFBa0IsQUFDbEI7WUFBSSxDQUFKLEFBQUssUUFBUSxBQUNUO2lCQUFBLEFBQUssVUFBVSxTQUFTLEtBQXhCLEFBQXdCLEFBQUssQUFDaEM7QUFDRDtlQUFBLEFBQU8sQUFDVjtBQXpETDs7MEJBQUEsQUEwREksK0NBQW1CLEFBQ2Y7ZUFBQSxBQUFPLEFBQ1Y7QUE1REw7OzthQUFBO3lCQXlCc0IsQUFDZDttQkFBYyxLQUFkLEFBQW1CLEFBQ3RCO0FBM0JMO0FBQUE7O1dBQUE7QUE4REE7a0JBQUEsQUFBZSIsImZpbGUiOiJsaWIvZW52aXJvbm1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3B1bGF0ZUJ1aWx0aW5zIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UsIENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IGRlZmF1bHRNYW5hZ2VycyB9IGZyb20gJy4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5pbXBvcnQgeyBhc3NlcnQsIGVuc3VyZUd1aWQsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvLyB0aGUgMHRoIHNsb3QgaXMgYHNlbGZgXG4gICAgc2xvdHMsIGNhbGxlclNjb3BlLFxuICAgIC8vIG5hbWVkIGFyZ3VtZW50cyBhbmQgYmxvY2tzIHBhc3NlZCB0byBhIGxheW91dCB0aGF0IHVzZXMgZXZhbFxuICAgIGV2YWxTY29wZSxcbiAgICAvLyBsb2NhbHMgaW4gc2NvcGUgd2hlbiB0aGUgcGFydGlhbCB3YXMgaW52b2tlZFxuICAgIHBhcnRpYWxNYXApIHtcbiAgICAgICAgdGhpcy5zbG90cyA9IHNsb3RzO1xuICAgICAgICB0aGlzLmNhbGxlclNjb3BlID0gY2FsbGVyU2NvcGU7XG4gICAgICAgIHRoaXMuZXZhbFNjb3BlID0gZXZhbFNjb3BlO1xuICAgICAgICB0aGlzLnBhcnRpYWxNYXAgPSBwYXJ0aWFsTWFwO1xuICAgIH1cbiAgICBzdGF0aWMgcm9vdChzZWxmLCBzaXplID0gMCkge1xuICAgICAgICBsZXQgcmVmcyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY29wZShyZWZzLCBudWxsLCBudWxsLCBudWxsKS5pbml0KHsgc2VsZiB9KTtcbiAgICB9XG4gICAgc3RhdGljIHNpemVkKHNpemUgPSAwKSB7XG4gICAgICAgIGxldCByZWZzID0gbmV3IEFycmF5KHNpemUgKyAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMsIG51bGwsIG51bGwsIG51bGwpO1xuICAgIH1cbiAgICBpbml0KHsgc2VsZiB9KSB7XG4gICAgICAgIHRoaXMuc2xvdHNbMF0gPSBzZWxmO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZ2V0U2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KDApO1xuICAgIH1cbiAgICBnZXRTeW1ib2woc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChzeW1ib2wpO1xuICAgIH1cbiAgICBnZXRCbG9jayhzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHN5bWJvbCk7XG4gICAgfVxuICAgIGdldEV2YWxTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbFNjb3BlO1xuICAgIH1cbiAgICBnZXRQYXJ0aWFsTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWFsTWFwO1xuICAgIH1cbiAgICBiaW5kKHN5bWJvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gICAgfVxuICAgIGJpbmRTZWxmKHNlbGYpIHtcbiAgICAgICAgdGhpcy5zZXQoMCwgc2VsZik7XG4gICAgfVxuICAgIGJpbmRTeW1ib2woc3ltYm9sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgICB9XG4gICAgYmluZEJsb2NrKHN5bWJvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gICAgfVxuICAgIGJpbmRFdmFsU2NvcGUobWFwKSB7XG4gICAgICAgIHRoaXMuZXZhbFNjb3BlID0gbWFwO1xuICAgIH1cbiAgICBiaW5kUGFydGlhbE1hcChtYXApIHtcbiAgICAgICAgdGhpcy5wYXJ0aWFsTWFwID0gbWFwO1xuICAgIH1cbiAgICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGUpIHtcbiAgICAgICAgdGhpcy5jYWxsZXJTY29wZSA9IHNjb3BlO1xuICAgIH1cbiAgICBnZXRDYWxsZXJTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbGVyU2NvcGU7XG4gICAgfVxuICAgIGNoaWxkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSwgdGhpcy5jYWxsZXJTY29wZSwgdGhpcy5ldmFsU2NvcGUsIHRoaXMucGFydGlhbE1hcCk7XG4gICAgfVxuICAgIGdldChpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzW2luZGV4XTtcbiAgICB9XG4gICAgc2V0KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2xvdHNbaW5kZXhdID0gdmFsdWU7XG4gICAgfVxufVxuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzID0gW107XG4gICAgICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZWRNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLmRlc3RydWN0b3JzID0gW107XG4gICAgfVxuICAgIGRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgfVxuICAgIGRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgfVxuICAgIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgfVxuICAgIGRpZERlc3Ryb3koZCkge1xuICAgICAgICB0aGlzLmRlc3RydWN0b3JzLnB1c2goZCk7XG4gICAgfVxuICAgIGNvbW1pdCgpIHtcbiAgICAgICAgbGV0IHsgY3JlYXRlZENvbXBvbmVudHMsIGNyZWF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjcmVhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudCA9IGNyZWF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSBjcmVhdGVkTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBtYW5hZ2VyLmRpZENyZWF0ZShjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHVwZGF0ZWRDb21wb25lbnRzLCB1cGRhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXBkYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSB1cGRhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gdXBkYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci5kaWRVcGRhdGUoY29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBkZXN0cnVjdG9ycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXN0cnVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZGVzdHJ1Y3RvcnNbaV0uZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycywgc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIuaW5zdGFsbChtb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycywgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vyc1tpXTtcbiAgICAgICAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIudXBkYXRlKG1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGFycmF5KSB7XG4gICAgICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgIH1cbiAgICBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXRdO1xuICAgIH1cbiAgICBnZXQgb3AxKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDFdO1xuICAgIH1cbiAgICBnZXQgb3AyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDJdO1xuICAgIH1cbiAgICBnZXQgb3AzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDNdO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQcm9ncmFtIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5vcGNvZGVzID0gW107XG4gICAgICAgIHRoaXMuX29mZnNldCA9IDA7XG4gICAgICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5vcGNvZGVzKTtcbiAgICB9XG4gICAgZ2V0IG5leHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XG4gICAgfVxuICAgIGdldCBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2Zmc2V0IC0gNDtcbiAgICB9XG4gICAgb3Bjb2RlKG9mZnNldCkge1xuICAgICAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICAgIH1cbiAgICBzZXQocG9zLCB0eXBlLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3NdID0gdHlwZTtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3BvcyArIDFdID0gb3AxO1xuICAgICAgICB0aGlzLm9wY29kZXNbcG9zICsgMl0gPSBvcDI7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAzXSA9IG9wMztcbiAgICB9XG4gICAgcHVzaCh0eXBlLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIGxldCBvZmZzZXQgPSB0aGlzLl9vZmZzZXQ7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSB0eXBlO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AxO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AyO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AzO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gICAgY29uc3RydWN0b3IoeyBhcHBlbmRPcGVyYXRpb25zLCB1cGRhdGVPcGVyYXRpb25zIH0pIHtcbiAgICAgICAgdGhpcy5fbWFjcm9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IG5ldyBDb25zdGFudHMoKTtcbiAgICAgICAgdGhpcy5wcm9ncmFtID0gbmV3IFByb2dyYW0oKTtcbiAgICAgICAgdGhpcy5hcHBlbmRPcGVyYXRpb25zID0gYXBwZW5kT3BlcmF0aW9ucztcbiAgICAgICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gdXBkYXRlT3BlcmF0aW9ucztcbiAgICB9XG4gICAgdG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICAgIH1cbiAgICBnZXRBcHBlbmRPcGVyYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRPcGVyYXRpb25zO1xuICAgIH1cbiAgICBnZXRET00oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7XG4gICAgfVxuICAgIGdldElkZW50aXR5KG9iamVjdCkge1xuICAgICAgICByZXR1cm4gZW5zdXJlR3VpZChvYmplY3QpICsgJyc7XG4gICAgfVxuICAgIGJlZ2luKCkge1xuICAgICAgICBhc3NlcnQoIXRoaXMuX3RyYW5zYWN0aW9uLCAnYSBnbGltbWVyIHRyYW5zYWN0aW9uIHdhcyBiZWd1biwgYnV0IG9uZSBhbHJlYWR5IGV4aXN0cy4gWW91IG1heSBoYXZlIGEgbmVzdGVkIHRyYW5zYWN0aW9uJyk7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKCk7XG4gICAgfVxuICAgIGdldCB0cmFuc2FjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLl90cmFuc2FjdGlvbiwgJ211c3QgYmUgaW4gYSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBkaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxuICAgIGRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgfVxuICAgIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgZGlkRGVzdHJveShkKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkRGVzdHJveShkKTtcbiAgICB9XG4gICAgY29tbWl0KCkge1xuICAgICAgICBsZXQgdHJhbnNhY3Rpb24gPSB0aGlzLnRyYW5zYWN0aW9uO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG51bGw7XG4gICAgICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpO1xuICAgIH1cbiAgICBhdHRyaWJ1dGVGb3IoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0TWFuYWdlcnMoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogbmFtZXNwYWNlKTtcbiAgICB9XG4gICAgbWFjcm9zKCkge1xuICAgICAgICBsZXQgbWFjcm9zID0gdGhpcy5fbWFjcm9zO1xuICAgICAgICBpZiAoIW1hY3Jvcykge1xuICAgICAgICAgICAgdGhpcy5fbWFjcm9zID0gbWFjcm9zID0gdGhpcy5wb3B1bGF0ZUJ1aWx0aW5zKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hY3JvcztcbiAgICB9XG4gICAgcG9wdWxhdGVCdWlsdGlucygpIHtcbiAgICAgICAgcmV0dXJuIHBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudDsiXX0=

@@ -86,2 +86,4 @@ 'use strict';

addFallback(statement, newStatements);
} else {
newStatements.push(statement);
}

@@ -140,2 +142,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiV2lyZUZvcm1hdCIsIkNsaWVudFNpZGUiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJBVFRSU19CTE9DSyIsIk9wcyIsIlNjYW5uZXIiLCJibG9jayIsImVudiIsInNjYW5FbnRyeVBvaW50IiwibWV0YSIsInN0YXRlbWVudHMiLCJzeW1ib2xzIiwiaGFzRXZhbCIsInNjYW5CbG9jayIsInBhcmFtZXRlcnMiLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJjb21wb25lbnROYW1lIiwic3ltYm9sVGFibGUiLCJuZXdTdGF0ZW1lbnRzIiwidG9wbGV2ZWwiLCJpblRvcExldmVsIiwiaSIsImxlbmd0aCIsInN0YXRlbWVudCIsIlN0YXRlbWVudHMiLCJpc0NvbXBvbmVudCIsInRhZ05hbWUiLCJoYXNDb21wb25lbnREZWZpbml0aW9uIiwidGVtcGxhdGVNZXRhIiwidW5kZWZpbmVkIiwicHVzaCIsIk9wZW5FbGVtZW50IiwiZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQiLCJhZGRGYWxsYmFjayIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzTW9kaWZpZXIiLCJFcnJvciIsIkNsaWVudFNpZGVTdGF0ZW1lbnQiLCJEaWRSZW5kZXJMYXlvdXQiLCJidWZmZXIiLCJGbHVzaEVsZW1lbnQiLCJDbG9zZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsIk9wZW5Db21wb25lbnRFbGVtZW50IiwiRGlkQ3JlYXRlRWxlbWVudCIsIllpZWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxBQUFTLEFBQVQsQUFBNEIsQUFBNUI7O0FBQ0EsQUFBTzs7SUFBSyxBQUFaLEFBQTRCLEFBQTVCOztBQUNBLEFBQU87O0lBQUssQUFBWixBQUE0QixBQUE1Qjs7QUFDQSxBQUFPLEFBQVAsQUFBK0IsQUFBL0I7Ozs7QUFDQSxBQUFTLEFBQVQsQUFBNEIsQUFBNUI7Ozs7Ozs7Ozs7OztBQUNBLElBQUksTUFBTSxX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WixBQUNBO1dBQU8sQUFBUCxLQUFZLENBQUMsSUFBSSxBQUFMLHFCQUEwQixXQUFXLEFBQVgsSUFBZSxBQUF6QyxBQUFaLEFBQ0E7V0FBTyxBQUFQLEtBQVksQ0FBQyxJQUFJLEFBQUwsT0FBWSxBQUFaLEFBQXlCLEFBQXpCLEFBQVosQUFDQTtXQUFPLEFBQVAsbUJBQWUsQUFBZixBQUNIIiwiZmlsZSI6ImxpYi9zY2FubmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0ICogYXMgQ2xpZW50U2lkZSBmcm9tICcuL3N5bnRheC9jbGllbnQtc2lkZSc7XG5pbXBvcnQgQ29tcGlsYWJsZVRlbXBsYXRlIGZyb20gJy4vc3ludGF4L2NvbXBpbGFibGUtdGVtcGxhdGUnO1xuaW1wb3J0IHsgQVRUUlNfQkxPQ0sgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xudmFyIE9wcyA9IFdpcmVGb3JtYXQuT3BzO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nhbm5lciB7XG4gICAgY29uc3RydWN0b3IoYmxvY2ssIGVudikge1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgIH1cbiAgICBzY2FuRW50cnlQb2ludChtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzLCBzeW1ib2xzLCBoYXNFdmFsIH0gPSBibG9jaztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBtZXRhLCBzeW1ib2xzLCBoYXNFdmFsIH0pO1xuICAgIH1cbiAgICBzY2FuQmxvY2sobWV0YSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cyB9ID0gYmxvY2s7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgbWV0YSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSk7XG4gICAgfVxuICAgIHNjYW5MYXlvdXQobWV0YSwgYXR0cnMsIGNvbXBvbmVudE5hbWUpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICBsZXQgc3ltYm9sVGFibGUgPSB7IG1ldGEsIGhhc0V2YWwsIHN5bWJvbHMgfTtcbiAgICAgICAgbGV0IG5ld1N0YXRlbWVudHMgPSBbXTtcbiAgICAgICAgbGV0IHRvcGxldmVsO1xuICAgICAgICBsZXQgaW5Ub3BMZXZlbCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRzW2ldO1xuICAgICAgICAgICAgaWYgKFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc0NvbXBvbmVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhZ05hbWUgPSBzdGF0ZW1lbnRbMV07XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVudi5oYXNDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWUsIG1ldGEudGVtcGxhdGVNZXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9wbGV2ZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ05hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcGxldmVsID0gdGFnTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCA9PT0gdW5kZWZpbmVkICYmIHRhZ05hbWUgPT09IGNvbXBvbmVudE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcGxldmVsID0gdGFnTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCA9PT0gdW5kZWZpbmVkICYmIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc09wZW5FbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSBzdGF0ZW1lbnRbMV07XG4gICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0b3BsZXZlbCwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpblRvcExldmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgRm91bmQgbW9kaWZpZXIgXCIke3N0YXRlbWVudFsxXX1cIiBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnQgb2YgXCIke2NvbXBvbmVudE5hbWV9XCJcXC4gTW9kaWZpZXJzIGNhbm5vdCBiZSBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKG5ld1N0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIGJ1ZmZlcikge1xuICAgIGxldCBbLCwgYXR0cnMsLCBibG9ja10gPSBzdGF0ZW1lbnQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBidWZmZXIucHVzaChhdHRyc1tpXSk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMgfSA9IGJsb2NrO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKHN0YXRlbWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG59XG5mdW5jdGlvbiBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgYnVmZmVyKSB7XG4gICAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCB0YWdOYW1lXSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5ZaWVsZCwgYXR0cnNTeW1ib2wsIEVNUFRZX0FSUkFZXSk7XG4gICAgYnVmZmVyLnB1c2goLi4uYXR0cnMpO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiV2lyZUZvcm1hdCIsIkNsaWVudFNpZGUiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJBVFRSU19CTE9DSyIsIk9wcyIsIlNjYW5uZXIiLCJibG9jayIsImVudiIsInNjYW5FbnRyeVBvaW50IiwibWV0YSIsInN0YXRlbWVudHMiLCJzeW1ib2xzIiwiaGFzRXZhbCIsInNjYW5CbG9jayIsInBhcmFtZXRlcnMiLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJjb21wb25lbnROYW1lIiwic3ltYm9sVGFibGUiLCJuZXdTdGF0ZW1lbnRzIiwidG9wbGV2ZWwiLCJpblRvcExldmVsIiwiaSIsImxlbmd0aCIsInN0YXRlbWVudCIsIlN0YXRlbWVudHMiLCJpc0NvbXBvbmVudCIsInRhZ05hbWUiLCJoYXNDb21wb25lbnREZWZpbml0aW9uIiwidGVtcGxhdGVNZXRhIiwidW5kZWZpbmVkIiwicHVzaCIsIk9wZW5FbGVtZW50IiwiZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQiLCJhZGRGYWxsYmFjayIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzTW9kaWZpZXIiLCJFcnJvciIsIkNsaWVudFNpZGVTdGF0ZW1lbnQiLCJEaWRSZW5kZXJMYXlvdXQiLCJidWZmZXIiLCJGbHVzaEVsZW1lbnQiLCJDbG9zZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsIk9wZW5Db21wb25lbnRFbGVtZW50IiwiRGlkQ3JlYXRlRWxlbWVudCIsIllpZWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxBQUFTLEFBQVQsQUFBNEIsQUFBNUI7O0FBQ0EsQUFBTzs7SUFBSyxBQUFaLEFBQTRCLEFBQTVCOztBQUNBLEFBQU87O0lBQUssQUFBWixBQUE0QixBQUE1Qjs7QUFDQSxBQUFPLEFBQVAsQUFBK0IsQUFBL0I7Ozs7QUFDQSxBQUFTLEFBQVQsQUFBNEIsQUFBNUI7Ozs7Ozs7Ozs7OztBQUNBLElBQUksTUFBTSxX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cUJBQTBCLFdBQVcsQUFBWCxJQUFlLEFBQXpDLHNCQUErRCxBQUEvRCxBQUFaLEFBQ0E7V0FBTyxBQUFQLEtBQVksQ0FBQyxJQUFJLEFBQUwscUJBQTBCLFdBQVcsQUFBWCxJQUFlLEFBQXpDLEFBQVosQUFDQTtXQUFPLEFBQVAsS0FBWSxDQUFDLElBQUksQUFBTCxPQUFZLEFBQVosQUFBeUIsQUFBekIsQUFBWixBQUNBO1dBQU8sQUFBUCxtQkFBZSxBQUFmLEFBQ0giLCJmaWxlIjoibGliL3NjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgKiBhcyBDbGllbnRTaWRlIGZyb20gJy4vc3ludGF4L2NsaWVudC1zaWRlJztcbmltcG9ydCBDb21waWxhYmxlVGVtcGxhdGUgZnJvbSAnLi9zeW50YXgvY29tcGlsYWJsZS10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBBVFRSU19CTE9DSyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG52YXIgT3BzID0gV2lyZUZvcm1hdC5PcHM7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgICBjb25zdHJ1Y3RvcihibG9jaywgZW52KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgfVxuICAgIHNjYW5FbnRyeVBvaW50KG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IG1ldGEsIHN5bWJvbHMsIGhhc0V2YWwgfSk7XG4gICAgfVxuICAgIHNjYW5CbG9jayhtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBibG9jaztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBtZXRhLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9KTtcbiAgICB9XG4gICAgc2NhbkxheW91dChtZXRhLCBhdHRycywgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgICAgICBsZXQgbmV3U3RhdGVtZW50cyA9IFtdO1xuICAgICAgICBsZXQgdG9wbGV2ZWw7XG4gICAgICAgIGxldCBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHN0YXRlbWVudCA9IHN0YXRlbWVudHNbaV07XG4gICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzQ29tcG9uZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFnTmFtZSA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW52Lmhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZSwgbWV0YS50ZW1wbGF0ZU1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnTmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgdGFnTmFtZSA9PT0gY29tcG9uZW50TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmFsbGJhY2soc3RhdGVtZW50LCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodG9wbGV2ZWwgPT09IHVuZGVmaW5lZCAmJiBXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNPcGVuRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcGxldmVsID0gc3RhdGVtZW50WzFdO1xuICAgICAgICAgICAgICAgICAgICBpblRvcExldmVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodG9wbGV2ZWwsIHN5bWJvbHMsIGF0dHJzLCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5Ub3BMZXZlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Ub3BMZXZlbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNNb2RpZmllcihzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZvdW5kIG1vZGlmaWVyIFwiJHtzdGF0ZW1lbnRbMV19XCIgb24gdGhlIHRvcC1sZXZlbCBlbGVtZW50IG9mIFwiJHtjb21wb25lbnROYW1lfVwiXFwuIE1vZGlmaWVycyBjYW5ub3QgYmUgb24gdGhlIHRvcC1sZXZlbCBlbGVtZW50YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZFJlbmRlckxheW91dF0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShuZXdTdGF0ZW1lbnRzLCBzeW1ib2xUYWJsZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkRmFsbGJhY2soc3RhdGVtZW50LCBidWZmZXIpIHtcbiAgICBsZXQgWywsIGF0dHJzLCwgYmxvY2tdID0gc3RhdGVtZW50O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYnVmZmVyLnB1c2goYXR0cnNbaV0pO1xuICAgIH1cbiAgICBidWZmZXIucHVzaChbT3BzLkZsdXNoRWxlbWVudF0pO1xuICAgIGlmIChibG9jaykge1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBibG9jaztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBidWZmZXIucHVzaChzdGF0ZW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBidWZmZXIucHVzaChbT3BzLkNsb3NlRWxlbWVudF0pO1xufVxuZnVuY3Rpb24gZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIGJ1ZmZlcikge1xuICAgIGxldCBhdHRyc1N5bWJvbCA9IHN5bWJvbHMucHVzaChBVFRSU19CTE9DSyk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5PcGVuQ29tcG9uZW50RWxlbWVudCwgdGFnTmFtZV0pO1xuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkQ3JlYXRlRWxlbWVudF0pO1xuICAgIGJ1ZmZlci5wdXNoKFtPcHMuWWllbGQsIGF0dHJzU3ltYm9sLCBFTVBUWV9BUlJBWV0pO1xuICAgIGJ1ZmZlci5wdXNoKC4uLmF0dHJzKTtcbn0iXX0=

@@ -225,3 +225,3 @@ import { populateBuiltins } from './syntax/functions';

begin() {
assert(!this._transaction, 'Cannot start a nested transaction');
assert(!this._transaction, 'a glimmer transaction was begun, but one already exists. You may have a nested transaction');
this._transaction = new Transaction();

@@ -248,4 +248,5 @@ }

commit() {
this.transaction.commit();
let transaction = this.transaction;
this._transaction = null;
transaction.commit();
}

@@ -252,0 +253,0 @@ attributeFor(element, attr, isTrusting, namespace) {

@@ -46,2 +46,4 @@ import { EMPTY_ARRAY } from '@glimmer/util';

addFallback(statement, newStatements);
} else {
newStatements.push(statement);
}

@@ -48,0 +50,0 @@ }

@@ -324,3 +324,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

Environment.prototype.begin = function begin() {
assert(!this._transaction, 'Cannot start a nested transaction');
assert(!this._transaction, 'a glimmer transaction was begun, but one already exists. You may have a nested transaction');
this._transaction = new Transaction();

@@ -350,4 +350,5 @@ };

Environment.prototype.commit = function commit() {
this.transaction.commit();
var transaction = this.transaction;
this._transaction = null;
transaction.commit();
};

@@ -381,2 +382,2 @@

export default Environment;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6WyJwb3B1bGF0ZUJ1aWx0aW5zIiwiQ29uc3RhbnRzIiwiVU5ERUZJTkVEX1JFRkVSRU5DRSIsIkNvbmRpdGlvbmFsUmVmZXJlbmNlIiwiZGVmYXVsdE1hbmFnZXJzIiwiYXNzZXJ0IiwiZW5zdXJlR3VpZCIsIlNjb3BlIiwic2xvdHMiLCJjYWxsZXJTY29wZSIsImV2YWxTY29wZSIsInBhcnRpYWxNYXAiLCJyb290Iiwic2VsZiIsInNpemUiLCJyZWZzIiwiQXJyYXkiLCJpIiwiaW5pdCIsInNpemVkIiwiZ2V0U2VsZiIsImdldCIsImdldFN5bWJvbCIsInN5bWJvbCIsImdldEJsb2NrIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0UGFydGlhbE1hcCIsImJpbmQiLCJ2YWx1ZSIsInNldCIsImJpbmRTZWxmIiwiYmluZFN5bWJvbCIsImJpbmRCbG9jayIsImJpbmRFdmFsU2NvcGUiLCJtYXAiLCJiaW5kUGFydGlhbE1hcCIsImJpbmRDYWxsZXJTY29wZSIsInNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJjaGlsZCIsInNsaWNlIiwiaW5kZXgiLCJsZW5ndGgiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMiLCJzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIiwic2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VycyIsInNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyIsImNyZWF0ZWRDb21wb25lbnRzIiwiY3JlYXRlZE1hbmFnZXJzIiwidXBkYXRlZENvbXBvbmVudHMiLCJ1cGRhdGVkTWFuYWdlcnMiLCJkZXN0cnVjdG9ycyIsImRpZENyZWF0ZSIsImNvbXBvbmVudCIsIm1hbmFnZXIiLCJwdXNoIiwiZGlkVXBkYXRlIiwic2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIiLCJtb2RpZmllciIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJkaWREZXN0cm95IiwiZCIsImNvbW1pdCIsImRlc3Ryb3kiLCJpbnN0YWxsIiwidXBkYXRlIiwiT3Bjb2RlIiwiYXJyYXkiLCJvZmZzZXQiLCJQcm9ncmFtIiwib3Bjb2RlcyIsIl9vZmZzZXQiLCJfb3Bjb2RlIiwib3Bjb2RlIiwicG9zIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIkVudmlyb25tZW50IiwiYXBwZW5kT3BlcmF0aW9ucyIsInVwZGF0ZU9wZXJhdGlvbnMiLCJfbWFjcm9zIiwiX3RyYW5zYWN0aW9uIiwiY29uc3RhbnRzIiwicHJvZ3JhbSIsInRvQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJnZXRBcHBlbmRPcGVyYXRpb25zIiwiZ2V0RE9NIiwiZ2V0SWRlbnRpdHkiLCJvYmplY3QiLCJiZWdpbiIsInRyYW5zYWN0aW9uIiwiYXR0cmlidXRlRm9yIiwiZWxlbWVudCIsImF0dHIiLCJpc1RydXN0aW5nIiwibmFtZXNwYWNlIiwidW5kZWZpbmVkIiwibWFjcm9zIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EscUNBQVQsUUFBaUMsb0JBQWpDO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQix5QkFBMUI7QUFDQSxTQUFTQyxtQkFBVCxFQUE4QkMsb0JBQTlCLFFBQTBELGNBQTFEO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQywwQkFBaEM7QUFDQSxTQUFTQyxNQUFULEVBQWlCQyxVQUFqQixRQUEyQyxlQUEzQztBQUNBLFdBQWFDLEtBQWI7QUFDSTtBQUNBO0FBQ0FDLFNBRkEsRUFFT0MsV0FGUDtBQUdBO0FBQ0FDLGFBSkE7QUFLQTtBQUNBQyxjQU5BLEVBTVk7QUFBQTs7QUFDUixhQUFLSCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxXQUFMLEdBQW1CQSxXQUFuQjtBQUNBLGFBQUtDLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQkEsVUFBbEI7QUFDSDs7QUFaTCxVQWFXQyxJQWJYLGlCQWFnQkMsSUFiaEIsRUFhZ0M7QUFBQSxZQUFWQyxJQUFVLHVFQUFILENBQUc7O0FBQ3hC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cnQgeyBwb3B1bGF0ZUJ1aWx0aW5zIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UsIENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IGRlZmF1bHRNYW5hZ2VycyB9IGZyb20gJy4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5pbXBvcnQgeyBhc3NlcnQsIGVuc3VyZUd1aWQsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAvLyB0aGUgMHRoIHNsb3QgaXMgYHNlbGZgXG4gICAgc2xvdHMsIGNhbGxlclNjb3BlLFxuICAgIC8vIG5hbWVkIGFyZ3VtZW50cyBhbmQgYmxvY2tzIHBhc3NlZCB0byBhIGxheW91dCB0aGF0IHVzZXMgZXZhbFxuICAgIGV2YWxTY29wZSxcbiAgICAvLyBsb2NhbHMgaW4gc2NvcGUgd2hlbiB0aGUgcGFydGlhbCB3YXMgaW52b2tlZFxuICAgIHBhcnRpYWxNYXApIHtcbiAgICAgICAgdGhpcy5zbG90cyA9IHNsb3RzO1xuICAgICAgICB0aGlzLmNhbGxlclNjb3BlID0gY2FsbGVyU2NvcGU7XG4gICAgICAgIHRoaXMuZXZhbFNjb3BlID0gZXZhbFNjb3BlO1xuICAgICAgICB0aGlzLnBhcnRpYWxNYXAgPSBwYXJ0aWFsTWFwO1xuICAgIH1cbiAgICBzdGF0aWMgcm9vdChzZWxmLCBzaXplID0gMCkge1xuICAgICAgICBsZXQgcmVmcyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY29wZShyZWZzLCBudWxsLCBudWxsLCBudWxsKS5pbml0KHsgc2VsZiB9KTtcbiAgICB9XG4gICAgc3RhdGljIHNpemVkKHNpemUgPSAwKSB7XG4gICAgICAgIGxldCByZWZzID0gbmV3IEFycmF5KHNpemUgKyAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMsIG51bGwsIG51bGwsIG51bGwpO1xuICAgIH1cbiAgICBpbml0KHsgc2VsZiB9KSB7XG4gICAgICAgIHRoaXMuc2xvdHNbMF0gPSBzZWxmO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZ2V0U2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KDApO1xuICAgIH1cbiAgICBnZXRTeW1ib2woc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChzeW1ib2wpO1xuICAgIH1cbiAgICBnZXRCbG9jayhzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHN5bWJvbCk7XG4gICAgfVxuICAgIGdldEV2YWxTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbFNjb3BlO1xuICAgIH1cbiAgICBnZXRQYXJ0aWFsTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWFsTWFwO1xuICAgIH1cbiAgICBiaW5kKHN5bWJvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gICAgfVxuICAgIGJpbmRTZWxmKHNlbGYpIHtcbiAgICAgICAgdGhpcy5zZXQoMCwgc2VsZik7XG4gICAgfVxuICAgIGJpbmRTeW1ib2woc3ltYm9sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgICB9XG4gICAgYmluZEJsb2NrKHN5bWJvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gICAgfVxuICAgIGJpbmRFdmFsU2NvcGUobWFwKSB7XG4gICAgICAgIHRoaXMuZXZhbFNjb3BlID0gbWFwO1xuICAgIH1cbiAgICBiaW5kUGFydGlhbE1hcChtYXApIHtcbiAgICAgICAgdGhpcy5wYXJ0aWFsTWFwID0gbWFwO1xuICAgIH1cbiAgICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGUpIHtcbiAgICAgICAgdGhpcy5jYWxsZXJTY29wZSA9IHNjb3BlO1xuICAgIH1cbiAgICBnZXRDYWxsZXJTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbGVyU2NvcGU7XG4gICAgfVxuICAgIGNoaWxkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSwgdGhpcy5jYWxsZXJTY29wZSwgdGhpcy5ldmFsU2NvcGUsIHRoaXMucGFydGlhbE1hcCk7XG4gICAgfVxuICAgIGdldChpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzW2luZGV4XTtcbiAgICB9XG4gICAgc2V0KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2xvdHNbaW5kZXhdID0gdmFsdWU7XG4gICAgfVxufVxuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzID0gW107XG4gICAgICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZWRNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLmRlc3RydWN0b3JzID0gW107XG4gICAgfVxuICAgIGRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgfVxuICAgIGRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgfVxuICAgIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgfVxuICAgIGRpZERlc3Ryb3koZCkge1xuICAgICAgICB0aGlzLmRlc3RydWN0b3JzLnB1c2goZCk7XG4gICAgfVxuICAgIGNvbW1pdCgpIHtcbiAgICAgICAgbGV0IHsgY3JlYXRlZENvbXBvbmVudHMsIGNyZWF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjcmVhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudCA9IGNyZWF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSBjcmVhdGVkTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBtYW5hZ2VyLmRpZENyZWF0ZShjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHVwZGF0ZWRDb21wb25lbnRzLCB1cGRhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXBkYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSB1cGRhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gdXBkYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci5kaWRVcGRhdGUoY29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBkZXN0cnVjdG9ycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXN0cnVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZGVzdHJ1Y3RvcnNbaV0uZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycywgc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIuaW5zdGFsbChtb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycywgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vyc1tpXTtcbiAgICAgICAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIudXBkYXRlKG1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGFycmF5KSB7XG4gICAgICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgIH1cbiAgICBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXRdO1xuICAgIH1cbiAgICBnZXQgb3AxKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDFdO1xuICAgIH1cbiAgICBnZXQgb3AyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDJdO1xuICAgIH1cbiAgICBnZXQgb3AzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDNdO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQcm9ncmFtIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5vcGNvZGVzID0gW107XG4gICAgICAgIHRoaXMuX29mZnNldCA9IDA7XG4gICAgICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5vcGNvZGVzKTtcbiAgICB9XG4gICAgZ2V0IG5leHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XG4gICAgfVxuICAgIGdldCBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2Zmc2V0IC0gNDtcbiAgICB9XG4gICAgb3Bjb2RlKG9mZnNldCkge1xuICAgICAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICAgIH1cbiAgICBzZXQocG9zLCB0eXBlLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3NdID0gdHlwZTtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3BvcyArIDFdID0gb3AxO1xuICAgICAgICB0aGlzLm9wY29kZXNbcG9zICsgMl0gPSBvcDI7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAzXSA9IG9wMztcbiAgICB9XG4gICAgcHVzaCh0eXBlLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIGxldCBvZmZzZXQgPSB0aGlzLl9vZmZzZXQ7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSB0eXBlO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AxO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AyO1xuICAgICAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AzO1xuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gICAgY29uc3RydWN0b3IoeyBhcHBlbmRPcGVyYXRpb25zLCB1cGRhdGVPcGVyYXRpb25zIH0pIHtcbiAgICAgICAgdGhpcy5fbWFjcm9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IG5ldyBDb25zdGFudHMoKTtcbiAgICAgICAgdGhpcy5wcm9ncmFtID0gbmV3IFByb2dyYW0oKTtcbiAgICAgICAgdGhpcy5hcHBlbmRPcGVyYXRpb25zID0gYXBwZW5kT3BlcmF0aW9ucztcbiAgICAgICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gdXBkYXRlT3BlcmF0aW9ucztcbiAgICB9XG4gICAgdG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICAgIH1cbiAgICBnZXRBcHBlbmRPcGVyYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRPcGVyYXRpb25zO1xuICAgIH1cbiAgICBnZXRET00oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7XG4gICAgfVxuICAgIGdldElkZW50aXR5KG9iamVjdCkge1xuICAgICAgICByZXR1cm4gZW5zdXJlR3VpZChvYmplY3QpICsgJyc7XG4gICAgfVxuICAgIGJlZ2luKCkge1xuICAgICAgICBhc3NlcnQoIXRoaXMuX3RyYW5zYWN0aW9uLCAnQ2Fubm90IHN0YXJ0IGEgbmVzdGVkIHRyYW5zYWN0aW9uJyk7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKCk7XG4gICAgfVxuICAgIGdldCB0cmFuc2FjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLl90cmFuc2FjdGlvbiwgJ211c3QgYmUgaW4gYSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBkaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxuICAgIGRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgfVxuICAgIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgZGlkRGVzdHJveShkKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkRGVzdHJveShkKTtcbiAgICB9XG4gICAgY29tbWl0KCkge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmNvbW1pdCgpO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG51bGw7XG4gICAgfVxuICAgIGF0dHJpYnV0ZUZvcihlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICBtYWNyb3MoKSB7XG4gICAgICAgIGxldCBtYWNyb3MgPSB0aGlzLl9tYWNyb3M7XG4gICAgICAgIGlmICghbWFjcm9zKSB7XG4gICAgICAgICAgICB0aGlzLl9tYWNyb3MgPSBtYWNyb3MgPSB0aGlzLnBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFjcm9zO1xuICAgIH1cbiAgICBwb3B1bGF0ZUJ1aWx0aW5zKCkge1xuICAgICAgICByZXR1cm4gcG9wdWxhdGVCdWlsdGlucygpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50OyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6WyJwb3B1bGF0ZUJ1aWx0aW5zIiwiQ29uc3RhbnRzIiwiVU5ERUZJTkVEX1JFRkVSRU5DRSIsIkNvbmRpdGlvbmFsUmVmZXJlbmNlIiwiZGVmYXVsdE1hbmFnZXJzIiwiYXNzZXJ0IiwiZW5zdXJlR3VpZCIsIlNjb3BlIiwic2xvdHMiLCJjYWxsZXJTY29wZSIsImV2YWxTY29wZSIsInBhcnRpYWxNYXAiLCJyb290Iiwic2VsZiIsInNpemUiLCJyZWZzIiwiQXJyYXkiLCJpIiwiaW5pdCIsInNpemVkIiwiZ2V0U2VsZiIsImdldCIsImdldFN5bWJvbCIsInN5bWJvbCIsImdldEJsb2NrIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0UGFydGlhbE1hcCIsImJpbmQiLCJ2YWx1ZSIsInNldCIsImJpbmRTZWxmIiwiYmluZFN5bWJvbCIsImJpbmRCbG9jayIsImJpbmRFdmFsU2NvcGUiLCJtYXAiLCJiaW5kUGFydGlhbE1hcCIsImJpbmRDYWxsZXJTY29wZSIsInNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJjaGlsZCIsInNsaWNlIiwiaW5kZXgiLCJsZW5ndGgiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMiLCJzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIiwic2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VycyIsInNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyIsImNyZWF0ZWRDb21wb25lbnRzIiwiY3JlYXRlZE1hbmFnZXJzIiwidXBkYXRlZENvbXBvbmVudHMiLCJ1cGRhdGVkTWFuYWdlcnMiLCJkZXN0cnVjdG9ycyIsImRpZENyZWF0ZSIsImNvbXBvbmVudCIsIm1hbmFnZXIiLCJwdXNoIiwiZGlkVXBkYXRlIiwic2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIiLCJtb2RpZmllciIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJkaWREZXN0cm95IiwiZCIsImNvbW1pdCIsImRlc3Ryb3kiLCJpbnN0YWxsIiwidXBkYXRlIiwiT3Bjb2RlIiwiYXJyYXkiLCJvZmZzZXQiLCJQcm9ncmFtIiwib3Bjb2RlcyIsIl9vZmZzZXQiLCJfb3Bjb2RlIiwib3Bjb2RlIiwicG9zIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIkVudmlyb25tZW50IiwiYXBwZW5kT3BlcmF0aW9ucyIsInVwZGF0ZU9wZXJhdGlvbnMiLCJfbWFjcm9zIiwiX3RyYW5zYWN0aW9uIiwiY29uc3RhbnRzIiwicHJvZ3JhbSIsInRvQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJnZXRBcHBlbmRPcGVyYXRpb25zIiwiZ2V0RE9NIiwiZ2V0SWRlbnRpdHkiLCJvYmplY3QiLCJiZWdpbiIsInRyYW5zYWN0aW9uIiwiYXR0cmlidXRlRm9yIiwiZWxlbWVudCIsImF0dHIiLCJpc1RydXN0aW5nIiwibmFtZXNwYWNlIiwidW5kZWZpbmVkIiwibWFjcm9zIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EscUNBQVQsUUFBaUMsb0JBQWpDO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQix5QkFBMUI7QUFDQSxTQUFTQyxtQkFBVCxFQUE4QkMsb0JBQTlCLFFBQTBELGNBQTFEO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQywwQkFBaEM7QUFDQSxTQUFTQyxNQUFULEVBQWlCQyxVQUFqQixRQUEyQyxlQUEzQztBQUNBLFdBQWFDLEtBQWI7QUFDSTtBQUNBO0FBQ0FDLFNBRkEsRUFFT0MsV0FGUDtBQUdBO0FBQ0FDLGFBSkE7QUFLQTtBQUNBQyxjQU5BLEVBTVk7QUFBQTs7QUFDUixhQUFLSCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxXQUFMLEdBQW1CQSxXQUFuQjtBQUNBLGFBQUtDLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQkEsVUFBbEI7QUFDSDs7QUFaTCxVQWFXQyxJQWJYLGlCQWFnQkMsSUFiaEIsRUFhZ0M7QUFBQSxZQUFWQyxJQUFVLHVFQUFILENBQUc7O0FBQ3hC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ZXNDb250ZW50IjpbImltcG9ydCB7IHBvcHVsYXRlQnVpbHRpbnMgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgZGVmYXVsdE1hbmFnZXJzIH0gZnJvbSAnLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcbmltcG9ydCB7IGFzc2VydCwgZW5zdXJlR3VpZCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5leHBvcnQgY2xhc3MgU2NvcGUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRoZSAwdGggc2xvdCBpcyBgc2VsZmBcbiAgICBzbG90cywgY2FsbGVyU2NvcGUsXG4gICAgLy8gbmFtZWQgYXJndW1lbnRzIGFuZCBibG9ja3MgcGFzc2VkIHRvIGEgbGF5b3V0IHRoYXQgdXNlcyBldmFsXG4gICAgZXZhbFNjb3BlLFxuICAgIC8vIGxvY2FscyBpbiBzY29wZSB3aGVuIHRoZSBwYXJ0aWFsIHdhcyBpbnZva2VkXG4gICAgcGFydGlhbE1hcCkge1xuICAgICAgICB0aGlzLnNsb3RzID0gc2xvdHM7XG4gICAgICAgIHRoaXMuY2FsbGVyU2NvcGUgPSBjYWxsZXJTY29wZTtcbiAgICAgICAgdGhpcy5ldmFsU2NvcGUgPSBldmFsU2NvcGU7XG4gICAgICAgIHRoaXMucGFydGlhbE1hcCA9IHBhcnRpYWxNYXA7XG4gICAgfVxuICAgIHN0YXRpYyByb290KHNlbGYsIHNpemUgPSAwKSB7XG4gICAgICAgIGxldCByZWZzID0gbmV3IEFycmF5KHNpemUgKyAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMsIG51bGwsIG51bGwsIG51bGwpLmluaXQoeyBzZWxmIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgc2l6ZWQoc2l6ZSA9IDApIHtcbiAgICAgICAgbGV0IHJlZnMgPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHJlZnNbaV0gPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU2NvcGUocmVmcywgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIGluaXQoeyBzZWxmIH0pIHtcbiAgICAgICAgdGhpcy5zbG90c1swXSA9IHNlbGY7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBnZXRTZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCk7XG4gICAgfVxuICAgIGdldFN5bWJvbChzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHN5bWJvbCk7XG4gICAgfVxuICAgIGdldEJsb2NrKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoc3ltYm9sKTtcbiAgICB9XG4gICAgZ2V0RXZhbFNjb3BlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmFsU2NvcGU7XG4gICAgfVxuICAgIGdldFBhcnRpYWxNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWxNYXA7XG4gICAgfVxuICAgIGJpbmQoc3ltYm9sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgICB9XG4gICAgYmluZFNlbGYoc2VsZikge1xuICAgICAgICB0aGlzLnNldCgwLCBzZWxmKTtcbiAgICB9XG4gICAgYmluZFN5bWJvbChzeW1ib2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0KHN5bWJvbCwgdmFsdWUpO1xuICAgIH1cbiAgICBiaW5kQmxvY2soc3ltYm9sLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgICB9XG4gICAgYmluZEV2YWxTY29wZShtYXApIHtcbiAgICAgICAgdGhpcy5ldmFsU2NvcGUgPSBtYXA7XG4gICAgfVxuICAgIGJpbmRQYXJ0aWFsTWFwKG1hcCkge1xuICAgICAgICB0aGlzLnBhcnRpYWxNYXAgPSBtYXA7XG4gICAgfVxuICAgIGJpbmRDYWxsZXJTY29wZShzY29wZSkge1xuICAgICAgICB0aGlzLmNhbGxlclNjb3BlID0gc2NvcGU7XG4gICAgfVxuICAgIGdldENhbGxlclNjb3BlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsZXJTY29wZTtcbiAgICB9XG4gICAgY2hpbGQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2NvcGUodGhpcy5zbG90cy5zbGljZSgpLCB0aGlzLmNhbGxlclNjb3BlLCB0aGlzLmV2YWxTY29wZSwgdGhpcy5wYXJ0aWFsTWFwKTtcbiAgICB9XG4gICAgZ2V0KGluZGV4KSB7XG4gICAgICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHNbaW5kZXhdO1xuICAgIH1cbiAgICBzZXQoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zbG90c1tpbmRleF0gPSB2YWx1ZTtcbiAgICB9XG59XG5jbGFzcyBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyA9IFtdO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cyA9IFtdO1xuICAgICAgICB0aGlzLmNyZWF0ZWRNYW5hZ2VycyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzID0gW107XG4gICAgICAgIHRoaXMuZGVzdHJ1Y3RvcnMgPSBbXTtcbiAgICB9XG4gICAgZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLmNyZWF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB9XG4gICAgZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH1cbiAgICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgICAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9XG4gICAgZGlkRGVzdHJveShkKSB7XG4gICAgICAgIHRoaXMuZGVzdHJ1Y3RvcnMucHVzaChkKTtcbiAgICB9XG4gICAgY29tbWl0KCkge1xuICAgICAgICBsZXQgeyBjcmVhdGVkQ29tcG9uZW50cywgY3JlYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNyZWF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gY3JlYXRlZENvbXBvbmVudHNbaV07XG4gICAgICAgICAgICBsZXQgbWFuYWdlciA9IGNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgICAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgdXBkYXRlZENvbXBvbmVudHMsIHVwZGF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cGRhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbXBvbmVudCA9IHVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSB1cGRhdGVkTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZShjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IGRlc3RydWN0b3JzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlc3RydWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkZXN0cnVjdG9yc1tpXS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLCBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnNbaV07XG4gICAgICAgICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci5pbnN0YWxsKG1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzW2ldO1xuICAgICAgICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzW2ldO1xuICAgICAgICAgICAgbWFuYWdlci51cGRhdGUobW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICAgICAgdGhpcy5hcnJheSA9IGFycmF5O1xuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgfVxuICAgIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldF07XG4gICAgfVxuICAgIGdldCBvcDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMV07XG4gICAgfVxuICAgIGdldCBvcDIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMl07XG4gICAgfVxuICAgIGdldCBvcDMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgM107XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFByb2dyYW0ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgICAgICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLm9wY29kZXMpO1xuICAgIH1cbiAgICBnZXQgbmV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29mZnNldDtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQgLSA0O1xuICAgIH1cbiAgICBvcGNvZGUob2Zmc2V0KSB7XG4gICAgICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gICAgfVxuICAgIHNldChwb3MsIHR5cGUsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3Bvc10gPSB0eXBlO1xuICAgICAgICB0aGlzLm9wY29kZXNbcG9zICsgMV0gPSBvcDE7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAyXSA9IG9wMjtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3BvcyArIDNdID0gb3AzO1xuICAgIH1cbiAgICBwdXNoKHR5cGUsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICAgICAgbGV0IG9mZnNldCA9IHRoaXMuX29mZnNldDtcbiAgICAgICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IHR5cGU7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDE7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDI7XG4gICAgICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDM7XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgICBjb25zdHJ1Y3Rvcih7IGFwcGVuZE9wZXJhdGlvbnMsIHVwZGF0ZU9wZXJhdGlvbnMgfSkge1xuICAgICAgICB0aGlzLl9tYWNyb3MgPSBudWxsO1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gbmV3IENvbnN0YW50cygpO1xuICAgICAgICB0aGlzLnByb2dyYW0gPSBuZXcgUHJvZ3JhbSgpO1xuICAgICAgICB0aGlzLmFwcGVuZE9wZXJhdGlvbnMgPSBhcHBlbmRPcGVyYXRpb25zO1xuICAgICAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSB1cGRhdGVPcGVyYXRpb25zO1xuICAgIH1cbiAgICB0b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gICAgfVxuICAgIGdldEFwcGVuZE9wZXJhdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGVuZE9wZXJhdGlvbnM7XG4gICAgfVxuICAgIGdldERPTSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlT3BlcmF0aW9ucztcbiAgICB9XG4gICAgZ2V0SWRlbnRpdHkob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBlbnN1cmVHdWlkKG9iamVjdCkgKyAnJztcbiAgICB9XG4gICAgYmVnaW4oKSB7XG4gICAgICAgIGFzc2VydCghdGhpcy5fdHJhbnNhY3Rpb24sICdhIGdsaW1tZXIgdHJhbnNhY3Rpb24gd2FzIGJlZ3VuLCBidXQgb25lIGFscmVhZHkgZXhpc3RzLiBZb3UgbWF5IGhhdmUgYSBuZXN0ZWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgICB9XG4gICAgZ2V0IHRyYW5zYWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuX3RyYW5zYWN0aW9uLCAnbXVzdCBiZSBpbiBhIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbiAgICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICB9XG4gICAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcikge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIH1cbiAgICBkaWREZXN0cm95KGQpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5kaWREZXN0cm95KGQpO1xuICAgIH1cbiAgICBjb21taXQoKSB7XG4gICAgICAgIGxldCB0cmFuc2FjdGlvbiA9IHRoaXMudHJhbnNhY3Rpb247XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbnVsbDtcbiAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7XG4gICAgfVxuICAgIGF0dHJpYnV0ZUZvcihlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICBtYWNyb3MoKSB7XG4gICAgICAgIGxldCBtYWNyb3MgPSB0aGlzLl9tYWNyb3M7XG4gICAgICAgIGlmICghbWFjcm9zKSB7XG4gICAgICAgICAgICB0aGlzLl9tYWNyb3MgPSBtYWNyb3MgPSB0aGlzLnBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFjcm9zO1xuICAgIH1cbiAgICBwb3B1bGF0ZUJ1aWx0aW5zKCkge1xuICAgICAgICByZXR1cm4gcG9wdWxhdGVCdWlsdGlucygpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50OyJdfQ==

@@ -61,2 +61,4 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

addFallback(statement, newStatements);
} else {
newStatements.push(statement);
}

@@ -114,2 +116,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiV2lyZUZvcm1hdCIsIkNsaWVudFNpZGUiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJBVFRSU19CTE9DSyIsIk9wcyIsIlNjYW5uZXIiLCJibG9jayIsImVudiIsInNjYW5FbnRyeVBvaW50IiwibWV0YSIsInN0YXRlbWVudHMiLCJzeW1ib2xzIiwiaGFzRXZhbCIsInNjYW5CbG9jayIsInBhcmFtZXRlcnMiLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJjb21wb25lbnROYW1lIiwic3ltYm9sVGFibGUiLCJuZXdTdGF0ZW1lbnRzIiwidG9wbGV2ZWwiLCJpblRvcExldmVsIiwiaSIsImxlbmd0aCIsInN0YXRlbWVudCIsIlN0YXRlbWVudHMiLCJpc0NvbXBvbmVudCIsInRhZ05hbWUiLCJoYXNDb21wb25lbnREZWZpbml0aW9uIiwidGVtcGxhdGVNZXRhIiwidW5kZWZpbmVkIiwicHVzaCIsIk9wZW5FbGVtZW50IiwiZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQiLCJhZGRGYWxsYmFjayIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzTW9kaWZpZXIiLCJFcnJvciIsIkNsaWVudFNpZGVTdGF0ZW1lbnQiLCJEaWRSZW5kZXJMYXlvdXQiLCJidWZmZXIiLCJGbHVzaEVsZW1lbnQiLCJDbG9zZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsIk9wZW5Db21wb25lbnRFbGVtZW50IiwiRGlkQ3JlYXRlRWxlbWVudCIsIllpZWxkIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZUFBNUI7QUFDQSxPQUFPLEtBQUtDLFVBQVosTUFBNEIsc0JBQTVCO0FBQ0EsT0FBTyxLQUFLQyxVQUFaLE1BQTRCLHNCQUE1QjtBQUNBLE9BQU9DLGtCQUFQLE1BQStCLDhCQUEvQjtBQUNBLFNBQVNDLFdBQVQsUUFBNEIsb0JBQTVCO0FBQ0EsSUFBSUMsTUFBTUosV0FBV0ksR0FBckI7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LENBQVlyQixXQUFXWSxFQUFYLENBQVo7QUFDSDtBQUNKO0FBQ0RtQixXQUFPVixJQUFQLENBQVksQ0FBQzNCLElBQUl1QyxZQUFMLENBQVo7QUFDSDtBQUNELFNBQVNWLHVCQUFULENBQWlDTixPQUFqQyxFQUEwQ2hCLE9BQTFDLEVBQW1ESyxLQUFuRCxFQUEwRHlCLE1BQTFELEVBQWtFO0FBQzlELFFBQUlHLGNBQWNqQyxRQUFRb0IsSUFBUixDQUFhNUIsV0FBYixDQUFsQjtBQUNBc0MsV0FBT1YsSUFBUCxDQUFZLENBQUMzQixJQUFJbUMsbUJBQUwsRUFBMEJ0QyxXQUFXRyxHQUFYLENBQWV5QyxvQkFBekMsRUFBK0RsQixPQUEvRCxDQUFaO0FBQ0FjLFdBQU9WLElBQVAsQ0FBWSxDQUFDM0IsSUFBSW1DLG1CQUFMLEVBQTBCdEMsV0FBV0csR0FBWCxDQUFlMEMsZ0JBQXpDLENBQVo7QUFDQUwsV0FBT1YsSUFBUCxDQUFZLENBQUMzQixJQUFJMkMsS0FBTCxFQUFZSCxXQUFaLEVBQXlCN0MsV0FBekIsQ0FBWjtBQUNBMEMsV0FBT1YsSUFBUCxlQUFlZixLQUFmO0FBQ0giLCJmaWxlIjoibGliL3NjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgKiBhcyBDbGllbnRTaWRlIGZyb20gJy4vc3ludGF4L2NsaWVudC1zaWRlJztcbmltcG9ydCBDb21waWxhYmxlVGVtcGxhdGUgZnJvbSAnLi9zeW50YXgvY29tcGlsYWJsZS10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBBVFRSU19CTE9DSyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG52YXIgT3BzID0gV2lyZUZvcm1hdC5PcHM7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgICBjb25zdHJ1Y3RvcihibG9jaywgZW52KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgfVxuICAgIHNjYW5FbnRyeVBvaW50KG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IG1ldGEsIHN5bWJvbHMsIGhhc0V2YWwgfSk7XG4gICAgfVxuICAgIHNjYW5CbG9jayhtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBibG9jaztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBtZXRhLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9KTtcbiAgICB9XG4gICAgc2NhbkxheW91dChtZXRhLCBhdHRycywgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgICAgICBsZXQgbmV3U3RhdGVtZW50cyA9IFtdO1xuICAgICAgICBsZXQgdG9wbGV2ZWw7XG4gICAgICAgIGxldCBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHN0YXRlbWVudCA9IHN0YXRlbWVudHNbaV07XG4gICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzQ29tcG9uZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFnTmFtZSA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW52Lmhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZSwgbWV0YS50ZW1wbGF0ZU1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnTmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgdGFnTmFtZSA9PT0gY29tcG9uZW50TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmFsbGJhY2soc3RhdGVtZW50LCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzT3BlbkVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICAgICAgaW5Ub3BMZXZlbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRvcGxldmVsLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluVG9wTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBGb3VuZCBtb2RpZmllciBcIiR7c3RhdGVtZW50WzFdfVwiIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudCBvZiBcIiR7Y29tcG9uZW50TmFtZX1cIlxcLiBNb2RpZmllcnMgY2Fubm90IGJlIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUobmV3U3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgYnVmZmVyKSB7XG4gICAgbGV0IFssLCBhdHRycywsIGJsb2NrXSA9IHN0YXRlbWVudDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKGF0dHJzW2ldKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cyB9ID0gYmxvY2s7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbn1cbmZ1bmN0aW9uIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBidWZmZXIpIHtcbiAgICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ05hbWVdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldKTtcbiAgICBidWZmZXIucHVzaCguLi5hdHRycyk7XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiV2lyZUZvcm1hdCIsIkNsaWVudFNpZGUiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJBVFRSU19CTE9DSyIsIk9wcyIsIlNjYW5uZXIiLCJibG9jayIsImVudiIsInNjYW5FbnRyeVBvaW50IiwibWV0YSIsInN0YXRlbWVudHMiLCJzeW1ib2xzIiwiaGFzRXZhbCIsInNjYW5CbG9jayIsInBhcmFtZXRlcnMiLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJjb21wb25lbnROYW1lIiwic3ltYm9sVGFibGUiLCJuZXdTdGF0ZW1lbnRzIiwidG9wbGV2ZWwiLCJpblRvcExldmVsIiwiaSIsImxlbmd0aCIsInN0YXRlbWVudCIsIlN0YXRlbWVudHMiLCJpc0NvbXBvbmVudCIsInRhZ05hbWUiLCJoYXNDb21wb25lbnREZWZpbml0aW9uIiwidGVtcGxhdGVNZXRhIiwidW5kZWZpbmVkIiwicHVzaCIsIk9wZW5FbGVtZW50IiwiZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQiLCJhZGRGYWxsYmFjayIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzTW9kaWZpZXIiLCJFcnJvciIsIkNsaWVudFNpZGVTdGF0ZW1lbnQiLCJEaWRSZW5kZXJMYXlvdXQiLCJidWZmZXIiLCJGbHVzaEVsZW1lbnQiLCJDbG9zZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsIk9wZW5Db21wb25lbnRFbGVtZW50IiwiRGlkQ3JlYXRlRWxlbWVudCIsIllpZWxkIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZUFBNUI7QUFDQSxPQUFPLEtBQUtDLFVBQVosTUFBNEIsc0JBQTVCO0FBQ0EsT0FBTyxLQUFLQyxVQUFaLE1BQTRCLHNCQUE1QjtBQUNBLE9BQU9DLGtCQUFQLE1BQStCLDhCQUEvQjtBQUNBLFNBQVNDLFdBQVQsUUFBNEIsb0JBQTVCO0FBQ0EsSUFBSUMsTUFBTUosV0FBV0ksR0FBckI7O0lBQ3FCQyxPO0FBQ2pCLHFCQUFZQyxLQUFaLEVBQW1CQyxHQUFuQixFQUF3QjtBQUFBOztBQUNwQixhQUFLRCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDSDs7c0JBQ0RDLGMsMkJBQWVDLEksRUFBTTtBQUFBLFlBQ1hILEtBRFcsR0FDRCxJQURDLENBQ1hBLEtBRFc7QUFBQSxZQUVYSSxVQUZXLEdBRXNCSixLQUZ0QixDQUVYSSxVQUZXO0FBQUEsWUFFQ0MsT0FGRCxHQUVzQkwsS0FGdEIsQ0FFQ0ssT0FGRDtBQUFBLFlBRVVDLE9BRlYsR0FFc0JOLEtBRnRCLENBRVVNLE9BRlY7O0FBR2pCLGVBQU8sSUFBSVYsa0JBQUosQ0FBdUJRLFVBQXZCLEVBQW1DLEVBQUVELFVBQUYsRUFBUUUsZ0JBQVIsRUFBaUJDLGdCQUFqQixFQUFuQyxDQUFQO0FBQ0gsSzs7c0JBQ0RDLFMsc0JBQVVKLEksRUFBTTtBQUFBLFlBQ05ILEtBRE0sR0FDSSxJQURKLENBQ05BLEtBRE07QUFBQSxZQUVOSSxVQUZNLEdBRVNKLEtBRlQsQ0FFTkksVUFGTTs7QUFHWixlQUFPLElBQUlSLGtCQUFKLENBQXVCUSxVQUF2QixFQUFtQyxFQUFFRCxVQUFGLEVBQVFLLFlBQVlmLFdBQXBCLEVBQW5DLENBQVA7QUFDSCxLOztzQkFDRGdCLFUsdUJBQVdOLEksRUFBTU8sSyxFQUFPQyxhLEVBQWU7QUFBQSxZQUM3QlgsS0FENkIsR0FDbkIsSUFEbUIsQ0FDN0JBLEtBRDZCO0FBQUEsWUFFN0JJLFVBRjZCLEdBRUlKLEtBRkosQ0FFN0JJLFVBRjZCO0FBQUEsWUFFakJDLE9BRmlCLEdBRUlMLEtBRkosQ0FFakJLLE9BRmlCO0FBQUEsWUFFUkMsT0FGUSxHQUVJTixLQUZKLENBRVJNLE9BRlE7O0FBR25DLFlBQUlNLGNBQWMsRUFBRVQsVUFBRixFQUFRRyxnQkFBUixFQUFpQkQsZ0JBQWpCLEVBQWxCO0FBQ0EsWUFBSVEsZ0JBQWdCLEVBQXBCO0FBQ0EsWUFBSUMsaUJBQUo7QUFDQSxZQUFJQyxhQUFhLEtBQWpCO0FBQ0EsYUFBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlaLFdBQVdhLE1BQS9CLEVBQXVDRCxHQUF2QyxFQUE0QztBQUN4QyxnQkFBSUUsWUFBWWQsV0FBV1ksQ0FBWCxDQUFoQjtBQUNBLGdCQUFJdEIsV0FBV3lCLFVBQVgsQ0FBc0JDLFdBQXRCLENBQWtDRixTQUFsQyxDQUFKLEVBQWtEO0FBQzlDLG9CQUFJRyxVQUFVSCxVQUFVLENBQVYsQ0FBZDtBQUNBLG9CQUFJLENBQUMsS0FBS2pCLEdBQUwsQ0FBU3FCLHNCQUFULENBQWdDRCxPQUFoQyxFQUF5Q2xCLEtBQUtvQixZQUE5QyxDQUFMLEVBQWtFO0FBQzlELHdCQUFJVCxhQUFhVSxTQUFqQixFQUE0QjtBQUN4Qlgsc0NBQWNZLElBQWQsQ0FBbUIsQ0FBQzNCLElBQUk0QixXQUFMLEVBQWtCTCxPQUFsQixDQUFuQjtBQUNILHFCQUZELE1BRU87QUFDSFAsbUNBQVdPLE9BQVg7QUFDQU0sZ0RBQXdCTixPQUF4QixFQUFpQ2hCLE9BQWpDLEVBQTBDSyxLQUExQyxFQUFpREcsYUFBakQ7QUFDSDtBQUNEZSxnQ0FBWVYsU0FBWixFQUF1QkwsYUFBdkI7QUFDSCxpQkFSRCxNQVFPO0FBQ0gsd0JBQUlDLGFBQWFVLFNBQWIsSUFBMEJILFlBQVlWLGFBQTFDLEVBQXlEO0FBQ3JERyxtQ0FBV08sT0FBWDtBQUNBTSxnREFBd0JOLE9BQXhCLEVBQWlDaEIsT0FBakMsRUFBMENLLEtBQTFDLEVBQWlERyxhQUFqRDtBQUNBZSxvQ0FBWVYsU0FBWixFQUF1QkwsYUFBdkI7QUFDSCxxQkFKRCxNQUlPO0FBQ0hBLHNDQUFjWSxJQUFkLENBQW1CUCxTQUFuQjtBQUNIO0FBQ0o7QUFDSixhQW5CRCxNQW1CTztBQUNILG9CQUFJSixhQUFhVSxTQUFiLElBQTBCOUIsV0FBV3lCLFVBQVgsQ0FBc0JVLGFBQXRCLENBQW9DWCxTQUFwQyxDQUE5QixFQUE4RTtBQUMxRUosK0JBQVdJLFVBQVUsQ0FBVixDQUFYO0FBQ0FILGlDQUFhLElBQWI7QUFDQVksNENBQXdCYixRQUF4QixFQUFrQ1QsT0FBbEMsRUFBMkNLLEtBQTNDLEVBQWtERyxhQUFsRDtBQUNILGlCQUpELE1BSU87QUFDSCx3QkFBSUUsVUFBSixFQUFnQjtBQUNaLDRCQUFJckIsV0FBV3lCLFVBQVgsQ0FBc0JXLGNBQXRCLENBQXFDWixTQUFyQyxDQUFKLEVBQXFEO0FBQ2pESCx5Q0FBYSxLQUFiO0FBQ0gseUJBRkQsTUFFTyxJQUFJckIsV0FBV3lCLFVBQVgsQ0FBc0JZLFVBQXRCLENBQWlDYixTQUFqQyxDQUFKLEVBQWlEO0FBQ3BELGtDQUFNYywyQkFBeUJkLFVBQVUsQ0FBVixDQUF6Qix1Q0FBdUVQLGFBQXZFLHFEQUFOO0FBQ0g7QUFDSjtBQUNERSxrQ0FBY1ksSUFBZCxDQUFtQlAsU0FBbkI7QUFDSDtBQUNKO0FBQ0o7QUFDREwsc0JBQWNZLElBQWQsQ0FBbUIsQ0FBQzNCLElBQUltQyxtQkFBTCxFQUEwQnRDLFdBQVdHLEdBQVgsQ0FBZW9DLGVBQXpDLENBQW5CO0FBQ0EsZUFBTyxJQUFJdEMsa0JBQUosQ0FBdUJpQixhQUF2QixFQUFzQ0QsV0FBdEMsQ0FBUDtBQUNILEs7Ozs7O2VBOURnQmIsTzs7QUFnRXJCLFNBQVM2QixXQUFULENBQXFCVixTQUFyQixFQUFnQ2lCLE1BQWhDLEVBQXdDO0FBQUEsUUFDNUJ6QixLQUQ0QixHQUNYUSxTQURXO0FBQUEsUUFDcEJsQixLQURvQixHQUNYa0IsU0FEVzs7QUFFcEMsU0FBSyxJQUFJRixJQUFJLENBQWIsRUFBZ0JBLElBQUlOLE1BQU1PLE1BQTFCLEVBQWtDRCxHQUFsQyxFQUF1QztBQUNuQ21CLGVBQU9WLElBQVAsQ0FBWWYsTUFBTU0sQ0FBTixDQUFaO0FBQ0g7QUFDRG1CLFdBQU9WLElBQVAsQ0FBWSxDQUFDM0IsSUFBSXNDLFlBQUwsQ0FBWjtBQUNBLFFBQUlwQyxLQUFKLEVBQVc7QUFBQSxZQUNESSxVQURDLEdBQ2NKLEtBRGQsQ0FDREksVUFEQzs7QUFFUCxhQUFLLElBQUlZLEtBQUksQ0FBYixFQUFnQkEsS0FBSVosV0FBV2EsTUFBL0IsRUFBdUNELElBQXZDLEVBQTRDO0FBQ3hDbUIsbUJBQU9WLElBQVAsQ0FBWXJCLFdBQVdZLEVBQVgsQ0FBWjtBQUNIO0FBQ0o7QUFDRG1CLFdBQU9WLElBQVAsQ0FBWSxDQUFDM0IsSUFBSXVDLFlBQUwsQ0FBWjtBQUNIO0FBQ0QsU0FBU1YsdUJBQVQsQ0FBaUNOLE9BQWpDLEVBQTBDaEIsT0FBMUMsRUFBbURLLEtBQW5ELEVBQTBEeUIsTUFBMUQsRUFBa0U7QUFDOUQsUUFBSUcsY0FBY2pDLFFBQVFvQixJQUFSLENBQWE1QixXQUFiLENBQWxCO0FBQ0FzQyxXQUFPVixJQUFQLENBQVksQ0FBQzNCLElBQUltQyxtQkFBTCxFQUEwQnRDLFdBQVdHLEdBQVgsQ0FBZXlDLG9CQUF6QyxFQUErRGxCLE9BQS9ELENBQVo7QUFDQWMsV0FBT1YsSUFBUCxDQUFZLENBQUMzQixJQUFJbUMsbUJBQUwsRUFBMEJ0QyxXQUFXRyxHQUFYLENBQWUwQyxnQkFBekMsQ0FBWjtBQUNBTCxXQUFPVixJQUFQLENBQVksQ0FBQzNCLElBQUkyQyxLQUFMLEVBQVlILFdBQVosRUFBeUI3QyxXQUF6QixDQUFaO0FBQ0EwQyxXQUFPVixJQUFQLGVBQWVmLEtBQWY7QUFDSCIsImZpbGUiOiJsaWIvc2Nhbm5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCAqIGFzIENsaWVudFNpZGUgZnJvbSAnLi9zeW50YXgvY2xpZW50LXNpZGUnO1xuaW1wb3J0IENvbXBpbGFibGVUZW1wbGF0ZSBmcm9tICcuL3N5bnRheC9jb21waWxhYmxlLXRlbXBsYXRlJztcbmltcG9ydCB7IEFUVFJTX0JMT0NLIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbnZhciBPcHMgPSBXaXJlRm9ybWF0Lk9wcztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYW5uZXIge1xuICAgIGNvbnN0cnVjdG9yKGJsb2NrLCBlbnYpIHtcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2NrO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICB9XG4gICAgc2NhbkVudHJ5UG9pbnQobWV0YSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgbWV0YSwgc3ltYm9scywgaGFzRXZhbCB9KTtcbiAgICB9XG4gICAgc2NhbkJsb2NrKG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMgfSA9IGJsb2NrO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IG1ldGEsIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0pO1xuICAgIH1cbiAgICBzY2FuTGF5b3V0KG1ldGEsIGF0dHJzLCBjb21wb25lbnROYW1lKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzLCBzeW1ib2xzLCBoYXNFdmFsIH0gPSBibG9jaztcbiAgICAgICAgbGV0IHN5bWJvbFRhYmxlID0geyBtZXRhLCBoYXNFdmFsLCBzeW1ib2xzIH07XG4gICAgICAgIGxldCBuZXdTdGF0ZW1lbnRzID0gW107XG4gICAgICAgIGxldCB0b3BsZXZlbDtcbiAgICAgICAgbGV0IGluVG9wTGV2ZWwgPSBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgc3RhdGVtZW50ID0gc3RhdGVtZW50c1tpXTtcbiAgICAgICAgICAgIGlmIChXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNDb21wb25lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGxldCB0YWdOYW1lID0gc3RhdGVtZW50WzFdO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbnYuaGFzQ29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lLCBtZXRhLnRlbXBsYXRlTWV0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChbT3BzLk9wZW5FbGVtZW50LCB0YWdOYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHRhZ05hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWRkRmFsbGJhY2soc3RhdGVtZW50LCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9wbGV2ZWwgPT09IHVuZGVmaW5lZCAmJiB0YWdOYW1lID09PSBjb21wb25lbnROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHRhZ05hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCA9PT0gdW5kZWZpbmVkICYmIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc09wZW5FbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSBzdGF0ZW1lbnRbMV07XG4gICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0b3BsZXZlbCwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpblRvcExldmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgRm91bmQgbW9kaWZpZXIgXCIke3N0YXRlbWVudFsxXX1cIiBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnQgb2YgXCIke2NvbXBvbmVudE5hbWV9XCJcXC4gTW9kaWZpZXJzIGNhbm5vdCBiZSBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKG5ld1N0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIGJ1ZmZlcikge1xuICAgIGxldCBbLCwgYXR0cnMsLCBibG9ja10gPSBzdGF0ZW1lbnQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBidWZmZXIucHVzaChhdHRyc1tpXSk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMgfSA9IGJsb2NrO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKHN0YXRlbWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG59XG5mdW5jdGlvbiBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgYnVmZmVyKSB7XG4gICAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCB0YWdOYW1lXSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5ZaWVsZCwgYXR0cnNTeW1ib2wsIEVNUFRZX0FSUkFZXSk7XG4gICAgYnVmZmVyLnB1c2goLi4uYXR0cnMpO1xufSJdfQ==

@@ -9,5 +9,5 @@ import { Bounds } from '../bounds';

export declare class DOMOperations {
protected document: Document;
protected document: Simple.Document;
protected uselessElement: HTMLElement;
constructor(document: Document);
constructor(document: Simple.Document);
protected setupUselessElement(): void;

@@ -17,3 +17,3 @@ createElement(tag: string, context?: Simple.Element): Simple.Element;

insertHTMLBefore(_parent: Simple.Element, nextSibling: Simple.Node, html: string): Bounds;
createTextNode(text: string): Text;
createTextNode(text: string): Simple.Text;
createComment(data: string): Simple.Comment;

@@ -20,0 +20,0 @@ }

{
"name": "@glimmer/runtime",
"version": "0.24.0-beta.3",
"version": "0.24.0-beta.4",
"description": "Minimal runtime needed to render Glimmer templates",

@@ -8,8 +8,8 @@ "repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/runtime",

"dependencies": {
"@glimmer/util": "^0.24.0-beta.3",
"@glimmer/reference": "^0.24.0-beta.3",
"@glimmer/object": "^0.24.0-beta.3",
"@glimmer/object-reference": "^0.24.0-beta.3",
"@glimmer/wire-format": "^0.24.0-beta.3",
"@glimmer/interfaces": "^0.24.0-beta.3"
"@glimmer/util": "^0.24.0-beta.4",
"@glimmer/reference": "^0.24.0-beta.4",
"@glimmer/object": "^0.24.0-beta.4",
"@glimmer/object-reference": "^0.24.0-beta.4",
"@glimmer/wire-format": "^0.24.0-beta.4",
"@glimmer/interfaces": "^0.24.0-beta.4"
},

@@ -16,0 +16,0 @@ "devDependencies": {

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