@esfaenza/es-charts 16.2.26 → 17.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,13 +79,13 @@ export class ChartDispatcher {
79
79
  if (this.logs)
80
80
  console.log("@esfaenza/es-charts: " + text);
81
81
  }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
83
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher }); }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartDispatcher }); }
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartDispatcher, decorators: [{
86
86
  type: Injectable
87
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
87
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
88
88
  type: Inject,
89
89
  args: [ESC_DEBUG_MODE]
90
- }] }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUE0QyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJ6RDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtvQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUscUJBQStCO1FBQ3pELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsTUFBTSw0Q0FBNEMsR0FBRyxJQUFJLEdBQUcsZ0VBQWdFLENBQUM7UUFFakksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnRUFBZ0UsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsSUFBWTtRQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUNmO1lBQ0ksdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsNkNBQTZDLEdBQUcsSUFBSSxHQUFHLHdDQUF3QyxDQUFDLENBQUM7WUFDMUcsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlO1FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwREFBMEQsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEYsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDMUI7O2dCQUVHLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUk7WUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBbkZRLGVBQWUsa0JBZUosY0FBYzttSEFmekIsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRVNDX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWkgZ3JhZmljaSB1dGlsaXp6YW5kbyB1bmEgY29kYSBwZXIgcGVybWV0dGVyZSBhZCBvZ25pIGdyYWZpY28gZGkgYXZlcmUgdGVtaSBlIGxvY2FsaXp6YXppb25lIGN1c3RvbVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hhcnREaXNwYXRjaGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvZGEgZGkgaW5pemlhbGl6emF6aW9uaSBhbmNvcmEgZGEgZXNlZ3VpcmUuIFF1YW5kbyBxdWVzdGEgw6ggdnVvdGEgc2lnbmlmaWNhIGNoZSBuZXNzdW5vIHN0YSBjcmVhbmRvIGdyYWZpY2lcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBJbml0aWFsaXphdGlvbnM6IHsgbmFtZTogc3RyaW5nLCBmdW5jdGlvbjogYW55IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGEgZGVpIGdyYWZpY2kgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWRHcmFwaHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBncmFmaWNvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBpIGdyYWZpY2lcclxuICAgICAqIHByZWNlZGVudGVtZW50ZSByZWdpc3RhdGkgbm9uIGhhbm5vIGZpbml0byBsYSBmYXNlIGRpIGluaXppYWxpenphemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIEZ1bnppb25lIGNoZSBmaXNpY2FtZW50ZSBkb3Zyw6Agb2NjdXBhcnNpIGRlbGxhIGNyZWF6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIobmFtZTogc3RyaW5nLCBjaGFydENyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIGNoYXJ0ICdcIiArIG5hbWUgKyBcIicuIE1ha2Ugc3VyZSB0aGUgJ25hbWUnIHByb3BlcnRpZXMgb2YgeW91ciBjaGFydHMgYXJlIHVuaXZvcXVlXCI7XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogUmVnaXN0ZXJpbmcgY2hhcnQgY3JlYXRpb24gZnVuY3Rpb24gZXhlY3V0aW9uIGZvciBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6YXRpb25zLnB1c2goeyBuYW1lOiBuYW1lLCBmdW5jdGlvbjogY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLkluaXRpYWxpemF0aW9ucy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEluaXRpYWwgZHJhaW4gc3RhcnRlZFwiKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFpbkluaXRRdWV1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXJlZ2lzdHJhIHVuIGdyYWZpY28gcHJlc2VudGUuIENoaWFtYXRhIGdlbmVyYWxtZW50ZSBhbCBkaXNwb3NlIGRlbCBncmFmaWNvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgZGVyZWdpc3RyYXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXJlZ2lzdGVyR3JhcGgobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5Jbml0aWFsaXplZEdyYXBocy5pbmRleE9mKG5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vUXVlc3RvIHN1Y2NlZGUgcXVhbmRvIHNpIGNlcmNhIGRpIGRpc3RydWdnZXJlIGlsIGdyYWZpY28gbWVudHJlIHN0YSB2ZW5lbmRvIGdyYWZpY2F0b1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IFJlZ2lzdHJhdGlvbiBtaXNzaW5nIGZvciBjaGFydCBcIiArIG5hbWUgKyBcIiBpdCB3YXMgcHJvYmFibHkgZGVzdHJveWVkIGR1cmluZyBsb2FkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IENoYXJ0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlaSBncmFmaWNpIGZpbmNow6kgcHJlc2VudGkgXHJcbiAgICAgKiBpbiBtb2RvIGNoZSBuZXNzdW4gZ3JhZmljbyBwb3NzYSBlc3NlcmUgaW5pemlhbGl6emF0byBjb250ZW1wb3JhbmVhbWVudGUgYWQgdW4gYWx0cm8uXHJcbiAgICAgKiBcclxuICAgICAqIFF1ZXN0byDDqCBpbCBwdW50byBjaGlhdmUgY2hlIHBlcm1ldHRlIGRpIGF2ZXJlIHBlciBvZ25pIGdyYWZpY28gdGVtaSBlIGxvY2FsZSBkaWZmZXJlbnRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZHJhaW5Jbml0UXVldWVzKCkge1xyXG4gICAgICAgIGxldCB0b0V4ZWN1dGUgPSB0aGlzLkluaXRpYWxpemF0aW9uc1swXTtcclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgY2hhcnQgXCIgKyB0b0V4ZWN1dGUubmFtZSk7XHJcblxyXG4gICAgICAgIHRvRXhlY3V0ZS5mdW5jdGlvbigpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IGluaXRpYWxpemF0aW9uIGZvciBjaGFydCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZEdyYXBocy5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICAgIH1cclxufSJdfQ==
90
+ }] }] });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUE0QyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJ6RDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtvQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUscUJBQStCO1FBQ3pELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsTUFBTSw0Q0FBNEMsR0FBRyxJQUFJLEdBQUcsZ0VBQWdFLENBQUM7UUFFakksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnRUFBZ0UsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLElBQVk7UUFDL0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFDZixDQUFDO1lBQ0csdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsNkNBQTZDLEdBQUcsSUFBSSxHQUFHLHdDQUF3QyxDQUFDLENBQUM7WUFDMUcsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGVBQWU7UUFDbkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLDBEQUEwRCxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RixTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsc0RBQXNELENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUM7O2dCQUVHLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUk7WUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBbkZRLGVBQWUsa0JBZUosY0FBYzttSEFmekIsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRVNDX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWkgZ3JhZmljaSB1dGlsaXp6YW5kbyB1bmEgY29kYSBwZXIgcGVybWV0dGVyZSBhZCBvZ25pIGdyYWZpY28gZGkgYXZlcmUgdGVtaSBlIGxvY2FsaXp6YXppb25lIGN1c3RvbVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hhcnREaXNwYXRjaGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvZGEgZGkgaW5pemlhbGl6emF6aW9uaSBhbmNvcmEgZGEgZXNlZ3VpcmUuIFF1YW5kbyBxdWVzdGEgw6ggdnVvdGEgc2lnbmlmaWNhIGNoZSBuZXNzdW5vIHN0YSBjcmVhbmRvIGdyYWZpY2lcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBJbml0aWFsaXphdGlvbnM6IHsgbmFtZTogc3RyaW5nLCBmdW5jdGlvbjogYW55IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGEgZGVpIGdyYWZpY2kgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWRHcmFwaHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBncmFmaWNvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBpIGdyYWZpY2lcclxuICAgICAqIHByZWNlZGVudGVtZW50ZSByZWdpc3RhdGkgbm9uIGhhbm5vIGZpbml0byBsYSBmYXNlIGRpIGluaXppYWxpenphemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIEZ1bnppb25lIGNoZSBmaXNpY2FtZW50ZSBkb3Zyw6Agb2NjdXBhcnNpIGRlbGxhIGNyZWF6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIobmFtZTogc3RyaW5nLCBjaGFydENyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIGNoYXJ0ICdcIiArIG5hbWUgKyBcIicuIE1ha2Ugc3VyZSB0aGUgJ25hbWUnIHByb3BlcnRpZXMgb2YgeW91ciBjaGFydHMgYXJlIHVuaXZvcXVlXCI7XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogUmVnaXN0ZXJpbmcgY2hhcnQgY3JlYXRpb24gZnVuY3Rpb24gZXhlY3V0aW9uIGZvciBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6YXRpb25zLnB1c2goeyBuYW1lOiBuYW1lLCBmdW5jdGlvbjogY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLkluaXRpYWxpemF0aW9ucy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEluaXRpYWwgZHJhaW4gc3RhcnRlZFwiKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFpbkluaXRRdWV1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXJlZ2lzdHJhIHVuIGdyYWZpY28gcHJlc2VudGUuIENoaWFtYXRhIGdlbmVyYWxtZW50ZSBhbCBkaXNwb3NlIGRlbCBncmFmaWNvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgZGVyZWdpc3RyYXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXJlZ2lzdGVyR3JhcGgobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5Jbml0aWFsaXplZEdyYXBocy5pbmRleE9mKG5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vUXVlc3RvIHN1Y2NlZGUgcXVhbmRvIHNpIGNlcmNhIGRpIGRpc3RydWdnZXJlIGlsIGdyYWZpY28gbWVudHJlIHN0YSB2ZW5lbmRvIGdyYWZpY2F0b1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IFJlZ2lzdHJhdGlvbiBtaXNzaW5nIGZvciBjaGFydCBcIiArIG5hbWUgKyBcIiBpdCB3YXMgcHJvYmFibHkgZGVzdHJveWVkIGR1cmluZyBsb2FkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IENoYXJ0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlaSBncmFmaWNpIGZpbmNow6kgcHJlc2VudGkgXHJcbiAgICAgKiBpbiBtb2RvIGNoZSBuZXNzdW4gZ3JhZmljbyBwb3NzYSBlc3NlcmUgaW5pemlhbGl6emF0byBjb250ZW1wb3JhbmVhbWVudGUgYWQgdW4gYWx0cm8uXHJcbiAgICAgKiBcclxuICAgICAqIFF1ZXN0byDDqCBpbCBwdW50byBjaGlhdmUgY2hlIHBlcm1ldHRlIGRpIGF2ZXJlIHBlciBvZ25pIGdyYWZpY28gdGVtaSBlIGxvY2FsZSBkaWZmZXJlbnRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZHJhaW5Jbml0UXVldWVzKCkge1xyXG4gICAgICAgIGxldCB0b0V4ZWN1dGUgPSB0aGlzLkluaXRpYWxpemF0aW9uc1swXTtcclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgY2hhcnQgXCIgKyB0b0V4ZWN1dGUubmFtZSk7XHJcblxyXG4gICAgICAgIHRvRXhlY3V0ZS5mdW5jdGlvbigpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IGluaXRpYWxpemF0aW9uIGZvciBjaGFydCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZEdyYXBocy5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICAgIH1cclxufSJdfQ==
@@ -200,13 +200,13 @@ export class ChartLoader {
200
200
  if (this.logs)
201
201
  console.log("@esfaenza/es-charts: " + text);
202
202
  }
203
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartLoader, deps: [{ token: ESC_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
204
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartLoader }); }
203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartLoader, deps: [{ token: ESC_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
204
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartLoader }); }
205
205
  }
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartLoader, decorators: [{
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartLoader, decorators: [{
207
207
  type: Injectable
208
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
208
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
209
209
  type: Inject,
210
210
  args: [ESC_DEBUG_MODE]
211
- }] }]; } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnRMb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9tb2RlbHMvY29yZS9DaGFydExvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRzlDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFzQnRCOztPQUVHO0lBQ0gsWUFBNEMsSUFBYTtRQUFiLFNBQUksR0FBSixJQUFJLENBQVM7UUF2QnpEOztXQUVHO1FBQ0ssd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRTdDOztXQUVHO1FBQ0ssb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFFckM7O1dBRUc7UUFDSyxlQUFVLEdBQU8sRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ0ssc0JBQWlCLEdBQU8sRUFBRSxDQUFDO0lBSzBCLENBQUM7SUFFOUQ7Ozs7O09BS0c7SUFDSSxlQUFlLENBQUMsVUFBZTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7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QUNILEdBQUcsQ0FBQyxJQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzsrR0F2TVUsV0FBVyxrQkF5QkYsY0FBYzttSEF6QnZCLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQTBCSSxNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUaGVtZXMgfSBmcm9tICcuL0NoYXJ0VGhlbWVzJ1xyXG5pbXBvcnQgeyBFU0NfREVCVUdfTU9ERSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IEVzQ2hhcnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZXMtY2hhcnRzLm1vZHVsZSc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGRpIHN1cHBvcnRvIGFsIGNhcmljYW1lbnRvIGRpbmFtaWNvIGRlaSB2YXJpIHBlenppIGRpIGFtY2hhcnRzIGNoZSBtaSBzZXJ2b25vIHBlciBpbCBncmFmaWNvICh0ZW1pLCBsb2NhbGksIGVjYy4uLilcclxuICogXHJcbiAqIEVzc2VuemlhbG1lbnRlIG9nbmkgdm9sdGEgY2hlIHZpZW5lIGNyZWF0byB1biBncmFmaWNvLCBxdWVzdG8gYWNxdWlzaXNjZSBpbCB0ZW1hIGUgaWwgbG9jYWxlIGFwcGxpY2F0byBJTiBRVUVMIE1PTUVOVE8sXHJcbiAqIHF1ZXN0byBzaWduaWZpY2EgY2hlIHBlciBjcmVhcmUgZHVlIGdyYWZpY2kgY29uIHRlbWkgZGl2ZXJzaSBiaXNvZ25hIGZhcmU6XHJcbiAqIFxyXG4gKiAxKSBDYXJpY2FtZW50byB0ZW1hIDFcclxuICogXHJcbiAqIDIpIENyZWF6aW9uZSBncmFmaWNvIDFcclxuICogXHJcbiAqIDMpIFNjYXJpY2FtZW50byB0ZW1hIDFcclxuICogXHJcbiAqIDMpIENhcmljYW1lbnRvIHRlbWEgMlxyXG4gKiBcclxuICogNCkgQ3JlYXppb25lIGdyYWZpY28gMlxyXG4gKiBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXJ0TG9hZGVyIHtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGF0dHVhbG1lbnRlIGhvIGxlIGFuaW1hemlvbmkgY2FyaWNhdGUgaW4gbW9kbyBkYSBub24gcmljYXJpY2FybGUgaW51dGlsbWVudGVcclxuICAgKi9cclxuICBwcml2YXRlIEFuaW1hdGlvbnNBcmVMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIGwndWx0aW1vIHRlbWEgY2FyaWNhdG8gaW4gbW9kbyBkYSBub24gcmljYXJpY2FybG8gaW51dGlsbWVudGUgcXVhbG9yYSBpbCBwcm9zc2ltbyBncmFmaWNvIGRhIGNyZWFyZSByaWNoaWVkYSBsbyBzdGVzc28gdGVtYVxyXG4gICAqL1xyXG4gIHByaXZhdGUgTGFzdExvYWRlZFRoZW1lOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBDYWNoZSBkZWkgdGVtaSAobW9kdWxpIGNhcmljYXRpIGRpbmFtaWNhbWVudGUpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0aGVtZUNhY2hlOiB7fSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBDYWNoZSBkZWxsZSBsb2NhbGl6emF6aW9uaSAobW9kdWxpIGNhcmljYXRpIGRpbmFtaWNhbWVudGUpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2NhbGl6YXRpb25DYWNoZToge30gPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGxpY2EgaWwgdGVtYSBjb24gbGUgYW5pbWF6aW9uaSBhbGwnaXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYXJ0c0NvcmUgSXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlBbmltYXRpb25zKGNoYXJ0c0NvcmU6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAoIXRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbXBvcnRJZk5lZWRlZCgndGhlbWVzJywgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nKFwiQ09SRTogQXBwbHlpbmcgdGhlbWUgXCIgKyBDaGFydFRoZW1lcy5hbmltYXRlZCk7XHJcbiAgICAgICAgY2hhcnRzQ29yZS51c2VUaGVtZSh0aGlzLnRoZW1lQ2FjaGVbQ2hhcnRUaGVtZXMuYW5pbWF0ZWRdKTtcclxuICAgICAgICB0aGlzLkFuaW1hdGlvbnNBcmVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IHRoZW1lIGFscmVhZHkgYXBwbHllZCBcIiArIENoYXJ0VGhlbWVzLmFuaW1hdGVkKTtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZS1hcHBsaWNhIGlsIHRlbWEgY29uIGxlIGFuaW1hemlvbmkgZGFsbCdpc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge09iamVjdH0gY2hhcnRzQ29yZSBJc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjaGUgaWRlbnRpZmljYSBsYSBmaW5lIGRlbGxvIHNjYXJpY29cclxuICAgKi9cclxuICB1bmFwcGx5QW5pbWF0aW9ucyhjaGFydHNDb3JlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCkge1xyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IEFuaW1hdGlvbnMgaW4gdXNlLCB1bmFwcGx5aW5nIHRoZW1lIFwiICsgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQpO1xyXG4gICAgICBjaGFydHNDb3JlLnVudXNlVGhlbWUodGhpcy50aGVtZUNhY2hlW0NoYXJ0VGhlbWVzLmFuaW1hdGVkXSk7XHJcbiAgICAgIHRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IEFuaW1hdGlvbnMgYWxyZWFkeSB1bnVzZWQsIG5vIG5lZWQgdG8gdW5hcHBseSB0aGVtXCIpO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWNhIGlsIHRlbWEgc3BlY2lmaWNhdG8gYWxsJ2lzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjaGFydHNDb3JlIElzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIEBwYXJhbSB7J3NwaXJpdGVkYXdheScgfCAnbW9vbnJpc2VraW5nZG9tJyB8ICdmcm96ZW4nIHwgJ2RhcmsnIHwgJ2tlbGx5JyB8ICdtYXRlcmlhbCcgfCAnZGF0YXZpeicgfCAnbm9uZSd9IHRoZW1lIFRlbWEgZGEgYXBwbGljYXJlXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBhcHBseVRoZW1lKGNoYXJ0c0NvcmU6IGFueSwgdGhlbWU6ICdzcGlyaXRlZGF3YXknIHwgJ21vb25yaXNla2luZ2RvbScgfCAnZnJvemVuJyB8ICdkYXJrJyB8ICdrZWxseScgfCAnbWF0ZXJpYWwnIHwgJ2RhdGF2aXonIHwgJ25vbmUnKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIFVsdGltbyB0ZW1hIGFwcGxpY2F0byDDqCBsbyBzdGVzc28gY2hlIG1pIMOoIHN0YXRvIHJpY2hpZXN0byBkaSBhcHBsaWNhcmUgLS0+IE5PLU9QXHJcbiAgICBpZiAodGhpcy5MYXN0TG9hZGVkVGhlbWUgPT0gdGhlbWUpIHtcclxuICAgICAgdGhpcy5sb2coXCJDT1JFOiB0aGVtZSBhbHJlYWR5IGFwcGxpZWQgXCIgKyB0aGVtZSk7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNjYXJpY28gaWwgdGVtYSBwcmVjZWRlbnRlIGEgcHJlc2NpbmRlcmUsIG9ybWFpIG5vbiBtaSBzZXJ2ZSBwacO5XHJcbiAgICB0aGlzLnVuYXBwbHlQcmV2aW91c1RoZW1lKGNoYXJ0c0NvcmUpXHJcblxyXG4gICAgLy8gSWwgdGVtYSDDqCBpbCBub25lIC0tPiByZWdpc3RybyBsYSBjb3NhIGUgYmFzdGEsIGlsIHRlbWEgcHJlY2VkZW50ZSDDqCBzdGF0byByaW1vc3NvIHN1Yml0byBxdWkgc29wcmEgXlxyXG4gICAgaWYgKHRoZW1lID09IENoYXJ0VGhlbWVzLm5vbmUpIHtcclxuICAgICAgdGhpcy5MYXN0TG9hZGVkVGhlbWUgPSBDaGFydFRoZW1lcy5ub25lO1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgcmVzb2x2ZSh0cnVlKSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbCB0ZW1hIMOoIGRpdmVyc28gZGFsIHByZWNlZGVudGUgZSBub24gw6ggaWwgdGVtYSB2dW90byAtLT4gSW1wb3J0byBpbCB0ZW1hIHNwZWNpZmljYXRvIHNlIG5vbiBwcmVzZW50ZSBpbiBtZW1vcmlhIGUgbG8gYXBwbGljbyBhbCBncmFmaWNvIGF0dHVhbGVcclxuICAgIHJldHVybiB0aGlzLmltcG9ydElmTmVlZGVkKCd0aGVtZXMnLCB0aGVtZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogQXBwbHlpbmcgdGhlbWUgXCIgKyB0aGVtZSk7XHJcbiAgICAgIGNoYXJ0c0NvcmUudXNlVGhlbWUodGhpcy50aGVtZUNhY2hlW3RoZW1lXSk7XHJcbiAgICAgIHRoaXMuTGFzdExvYWRlZFRoZW1lID0gdGhlbWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlLWFwcGxpY2EgaWwgdGVtYSBwcmVjZWRlbnRlIGRhbGwnaXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYXJ0c0NvcmUgSXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICovXHJcbiAgdW5hcHBseVByZXZpb3VzVGhlbWUoY2hhcnRzQ29yZTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuTGFzdExvYWRlZFRoZW1lIHx8IHRoaXMuTGFzdExvYWRlZFRoZW1lID09IENoYXJ0VGhlbWVzLm5vbmUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxvZyhcIkNPUkU6IFVuYXBwbHlpbmcgcHJldmlvdXNseSB1c2VkIHRoZW1lIFwiICsgdGhpcy5MYXN0TG9hZGVkVGhlbWUpO1xyXG4gICAgY2hhcnRzQ29yZS51bnVzZVRoZW1lKHRoaXMudGhlbWVDYWNoZVt0aGlzLkxhc3RMb2FkZWRUaGVtZV0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWNhIGlsIGxvY2FsZSBzcGVjaWZpY2F0byBhbGwnaXN0YW56YSBzcGVjaWZpY2EgZGVsIGdyYWZpY29cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FtQ2hhcnRzLkNoYXJ0fSBjaGFydCBJc3RhbnphIHNwZWNpZmljYSBkZWwgZ3JhZmljbyBhIGN1aSBhcHBsaWNhcmUgaWwgbG9jYWxlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSBMb2NhbGUgZGEgYXBwbGljYXJlXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBhcHBseUxvY2FsZShjaGFydDogYW55LCBsb2NhbGU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbXBvcnRJZk5lZWRlZCgnbGFuZycsIGxvY2FsZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyBjaGFydC5odG1sQ29udGFpbmVyLmlkICsgXCI6IGFwcGx5aW5nIGxvY2FsZSBcIiArIGxvY2FsZSk7XHJcbiAgICAgIGNoYXJ0Lmxhbmd1YWdlLmxvY2FsZSA9IHRoaXMubG9jYWxpemF0aW9uQ2FjaGVbbG9jYWxlXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVybWV0dGUgZGkgaW1wb3J0YXJlLCBzZSBzZXJ2ZSB1biBkYXRvIHRlbWEgbyBsb2NhbGl6emF6aW9uZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7J2xhbmcnIHwgJ3RoZW1lcyd9IHdoYXQgT2dnZXR0byBkYSBpbXBvcnRhcmUsIHNlIGxvY2FsaXp6YXppb25lIG8gdGVtYVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpdGVtIENoaWF2ZSBkZWxsJ29nZ2V0dG8gZGEgaW1wb3J0YXJlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBpbXBvcnRJZk5lZWRlZCh3aGF0OiAnbGFuZycgfCAndGhlbWVzJywgaXRlbTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICAvLyBTZSBzdG8gY2VyY2FuZG8gZGkgY2FyaWNhcmUgcXVhbGNvc2EgZGkgZ2nDoCBjYXJpY2F0byBub24gZmFjY2lvIG51bGxhXHJcbiAgICBpZiAoISh3aGF0ID09ICd0aGVtZXMnICYmICF0aGlzLnRoZW1lQ2FjaGVbaXRlbV0pICYmICEod2hhdCA9PSAnbGFuZycgJiYgIXRoaXMubG9jYWxpemF0aW9uQ2FjaGVbaXRlbV0pKSB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogXCIgKyAod2hhdCA9PSAnbGFuZycgPyBcIkxhbmd1YWdlIFwiIDogXCJUaGVtZSBcIikgKyBpdGVtICsgXCIgYWxyZWFkeSBsb2FkZWRcIik7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nKFwiQ09SRTogTG9hZGluZyBcIiArICh3aGF0ID09ICdsYW5nJyA/IFwibGFuZ3VhZ2UgXCIgOiBcInRoZW1lIFwiKSArIGl0ZW0pO1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKiBBVFRFTlpJT05FICoqKioqKioqXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiBcclxuICAgICAqICBTZSBzdGFpIHZlZGVuZG8gcXVlc3RvIGNvZGljZSBkaSBpbXBvcnQgZSBzdGFpIHZhbHV0YW5kbyBkaSByaXNjcml2ZXJsbyBjb21lOlxyXG4gICAgICogXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAgIFYgICBcclxuICAgICAqICAgICAgaW1wb3J0KGBAYW1jaGFydHMvYW1jaGFydHM0LyR7d2hhdH0vJHtpdGVtfWApLnRoZW4obW9kdWxlID0+IHtcclxuICAgICAqICAgICAgICBpZiAod2hhdCA9PSAndGhlbWVzJykgdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gbW9kdWxlLmRlZmF1bHQ7XHJcbiAgICAgKiAgICAgICAgZWxzZSBpZiAod2hhdCA9PSAnbGFuZycpIHRoaXMubG9jYWxpemF0aW9uQ2FjaGVbaXRlbV0gPSBtb2R1bGUuZGVmYXVsdDtcclxuICAgICAqICAgICAgfSk7XHJcbiAgICAgKiBcclxuICAgICAqICBTYXBwaSBjaGUgw6ggdW5hIHBlc3NpbWEgaWRlYS4gR2xpIGltcG9ydCBzb25vIHZhbHV0YXRpIGRhIHdlYnBhY2sgaW4gY29tcGlsZXRpbWUgcGVyIGdlbmVyYXJlIGkgY2h1bmssXHJcbiAgICAgKiAgbWV0dGVyZSBsYSBuYXZpZ2F6aW9uZSBhZ2xpIGltcG9ydCBjb24gbGEgY29uY2F0ZW5hemlvbmUgdmllbmUgcHJlc28gbWFsaXNzaW1vIGVkIGVzc2VuemlhbG1lbnRlIGRpY2UgYSB3ZWJwYWNrXHJcbiAgICAgKiAgZGkgdGlyYXJlIHN1IGUgYnVuZGxhcmUgbCdpbnRlcmEgbm9kZV9tb2R1bGVzLiBEaXZlcnRlbnRlLCBubz9cclxuICAgICAqXHJcbiAgICAgKi9cclxuXHJcbiAgICBzd2l0Y2ggKHdoYXQpIHtcclxuICAgICAgY2FzZSAndGhlbWVzJzpcclxuICAgICAgICBzd2l0Y2ggKGl0ZW0pIHtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuc3Bpcml0ZWRhd2F5OlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvc3Bpcml0ZWRhd2F5XCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLm1vb25yaXNla2luZ2RvbTpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL21vb25yaXNla2luZ2RvbVwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5mcm96ZW46XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9mcm96ZW5cIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuZGFyazpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL2RhcmtcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMua2VsbHk6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9rZWxseVwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5tYXRlcmlhbDpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL21hdGVyaWFsXCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLmRhdGF2aXo6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9kYXRhdml6XCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLmFuaW1hdGVkOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvYW5pbWF0ZWRcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2xhbmcnOlxyXG4gICAgICAgIHN3aXRjaCAoaXRlbSkge1xyXG4gICAgICAgICAgY2FzZSAnaXQtSVQnOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9sYW5nL2l0X0lUXCIpLnRoZW4obGFuZyA9PiB0aGlzLmxvY2FsaXphdGlvbkNhY2hlW2l0ZW1dID0gbGFuZy5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgJ2VuLVVTJzpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvbGFuZy9lbl9VU1wiKS50aGVuKGxhbmcgPT4gdGhpcy5sb2NhbGl6YXRpb25DYWNoZVtpdGVtXSA9IGxhbmcuZGVmYXVsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nKFwiQ09SRTogTG9hZGluZyBGYWlsZWQuIFwiICsgKHdoYXQgPT0gJ2xhbmcnID8gXCJMYW5ndWFnZSBcIiA6IFwiVGhlbWVcIikgKyBcIiBub3QgcmVjb2duaXplZDogXCIgKyBpdGVtKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGxvZyh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICB9XHJcbn0iXX0=
211
+ }] }] });
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnRMb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9tb2RlbHMvY29yZS9DaGFydExvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRzlDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFzQnRCOztPQUVHO0lBQ0gsWUFBNEMsSUFBYTtRQUFiLFNBQUksR0FBSixJQUFJLENBQVM7UUF2QnpEOztXQUVHO1FBQ0ssd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRTdDOztXQUVHO1FBQ0ssb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFFckM7O1dBRUc7UUFDSyxlQUFVLEdBQU8sRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ0ssc0JBQWlCLEdBQU8sRUFBRSxDQUFDO0lBSzBCLENBQUM7SUFFOUQ7Ozs7O09BS0c7SUFDSSxlQUFlLENBQUMsVUFBZTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDbkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pELFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUks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QyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxJQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzsrR0F2TVUsV0FBVyxrQkF5QkYsY0FBYzttSEF6QnZCLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQTBCSSxNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUaGVtZXMgfSBmcm9tICcuL0NoYXJ0VGhlbWVzJ1xyXG5pbXBvcnQgeyBFU0NfREVCVUdfTU9ERSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IEVzQ2hhcnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZXMtY2hhcnRzLm1vZHVsZSc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGRpIHN1cHBvcnRvIGFsIGNhcmljYW1lbnRvIGRpbmFtaWNvIGRlaSB2YXJpIHBlenppIGRpIGFtY2hhcnRzIGNoZSBtaSBzZXJ2b25vIHBlciBpbCBncmFmaWNvICh0ZW1pLCBsb2NhbGksIGVjYy4uLilcclxuICogXHJcbiAqIEVzc2VuemlhbG1lbnRlIG9nbmkgdm9sdGEgY2hlIHZpZW5lIGNyZWF0byB1biBncmFmaWNvLCBxdWVzdG8gYWNxdWlzaXNjZSBpbCB0ZW1hIGUgaWwgbG9jYWxlIGFwcGxpY2F0byBJTiBRVUVMIE1PTUVOVE8sXHJcbiAqIHF1ZXN0byBzaWduaWZpY2EgY2hlIHBlciBjcmVhcmUgZHVlIGdyYWZpY2kgY29uIHRlbWkgZGl2ZXJzaSBiaXNvZ25hIGZhcmU6XHJcbiAqIFxyXG4gKiAxKSBDYXJpY2FtZW50byB0ZW1hIDFcclxuICogXHJcbiAqIDIpIENyZWF6aW9uZSBncmFmaWNvIDFcclxuICogXHJcbiAqIDMpIFNjYXJpY2FtZW50byB0ZW1hIDFcclxuICogXHJcbiAqIDMpIENhcmljYW1lbnRvIHRlbWEgMlxyXG4gKiBcclxuICogNCkgQ3JlYXppb25lIGdyYWZpY28gMlxyXG4gKiBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXJ0TG9hZGVyIHtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGF0dHVhbG1lbnRlIGhvIGxlIGFuaW1hemlvbmkgY2FyaWNhdGUgaW4gbW9kbyBkYSBub24gcmljYXJpY2FybGUgaW51dGlsbWVudGVcclxuICAgKi9cclxuICBwcml2YXRlIEFuaW1hdGlvbnNBcmVMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIGwndWx0aW1vIHRlbWEgY2FyaWNhdG8gaW4gbW9kbyBkYSBub24gcmljYXJpY2FybG8gaW51dGlsbWVudGUgcXVhbG9yYSBpbCBwcm9zc2ltbyBncmFmaWNvIGRhIGNyZWFyZSByaWNoaWVkYSBsbyBzdGVzc28gdGVtYVxyXG4gICAqL1xyXG4gIHByaXZhdGUgTGFzdExvYWRlZFRoZW1lOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBDYWNoZSBkZWkgdGVtaSAobW9kdWxpIGNhcmljYXRpIGRpbmFtaWNhbWVudGUpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0aGVtZUNhY2hlOiB7fSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBDYWNoZSBkZWxsZSBsb2NhbGl6emF6aW9uaSAobW9kdWxpIGNhcmljYXRpIGRpbmFtaWNhbWVudGUpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2NhbGl6YXRpb25DYWNoZToge30gPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGxpY2EgaWwgdGVtYSBjb24gbGUgYW5pbWF6aW9uaSBhbGwnaXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYXJ0c0NvcmUgSXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlBbmltYXRpb25zKGNoYXJ0c0NvcmU6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAoIXRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbXBvcnRJZk5lZWRlZCgndGhlbWVzJywgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nKFwiQ09SRTogQXBwbHlpbmcgdGhlbWUgXCIgKyBDaGFydFRoZW1lcy5hbmltYXRlZCk7XHJcbiAgICAgICAgY2hhcnRzQ29yZS51c2VUaGVtZSh0aGlzLnRoZW1lQ2FjaGVbQ2hhcnRUaGVtZXMuYW5pbWF0ZWRdKTtcclxuICAgICAgICB0aGlzLkFuaW1hdGlvbnNBcmVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IHRoZW1lIGFscmVhZHkgYXBwbHllZCBcIiArIENoYXJ0VGhlbWVzLmFuaW1hdGVkKTtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZS1hcHBsaWNhIGlsIHRlbWEgY29uIGxlIGFuaW1hemlvbmkgZGFsbCdpc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge09iamVjdH0gY2hhcnRzQ29yZSBJc3RhbnphIGdsb2JhbGUgZGkgYW1DaGFydHNcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBjaGUgaWRlbnRpZmljYSBsYSBmaW5lIGRlbGxvIHNjYXJpY29cclxuICAgKi9cclxuICB1bmFwcGx5QW5pbWF0aW9ucyhjaGFydHNDb3JlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCkge1xyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IEFuaW1hdGlvbnMgaW4gdXNlLCB1bmFwcGx5aW5nIHRoZW1lIFwiICsgQ2hhcnRUaGVtZXMuYW5pbWF0ZWQpO1xyXG4gICAgICBjaGFydHNDb3JlLnVudXNlVGhlbWUodGhpcy50aGVtZUNhY2hlW0NoYXJ0VGhlbWVzLmFuaW1hdGVkXSk7XHJcbiAgICAgIHRoaXMuQW5pbWF0aW9uc0FyZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxvZyhcIkNPUkU6IEFuaW1hdGlvbnMgYWxyZWFkeSB1bnVzZWQsIG5vIG5lZWQgdG8gdW5hcHBseSB0aGVtXCIpO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlc29sdmUodHJ1ZSkgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWNhIGlsIHRlbWEgc3BlY2lmaWNhdG8gYWxsJ2lzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjaGFydHNDb3JlIElzdGFuemEgZ2xvYmFsZSBkaSBhbUNoYXJ0c1xyXG4gICAqIEBwYXJhbSB7J3NwaXJpdGVkYXdheScgfCAnbW9vbnJpc2VraW5nZG9tJyB8ICdmcm96ZW4nIHwgJ2RhcmsnIHwgJ2tlbGx5JyB8ICdtYXRlcmlhbCcgfCAnZGF0YXZpeicgfCAnbm9uZSd9IHRoZW1lIFRlbWEgZGEgYXBwbGljYXJlXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBhcHBseVRoZW1lKGNoYXJ0c0NvcmU6IGFueSwgdGhlbWU6ICdzcGlyaXRlZGF3YXknIHwgJ21vb25yaXNla2luZ2RvbScgfCAnZnJvemVuJyB8ICdkYXJrJyB8ICdrZWxseScgfCAnbWF0ZXJpYWwnIHwgJ2RhdGF2aXonIHwgJ25vbmUnKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIFVsdGltbyB0ZW1hIGFwcGxpY2F0byDDqCBsbyBzdGVzc28gY2hlIG1pIMOoIHN0YXRvIHJpY2hpZXN0byBkaSBhcHBsaWNhcmUgLS0+IE5PLU9QXHJcbiAgICBpZiAodGhpcy5MYXN0TG9hZGVkVGhlbWUgPT0gdGhlbWUpIHtcclxuICAgICAgdGhpcy5sb2coXCJDT1JFOiB0aGVtZSBhbHJlYWR5IGFwcGxpZWQgXCIgKyB0aGVtZSk7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNjYXJpY28gaWwgdGVtYSBwcmVjZWRlbnRlIGEgcHJlc2NpbmRlcmUsIG9ybWFpIG5vbiBtaSBzZXJ2ZSBwacO5XHJcbiAgICB0aGlzLnVuYXBwbHlQcmV2aW91c1RoZW1lKGNoYXJ0c0NvcmUpXHJcblxyXG4gICAgLy8gSWwgdGVtYSDDqCBpbCBub25lIC0tPiByZWdpc3RybyBsYSBjb3NhIGUgYmFzdGEsIGlsIHRlbWEgcHJlY2VkZW50ZSDDqCBzdGF0byByaW1vc3NvIHN1Yml0byBxdWkgc29wcmEgXlxyXG4gICAgaWYgKHRoZW1lID09IENoYXJ0VGhlbWVzLm5vbmUpIHtcclxuICAgICAgdGhpcy5MYXN0TG9hZGVkVGhlbWUgPSBDaGFydFRoZW1lcy5ub25lO1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgcmVzb2x2ZSh0cnVlKSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbCB0ZW1hIMOoIGRpdmVyc28gZGFsIHByZWNlZGVudGUgZSBub24gw6ggaWwgdGVtYSB2dW90byAtLT4gSW1wb3J0byBpbCB0ZW1hIHNwZWNpZmljYXRvIHNlIG5vbiBwcmVzZW50ZSBpbiBtZW1vcmlhIGUgbG8gYXBwbGljbyBhbCBncmFmaWNvIGF0dHVhbGVcclxuICAgIHJldHVybiB0aGlzLmltcG9ydElmTmVlZGVkKCd0aGVtZXMnLCB0aGVtZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogQXBwbHlpbmcgdGhlbWUgXCIgKyB0aGVtZSk7XHJcbiAgICAgIGNoYXJ0c0NvcmUudXNlVGhlbWUodGhpcy50aGVtZUNhY2hlW3RoZW1lXSk7XHJcbiAgICAgIHRoaXMuTGFzdExvYWRlZFRoZW1lID0gdGhlbWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlLWFwcGxpY2EgaWwgdGVtYSBwcmVjZWRlbnRlIGRhbGwnaXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYXJ0c0NvcmUgSXN0YW56YSBnbG9iYWxlIGRpIGFtQ2hhcnRzXHJcbiAgICovXHJcbiAgdW5hcHBseVByZXZpb3VzVGhlbWUoY2hhcnRzQ29yZTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuTGFzdExvYWRlZFRoZW1lIHx8IHRoaXMuTGFzdExvYWRlZFRoZW1lID09IENoYXJ0VGhlbWVzLm5vbmUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxvZyhcIkNPUkU6IFVuYXBwbHlpbmcgcHJldmlvdXNseSB1c2VkIHRoZW1lIFwiICsgdGhpcy5MYXN0TG9hZGVkVGhlbWUpO1xyXG4gICAgY2hhcnRzQ29yZS51bnVzZVRoZW1lKHRoaXMudGhlbWVDYWNoZVt0aGlzLkxhc3RMb2FkZWRUaGVtZV0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWNhIGlsIGxvY2FsZSBzcGVjaWZpY2F0byBhbGwnaXN0YW56YSBzcGVjaWZpY2EgZGVsIGdyYWZpY29cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FtQ2hhcnRzLkNoYXJ0fSBjaGFydCBJc3RhbnphIHNwZWNpZmljYSBkZWwgZ3JhZmljbyBhIGN1aSBhcHBsaWNhcmUgaWwgbG9jYWxlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSBMb2NhbGUgZGEgYXBwbGljYXJlXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBhcHBseUxvY2FsZShjaGFydDogYW55LCBsb2NhbGU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbXBvcnRJZk5lZWRlZCgnbGFuZycsIGxvY2FsZSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyBjaGFydC5odG1sQ29udGFpbmVyLmlkICsgXCI6IGFwcGx5aW5nIGxvY2FsZSBcIiArIGxvY2FsZSk7XHJcbiAgICAgIGNoYXJ0Lmxhbmd1YWdlLmxvY2FsZSA9IHRoaXMubG9jYWxpemF0aW9uQ2FjaGVbbG9jYWxlXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVybWV0dGUgZGkgaW1wb3J0YXJlLCBzZSBzZXJ2ZSB1biBkYXRvIHRlbWEgbyBsb2NhbGl6emF6aW9uZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7J2xhbmcnIHwgJ3RoZW1lcyd9IHdoYXQgT2dnZXR0byBkYSBpbXBvcnRhcmUsIHNlIGxvY2FsaXp6YXppb25lIG8gdGVtYVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpdGVtIENoaWF2ZSBkZWxsJ29nZ2V0dG8gZGEgaW1wb3J0YXJlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgY2hlIGlkZW50aWZpY2EgbGEgZmluZSBkZWwgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBpbXBvcnRJZk5lZWRlZCh3aGF0OiAnbGFuZycgfCAndGhlbWVzJywgaXRlbTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICAvLyBTZSBzdG8gY2VyY2FuZG8gZGkgY2FyaWNhcmUgcXVhbGNvc2EgZGkgZ2nDoCBjYXJpY2F0byBub24gZmFjY2lvIG51bGxhXHJcbiAgICBpZiAoISh3aGF0ID09ICd0aGVtZXMnICYmICF0aGlzLnRoZW1lQ2FjaGVbaXRlbV0pICYmICEod2hhdCA9PSAnbGFuZycgJiYgIXRoaXMubG9jYWxpemF0aW9uQ2FjaGVbaXRlbV0pKSB7XHJcbiAgICAgIHRoaXMubG9nKFwiQ09SRTogXCIgKyAod2hhdCA9PSAnbGFuZycgPyBcIkxhbmd1YWdlIFwiIDogXCJUaGVtZSBcIikgKyBpdGVtICsgXCIgYWxyZWFkeSBsb2FkZWRcIik7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nKFwiQ09SRTogTG9hZGluZyBcIiArICh3aGF0ID09ICdsYW5nJyA/IFwibGFuZ3VhZ2UgXCIgOiBcInRoZW1lIFwiKSArIGl0ZW0pO1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKiBBVFRFTlpJT05FICoqKioqKioqXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiBcclxuICAgICAqICBTZSBzdGFpIHZlZGVuZG8gcXVlc3RvIGNvZGljZSBkaSBpbXBvcnQgZSBzdGFpIHZhbHV0YW5kbyBkaSByaXNjcml2ZXJsbyBjb21lOlxyXG4gICAgICogXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAgIFYgICBcclxuICAgICAqICAgICAgaW1wb3J0KGBAYW1jaGFydHMvYW1jaGFydHM0LyR7d2hhdH0vJHtpdGVtfWApLnRoZW4obW9kdWxlID0+IHtcclxuICAgICAqICAgICAgICBpZiAod2hhdCA9PSAndGhlbWVzJykgdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gbW9kdWxlLmRlZmF1bHQ7XHJcbiAgICAgKiAgICAgICAgZWxzZSBpZiAod2hhdCA9PSAnbGFuZycpIHRoaXMubG9jYWxpemF0aW9uQ2FjaGVbaXRlbV0gPSBtb2R1bGUuZGVmYXVsdDtcclxuICAgICAqICAgICAgfSk7XHJcbiAgICAgKiBcclxuICAgICAqICBTYXBwaSBjaGUgw6ggdW5hIHBlc3NpbWEgaWRlYS4gR2xpIGltcG9ydCBzb25vIHZhbHV0YXRpIGRhIHdlYnBhY2sgaW4gY29tcGlsZXRpbWUgcGVyIGdlbmVyYXJlIGkgY2h1bmssXHJcbiAgICAgKiAgbWV0dGVyZSBsYSBuYXZpZ2F6aW9uZSBhZ2xpIGltcG9ydCBjb24gbGEgY29uY2F0ZW5hemlvbmUgdmllbmUgcHJlc28gbWFsaXNzaW1vIGVkIGVzc2VuemlhbG1lbnRlIGRpY2UgYSB3ZWJwYWNrXHJcbiAgICAgKiAgZGkgdGlyYXJlIHN1IGUgYnVuZGxhcmUgbCdpbnRlcmEgbm9kZV9tb2R1bGVzLiBEaXZlcnRlbnRlLCBubz9cclxuICAgICAqXHJcbiAgICAgKi9cclxuXHJcbiAgICBzd2l0Y2ggKHdoYXQpIHtcclxuICAgICAgY2FzZSAndGhlbWVzJzpcclxuICAgICAgICBzd2l0Y2ggKGl0ZW0pIHtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuc3Bpcml0ZWRhd2F5OlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvc3Bpcml0ZWRhd2F5XCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLm1vb25yaXNla2luZ2RvbTpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL21vb25yaXNla2luZ2RvbVwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5mcm96ZW46XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9mcm96ZW5cIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMuZGFyazpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL2RhcmtcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgQ2hhcnRUaGVtZXMua2VsbHk6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9rZWxseVwiKS50aGVuKHRoZW1lID0+IHRoaXMudGhlbWVDYWNoZVtpdGVtXSA9IHRoZW1lLmRlZmF1bHQpO1xyXG4gICAgICAgICAgY2FzZSBDaGFydFRoZW1lcy5tYXRlcmlhbDpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvdGhlbWVzL21hdGVyaWFsXCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLmRhdGF2aXo6XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJAYW1jaGFydHMvYW1jaGFydHM0L3RoZW1lcy9kYXRhdml6XCIpLnRoZW4odGhlbWUgPT4gdGhpcy50aGVtZUNhY2hlW2l0ZW1dID0gdGhlbWUuZGVmYXVsdCk7XHJcbiAgICAgICAgICBjYXNlIENoYXJ0VGhlbWVzLmFuaW1hdGVkOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC90aGVtZXMvYW5pbWF0ZWRcIikudGhlbih0aGVtZSA9PiB0aGlzLnRoZW1lQ2FjaGVbaXRlbV0gPSB0aGVtZS5kZWZhdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2xhbmcnOlxyXG4gICAgICAgIHN3aXRjaCAoaXRlbSkge1xyXG4gICAgICAgICAgY2FzZSAnaXQtSVQnOlxyXG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9sYW5nL2l0X0lUXCIpLnRoZW4obGFuZyA9PiB0aGlzLmxvY2FsaXphdGlvbkNhY2hlW2l0ZW1dID0gbGFuZy5kZWZhdWx0KTtcclxuICAgICAgICAgIGNhc2UgJ2VuLVVTJzpcclxuICAgICAgICAgICAgcmV0dXJuIGltcG9ydChcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvbGFuZy9lbl9VU1wiKS50aGVuKGxhbmcgPT4gdGhpcy5sb2NhbGl6YXRpb25DYWNoZVtpdGVtXSA9IGxhbmcuZGVmYXVsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nKFwiQ09SRTogTG9hZGluZyBGYWlsZWQuIFwiICsgKHdoYXQgPT0gJ2xhbmcnID8gXCJMYW5ndWFnZSBcIiA6IFwiVGhlbWVcIikgKyBcIiBub3QgcmVjb2duaXplZDogXCIgKyBpdGVtKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKHRydWUpIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGxvZyh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICB9XHJcbn0iXX0=
@@ -154,4 +154,4 @@ export class AreaChartService {
154
154
  this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
155
155
  }
156
156
  }
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJlYUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0FyZWFDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixjQUFjO0lBQ2QsWUFBbUIsT0FBb0I7UUFBcEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQWtKdkMsdUdBQXVHO1FBQ3ZHLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0lBckpaLENBQUM7SUFFNUM7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjtRQUN0RSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDeEUsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUV0Qyx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxD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JztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IEFyZWFDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9BcmVhQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgQXJlYUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvQXJlYUNoYXJ0U2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gQXJlYUNoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXJlYUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuWFlDaGFydDtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgQWRhcHRlcjogQmFzZUFkYXB0ZXIpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIGRhdGEgdW5hIGNvcHBpYSBEYXRpIC0gSW1wb3N0YXppb25pIGxpIHV0aWxpenphIHBlciBjcmVhcmUgZSB2aXN1YWxpenphcmUgdW4gQXJlYUNoYXJ0XHJcbiAgICovXHJcbiAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogQXJlYUNoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IEFyZWFDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcbiAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIGFyZWEgY2hhcnRcIik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IEFyZWFDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yQXJlYUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgIGxldCBzaG93VGlja3MgPSBzZXR0aW5ncy5TaG93VGlja3MgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uU2hvd1RpY2tzO1xyXG4gICAgbGV0IGludGVydmFsID0gZGF0YUNvbnZlcnRlZC5pbnRlcnZhbDtcclxuXHJcbiAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLkNoYXJ0SW5zdGFuY2UgPSBhbTRjb3JlLmNyZWF0ZShzZXR0aW5ncy5OYW1lLCBhbTRjaGFydHMuWFlDaGFydCk7XHJcbiAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZCA9IG5ldyBhbTRjaGFydHMuTGVnZW5kKCk7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLnBvc2l0aW9uID0gc2V0dGluZ3M/LkxlZ2VuZFBvc2l0aW9uID8/ICdyaWdodCc7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcblxyXG4gICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ1RvcCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcudG9wID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nUmlnaHQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnJpZ2h0ID8/IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnlBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5WYWx1ZUF4aXMoKSk7XHJcbiAgICB5QXhpcy50b29sdGlwLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuICAgIHlBeGlzLm1pbiA9IDA7XHJcblxyXG4gICAgbGV0IGRhdGVBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC54QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuRGF0ZUF4aXMoKSk7XHJcbiAgICBkYXRlQXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDUwO1xyXG4gICAgZGF0ZUF4aXMuc3RhcnRMb2NhdGlvbiA9IDAuNTtcclxuICAgIGRhdGVBeGlzLmVuZExvY2F0aW9uID0gMC41O1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgIGRhdGVBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5YQXhpc1RpdGxlXHJcbiAgICAgIGRhdGVBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWludGVydmFsKVxyXG4gICAgICBkYXRlQXhpcy5iYXNlSW50ZXJ2YWwgPSB7IGNvdW50OiBpbnRlcnZhbC5jb3VudCwgdGltZVVuaXQ6IHRoaXMuZml4VGltZVVuaXQoaW50ZXJ2YWwudGltZXVuaXQpIH07XHJcblxyXG4gICAgLy8gVW5pc2NvIGlsIGRhdGFzZXQgZSB0aXJvIGZ1b3JpIGkgZGF0aVxyXG4gICAgbGV0IGNoYXJ0RGF0YSA9IFtdO1xyXG4gICAgbGV0IHNlcmllc1RvTWFrZUNhY2hlOiB7IFtpbmRleDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcbiAgICBsZXQgc2VyaWVzVG9NYWtlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhQ29udmVydGVkLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZ3JvdXAgPSBkYXRhQ29udmVydGVkLmdyb3Vwc1tpXTtcclxuICAgICAgbGV0IGRhdGFJdGVtID0geyBkYXRlOiBncm91cC5uYW1lIH07XHJcbiAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCBncm91cC52YWx1ZXMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgbGV0IHZhbCA9IGdyb3VwLnZhbHVlc1tpaV07XHJcbiAgICAgICAgZGF0YUl0ZW1bdmFsLmtdID0gdmFsLnY7XHJcbiAgICAgICAgaWYgKCFzZXJpZXNUb01ha2VDYWNoZVt2YWwua10pIHtcclxuICAgICAgICAgIHNlcmllc1RvTWFrZUNhY2hlW3ZhbC5rXSA9IHRydWU7XHJcbiAgICAgICAgICBzZXJpZXNUb01ha2UucHVzaCh2YWwuayk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNoYXJ0RGF0YS5wdXNoKGRhdGFJdGVtKTtcclxuICAgIH1cclxuICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuZGF0YSA9IGNoYXJ0RGF0YTtcclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgc2VyaWVzVG9NYWtlLmZvckVhY2gocyA9PiB7IHRoaXMuY3JlYXRlU2VyaWVzKENoYXJ0SW5zdGFuY2VDYXN0ZWQsIHMpOyB9KTtcclxuXHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmN1cnNvciA9IG5ldyBhbTRjaGFydHMuWFlDdXJzb3IoKTtcclxuICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY3Vyc29yLnhBeGlzID0gZGF0ZUF4aXM7XHJcblxyXG4gICAgZGF0ZUF4aXMuZXZlbnRzLm9uKFwic3RhcnRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgZGF0ZUF4aXMuZXZlbnRzLm9uKFwiZW5kY2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZml4VGltZVVuaXQodHU6IGFueSk6IFwibWlsbGlzZWNvbmRcIiB8IFwic2Vjb25kXCIgfCBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiIHwgXCJ3ZWVrXCIgfCBcIm1vbnRoXCIgfCBcInllYXJcIiB7XHJcbiAgICBpZiAodHUgPT09IDApIHJldHVybiBcIm1pbGxpc2Vjb25kXCI7XHJcbiAgICBlbHNlIGlmICh0dSA9PT0gMSkgcmV0dXJuIFwic2Vjb25kXCI7XHJcbiAgICBlbHNlIGlmICh0dSA9PT0gMikgcmV0dXJuIFwibWludXRlXCI7XHJcbiAgICBlbHNlIGlmICh0dSA9PT0gMykgcmV0dXJuIFwiaG91clwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDQpIHJldHVybiBcImRheVwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDUpIHJldHVybiBcIndlZWtcIjtcclxuICAgIGVsc2UgaWYgKHR1ID09PSA2KSByZXR1cm4gXCJtb250aFwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDcpIHJldHVybiBcInllYXJcIjtcclxuICAgIGVsc2UgcmV0dXJuIHR1O1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBzZXRTZWxlY3Rpb24oZnJvbTogRGF0ZSwgdG86IERhdGUpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHB1YmxpYyByZWZyZXNoRGF0YShkYXRhOiBBcmVhQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICAvL1RPRE86SU1QTFxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkKGV2LCBzZXR0aW5ncykge1xyXG4gICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjaykge1xyXG4gICAgICB0aGlzLnRocm90dGxhKFwic2VsY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICB2YXIgYXhpcyA9IDxhbTRjaGFydHMuRGF0ZUF4aXM+ZXYudGFyZ2V0XHJcbiAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoYXhpcy5taW5ab29tZWQpO1xyXG4gICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZShheGlzLm1heFpvb21lZCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWwgPSBheGlzLm1pbiA9PSBheGlzLm1pblpvb21lZCAmJiBheGlzLm1heCA9PSBheGlzLm1heFpvb21lZDtcclxuICAgICAgICAoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2soeyBmcm9tOiBzdGFydCwgdG86IGVuZCwgaW5pdGlhbDogaW5pdGlhbCB9KTtcclxuICAgICAgfSwgMTUwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGNyZWF0ZVNlcmllcyhjaGFydDogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2gobmV3IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKCkpXHJcbiAgICBzZXJpZXMuZGF0YUZpZWxkcy5kYXRlWCA9IFwiZGF0ZVwiO1xyXG4gICAgc2VyaWVzLm5hbWUgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gbmFtZTtcclxuICAgIHNlcmllcy50b29sdGlwVGV4dCA9IFwiWyMwMDBde3ZhbHVlWS52YWx1ZX1bL11cIjtcclxuICAgIC8vc2VyaWVzLnRvb2x0aXAuYmFja2dyb3VuZC5maWxsID0gYW00Y29yZS5jb2xvcihcIiNGRkZcIik7XHJcbiAgICBzZXJpZXMudG9vbHRpcC5nZXRTdHJva2VGcm9tT2JqZWN0ID0gdHJ1ZTtcclxuICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuc3Ryb2tlV2lkdGggPSAzO1xyXG4gICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgIHNlcmllcy5maWxsT3BhY2l0eSA9IDAuNjtcclxuICAgIHNlcmllcy5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICBzZXJpZXMuc3RhY2tlZCA9IHRydWU7XHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKiBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gIC8vVE9ETzogc3Bvc3RhcmxhIGluIHVuIG1ldG9kbyBkaSB1dGlsaXTDoCAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgZXhlY3V0aW9uVGltZXJzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgdGhyb3R0bGEoaWQ6IHN0cmluZywgZnVuYzogRnVuY3Rpb24sIHRocm90dGxlVGltZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAvL1JpY3JlbyBpbCB0aW1lb3V0IHBlciBlc2VndWlyZSBxdWVsbGEgZnVuemlvbmUgZG9wbyB0aHJvdHRsZVRpbWUgbWlsbGlzZWNvbmRpXHJcbiAgICB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYygpOyB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gIH1cclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKipcclxufSJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJlYUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0FyZWFDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixjQUFjO0lBQ2QsWUFBbUIsT0FBb0I7UUFBcEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQWtKdkMsdUdBQXVHO1FBQ3ZHLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0lBckpaLENBQUM7SUFFNUM7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjtRQUN0RSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDdkQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxhQUFhLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsRyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1FBQ3hFLElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFFdEMsdUVBQXVFO1FBQ3ZFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxH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WUFBWSxDQUFDLENBQUM7SUFDMUcsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5pbXBvcnQgeyBBcmVhQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvQXJlYUNoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IEFyZWFDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3NldHRpbmdzL0FyZWFDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIEFyZWFDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFyZWFDaGFydFNlcnZpY2UgaW1wbGVtZW50cyBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIEFyZWFDaGFydFxyXG4gICAqL1xyXG4gIHB1YmxpYyBncmFwaGljYXRlKGRhdGE6IEFyZWFDaGFydERhdGEgfCBhbnksIHNldHRpbmdzOiBBcmVhQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG4gICAgaWYgKHNldHRpbmdzLlRpbWVsaW5lKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaW1lbGluZSBub3Qgc3VwcG9ydGVkIGZvciBhcmVhIGNoYXJ0XCIpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBkYXRhQ29udmVydGVkOiBBcmVhQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvckFyZWFDaGFydChkYXRhKSA6IGRhdGE7XHJcbiAgICBsZXQgc2hvd1RpY2tzID0gc2V0dGluZ3MuU2hvd1RpY2tzID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LlNob3dUaWNrcztcclxuICAgIGxldCBpbnRlcnZhbCA9IGRhdGFDb252ZXJ0ZWQuaW50ZXJ2YWw7XHJcblxyXG4gICAgLy9QZXIgZXZpdGFyZSBkaSBkaW1lbnRpY2FybWVsaSBlIGdlc3RpcmUgY29tdW5xdWUgYmVuZSBnbGkgbmdpZiBlY2MuLi5cclxuICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5DaGFydEluc3RhbmNlID0gYW00Y29yZS5jcmVhdGUoc2V0dGluZ3MuTmFtZSwgYW00Y2hhcnRzLlhZQ2hhcnQpO1xyXG4gICAgbGV0IENoYXJ0SW5zdGFuY2VDYXN0ZWQgPSA8YW00Y2hhcnRzLlhZQ2hhcnQ+dGhpcy5DaGFydEluc3RhbmNlO1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5MZWdlbmQpIHtcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG5cclxuICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICBsZXQgdGVtcGxhdGUgPSB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdMZWZ0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5sZWZ0ID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC55QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuVmFsdWVBeGlzKCkpO1xyXG4gICAgeUF4aXMudG9vbHRpcC5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICB9XHJcbiAgICB5QXhpcy5taW4gPSAwO1xyXG5cclxuICAgIGxldCBkYXRlQXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkRhdGVBeGlzKCkpO1xyXG4gICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgIGRhdGVBeGlzLnN0YXJ0TG9jYXRpb24gPSAwLjU7XHJcbiAgICBkYXRlQXhpcy5lbmRMb2NhdGlvbiA9IDAuNTtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3dUaWNrcykge1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihcIiM0OTVDNDNcIik7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubGVuZ3RoID0gMTA7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFpbnRlcnZhbClcclxuICAgICAgZGF0ZUF4aXMuYmFzZUludGVydmFsID0geyBjb3VudDogaW50ZXJ2YWwuY291bnQsIHRpbWVVbml0OiB0aGlzLmZpeFRpbWVVbml0KGludGVydmFsLnRpbWV1bml0KSB9O1xyXG5cclxuICAgIC8vIFVuaXNjbyBpbCBkYXRhc2V0IGUgdGlybyBmdW9yaSBpIGRhdGlcclxuICAgIGxldCBjaGFydERhdGEgPSBbXTtcclxuICAgIGxldCBzZXJpZXNUb01ha2VDYWNoZTogeyBbaW5kZXg6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG4gICAgbGV0IHNlcmllc1RvTWFrZTogc3RyaW5nW10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUNvbnZlcnRlZC5ncm91cHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGdyb3VwID0gZGF0YUNvbnZlcnRlZC5ncm91cHNbaV07XHJcbiAgICAgIGxldCBkYXRhSXRlbSA9IHsgZGF0ZTogZ3JvdXAubmFtZSB9O1xyXG4gICAgICBmb3IgKGxldCBpaSA9IDA7IGlpIDwgZ3JvdXAudmFsdWVzLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgIGxldCB2YWwgPSBncm91cC52YWx1ZXNbaWldO1xyXG4gICAgICAgIGRhdGFJdGVtW3ZhbC5rXSA9IHZhbC52O1xyXG4gICAgICAgIGlmICghc2VyaWVzVG9NYWtlQ2FjaGVbdmFsLmtdKSB7XHJcbiAgICAgICAgICBzZXJpZXNUb01ha2VDYWNoZVt2YWwua10gPSB0cnVlO1xyXG4gICAgICAgICAgc2VyaWVzVG9NYWtlLnB1c2godmFsLmspO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjaGFydERhdGEucHVzaChkYXRhSXRlbSk7XHJcbiAgICB9XHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmRhdGEgPSBjaGFydERhdGE7XHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAgIHNlcmllc1RvTWFrZS5mb3JFYWNoKHMgPT4geyB0aGlzLmNyZWF0ZVNlcmllcyhDaGFydEluc3RhbmNlQ2FzdGVkLCBzKTsgfSk7XHJcblxyXG4gICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jdXJzb3IgPSBuZXcgYW00Y2hhcnRzLlhZQ3Vyc29yKCk7XHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmN1cnNvci54QXhpcyA9IGRhdGVBeGlzO1xyXG5cclxuICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcImVuZGNoYW5nZWRcIiwgdCA9PiB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkKHQsIHNldHRpbmdzKSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGZpeFRpbWVVbml0KHR1OiBhbnkpOiBcIm1pbGxpc2Vjb25kXCIgfCBcInNlY29uZFwiIHwgXCJtaW51dGVcIiB8IFwiaG91clwiIHwgXCJkYXlcIiB8IFwid2Vla1wiIHwgXCJtb250aFwiIHwgXCJ5ZWFyXCIge1xyXG4gICAgaWYgKHR1ID09PSAwKSByZXR1cm4gXCJtaWxsaXNlY29uZFwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDEpIHJldHVybiBcInNlY29uZFwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDIpIHJldHVybiBcIm1pbnV0ZVwiO1xyXG4gICAgZWxzZSBpZiAodHUgPT09IDMpIHJldHVybiBcImhvdXJcIjtcclxuICAgIGVsc2UgaWYgKHR1ID09PSA0KSByZXR1cm4gXCJkYXlcIjtcclxuICAgIGVsc2UgaWYgKHR1ID09PSA1KSByZXR1cm4gXCJ3ZWVrXCI7XHJcbiAgICBlbHNlIGlmICh0dSA9PT0gNikgcmV0dXJuIFwibW9udGhcIjtcclxuICAgIGVsc2UgaWYgKHR1ID09PSA3KSByZXR1cm4gXCJ5ZWFyXCI7XHJcbiAgICBlbHNlIHJldHVybiB0dTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogQXJlYUNoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgLy9UT0RPOklNUExcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlZChldiwgc2V0dGluZ3MpIHtcclxuICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spIHtcclxuICAgICAgdGhpcy50aHJvdHRsYShcInNlbGNoYW5nZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgdmFyIGF4aXMgPSA8YW00Y2hhcnRzLkRhdGVBeGlzPmV2LnRhcmdldFxyXG4gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGF4aXMubWluWm9vbWVkKTtcclxuICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoYXhpcy5tYXhab29tZWQpO1xyXG4gICAgICAgIHZhciBpbml0aWFsID0gYXhpcy5taW4gPT0gYXhpcy5taW5ab29tZWQgJiYgYXhpcy5tYXggPT0gYXhpcy5tYXhab29tZWQ7XHJcbiAgICAgICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluaXRpYWw6IGluaXRpYWwgfSk7XHJcbiAgICAgIH0sIDE1MClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVTZXJpZXMoY2hhcnQ6IGFueSwgbmFtZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuTGluZVNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKG5ldyBhbTRjaGFydHMuTGluZVNlcmllcygpKVxyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRhdGVcIjtcclxuICAgIHNlcmllcy5uYW1lID0gbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcclxuICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IG5hbWU7XHJcbiAgICBzZXJpZXMudG9vbHRpcFRleHQgPSBcIlsjMDAwXXt2YWx1ZVkudmFsdWV9Wy9dXCI7XHJcbiAgICAvL3Nlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjRkZGXCIpO1xyXG4gICAgc2VyaWVzLnRvb2x0aXAuZ2V0U3Ryb2tlRnJvbU9iamVjdCA9IHRydWU7XHJcbiAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLnN0cm9rZVdpZHRoID0gMztcclxuICAgIHNlcmllcy50b29sdGlwLmdldEZpbGxGcm9tT2JqZWN0ID0gZmFsc2U7XHJcbiAgICBzZXJpZXMuZmlsbE9wYWNpdHkgPSAwLjY7XHJcbiAgICBzZXJpZXMuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgc2VyaWVzLnN0YWNrZWQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHNlcmllcztcclxuICB9XHJcblxyXG4gIC8vKioqKioqKioqKioqKioqKioqKiogRnVuemlvbmUgZGkgdGhyb3R0bGluZyBwZXIgbm9uIHNwYW1tYXJlIHJpY2hpZXN0ZSBpbiBjYXNvIGRpIGFuaW1hemlvbmkgYXR0aXZhdGVcclxuICAvL1RPRE86IHNwb3N0YXJsYSBpbiB1biBtZXRvZG8gZGkgdXRpbGl0w6AgKGVzZmFlbnphL2V4dGVuc2lvbnMpXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIHRocm90dGxhKGlkOiBzdHJpbmcsIGZ1bmM6IEZ1bmN0aW9uLCB0aHJvdHRsZVRpbWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgLy9TZSBobyBsYSBmdW56aW9uZSBjaGUgdnVvbGUgZXNlZ3VpcmUgcmlwdWxpc2NvIHF1ZWwgdGltZW91dFxyXG4gICAgaWYgKHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSlcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSk7XHJcblxyXG4gICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gc2V0VGltZW91dCgoKSA9PiB7IGZ1bmMoKTsgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gbnVsbDsgfSwgdGhyb3R0bGVUaW1lKTtcclxuICB9XHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqXHJcbn0iXX0=
@@ -389,4 +389,4 @@ export class LineChartService {
389
389
  this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
390
390
  }
391
391
  }
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0xpbmVDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVd6QixjQUFjO0lBQ2QsWUFBbUIsT0FBb0IsRUFBVSxRQUFxQjtRQUFuRCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQVR0RSxjQUFjO1FBQ04sd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQzNDLGNBQWM7UUFDTixzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFDeEMsY0FBYztRQUNOLGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBQ3JDLGNBQWM7UUFDTixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQXNadkMsdUdBQXVHO1FBQ3ZHLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0lBdlptQixDQUFDO0lBSzNFOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQXlCLEVBQUUsUUFBMkI7UUFDcEUsSUFBSSxhQUFhLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsRyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUM7UUFDckQsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMs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Q0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUM3QixNQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNyRCxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSTtvQkFDTCxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSTtnQkFDTCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBTUQsY0FBYztJQUNOLFFBQVEsQ0FBQyxFQUFVLEVBQUUsSUFBYyxFQUFFLFlBQW9CO1FBQzdELDZEQUE2RDtRQUM3RCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFM0MsK0VBQStFO1FBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUcsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5cclxuaW1wb3J0IHsgTGltaXQgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvYmFzZS9MaW1pdFwiO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvTGluZUNoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IExpbmVDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3NldHRpbmdzL0xpbmVDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIExpbmVDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIExpbmVDaGFydFNlcnZpY2UgaW1wbGVtZW50cyBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+e1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuWFlDaGFydDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIERhdGFHcm91cEJ1Y2tldFNpemU6IG51bWJlciA9IDE1MDA7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBPcGFjaXR5T25TZWxlY3RlZDogbnVtYmVyID0gMC4zO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgT3BhY2l0eU9uRmlsbDogbnVtYmVyID0gMC43NTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGFTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgQWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZUV4dHM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICAvKiogUmlmZWlybWVudG8gaW50ZXJubyBhbGwnYXNzZSBkZWxsZSBEYXRlIHBlciBzZW1wbGljaXTDoCAqL1xyXG4gICAgcHJpdmF0ZSBkYXRlQXhpczogYW00Y2hhcnRzLkRhdGVBeGlzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIExpbmVDaGFydFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBMaW5lQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogTGluZUNoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogTGluZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JMaW5lQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG4gICAgICAgIGxldCB0aHJlc2hvbGQgPSBzZXR0aW5ncy5EYXRhR3JvdXBpbmdUaHJlc2hvbGQgPz8gMzAwMDtcclxuICAgICAgICB0aGlzLnNpbmdsZURhdGFTZXQgPSBzZXR0aW5ncy5NZXJnZURhdGFzZXRzID8/IGZhbHNlO1xyXG4gICAgICAgIGxldCBzaG93VGlja3MgPSBzZXR0aW5ncy5TaG93VGlja3MgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uU2hvd1RpY2tzO1xyXG4gICAgICAgIGxldCBkYXRhU2hvdWxkQmVHcm91cGVkID0gTWF0aC5tYXgoLi4uZGF0YUNvbnZlcnRlZC5zZXJpZXMubWFwKHQgPT4gdC52YWx1ZXMubGVuZ3RoKSkgPiB0aHJlc2hvbGQ7XHJcbiAgICAgICAgbGV0IHNob3dUaW1lbGluZSA9IHNldHRpbmdzLlRpbWVsaW5lIHx8IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgbGV0IHNlcmllc1dpdGhJbnRlcnZhbCA9IGRhdGFDb252ZXJ0ZWQuc2VyaWVzLnNvbWUodCA9PiB0LmludGVydmFsKTtcclxuICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZXJpZXNXaXRoSW50ZXJ2YWwgPyBkYXRhQ29udmVydGVkLnNlcmllcy5maW5kKHQgPT4gdC5pbnRlcnZhbCkuaW50ZXJ2YWwgOiBudWxsO1xyXG4gICAgICAgIGxldCBnYXBzQWxsb3dlZCA9IHNldHRpbmdzPy5BbGxvd0dhcHMgPT0gbnVsbCA/IHNlcmllc1dpdGhJbnRlcnZhbCA6IHNldHRpbmdzPy5BbGxvd0dhcHM7XHJcbiAgICAgICAgbGV0IGZpbmFsSW5zdGFudCA9IHNldHRpbmdzPy5GaW5hbEluc3RhbnRzID8/IHRydWU7XHJcblxyXG4gICAgICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICAgICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlID0gYW00Y29yZS5jcmVhdGUoc2V0dGluZ3MuTmFtZSwgYW00Y2hhcnRzLlhZQ2hhcnQpO1xyXG4gICAgICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuXHJcbiAgICAgICAgbGV0IHlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC55QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuVmFsdWVBeGlzKCkpO1xyXG4gICAgICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5NaW4pXHJcbiAgICAgICAgICAgIHlBeGlzLm1pbiA9IHNldHRpbmdzLk1pbjtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWF4KVxyXG4gICAgICAgICAgICB5QXhpcy5tYXggPSBzZXR0aW5ncy5NYXg7XHJcblxyXG4gICAgICAgIGxldCBsaW1pdE51bGxPclVuZGVmID0gZGF0YUNvbnZlcnRlZC5saW1pdCA9PSBudWxsIHx8IGRhdGFDb252ZXJ0ZWQubGltaXQgPT0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGxldCBsaW1pdHMgPSBsaW1pdE51bGxPclVuZGVmID8gW10gOiAhKDxhbnk+ZGF0YUNvbnZlcnRlZC5saW1pdCkubGVuZ3RoID8gWzxMaW1pdD5kYXRhQ29udmVydGVkLmxpbWl0XSA6IDxMaW1pdFtdPmRhdGFDb252ZXJ0ZWQubGltaXQ7XHJcbiAgICAgICAgaWYgKGxpbWl0cy5sZW5ndGggPiAwKSB7XHJcblxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGltaXRzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCBsaW1pdCA9IGxpbWl0c1tpXVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChsaW1pdC51cHBlciAhPSBudWxsICYmIGxpbWl0LnVwcGVyICE9IHVuZGVmaW5lZCAmJiBsaW1pdC5sb3dlciAhPSBudWxsICYmIGxpbWl0Lmxvd2VyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IHlBeGlzLmF4aXNSYW5nZXMuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UudmFsdWUgPSBsaW1pdC5sb3dlcjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5lbmRWYWx1ZSA9IGxpbWl0LnVwcGVyO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobGltaXQuZmlsbENvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbnRlbnRzLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQuZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuY29udGVudHMuZmlsbCA9IHJhbmdlLmNvbnRlbnRzLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudGV4dCA9IGxpbWl0LnVwcGVybGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnZlcnRpY2FsQ2VudGVyID0gXCJib3R0b21cIjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LnVwcGVyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKGxpbWl0Lmxvd2VyID09IG51bGwgfHwgbGltaXQubG93ZXIgPT0gdW5kZWZpbmVkKSAmJiBsaW1pdC51cHBlciAhPSBudWxsICYmIGxpbWl0LnVwcGVyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IHlBeGlzLmF4aXNSYW5nZXMuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UudmFsdWUgPSBsaW1pdC51cHBlcjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5pbnNpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBsaW1pdC51cHBlcmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmZpbGwgPSByYW5nZS5ncmlkLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChsaW1pdC51cHBlciA9PSBudWxsIHx8IGxpbWl0LnVwcGVyID09IHVuZGVmaW5lZCkgJiYgbGltaXQubG93ZXIgIT0gbnVsbCAmJiBsaW1pdC5sb3dlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQubG93ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gbGltaXQubG93ZXJsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQubG93ZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0Lmxvd2VyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5kYXRlQXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkRhdGVBeGlzKCkpO1xyXG5cclxuICAgICAgICAvLyBQZXIgY29tYXRpYmlsaXTDoCBjb2wgY29kaWNlIHNjcml0dG8gcXVhbmRvIG5vbiBlcmEgYSBsaXZlbGxvIGdsb2JhbGUsIG1pIHNjb2NjaWEgc29zdGl0dWlyZVxyXG4gICAgICAgIGxldCBkYXRlQXhpcyA9IHRoaXMuZGF0ZUF4aXM7XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5YQXhpc1RpdGxlXHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzaG93VGlja3MpIHtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjNDk1QzQzXCIpO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmxlbmd0aCA9IDEwO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sb2NhdGlvbiA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDUwO1xyXG4gICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLmdyaWQudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIGRhdGVBeGlzLm1pblpvb21Db3VudCA9IDU7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBEYXRhID0gZGF0YVNob3VsZEJlR3JvdXBlZDtcclxuICAgICAgICBkYXRlQXhpcy5ncm91cENvdW50ID0gc2V0dGluZ3MuRGF0YUdyb3VwQnVja2V0U2l6ZSA/PyB0aGlzLkRhdGFHcm91cEJ1Y2tldFNpemU7XHJcblxyXG4gICAgICAgIC8vU2UgaG8gYWxtZW5vIHVuYSBzZXJpZSBhZCBpbnRlcnZhbGxvIGUgaSBzZXR0aW5ncyBub24gbWkgaW1wZWRpc2Nvbm8gZXNwbGljaXRhbWVudGUgZGkgdXNhcmUgaSBnYXBzLCB2aXN1YWxpenpvIGkgZGF0aSBjb2wgZ2FwXHJcblxyXG4gICAgICAgIGlmIChnYXBzQWxsb3dlZCkge1xyXG4gICAgICAgICAgICBpZiAoIXNlcmllc1dpdGhJbnRlcnZhbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlBlciB1dGlsaXp6YXJlIGxhIGZ1bnppb25hbGl0w6AgZGVpIGdhcCDDqCBvYmJsaWdhdG9yaW8gZGVmaW5pcmUgdW4gaW50ZXJ2YWxsbyBuZWxsZSBzZXJpZSBkZWwgZ3JhZmljb1wiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLmJhc2VJbnRlcnZhbCA9IHsgY291bnQ6IGludGVydmFsLmNvdW50LCB0aW1lVW5pdDogdGhpcy5maXhUaW1lVW5pdChpbnRlcnZhbC50aW1ldW5pdCkgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNob3dUaW1lbGluZSlcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zY3JvbGxiYXJYID0gbmV3IGFtNGNoYXJ0cy5YWUNoYXJ0U2Nyb2xsYmFyKCk7XHJcblxyXG4gICAgICAgIGxldCBzZXJpZXNUb1B1c2ggPSBbXTtcclxuICAgICAgICBsZXQgc2VyaWVzQ29sb3JzOiBhbTRjb3JlLkNvbG9yW10gPSBbXTtcclxuICAgICAgICBsZXQgZGVmYXVsdEluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgLy8gT3JkaW5hbWVudG8gZGVpIGRhdGkgc2Ugc2VydmVcclxuICAgICAgICBkYXRhQ29udmVydGVkLnNlcmllcy5mb3JFYWNoKChzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzLnZhbHVlc1swXSAmJiAhKHMudmFsdWVzWzBdLmQgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKylcclxuICAgICAgICAgICAgICAgICAgICBzLnZhbHVlc1t2XS5kID0gbmV3IERhdGUocy52YWx1ZXNbdl0uZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBjb3JyZWN0T3JkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YXIgcHJldkRhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHMudmFsdWVzLmxlbmd0aDsgdisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZEYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZEYXRlID0gcy52YWx1ZXNbdl0uZDtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAocy52YWx1ZXNbdl0uZCA8IHByZXZEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RPcmRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghY29ycmVjdE9yZGVyKVxyXG4gICAgICAgICAgICAgICAgcy52YWx1ZXMuc29ydCgoZDEsIGQyKSA9PiBkMS5kLmdldFRpbWUoKSAtIGQyLmQuZ2V0VGltZSgpKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhemlvbmUgZGkgdW4gdW5pY28gZGF0YXNldCBpbnZlY2UgY2hlIE4sIHBlciBwb3RlciBnZXN0aXJlIHVuIHVuaWNvIHRvb2x0aXBcclxuICAgICAgICBpZiAodGhpcy5zaW5nbGVEYXRhU2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5kYXRhID0gdGhpcy5nZW5lcmF0ZVNpbmdsZURhdGFzZXQoZGF0YUNvbnZlcnRlZCk7O1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5jdXJzb3JUb29sdGlwRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YUNvbnZlcnRlZC5zZXJpZXMuZm9yRWFjaCgocywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN0YWNrZWQgPSBzLnN0YWNrZWQgIT0gbnVsbCAmJiBzLnN0YWNrZWQgIT0gdW5kZWZpbmVkID8gcy5zdGFja2VkIDogKHNldHRpbmdzPy5TdGFja2VkID8/IGZhbHNlKTtcclxuICAgICAgICAgICAgbGV0IGZpbGwgPSBzdGFja2VkIHx8IChzLmZpbGwgIT0gbnVsbCAmJiBzLmZpbGwgIT0gdW5kZWZpbmVkID8gcy5maWxsIDogKHNldHRpbmdzPy5GaWxsID8/IGZhbHNlKSk7XHJcbiAgICAgICAgICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcyB8IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gc2V0dGluZ3M/LlN0ZXAgPyBuZXcgYW00Y2hhcnRzLlN0ZXBMaW5lU2VyaWVzKCkgOiBuZXcgYW00Y2hhcnRzLkxpbmVTZXJpZXMoKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gXCJ2XCIgKyAodGhpcy5zaW5nbGVEYXRhU2V0ID8gaW5kZXggOiBcIlwiKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRcIjtcclxuICAgICAgICAgICAgKDxhbnk+c2VyaWVzKS5tZWFzdXJlVW5pdCA9IHMudW9tO1xyXG4gICAgICAgICAgICBzZXJpZXMubmFtZSA9IHMubmFtZTtcclxuICAgICAgICAgICAgc2VyaWVzLnN0cm9rZVdpZHRoID0gc2V0dGluZ3M/LlN0cm9rZVNpemUgPz8gMTtcclxuICAgICAgICAgICAgc2VyaWVzLmNvbm5lY3QgPSAhZ2Fwc0FsbG93ZWQ7XHJcbiAgICAgICAgICAgIHNlcmllcy5taW5CdWxsZXREaXN0YW5jZSA9IDEwO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcFRleHQgPSB0aGlzLnNpbmdsZURhdGFTZXQgPyBcIlwiIDogcy5uYW1lID8gXCJ7bmFtZX06IFtib2xkXXt2YWx1ZVl9Wy9dXCIgOiBcIltib2xkXXt2YWx1ZVl9Wy9dXCI7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwLnBvaW50ZXJPcmllbnRhdGlvbiA9IFwidmVydGljYWxcIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuYmFja2dyb3VuZC5maWxsT3BhY2l0eSA9IDAuNTtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwucGFkZGluZygxMiwgMTIsIDEyLCAxMik7XHJcbiAgICAgICAgICAgIHNlcmllcy5maWxsT3BhY2l0eSA9IGZpbGwgPyB0aGlzLk9wYWNpdHlPbkZpbGwgOiAwLjAwMDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdGFja2VkID0gc3RhY2tlZDtcclxuICAgICAgICAgICAgc2VyaWVzLmhpZGRlbiA9IHMuaGlkZGVuO1xyXG5cclxuICAgICAgICAgICAgLy9EYXRhc2V0IHNpbmdvbG8sIGkgZGF0aSBzb25vIHJlZ2lzdHJhdGkgYSBsaXZlbGxvIGRpIGNoYXJ0LCBjcmVvIGlsIHRvb2x0aXAgY2hlIHBlcm1ldHRlIGRpIHZlZGVybGkgdHV0dGkgaW5zaWVtZVxyXG4gICAgICAgICAgICAvL2FsdHJpbWVudGkgYXNzZWdubyBpIGRhdGkgZGVsbGEgc2VyaWUgZGlyZXR0YW1lbnRlIGFsbGEgc2VyaWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjZWVlXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjMDBcIik7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5kZWZhdWx0U3RhdGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmhpZGRlblN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9VdGlsaXp6byBpbCBtaW8gZGF0ZVNlcnZpY2UgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGVsbGEgZGF0YSBpbiBtb2RvIGNoZSBub24gZGViYmEgbWFpIGdlc3RpcmUgbiBmb3JtYXRpIGZyYSBuIGxpYnJlcmllLi4uIGJlbGxpc3NpbW9cclxuICAgICAgICAgICAgICAgIHNlcmllcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCA9IChzb3VyY2U6IERhdGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbCAmJiBmaW5hbEluc3RhbnQgJiYgW1wiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiXS5pbmNsdWRlcyhpbnRlcnZhbC50aW1ldW5pdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWVwYXJ0OiBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnZhbC50aW1ldW5pdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImhvdXJcIjogdGltZXBhcnQgPSAnZGF5JzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWludXRlXCI6IHRpbWVwYXJ0ID0gJ2hvdXInOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWNvbmRcIjogdGltZXBhcnQgPSAnbWludXRlJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVwYXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuYWRqdXN0RGF0ZVRvRmluYWxJbnN0YW50KHNvdXJjZSwgdGltZXBhcnQsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlRXh0cy5nZXRGb3JtYXR0ZWQoc291cmNlLCBpbnRlcnZhbCA/IFtcImRheVwiLCBcIndlZWtcIiwgXCJtb250aFwiLCBcInllYXJcIl0uaW5jbHVkZXMoaW50ZXJ2YWwudGltZXVuaXQpIDogZmFsc2UsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAoPGFueT5zZXJpZXMuYWRhcHRlcikuYWRkKFwidG9vbHRpcFRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gXCJbYm9sZF17ZGF0ZVguZm9ybWF0RGF0ZSgpfVsvXVxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdW9tID0gXCIgW2ZvbnQtc3R5bGU6IGl0YWxpY11cIiArICg8YW55PnNlcmllcykubWVhc3VyZVVuaXQgfHwgXCJcIiArIFwiWy9dXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gXCJbXCIgKyAoPGFueT5pdGVtLnN0cm9rZSkuaGV4ICsgXCJd4pePWy9dIFwiICsgKGl0ZW0ubmFtZSA/IChpdGVtLm5hbWUgKyBcIjogXCIpIDogXCJcIikgKyBcIltib2xkXXtcIiArIGl0ZW0uZGF0YUZpZWxkcy52YWx1ZVkgKyBcIn1bL11cIiArIHVvbSArIFwiXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMuZGF0YSA9IHMudmFsdWVzO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNlZ21lbnQgPSBzZXJpZXMuc2VnbWVudHMudGVtcGxhdGU7XHJcblxyXG4gICAgICAgICAgICBsZXQgaG92ZXJTdGF0ZSA9IHNlZ21lbnQuc3RhdGVzLmNyZWF0ZShcImhvdmVyXCIpO1xyXG4gICAgICAgICAgICBob3ZlclN0YXRlLnByb3BlcnRpZXMuc3Ryb2tlV2lkdGggPSAoc2V0dGluZ3M/LlN0cm9rZVNpemUgPz8gMSkgKyAxO1xyXG5cclxuICAgICAgICAgICAgbGV0IGRpbW1lZCA9IHNlZ21lbnQuc3RhdGVzLmNyZWF0ZShcImRpbW1lZFwiKTtcclxuICAgICAgICAgICAgZGltbWVkLnByb3BlcnRpZXMuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihcIiNkYWRhZGFcIik7XHJcblxyXG4gICAgICAgICAgICAvL1NlIGxhIHNlcmllIGhhIHVuIGNvbG9yZSwgdXNvIHF1ZWxsbywgYWx0cmltZW50aSBwZXNjbyBkYWkgY29sb3JpIGRpIGRlZmF1bHQgYW5kYW5kbyBpbiBvcmRpbmVcclxuICAgICAgICAgICAgaWYgKHMuY29sb3IpXHJcbiAgICAgICAgICAgICAgICBzZXJpZXNDb2xvcnMucHVzaChhbTRjb3JlLmNvbG9yKHMuY29sb3IpKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXNDb2xvcnMucHVzaChDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0W2RlZmF1bHRJbmRleCAlIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QubGVuZ3RoXSlcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRJbmRleCsrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzZXJpZXNUb1B1c2gucHVzaChzZXJpZXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdCA9IHNlcmllc0NvbG9ycztcclxuICAgICAgICAvL1Njcml2byBsZSBzZXJpZSBuZWwgZ3JhZmljb1xyXG4gICAgICAgIHNlcmllc1RvUHVzaC5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5wdXNoKHMpO1xyXG4gICAgICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuWFlDaGFydFNjcm9sbGJhcj5DaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclgpLnNlcmllcy5wdXNoKHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnBvc2l0aW9uID0gc2V0dGluZ3M/LkxlZ2VuZFBvc2l0aW9uID8/ICdyaWdodCc7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuc2Nyb2xsYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7bmFtZX1cIjtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5ldmVudHMub24oXCJvdmVyXCIsIChldmVudCkgPT4geyB0aGlzLnByb2Nlc3NPdmVyKDxhbTRjaGFydHMuTGluZVNlcmllcz5ldmVudC50YXJnZXQuZGF0YUl0ZW0uZGF0YUNvbnRleHQpOyB9KTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5ldmVudHMub24oXCJvdXRcIiwgKCkgPT4geyB0aGlzLnByb2Nlc3NPdXQoKTsgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yID0gbmV3IGFtNGNoYXJ0cy5YWUN1cnNvcigpO1xyXG5cclxuICAgICAgICAvL1Byb3ZlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgLy8gdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci5ldmVudHMub24oXCJjdXJzb3Jwb3NpdGlvbmNoYW5nZWRcIiwgKGV2KSA9PiB7XHJcbiAgICAgICAgLy8gICAgIC8vdmFyIHZhbHVlID0gZGF0ZUF4aXMucG9zaXRpb25Ub0RhdGUoZGF0ZUF4aXMudG9BeGlzUG9zaXRpb24oZXYudGFyZ2V0LnhQb3NpdGlvbikpO1xyXG4gICAgICAgIC8vICAgICB2YXIgZHQgPSBkYXRlQXhpcy5zZXJpZXMudmFsdWVzLmZpbmQodCA9PiB0LmRhdGFJdGVtLnZhbHVlcy5kYXRlWCk7XHJcbiAgICAgICAgLy8gICAgIGlmIChkdCAmJiBkdC5kYXRhSXRlbSkge1xyXG4gICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coZHQuZGF0YUl0ZW0udmFsdWVzKTtcclxuICAgICAgICAvLyAgICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IGR0O1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnRvb2x0aXBUZXh0ID0gXCJcIjtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IueEF4aXMgPSBkYXRlQXhpcztcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnlBeGlzID0geUF4aXM7XHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldClcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci5tYXhUb29sdGlwRGlzdGFuY2UgPSAtMTtcclxuXHJcbiAgICAgICAgLy9UT0RPOiBDZXJjYXJlIGRpIGNhcGlyZSBwZXJjaMOpIMOoIGZpZ2xpbyBkaSBwdXR0YW5hLi4uLi4uXHJcbiAgICAgICAgZGF0ZUF4aXMuZXZlbnRzLm9uKFwic3RhcnRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcImVuZGNoYW5nZWRcIiwgdCA9PiB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkKHQsIHNldHRpbmdzKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZml4VGltZVVuaXQodHU6IGFueSk6IFwibWlsbGlzZWNvbmRcIiB8IFwic2Vjb25kXCIgfCBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiIHwgXCJ3ZWVrXCIgfCBcIm1vbnRoXCIgfCBcInllYXJcIiB7XHJcbiAgICAgICAgaWYgKHR1ID09PSAwKSByZXR1cm4gXCJtaWxsaXNlY29uZFwiO1xyXG4gICAgICAgIGVsc2UgaWYgKHR1ID09PSAxKSByZXR1cm4gXCJzZWNvbmRcIjtcclxuICAgICAgICBlbHNlIGlmICh0dSA9PT0gMikgcmV0dXJuIFwibWludXRlXCI7XHJcbiAgICAgICAgZWxzZSBpZiAodHUgPT09IDMpIHJldHVybiBcImhvdXJcIjtcclxuICAgICAgICBlbHNlIGlmICh0dSA9PT0gNCkgcmV0dXJuIFwiZGF5XCI7XHJcbiAgICAgICAgZWxzZSBpZiAodHUgPT09IDUpIHJldHVybiBcIndlZWtcIjtcclxuICAgICAgICBlbHNlIGlmICh0dSA9PT0gNikgcmV0dXJuIFwibW9udGhcIjtcclxuICAgICAgICBlbHNlIGlmICh0dSA9PT0gNykgcmV0dXJuIFwieWVhclwiO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuIHR1O1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHNldFNlbGVjdGlvbihmcm9tOiBEYXRlLCB0bzogRGF0ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGF0ZUF4aXMuem9vbVRvRGF0ZXMoZnJvbSwgdG8sIHRydWUsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgICAgIGxldCBkYXRhQ29udmVydGVkOiBMaW5lQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvckxpbmVDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhQ29udmVydGVkKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmFkZERhdGEoZGF0YSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IFwiSW1wb3NzaWJpbGUgYWdnaW9ybmFyZSBpIGRhdGkgc2VuemEgdW5pcmUgaWwgZGF0YXNldC4gU2kgcHJlZ2EgZGkgaW1wb3N0YXJlIFtNZXJnZURhdGFzZXRzXSBhIHRydWVcIlxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKiogUGFydGVuZG8gZGEgZGF0aSBkaXZpc2kgcGVyIHNlcml1ZSBnZW5lcmEgdW4gZGF0YXNldCB1bml0byBjb24gbGEgZGF0YSBjb21lIGNoaWF2ZSBlIGkgdmFyaSB2YWxvcmkgZG9wbyAqL1xyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZVNpbmdsZURhdGFzZXQoZGF0YTogTGluZUNoYXJ0RGF0YSk6IGFueSB7XHJcbiAgICAgICAgbGV0IGR0bzogeyBbaW5kZXg6IG51bWJlcl06IHsgW3NpbmRleDogc3RyaW5nXTogbnVtYmVyIH0gfSA9IHt9O1xyXG4gICAgICAgIGRhdGEuc2VyaWVzLmZvckVhY2goKHZzLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRhdGFpdGVtID0gdnMudmFsdWVzW2ldO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ZXIgPSBuZXcgRGF0ZShkYXRhaXRlbS5kKS52YWx1ZU9mKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFkdG9baW5kZXhlcl0pXHJcbiAgICAgICAgICAgICAgICAgICAgZHRvW2luZGV4ZXJdID0ge307XHJcblxyXG4gICAgICAgICAgICAgICAgZHRvW2luZGV4ZXJdWyd2JyArIGluZGV4XSA9IGRhdGFpdGVtLnY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdmFyIGRhdGVzID0gT2JqZWN0LmtleXMoZHRvKTtcclxuICAgICAgICB2YXIgcmV0ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVzOiB7IFtzaW5kZXg6IHN0cmluZ106IG51bWJlciB9ID0gZHRvW2RhdGVzW2ldXTtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB7IGQ6IG5ldyBEYXRlKHBhcnNlSW50KGRhdGVzW2ldKSkgfTtcclxuXHJcbiAgICAgICAgICAgIHZhciB2YWxzID0gT2JqZWN0LmtleXModmFsdWVzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IHZhbHMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VyaWVzID0gdmFsc1tpaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgc2luZ2xlVmFsID0gdmFsdWVzW3Nlcmllc107XHJcbiAgICAgICAgICAgICAgICBpdGVtW3Nlcmllc10gPSBzaW5nbGVWYWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZWQoZXYsIHNldHRpbmdzKSB7XHJcbiAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnRocm90dGxhKFwic2VsY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBheGlzID0gPGFtNGNoYXJ0cy5EYXRlQXhpcz5ldi50YXJnZXRcclxuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGF4aXMubWluWm9vbWVkKTtcclxuICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZShheGlzLm1heFpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5pdGlhbCA9IGF4aXMubWluID09IGF4aXMubWluWm9vbWVkICYmIGF4aXMubWF4ID09IGF4aXMubWF4Wm9vbWVkO1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluaXRpYWw6IGluaXRpYWwgfSk7XHJcbiAgICAgICAgICAgIH0sIDE1MClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc092ZXIoaG92ZXJlZFNlcmllczogYW00Y2hhcnRzLkxpbmVTZXJpZXMpIHtcclxuICAgICAgICBob3ZlcmVkU2VyaWVzLnpJbmRleCA9IDk5OTtcclxuICAgICAgICBsZXQgZmlsbCA9IGhvdmVyZWRTZXJpZXMuZmlsbE9wYWNpdHkgPT0gdGhpcy5PcGFjaXR5T25GaWxsO1xyXG4gICAgICAgIGhvdmVyZWRTZXJpZXMuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiaG92ZXJcIik7XHJcbiAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgIHNlZ21lbnQuZmlsbFNwcml0ZS5maWxsT3BhY2l0eSA9IHRoaXMuT3BhY2l0eU9uU2VsZWN0ZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICBob3ZlcmVkU2VyaWVzLmxlZ2VuZERhdGFJdGVtLm1hcmtlci5jaGlsZHJlbi5nZXRJbmRleCgxKS5maWxsT3BhY2l0eSA9IHRoaXMuT3BhY2l0eU9uU2VsZWN0ZWQ7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaCgoc2VyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXJpZXMgIT0gaG92ZXJlZFNlcmllcykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGwgPSBzZXJpZXMuZmlsbE9wYWNpdHkgPT0gdGhpcy5PcGFjaXR5T25GaWxsO1xyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuTGluZVNlcmllcz5zZXJpZXMpLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGltbWVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc091dCgpIHtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKHNlcmllcywgaSkgPT4ge1xyXG4gICAgICAgICAgICBzZXJpZXMuekluZGV4ID0gaTtcclxuICAgICAgICAgICAgbGV0IGZpbGwgPSBzZXJpZXMuZmlsbE9wYWNpdHkgPT0gdGhpcy5PcGFjaXR5T25GaWxsO1xyXG4gICAgICAgICAgICAoPGFtNGNoYXJ0cy5MaW5lU2VyaWVzPnNlcmllcykuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImRlZmF1bHRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sZWdlbmREYXRhSXRlbS5tYXJrZXIuY2hpbGRyZW4uZ2V0SW5kZXgoMSkuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKiogRnVuemlvbmUgZGkgdGhyb3R0bGluZyBwZXIgbm9uIHNwYW1tYXJlIHJpY2hpZXN0ZSBpbiBjYXNvIGRpIGFuaW1hemlvbmkgYXR0aXZhdGVcclxuICAgIC8vVE9ETzogc3Bvc3RhcmxhIGluIHVuIG1ldG9kbyBkaSB1dGlsaXTDoCAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSB0aHJvdHRsYShpZDogc3RyaW5nLCBmdW5jOiBGdW5jdGlvbiwgdGhyb3R0bGVUaW1lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICAgICAgaWYgKHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSlcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSk7XHJcblxyXG4gICAgICAgIC8vUmljcmVvIGlsIHRpbWVvdXQgcGVyIGVzZWd1aXJlIHF1ZWxsYSBmdW56aW9uZSBkb3BvIHRocm90dGxlVGltZSBtaWxsaXNlY29uZGlcclxuICAgICAgICB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYygpOyB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gICAgfVxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqXHJcbn0iXX0=
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0xpbmVDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVd6QixjQUFjO0lBQ2QsWUFBbUIsT0FBb0IsRUFBVSxRQUFxQjtRQUFuRCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQVR0RSxjQUFjO1FBQ04sd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQzNDLGNBQWM7UUFDTixzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFDeEMsY0FBYztRQUNOLGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBQ3JDLGNBQWM7UUFDTixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQXNadkMsdUdBQXVHO1FBQ3ZHLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0lBdlptQixDQUFDO0lBSzNFOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQXlCLEVBQUUsUUFBMkI7UUFDcEUsSUFBSSxhQUFhLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsRyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUM7UUFDckQsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMs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Q0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuXHJcbmltcG9ydCB7IExpbWl0IH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL2Jhc2UvTGltaXRcIjtcclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGEnO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9zZXR0aW5ncy9MaW5lQ2hhcnRTZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBMaW5lQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMaW5lQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PntcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBEYXRhR3JvdXBCdWNrZXRTaXplOiBudW1iZXIgPSAxNTAwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgT3BhY2l0eU9uU2VsZWN0ZWQ6IG51bWJlciA9IDAuMztcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIE9wYWNpdHlPbkZpbGw6IG51bWJlciA9IDAuNzU7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBzaW5nbGVEYXRhU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyLCBwcml2YXRlIGRhdGVFeHRzOiBEYXRlU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqIFJpZmVpcm1lbnRvIGludGVybm8gYWxsJ2Fzc2UgZGVsbGUgRGF0ZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuICAgIHByaXZhdGUgZGF0ZUF4aXM6IGFtNGNoYXJ0cy5EYXRlQXhpcztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBMaW5lQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IExpbmVDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IExpbmVDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yTGluZUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgICAgICBsZXQgdGhyZXNob2xkID0gc2V0dGluZ3MuRGF0YUdyb3VwaW5nVGhyZXNob2xkID8/IDMwMDA7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVEYXRhU2V0ID0gc2V0dGluZ3MuTWVyZ2VEYXRhc2V0cyA/PyBmYWxzZTtcclxuICAgICAgICBsZXQgc2hvd1RpY2tzID0gc2V0dGluZ3MuU2hvd1RpY2tzID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LlNob3dUaWNrcztcclxuICAgICAgICBsZXQgZGF0YVNob3VsZEJlR3JvdXBlZCA9IE1hdGgubWF4KC4uLmRhdGFDb252ZXJ0ZWQuc2VyaWVzLm1hcCh0ID0+IHQudmFsdWVzLmxlbmd0aCkpID4gdGhyZXNob2xkO1xyXG4gICAgICAgIGxldCBzaG93VGltZWxpbmUgPSBzZXR0aW5ncy5UaW1lbGluZSB8fCBkYXRhU2hvdWxkQmVHcm91cGVkO1xyXG4gICAgICAgIGxldCBzZXJpZXNXaXRoSW50ZXJ2YWwgPSBkYXRhQ29udmVydGVkLnNlcmllcy5zb21lKHQgPT4gdC5pbnRlcnZhbCk7XHJcbiAgICAgICAgbGV0IGludGVydmFsID0gc2VyaWVzV2l0aEludGVydmFsID8gZGF0YUNvbnZlcnRlZC5zZXJpZXMuZmluZCh0ID0+IHQuaW50ZXJ2YWwpLmludGVydmFsIDogbnVsbDtcclxuICAgICAgICBsZXQgZ2Fwc0FsbG93ZWQgPSBzZXR0aW5ncz8uQWxsb3dHYXBzID09IG51bGwgPyBzZXJpZXNXaXRoSW50ZXJ2YWwgOiBzZXR0aW5ncz8uQWxsb3dHYXBzO1xyXG4gICAgICAgIGxldCBmaW5hbEluc3RhbnQgPSBzZXR0aW5ncz8uRmluYWxJbnN0YW50cyA/PyB0cnVlO1xyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgICAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWluKVxyXG4gICAgICAgICAgICB5QXhpcy5taW4gPSBzZXR0aW5ncy5NaW47XHJcbiAgICAgICAgaWYgKHNldHRpbmdzLk1heClcclxuICAgICAgICAgICAgeUF4aXMubWF4ID0gc2V0dGluZ3MuTWF4O1xyXG5cclxuICAgICAgICBsZXQgbGltaXROdWxsT3JVbmRlZiA9IGRhdGFDb252ZXJ0ZWQubGltaXQgPT0gbnVsbCB8fCBkYXRhQ29udmVydGVkLmxpbWl0ID09IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgbGltaXRzID0gbGltaXROdWxsT3JVbmRlZiA/IFtdIDogISg8YW55PmRhdGFDb252ZXJ0ZWQubGltaXQpLmxlbmd0aCA/IFs8TGltaXQ+ZGF0YUNvbnZlcnRlZC5saW1pdF0gOiA8TGltaXRbXT5kYXRhQ29udmVydGVkLmxpbWl0O1xyXG4gICAgICAgIGlmIChsaW1pdHMubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxpbWl0cy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbGltaXQgPSBsaW1pdHNbaV1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQgJiYgbGltaXQubG93ZXIgIT0gbnVsbCAmJiBsaW1pdC5sb3dlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQubG93ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kVmFsdWUgPSBsaW1pdC51cHBlcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0LmZpbGxDb2xvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5jb250ZW50cy5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LmZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbnRlbnRzLmZpbGwgPSByYW5nZS5jb250ZW50cy5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5pbnNpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBsaW1pdC51cHBlcmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmZpbGwgPSByYW5nZS5ncmlkLnN0cm9rZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC51cHBlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChsaW1pdC5sb3dlciA9PSBudWxsIHx8IGxpbWl0Lmxvd2VyID09IHVuZGVmaW5lZCkgJiYgbGltaXQudXBwZXIgIT0gbnVsbCAmJiBsaW1pdC51cHBlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gbGltaXQudXBwZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gbGltaXQudXBwZXJsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IobGltaXQudXBwZXJjb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0LnVwcGVyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgobGltaXQudXBwZXIgPT0gbnVsbCB8fCBsaW1pdC51cHBlciA9PSB1bmRlZmluZWQpICYmIGxpbWl0Lmxvd2VyICE9IG51bGwgJiYgbGltaXQubG93ZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJhbmdlID0geUF4aXMuYXhpc1Jhbmdlcy5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS52YWx1ZSA9IGxpbWl0Lmxvd2VyO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudGV4dCA9IGxpbWl0Lmxvd2VybGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnZlcnRpY2FsQ2VudGVyID0gXCJib3R0b21cIjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGxpbWl0Lmxvd2VyY29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihsaW1pdC5sb3dlcmNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuZGF0ZUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5EYXRlQXhpcygpKTtcclxuXHJcbiAgICAgICAgLy8gUGVyIGNvbWF0aWJpbGl0w6AgY29sIGNvZGljZSBzY3JpdHRvIHF1YW5kbyBub24gZXJhIGEgbGl2ZWxsbyBnbG9iYWxlLCBtaSBzY29jY2lhIHNvc3RpdHVpcmVcclxuICAgICAgICBsZXQgZGF0ZUF4aXMgPSB0aGlzLmRhdGVBeGlzO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgICAgICBkYXRlQXhpcy5taW5ab29tQ291bnQgPSA1O1xyXG4gICAgICAgIGRhdGVBeGlzLmdyb3VwRGF0YSA9IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBDb3VudCA9IHNldHRpbmdzLkRhdGFHcm91cEJ1Y2tldFNpemUgPz8gdGhpcy5EYXRhR3JvdXBCdWNrZXRTaXplO1xyXG5cclxuICAgICAgICAvL1NlIGhvIGFsbWVubyB1bmEgc2VyaWUgYWQgaW50ZXJ2YWxsbyBlIGkgc2V0dGluZ3Mgbm9uIG1pIGltcGVkaXNjb25vIGVzcGxpY2l0YW1lbnRlIGRpIHVzYXJlIGkgZ2FwcywgdmlzdWFsaXp6byBpIGRhdGkgY29sIGdhcFxyXG5cclxuICAgICAgICBpZiAoZ2Fwc0FsbG93ZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFzZXJpZXNXaXRoSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQZXIgdXRpbGl6emFyZSBsYSBmdW56aW9uYWxpdMOgIGRlaSBnYXAgw6ggb2JibGlnYXRvcmlvIGRlZmluaXJlIHVuIGludGVydmFsbG8gbmVsbGUgc2VyaWUgZGVsIGdyYWZpY29cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkYXRlQXhpcy5iYXNlSW50ZXJ2YWwgPSB7IGNvdW50OiBpbnRlcnZhbC5jb3VudCwgdGltZVVuaXQ6IHRoaXMuZml4VGltZVVuaXQoaW50ZXJ2YWwudGltZXVuaXQpIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaG93VGltZWxpbmUpXHJcbiAgICAgICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2Nyb2xsYmFyWCA9IG5ldyBhbTRjaGFydHMuWFlDaGFydFNjcm9sbGJhcigpO1xyXG5cclxuICAgICAgICBsZXQgc2VyaWVzVG9QdXNoID0gW107XHJcbiAgICAgICAgbGV0IHNlcmllc0NvbG9yczogYW00Y29yZS5Db2xvcltdID0gW107XHJcbiAgICAgICAgbGV0IGRlZmF1bHRJbmRleCA9IDA7XHJcblxyXG4gICAgICAgIC8vIE9yZGluYW1lbnRvIGRlaSBkYXRpIHNlIHNlcnZlXHJcbiAgICAgICAgZGF0YUNvbnZlcnRlZC5zZXJpZXMuZm9yRWFjaCgocykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocy52YWx1ZXNbMF0gJiYgIShzLnZhbHVlc1swXS5kIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHYgPSAwOyB2IDwgcy52YWx1ZXMubGVuZ3RoOyB2KyspXHJcbiAgICAgICAgICAgICAgICAgICAgcy52YWx1ZXNbdl0uZCA9IG5ldyBEYXRlKHMudmFsdWVzW3ZdLmQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgY29ycmVjdE9yZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIHByZXZEYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2RGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBwcmV2RGF0ZSA9IHMudmFsdWVzW3ZdLmQ7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMudmFsdWVzW3ZdLmQgPCBwcmV2RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0T3JkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvcnJlY3RPcmRlcilcclxuICAgICAgICAgICAgICAgIHMudmFsdWVzLnNvcnQoKGQxLCBkMikgPT4gZDEuZC5nZXRUaW1lKCkgLSBkMi5kLmdldFRpbWUoKSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEdlbmVyYXppb25lIGRpIHVuIHVuaWNvIGRhdGFzZXQgaW52ZWNlIGNoZSBOLCBwZXIgcG90ZXIgZ2VzdGlyZSB1biB1bmljbyB0b29sdGlwXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IHRoaXMuZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGFDb252ZXJ0ZWQpOztcclxuICAgICAgICAgICAgZGF0ZUF4aXMuY3Vyc29yVG9vbHRpcEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZvckVhY2goKHMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzdGFja2VkID0gcy5zdGFja2VkICE9IG51bGwgJiYgcy5zdGFja2VkICE9IHVuZGVmaW5lZCA/IHMuc3RhY2tlZCA6IChzZXR0aW5ncz8uU3RhY2tlZCA/PyBmYWxzZSk7XHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gc3RhY2tlZCB8fCAocy5maWxsICE9IG51bGwgJiYgcy5maWxsICE9IHVuZGVmaW5lZCA/IHMuZmlsbCA6IChzZXR0aW5ncz8uRmlsbCA/PyBmYWxzZSkpO1xyXG4gICAgICAgICAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuU3RlcExpbmVTZXJpZXMgfCBhbTRjaGFydHMuTGluZVNlcmllcyA9IHNldHRpbmdzPy5TdGVwID8gbmV3IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcygpIDogbmV3IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKCk7XHJcbiAgICAgICAgICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IFwidlwiICsgKHRoaXMuc2luZ2xlRGF0YVNldCA/IGluZGV4IDogXCJcIik7XHJcbiAgICAgICAgICAgIHNlcmllcy5kYXRhRmllbGRzLmRhdGVYID0gXCJkXCI7XHJcbiAgICAgICAgICAgICg8YW55PnNlcmllcykubWVhc3VyZVVuaXQgPSBzLnVvbTtcclxuICAgICAgICAgICAgc2VyaWVzLm5hbWUgPSBzLm5hbWU7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdHJva2VXaWR0aCA9IHNldHRpbmdzPy5TdHJva2VTaXplID8/IDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5jb25uZWN0ID0gIWdhcHNBbGxvd2VkO1xyXG4gICAgICAgICAgICBzZXJpZXMubWluQnVsbGV0RGlzdGFuY2UgPSAxMDtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXBUZXh0ID0gdGhpcy5zaW5nbGVEYXRhU2V0ID8gXCJcIiA6IHMubmFtZSA/IFwie25hbWV9OiBbYm9sZF17dmFsdWVZfVsvXVwiIDogXCJbYm9sZF17dmFsdWVZfVsvXVwiO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5wb2ludGVyT3JpZW50YXRpb24gPSBcInZlcnRpY2FsXCI7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbE9wYWNpdHkgPSAwLjU7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmxhYmVsLnBhZGRpbmcoMTIsIDEyLCAxMiwgMTIpO1xyXG4gICAgICAgICAgICBzZXJpZXMuZmlsbE9wYWNpdHkgPSBmaWxsID8gdGhpcy5PcGFjaXR5T25GaWxsIDogMC4wMDAxO1xyXG4gICAgICAgICAgICBzZXJpZXMuc3RhY2tlZCA9IHN0YWNrZWQ7XHJcbiAgICAgICAgICAgIHNlcmllcy5oaWRkZW4gPSBzLmhpZGRlbjtcclxuXHJcbiAgICAgICAgICAgIC8vRGF0YXNldCBzaW5nb2xvLCBpIGRhdGkgc29ubyByZWdpc3RyYXRpIGEgbGl2ZWxsbyBkaSBjaGFydCwgY3JlbyBpbCB0b29sdGlwIGNoZSBwZXJtZXR0ZSBkaSB2ZWRlcmxpIHR1dHRpIGluc2llbWVcclxuICAgICAgICAgICAgLy9hbHRyaW1lbnRpIGFzc2Vnbm8gaSBkYXRpIGRlbGxhIHNlcmllIGRpcmV0dGFtZW50ZSBhbGxhIHNlcmllXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpIHtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmdldEZpbGxGcm9tT2JqZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGwgPSBhbTRjb3JlLmNvbG9yKFwiI2VlZVwiKTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmxhYmVsLmZpbGwgPSBhbTRjb3JlLmNvbG9yKFwiIzAwXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZGVmYXVsdFN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5oaWRkZW5TdGF0ZS50cmFuc2l0aW9uRHVyYXRpb24gPSAwO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vVXRpbGl6em8gaWwgbWlvIGRhdGVTZXJ2aWNlIHBlciBsYSBmb3JtYXR0YXppb25lIGRlbGxhIGRhdGEgaW4gbW9kbyBjaGUgbm9uIGRlYmJhIG1haSBnZXN0aXJlIG4gZm9ybWF0aSBmcmEgbiBsaWJyZXJpZS4uLiBiZWxsaXNzaW1vXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMuZGF0ZUZvcm1hdHRlci5mb3JtYXQgPSAoc291cmNlOiBEYXRlKTogc3RyaW5nID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgJiYgZmluYWxJbnN0YW50ICYmIFtcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIl0uaW5jbHVkZXMoaW50ZXJ2YWwudGltZXVuaXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aW1lcGFydDogXCJtaW51dGVcIiB8IFwiaG91clwiIHwgXCJkYXlcIiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJ2YWwudGltZXVuaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJob3VyXCI6IHRpbWVwYXJ0ID0gJ2RheSc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm1pbnV0ZVwiOiB0aW1lcGFydCA9ICdob3VyJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwic2Vjb25kXCI6IHRpbWVwYXJ0ID0gJ21pbnV0ZSc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aW1lcGFydClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVFeHRzLmFkanVzdERhdGVUb0ZpbmFsSW5zdGFudChzb3VyY2UsIHRpbWVwYXJ0LCBpbnRlcnZhbCA/IGludGVydmFsLnRpbWV1bml0ID09IFwic2Vjb25kXCIgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuZ2V0Rm9ybWF0dGVkKHNvdXJjZSwgaW50ZXJ2YWwgPyBbXCJkYXlcIiwgXCJ3ZWVrXCIsIFwibW9udGhcIiwgXCJ5ZWFyXCJdLmluY2x1ZGVzKGludGVydmFsLnRpbWV1bml0KSA6IGZhbHNlLCBpbnRlcnZhbCA/IGludGVydmFsLnRpbWV1bml0ID09IFwic2Vjb25kXCIgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmFkYXB0ZXIpLmFkZChcInRvb2x0aXBUZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IFwiW2JvbGRde2RhdGVYLmZvcm1hdERhdGUoKX1bL11cXG5cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVvbSA9IFwiIFtmb250LXN0eWxlOiBpdGFsaWNdXCIgKyAoPGFueT5zZXJpZXMpLm1lYXN1cmVVbml0IHx8IFwiXCIgKyBcIlsvXVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IFwiW1wiICsgKDxhbnk+aXRlbS5zdHJva2UpLmhleCArIFwiXeKXj1svXSBcIiArIChpdGVtLm5hbWUgPyAoaXRlbS5uYW1lICsgXCI6IFwiKSA6IFwiXCIpICsgXCJbYm9sZF17XCIgKyBpdGVtLmRhdGFGaWVsZHMudmFsdWVZICsgXCJ9Wy9dXCIgKyB1b20gKyBcIlxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmRhdGEgPSBzLnZhbHVlcztcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWdtZW50ID0gc2VyaWVzLnNlZ21lbnRzLnRlbXBsYXRlO1xyXG5cclxuICAgICAgICAgICAgbGV0IGhvdmVyU3RhdGUgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaG92ZXJTdGF0ZS5wcm9wZXJ0aWVzLnN0cm9rZVdpZHRoID0gKHNldHRpbmdzPy5TdHJva2VTaXplID8/IDEpICsgMTtcclxuXHJcbiAgICAgICAgICAgIGxldCBkaW1tZWQgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJkaW1tZWRcIik7XHJcbiAgICAgICAgICAgIGRpbW1lZC5wcm9wZXJ0aWVzLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjZGFkYWRhXCIpO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBzZXJpZSBoYSB1biBjb2xvcmUsIHVzbyBxdWVsbG8sIGFsdHJpbWVudGkgcGVzY28gZGFpIGNvbG9yaSBkaSBkZWZhdWx0IGFuZGFuZG8gaW4gb3JkaW5lXHJcbiAgICAgICAgICAgIGlmIChzLmNvbG9yKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goYW00Y29yZS5jb2xvcihzLmNvbG9yKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdFtkZWZhdWx0SW5kZXggJSBDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0Lmxlbmd0aF0pXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc2VyaWVzVG9QdXNoLnB1c2goc2VyaWVzKTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QgPSBzZXJpZXNDb2xvcnM7XHJcbiAgICAgICAgLy9TY3Jpdm8gbGUgc2VyaWUgbmVsIGdyYWZpY29cclxuICAgICAgICBzZXJpZXNUb1B1c2guZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICAgICAgaWYgKHNob3dUaW1lbGluZSlcclxuICAgICAgICAgICAgICAgICg8YW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXI+Q2hhcnRJbnN0YW5jZUNhc3RlZC5zY3JvbGxiYXJYKS5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnNjcm9sbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie25hbWV9XCI7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3ZlclwiLCAoZXZlbnQpID0+IHsgdGhpcy5wcm9jZXNzT3Zlcig8YW00Y2hhcnRzLkxpbmVTZXJpZXM+ZXZlbnQudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3V0XCIsICgpID0+IHsgdGhpcy5wcm9jZXNzT3V0KCk7IH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvciA9IG5ldyBhbTRjaGFydHMuWFlDdXJzb3IoKTtcclxuXHJcbiAgICAgICAgLy9Qcm92ZSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IuZXZlbnRzLm9uKFwiY3Vyc29ycG9zaXRpb25jaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgIC8vICAgICAvL3ZhciB2YWx1ZSA9IGRhdGVBeGlzLnBvc2l0aW9uVG9EYXRlKGRhdGVBeGlzLnRvQXhpc1Bvc2l0aW9uKGV2LnRhcmdldC54UG9zaXRpb24pKTtcclxuICAgICAgICAvLyAgICAgdmFyIGR0ID0gZGF0ZUF4aXMuc2VyaWVzLnZhbHVlcy5maW5kKHQgPT4gdC5kYXRhSXRlbS52YWx1ZXMuZGF0ZVgpO1xyXG4gICAgICAgIC8vICAgICBpZiAoZHQgJiYgZHQuZGF0YUl0ZW0pIHtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGR0LmRhdGFJdGVtLnZhbHVlcyk7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyB0aGlzLkNoYXJ0SW5zdGFuY2UudG9vbHRpcFRleHQgPSBkdDtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IFwiXCI7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnhBeGlzID0gZGF0ZUF4aXM7XHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci55QXhpcyA9IHlBeGlzO1xyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpXHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IubWF4VG9vbHRpcERpc3RhbmNlID0gLTE7XHJcblxyXG4gICAgICAgIC8vVE9ETzogQ2VyY2FyZSBkaSBjYXBpcmUgcGVyY2jDqSDDqCBmaWdsaW8gZGkgcHV0dGFuYS4uLi4uLlxyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgICAgICBkYXRlQXhpcy5ldmVudHMub24oXCJlbmRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGZpeFRpbWVVbml0KHR1OiBhbnkpOiBcIm1pbGxpc2Vjb25kXCIgfCBcInNlY29uZFwiIHwgXCJtaW51dGVcIiB8IFwiaG91clwiIHwgXCJkYXlcIiB8IFwid2Vla1wiIHwgXCJtb250aFwiIHwgXCJ5ZWFyXCIge1xyXG4gICAgICAgIGlmICh0dSA9PT0gMCkgcmV0dXJuIFwibWlsbGlzZWNvbmRcIjtcclxuICAgICAgICBlbHNlIGlmICh0dSA9PT0gMSkgcmV0dXJuIFwic2Vjb25kXCI7XHJcbiAgICAgICAgZWxzZSBpZiAodHUgPT09IDIpIHJldHVybiBcIm1pbnV0ZVwiO1xyXG4gICAgICAgIGVsc2UgaWYgKHR1ID09PSAzKSByZXR1cm4gXCJob3VyXCI7XHJcbiAgICAgICAgZWxzZSBpZiAodHUgPT09IDQpIHJldHVybiBcImRheVwiO1xyXG4gICAgICAgIGVsc2UgaWYgKHR1ID09PSA1KSByZXR1cm4gXCJ3ZWVrXCI7XHJcbiAgICAgICAgZWxzZSBpZiAodHUgPT09IDYpIHJldHVybiBcIm1vbnRoXCI7XHJcbiAgICAgICAgZWxzZSBpZiAodHUgPT09IDcpIHJldHVybiBcInllYXJcIjtcclxuICAgICAgICBlbHNlIHJldHVybiB0dTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBzZXRTZWxlY3Rpb24oZnJvbTogRGF0ZSwgdG86IERhdGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRhdGVBeGlzLnpvb21Ub0RhdGVzKGZyb20sIHRvLCB0cnVlLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IExpbmVDaGFydERhdGEgfCBhbnkpIHtcclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogTGluZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JMaW5lQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zaW5nbGVEYXRhU2V0KSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5nZW5lcmF0ZVNpbmdsZURhdGFzZXQoZGF0YUNvbnZlcnRlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5hZGREYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBcIkltcG9zc2liaWxlIGFnZ2lvcm5hcmUgaSBkYXRpIHNlbnphIHVuaXJlIGlsIGRhdGFzZXQuIFNpIHByZWdhIGRpIGltcG9zdGFyZSBbTWVyZ2VEYXRhc2V0c10gYSB0cnVlXCJcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBhcnRlbmRvIGRhIGRhdGkgZGl2aXNpIHBlciBzZXJpdWUgZ2VuZXJhIHVuIGRhdGFzZXQgdW5pdG8gY29uIGxhIGRhdGEgY29tZSBjaGlhdmUgZSBpIHZhcmkgdmFsb3JpIGRvcG8gKi9cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGE6IExpbmVDaGFydERhdGEpOiBhbnkge1xyXG4gICAgICAgIGxldCBkdG86IHsgW2luZGV4OiBudW1iZXJdOiB7IFtzaW5kZXg6IHN0cmluZ106IG51bWJlciB9IH0gPSB7fTtcclxuICAgICAgICBkYXRhLnNlcmllcy5mb3JFYWNoKCh2cywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRhaXRlbSA9IHZzLnZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciBpbmRleGVyID0gbmV3IERhdGUoZGF0YWl0ZW0uZCkudmFsdWVPZigpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghZHRvW2luZGV4ZXJdKVxyXG4gICAgICAgICAgICAgICAgICAgIGR0b1tpbmRleGVyXSA9IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgIGR0b1tpbmRleGVyXVsndicgKyBpbmRleF0gPSBkYXRhaXRlbS52O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHZhciBkYXRlcyA9IE9iamVjdC5rZXlzKGR0byk7XHJcbiAgICAgICAgdmFyIHJldCA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlczogeyBbc2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSA9IGR0b1tkYXRlc1tpXV07XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0geyBkOiBuZXcgRGF0ZShwYXJzZUludChkYXRlc1tpXSkpIH07XHJcblxyXG4gICAgICAgICAgICB2YXIgdmFscyA9IE9iamVjdC5rZXlzKHZhbHVlcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB2YWxzLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlcmllcyA9IHZhbHNbaWldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNpbmdsZVZhbCA9IHZhbHVlc1tzZXJpZXNdO1xyXG4gICAgICAgICAgICAgICAgaXRlbVtzZXJpZXNdID0gc2luZ2xlVmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkKGV2LCBzZXR0aW5ncykge1xyXG4gICAgICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy50aHJvdHRsYShcInNlbGNoYW5nZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IDxhbTRjaGFydHMuRGF0ZUF4aXM+ZXYudGFyZ2V0XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZShheGlzLm1pblpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoYXhpcy5tYXhab29tZWQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluaXRpYWwgPSBheGlzLm1pbiA9PSBheGlzLm1pblpvb21lZCAmJiBheGlzLm1heCA9PSBheGlzLm1heFpvb21lZDtcclxuICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayh7IGZyb206IHN0YXJ0LCB0bzogZW5kLCBpbml0aWFsOiBpbml0aWFsIH0pO1xyXG4gICAgICAgICAgICB9LCAxNTApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NPdmVyKGhvdmVyZWRTZXJpZXM6IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKSB7XHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy56SW5kZXggPSA5OTk7XHJcbiAgICAgICAgbGV0IGZpbGwgPSBob3ZlcmVkU2VyaWVzLmZpbGxPcGFjaXR5ID09IHRoaXMuT3BhY2l0eU9uRmlsbDtcclxuICAgICAgICBob3ZlcmVkU2VyaWVzLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImhvdmVyXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSB0aGlzLk9wYWNpdHlPblNlbGVjdGVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgaG92ZXJlZFNlcmllcy5sZWdlbmREYXRhSXRlbS5tYXJrZXIuY2hpbGRyZW4uZ2V0SW5kZXgoMSkuZmlsbE9wYWNpdHkgPSB0aGlzLk9wYWNpdHlPblNlbGVjdGVkO1xyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VyaWVzICE9IGhvdmVyZWRTZXJpZXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBmaWxsID0gc2VyaWVzLmZpbGxPcGFjaXR5ID09IHRoaXMuT3BhY2l0eU9uRmlsbDtcclxuICAgICAgICAgICAgICAgICg8YW00Y2hhcnRzLkxpbmVTZXJpZXM+c2VyaWVzKS5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImRpbW1lZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZmlsbFNwcml0ZS5maWxsT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NPdXQoKSB7XHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChzZXJpZXMsIGkpID0+IHtcclxuICAgICAgICAgICAgc2VyaWVzLnpJbmRleCA9IGk7XHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gc2VyaWVzLmZpbGxPcGFjaXR5ID09IHRoaXMuT3BhY2l0eU9uRmlsbDtcclxuICAgICAgICAgICAgKDxhbTRjaGFydHMuTGluZVNlcmllcz5zZXJpZXMpLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJkZWZhdWx0XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZmlsbFNwcml0ZS5maWxsT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMubGVnZW5kRGF0YUl0ZW0ubWFya2VyLmNoaWxkcmVuLmdldEluZGV4KDEpLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqIEZ1bnppb25lIGRpIHRocm90dGxpbmcgcGVyIG5vbiBzcGFtbWFyZSByaWNoaWVzdGUgaW4gY2FzbyBkaSBhbmltYXppb25pIGF0dGl2YXRlXHJcbiAgICAvL1RPRE86IHNwb3N0YXJsYSBpbiB1biBtZXRvZG8gZGkgdXRpbGl0w6AgKGVzZmFlbnphL2V4dGVuc2lvbnMpXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBleGVjdXRpb25UaW1lcnM6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgdGhyb3R0bGEoaWQ6IHN0cmluZywgZnVuYzogRnVuY3Rpb24sIHRocm90dGxlVGltZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgLy9TZSBobyBsYSBmdW56aW9uZSBjaGUgdnVvbGUgZXNlZ3VpcmUgcmlwdWxpc2NvIHF1ZWwgdGltZW91dFxyXG4gICAgICAgIGlmICh0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0pXHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0pO1xyXG5cclxuICAgICAgICAvL1JpY3JlbyBpbCB0aW1lb3V0IHBlciBlc2VndWlyZSBxdWVsbGEgZnVuemlvbmUgZG9wbyB0aHJvdHRsZVRpbWUgbWlsbGlzZWNvbmRpXHJcbiAgICAgICAgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gc2V0VGltZW91dCgoKSA9PiB7IGZ1bmMoKTsgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gbnVsbDsgfSwgdGhyb3R0bGVUaW1lKTtcclxuICAgIH1cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG59Il19
@@ -111,4 +111,4 @@ export class PieChartService {
111
111
  ev.target.show();
112
112
  }
113
113
  }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGllQ2hhcnRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvc2VydmljZXMvUGllQ2hhcnRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFNBQVMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBTXhCLGNBQWM7SUFDZCxZQUFtQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBSnZDLGNBQWM7UUFDTix1QkFBa0IsR0FBWSxJQUFJLENBQUM7SUFHQSxDQUFDO0lBRTVDOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQXdCLEVBQUUsUUFBMEI7UUFDbEUsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsdUVBQXVFO1FBQ3ZFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBUyxRQUFTLENBQUMsZUFBZSxDQUFDO1FBRWxILElBQUksTUFBTSxHQUFnRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJ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LFFBQVEsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO2FBQzdEO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYztJQUNkLFlBQVksQ0FBQyxJQUFVLEVBQUUsRUFBUTtJQUVqQyxDQUFDO0lBRUQsY0FBYztJQUNQLFdBQVcsQ0FBQyxJQUF3QjtRQUN2QyxXQUFXO0lBQ2YsQ0FBQztJQUVELGNBQWM7SUFDTixVQUFVLENBQUMsRUFBRTtRQUNqQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO1lBQ3BFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7O1lBRWpCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5pbXBvcnQgeyBQaWVDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9QaWVDaGFydERhdGEnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZUNvbG9yIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvYmFzZS9LZXlWYWx1ZUNvbG9yJztcclxuaW1wb3J0IHsgUGllQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9zZXR0aW5ncy9QaWVDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIFBpZUNoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGllQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5QaWVDaGFydD57XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5QaWVDaGFydDNEIHwgYW00Y2hhcnRzLlBpZUNoYXJ0O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgVmlld0Fic29sdXRlVmFsdWVzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBQaWVDaGFydFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBQaWVDaGFydERhdGEgfCBhbnksIHNldHRpbmdzOiBQaWVDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5QaWVDaGFydD4ge1xyXG4gICAgICAgIGlmIChzZXR0aW5ncy5UaW1lbGluZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGltZWxpbmUgbm90IHN1cHBvcnRlZCBmb3IgcGllIGNoYXJ0XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICAgICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlID0gYW00Y29yZS5jcmVhdGUoc2V0dGluZ3MuTmFtZSwgc2V0dGluZ3MuTW9kZTNEID8gYW00Y2hhcnRzLlBpZUNoYXJ0M0QgOiBhbTRjaGFydHMuUGllQ2hhcnQpO1xyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5pbm5lclJhZGl1cyA9ICgoc2V0dGluZ3MuRG9udXRSYWRpdXNQZXJjZW50YWdlIHx8IDE1KSAvIDEwMCkgKiAoPGFueT5zZXR0aW5ncykuQ29udGFpbmVySGVpZ2h0O1xyXG5cclxuICAgICAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuUGllU2VyaWVzM0QgfCBhbTRjaGFydHMuUGllU2VyaWVzID0gdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5wdXNoKHNldHRpbmdzLk1vZGUzRCA/IG5ldyBhbTRjaGFydHMuUGllU2VyaWVzM0QoKSA6IG5ldyBhbTRjaGFydHMuUGllU2VyaWVzKCkpO1xyXG4gICAgICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlID0gXCJ2XCI7XHJcbiAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuY2F0ZWdvcnkgPSBcImtcIjtcclxuICAgICAgICAvL0lsIGRlZmF1bHQgc29ubyB2YWxvcmkgcGVyY2VudHVhbGlcclxuICAgICAgICBpZiAodGhpcy5WaWV3QWJzb2x1dGVWYWx1ZXMpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmxlZ2VuZFNldHRpbmdzLnZhbHVlVGV4dCA9IFwie3ZhbHVlfVwiO1xyXG4gICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLnRleHQgPSBcIntjYXRlZ29yeX06IFtib2xkXXt2YWx1ZX1bL11cIlxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjZmZmXCIpO1xyXG4gICAgICAgIHNlcmllcy5zbGljZXMudGVtcGxhdGUuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgc2VyaWVzLnNsaWNlcy50ZW1wbGF0ZS50b2dnbGFibGUgPSBmYWxzZTtcclxuICAgICAgICBzZXJpZXMuaGlkZGVuU3RhdGUucHJvcGVydGllcy5vcGFjaXR5ID0gMTtcclxuICAgICAgICBzZXJpZXMuaGlkZGVuU3RhdGUucHJvcGVydGllcy5lbmRBbmdsZSA9IC05MDtcclxuICAgICAgICBzZXJpZXMuaGlkZGVuU3RhdGUucHJvcGVydGllcy5zdGFydEFuZ2xlID0gLTkwO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuSGlkZVplcm9lcyA9PSBudWxsID8gdHJ1ZSA6IHNldHRpbmdzLkhpZGVaZXJvZXMpIHtcclxuICAgICAgICAgICAgc2VyaWVzLnRpY2tzLnRlbXBsYXRlLmV2ZW50cy5vbihcInJlYWR5XCIsIHRoaXMuaGlkZVplcm9lcyk7XHJcbiAgICAgICAgICAgIHNlcmllcy50aWNrcy50ZW1wbGF0ZS5ldmVudHMub24oXCJ2aXNpYmlsaXR5Y2hhbmdlZFwiLCB0aGlzLmhpZGVaZXJvZXMpO1xyXG4gICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLmV2ZW50cy5vbihcInJlYWR5XCIsIHRoaXMuaGlkZVplcm9lcyk7XHJcbiAgICAgICAgICAgIHNlcmllcy5sYWJlbHMudGVtcGxhdGUuZXZlbnRzLm9uKFwidmlzaWJpbGl0eWNoYW5nZWRcIiwgdGhpcy5oaWRlWmVyb2VzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlcmllcy5zbGljZXMudGVtcGxhdGUuZXZlbnRzLm9uKFwiaGl0XCIsIChldikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoKDxhbnk+c2V0dGluZ3MpLk9uU2VyaWVzQ2xpY2tDYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsaWNrZWRTZXJpZXMgPSAoPEtleVZhbHVlQ29sb3I+ZXYudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KS5rO1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VyaWVzQ2xpY2tDYWxsYmFjayhjbGlja2VkU2VyaWVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogUGllQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvclBpZUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuXHJcbiAgICAgICAgbGV0IGRlZmF1bHRJbmRleCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhQ29udmVydGVkLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoIWRhdGFDb252ZXJ0ZWQudmFsdWVzW2ldLmMpIHtcclxuICAgICAgICAgICAgICAgIGRhdGFDb252ZXJ0ZWQudmFsdWVzW2ldLmMgPSA8YW55PnRoaXMuQ2hhcnRJbnN0YW5jZS5jb2xvcnMubGlzdFtkZWZhdWx0SW5kZXggJSB0aGlzLkNoYXJ0SW5zdGFuY2UuY29sb3JzLmxpc3QubGVuZ3RoXTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRJbmRleCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGRhdGFDb252ZXJ0ZWQudmFsdWVzW2ldLmMgPSA8YW55PmFtNGNvcmUuY29sb3IoZGF0YUNvbnZlcnRlZC52YWx1ZXNbaV0uYylcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlcmllcy5zbGljZXMudGVtcGxhdGUucHJvcGVydHlGaWVsZHMuZmlsbCA9IFwiY1wiO1xyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5kYXRhID0gZGF0YUNvbnZlcnRlZC52YWx1ZXM7XHJcblxyXG4gICAgICAgIGlmICghc2V0dGluZ3MuTGFiZWxzVmlzaWJsZSkge1xyXG4gICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2VyaWVzLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2V0dGluZ3MuTGFiZWxzV3JhcCB8fCBzZXR0aW5ncy5MYWJlbHNUcnVuY2F0ZSkge1xyXG4gICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLm1heFdpZHRoID0gc2V0dGluZ3MuTGFiZWxzV2lkdGggfHwgMTAwO1xyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuTGFiZWxzV3JhcClcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sYWJlbHMudGVtcGxhdGUud3JhcCA9IHRydWU7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLkxhYmVsc1RydW5jYXRlKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS50cnVuY2F0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgICAgICAgIGxldCBsZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kID0gbGVnZW5kXHJcbiAgICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiB8fCBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICBsZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUudG9nZ2xhYmxlID0gc2V0dGluZ3MuSGlkZVNlcmllc09uTGFiZWxDbGljayA9PT0gdHJ1ZTtcclxuICAgICAgICAgICAgbGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcblxyXG4gICAgICAgICAgICAvL1NlIGxhIGxlZ2VuZGEgbm9uIGZhIGlsIHRvZ2dsZSBkZWxsYSBzZXJpZSBsYSBjb25zaWRlcm8gY29tZSBzZSBmb3NzZSB1biBjbGljayBzdWxsYSBzZXJpZSBpbiBzZVxyXG4gICAgICAgICAgICBpZiAoIXNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5ldmVudHMub24oXCJoaXRcIiwgKGV2KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsaWNrZWRTZXJpZXMgPSAoPGFueT5ldi50YXJnZXQuZGF0YUl0ZW0uZGF0YUNvbnRleHQpLmxlZ2VuZERhdGFJdGVtLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2soY2xpY2tlZFNlcmllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmRQYWRkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGUgPSB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1RvcCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcudG9wID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nQm90dG9tID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5ib3R0b20gPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdMZWZ0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5sZWZ0ID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nUmlnaHQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnJpZ2h0ID8/IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBzZXRTZWxlY3Rpb24oZnJvbTogRGF0ZSwgdG86IERhdGUpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogUGllQ2hhcnREYXRhIHwgYW55KXtcclxuICAgICAgICAvL1RPRE86SU1QTFxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGhpZGVaZXJvZXMoZXYpIHtcclxuICAgICAgICBpZiAoZXYudGFyZ2V0LmRhdGFJdGVtICYmIChldi50YXJnZXQuZGF0YUl0ZW0udmFsdWVzLnZhbHVlLnBlcmNlbnQgPT0gMCkpXHJcbiAgICAgICAgICAgIGV2LnRhcmdldC5oaWRlKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBldi50YXJnZXQuc2hvdygpO1xyXG4gICAgfVxyXG59Il19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGllQ2hhcnRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvc2VydmljZXMvUGllQ2hhcnRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFNBQVMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBTXhCLGNBQWM7SUFDZCxZQUFtQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBSnZDLGNBQWM7UUFDTix1QkFBa0IsR0FBWSxJQUFJLENBQUM7SUFHQSxDQUFDO0lBRTVDOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQXdCLEVBQUUsUUFBMEI7UUFDbEUsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFTLFFBQVMsQ0FBQyxlQUFlLENBQUM7UUFFbEgsSUFBSSxNQUFNLEdBQWdELElBQUksQ0FBQyxhQUFhLENBQUMsTUFB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QVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztnQkFDNUQsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7Z0JBQ3hELFFBQVEsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzlELENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFZLENBQUMsSUFBVSxFQUFFLEVBQVE7SUFFakMsQ0FBQztJQUVELGNBQWM7SUFDUCxXQUFXLENBQUMsSUFBd0I7UUFDdkMsV0FBVztJQUNmLENBQUM7SUFFRCxjQUFjO0lBQ04sVUFBVSxDQUFDLEVBQUU7UUFDakIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztZQUNwRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDOztZQUVqQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuaW1wb3J0IHsgUGllQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvUGllQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgS2V5VmFsdWVDb2xvciB9IGZyb20gJy4uL21vZGVscy9kYXRhL2Jhc2UvS2V5VmFsdWVDb2xvcic7XHJcbmltcG9ydCB7IFBpZUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvUGllQ2hhcnRTZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBQaWVDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBpZUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuUGllQ2hhcnQ+e1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuUGllQ2hhcnQzRCB8IGFtNGNoYXJ0cy5QaWVDaGFydDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIFZpZXdBYnNvbHV0ZVZhbHVlczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIGRhdGEgdW5hIGNvcHBpYSBEYXRpIC0gSW1wb3N0YXppb25pIGxpIHV0aWxpenphIHBlciBjcmVhcmUgZSB2aXN1YWxpenphcmUgdW4gUGllQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogUGllQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogUGllQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuUGllQ2hhcnQ+IHtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIHBpZSBjaGFydFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIHNldHRpbmdzLk1vZGUzRCA/IGFtNGNoYXJ0cy5QaWVDaGFydDNEIDogYW00Y2hhcnRzLlBpZUNoYXJ0KTtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuaW5uZXJSYWRpdXMgPSAoKHNldHRpbmdzLkRvbnV0UmFkaXVzUGVyY2VudGFnZSB8fCAxNSkgLyAxMDApICogKDxhbnk+c2V0dGluZ3MpLkNvbnRhaW5lckhlaWdodDtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllczogYW00Y2hhcnRzLlBpZVNlcmllczNEIHwgYW00Y2hhcnRzLlBpZVNlcmllcyA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMucHVzaChzZXR0aW5ncy5Nb2RlM0QgPyBuZXcgYW00Y2hhcnRzLlBpZVNlcmllczNEKCkgOiBuZXcgYW00Y2hhcnRzLlBpZVNlcmllcygpKTtcclxuICAgICAgICBzZXJpZXMuZGF0YUZpZWxkcy52YWx1ZSA9IFwidlwiO1xyXG4gICAgICAgIHNlcmllcy5kYXRhRmllbGRzLmNhdGVnb3J5ID0gXCJrXCI7XHJcbiAgICAgICAgLy9JbCBkZWZhdWx0IHNvbm8gdmFsb3JpIHBlcmNlbnR1YWxpXHJcbiAgICAgICAgaWYgKHRoaXMuVmlld0Fic29sdXRlVmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5sZWdlbmRTZXR0aW5ncy52YWx1ZVRleHQgPSBcInt2YWx1ZX1cIjtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS50ZXh0ID0gXCJ7Y2F0ZWdvcnl9OiBbYm9sZF17dmFsdWV9Wy9dXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzLnNsaWNlcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiI2ZmZlwiKTtcclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgIHNlcmllcy5zbGljZXMudGVtcGxhdGUudG9nZ2xhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMub3BhY2l0eSA9IDE7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMuZW5kQW5nbGUgPSAtOTA7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMuc3RhcnRBbmdsZSA9IC05MDtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkhpZGVaZXJvZXMgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncy5IaWRlWmVyb2VzKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy50aWNrcy50ZW1wbGF0ZS5ldmVudHMub24oXCJyZWFkeVwiLCB0aGlzLmhpZGVaZXJvZXMpO1xyXG4gICAgICAgICAgICBzZXJpZXMudGlja3MudGVtcGxhdGUuZXZlbnRzLm9uKFwidmlzaWJpbGl0eWNoYW5nZWRcIiwgdGhpcy5oaWRlWmVyb2VzKTtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5ldmVudHMub24oXCJyZWFkeVwiLCB0aGlzLmhpZGVaZXJvZXMpO1xyXG4gICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLmV2ZW50cy5vbihcInZpc2liaWxpdHljaGFuZ2VkXCIsIHRoaXMuaGlkZVplcm9lcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLmV2ZW50cy5vbihcImhpdFwiLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbGlja2VkU2VyaWVzID0gKDxLZXlWYWx1ZUNvbG9yPmV2LnRhcmdldC5kYXRhSXRlbS5kYXRhQ29udGV4dCkuaztcclxuICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2soY2xpY2tlZFNlcmllcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IFBpZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JQaWVDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUNvbnZlcnRlZC52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCFkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jID0gPGFueT50aGlzLkNoYXJ0SW5zdGFuY2UuY29sb3JzLmxpc3RbZGVmYXVsdEluZGV4ICUgdGhpcy5DaGFydEluc3RhbmNlLmNvbG9ycy5saXN0Lmxlbmd0aF07XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jID0gPGFueT5hbTRjb3JlLmNvbG9yKGRhdGFDb252ZXJ0ZWQudmFsdWVzW2ldLmMpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLnByb3BlcnR5RmllbGRzLmZpbGwgPSBcImNcIjtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IGRhdGFDb252ZXJ0ZWQudmFsdWVzO1xyXG5cclxuICAgICAgICBpZiAoIXNldHRpbmdzLkxhYmVsc1Zpc2libGUpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHNlcmllcy50aWNrcy50ZW1wbGF0ZS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLkxhYmVsc1dyYXAgfHwgc2V0dGluZ3MuTGFiZWxzVHJ1bmNhdGUpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5tYXhXaWR0aCA9IHNldHRpbmdzLkxhYmVsc1dpZHRoIHx8IDEwMDtcclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxhYmVsc1dyYXApXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLndyYXAgPSB0cnVlO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5MYWJlbHNUcnVuY2F0ZSlcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sYWJlbHMudGVtcGxhdGUudHJ1bmNhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICBsZXQgbGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZCA9IGxlZ2VuZFxyXG4gICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gfHwgXCJib3R0b21cIjtcclxuICAgICAgICAgICAgbGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvZ2dsYWJsZSA9IHNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sgPT09IHRydWU7XHJcbiAgICAgICAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBsZWdlbmRhIG5vbiBmYSBpbCB0b2dnbGUgZGVsbGEgc2VyaWUgbGEgY29uc2lkZXJvIGNvbWUgc2UgZm9zc2UgdW4gY2xpY2sgc3VsbGEgc2VyaWUgaW4gc2VcclxuICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5IaWRlU2VyaWVzT25MYWJlbENsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICBsZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwiaGl0XCIsIChldikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZXJpZXNDbGlja0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbGlja2VkU2VyaWVzID0gKDxhbnk+ZXYudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KS5sZWdlbmREYXRhSXRlbS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoPGFueT5zZXR0aW5ncykuT25TZXJpZXNDbGlja0NhbGxiYWNrKGNsaWNrZWRTZXJpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IFBpZUNoYXJ0RGF0YSB8IGFueSl7XHJcbiAgICAgICAgLy9UT0RPOklNUExcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBoaWRlWmVyb2VzKGV2KSB7XHJcbiAgICAgICAgaWYgKGV2LnRhcmdldC5kYXRhSXRlbSAmJiAoZXYudGFyZ2V0LmRhdGFJdGVtLnZhbHVlcy52YWx1ZS5wZXJjZW50ID09IDApKVxyXG4gICAgICAgICAgICBldi50YXJnZXQuaGlkZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZXYudGFyZ2V0LnNob3coKTtcclxuICAgIH1cclxufSJdfQ==