@ts-core/angular 15.0.51 → 15.0.52

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.
@@ -180,6 +180,9 @@ export class RouterBaseService extends Loadable {
180
180
  if (_.isNil(snapshot)) {
181
181
  snapshot = this.route.snapshot;
182
182
  }
183
+ if (_.isNil(defaultValue)) {
184
+ defaultValue = null;
185
+ }
183
186
  return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;
184
187
  }
185
188
  hasFragment(snapshot) {
@@ -218,4 +221,4 @@ export class RouterBaseService extends Loadable {
218
221
  return this._router;
219
222
  }
220
223
  }
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyQmFzZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZS9Sb3V0ZXJCYXNlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBRWYsZUFBZSxFQUdsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQTBDO0lBZTdFLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsZUFBZTtJQUNmLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBc0IsT0FBZSxFQUFZLE1BQXNCLEVBQVksTUFBMkI7UUFDMUcsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQVhwRyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFhMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FB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QUFLLENBQUMsV0FBVyxDQUFDLEtBQWE7UUFDbEMsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixzQkFBc0I7SUFDdEIsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIE5hdmlnYXRpb25DYW5jZWwsXG4gICAgTmF2aWdhdGlvbkVuZCxcbiAgICBOYXZpZ2F0aW9uRXJyb3IsXG4gICAgTmF2aWdhdGlvbkV4dHJhcyxcbiAgICBOYXZpZ2F0aW9uU3RhcnQsXG4gICAgUm91dGVyLFxuICAgIFVybFRyZWVcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvYWRhYmxlLCBMb2FkYWJsZUV2ZW50LCBMb2FkYWJsZVN0YXR1cyB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlRGF0YSB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBOYXRpdmVXaW5kb3dTZXJ2aWNlIH0gZnJvbSAnQHRzLWNvcmUvZnJvbnRlbmQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXJCYXNlU2VydmljZSBleHRlbmRzIExvYWRhYmxlPHZvaWQsIFJvdXRlckJhc2VTZXJ2aWNlRXZlbnREYXRhPiB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBwYXJhbXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgZXh0cmFzVG9BcHBseTogTmF2aWdhdGlvbkV4dHJhcztcbiAgICBwcm90ZWN0ZWQgaXNOZWVkVXBkYXRlRXh0cmFzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgX2xhc3RVcmw6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzVXJsOiBzdHJpbmc7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIsIHByb3RlY3RlZCBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm90ZWN0ZWQgd2luZG93OiBOYXRpdmVXaW5kb3dTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFyYW1zID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IFN1YmplY3QoKTtcblxuICAgICAgICB0aGlzLl9sYXN0VXJsID0gdGhpcy51cmw7XG4gICAgICAgIHRoaXMud2luZG93LmdldFBhcmFtcygpLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHRoaXMucGFyYW1zLnNldChrZXksIHZhbHVlKSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9ic2VydmVycygpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByaXZhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplT2JzZXJ2ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNVcmwgPSB0aGlzLnVybDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9IExvYWRhYmxlU3RhdHVzLkxPQURJTkc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHwgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RVcmwgPSBldmVudC51cmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gTG9hZGFibGVTdGF0dXMuTE9BREVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgYXBwbHlFeHRyYXMoZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0ge30gYXMgTmF2aWdhdGlvbkV4dHJhcztcbiAgICAgICAgcGFyYW1zLnF1ZXJ5UGFyYW1zID0gdGhpcy5nZXRRdWVyeVBhcmFtcygpO1xuXG4gICAgICAgIGlmICghXy5pc05pbChleHRyYXMpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgZXh0cmFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4dHJhc1RvQXBwbHkgPSBleHRyYXM7XG4gICAgICAgIHRoaXMuaXNOZWVkVXBkYXRlRXh0cmFzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRRdWVyeVBhcmFtcygpOiBhbnkge1xuICAgICAgICBsZXQgcGFyYW1zID0ge30gYXMgYW55O1xuICAgICAgICB0aGlzLnBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiAocGFyYW1zW2tleV0gPSB2YWx1ZSkpO1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21taXRTdGF0dXNDaGFuZ2VkUHJvcGVydGllcyhvbGRTdGF0dXM6IExvYWRhYmxlU3RhdHVzLCBuZXdTdGF0dXM6IExvYWRhYmxlU3RhdHVzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmNvbW1pdFN0YXR1c0NoYW5nZWRQcm9wZXJ0aWVzKG9sZFN0YXR1cywgbmV3U3RhdHVzKTtcblxuICAgICAgICBzd2l0Y2ggKG5ld1N0YXR1cykge1xuICAgICAgICAgICAgY2FzZSBMb2FkYWJsZVN0YXR1cy5MT0FESU5HOlxuICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9hZGFibGVFdmVudC5TVEFSVEVEKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIExvYWRhYmxlU3RhdHVzLkxPQURFRDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc05lZWRVcGRhdGVFeHRyYXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05lZWRVcGRhdGVFeHRyYXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUV4dHJhcyh0aGlzLmV4dHJhc1RvQXBwbHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLm5leHQobmV3IE9ic2VydmFibGVEYXRhKExvYWRhYmxlRXZlbnQuQ09NUExFVEUsIHsgdXJsOiB0aGlzLnVybCwgcHJldmlvdXNVcmw6IHRoaXMucHJldmlvdXNVcmwgfSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1N0YXR1cyA9PT0gTG9hZGFibGVTdGF0dXMuTE9BREVEIHx8IG5ld1N0YXR1cyA9PT0gTG9hZGFibGVTdGF0dXMuRVJST1IpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9hZGFibGVFdmVudC5GSU5JU0hFRCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0TmF2aWdhdGUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBuYXZpZ2F0ZSh1cmw6IHN0cmluZywgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcywgaXNDbGVhclBhcmFtcz86IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKGlzQ2xlYXJQYXJhbXMpIHtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLmNsZWFyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFyYW1zID0ge30gYXMgTmF2aWdhdGlvbkV4dHJhcztcbiAgICAgICAgcGFyYW1zLnF1ZXJ5UGFyYW1zID0gdGhpcy5nZXRRdWVyeVBhcmFtcygpO1xuICAgICAgICBpZiAoIV8uaXNOaWwoZXh0cmFzKSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIGV4dHJhcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZVRvRXh0ZXJuYWxVcmwodXJsOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nID0gJ19ibGFuaycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53aW5kb3cub3Blbih1cmwsIHRhcmdldCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlVG9MYXN0KGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUodGhpcy5sYXN0VXJsLCBleHRyYXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBuYXZpZ2F0ZUlmTm90TG9hZGluZyh1cmw6IHN0cmluZywgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNMb2FkaW5nID8gdGhpcy5uYXZpZ2F0ZSh1cmwsIGV4dHJhcykgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBpc1VybEFjdGl2ZShpdGVtOiBzdHJpbmcgfCBVcmxUcmVlLCBpc0V4YWN0OiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZShpdGVtLCBpc0V4YWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc1N0cmluZyhpdGVtKSkge1xuICAgICAgICAgICAgaXRlbSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGN1cnJlbnQgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnVybFRyZWUudG9TdHJpbmcoKSk7XG4gICAgICAgIGl0ZW0uZnJhZ21lbnQgPSBjdXJyZW50LmZyYWdtZW50ID0gbnVsbDtcbiAgICAgICAgaXRlbS5xdWVyeVBhcmFtcyA9IGN1cnJlbnQucXVlcnlQYXJhbXMgPSB7fTtcbiAgICAgICAgcmV0dXJuIGl0ZW0udG9TdHJpbmcoKSA9PT0gY3VycmVudC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBQYXJhbSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGdldFBhcmFtczxUID0gYW55PigpOiBUIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHt9IGFzIGFueTtcbiAgICAgICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKHBhcmFtc1trZXldID0gdmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzUGFyYW0obmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy5oYXMobmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcmFtPFQgPSBzdHJpbmc+KG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQYXJhbShuYW1lKSA/ICh0aGlzLnBhcmFtcy5nZXQobmFtZSkgYXMgYW55KSA6IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGFyYW0obmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgICAgICBpZiAoXy5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmFtcy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbChleHRyYXMpKSB7XG4gICAgICAgICAgICBleHRyYXMgPSB7IHJlcGxhY2VVcmw6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGx5RXh0cmFzKGV4dHJhcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVBhcmFtKG5hbWU6IHN0cmluZywgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNQYXJhbShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRQYXJhbShuYW1lLCBudWxsLCBleHRyYXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyUGFyYW1zKGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJhbXMuY2xlYXIoKTtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGV4dHJhcykpIHtcbiAgICAgICAgICAgIGV4dHJhcyA9IHsgcmVwbGFjZVVybDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwbHlFeHRyYXMoZXh0cmFzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1BhcmFtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLnNpemUgPiAwO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdEZyYWdtZW50IE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0RnJhZ21lbnQoc25hcHNob3Q/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoXy5pc05pbChzbmFwc2hvdCkpIHtcbiAgICAgICAgICAgIHNuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIV8uaXNOaWwoc25hcHNob3QuZnJhZ21lbnQpID8gc25hcHNob3QuZnJhZ21lbnQgOiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0ZyYWdtZW50KHNuYXBzaG90PzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy5nZXRGcmFnbWVudChzbmFwc2hvdCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRGcmFnbWVudCh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdGhpcy5nZXRGcmFnbWVudCgpID8gdGhpcy5hcHBseUV4dHJhcyh7IGZyYWdtZW50OiB2YWx1ZSB9KSA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBVcmwgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci51cmw7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdXJsVHJlZSgpOiBVcmxUcmVlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMudXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhc3RVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RVcmw7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgbGFzdFVybFRyZWUoKTogVXJsVHJlZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLmxhc3RVcmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcHJldmlvdXNVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXZpb3VzVXJsO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHByZXZpb3VzVXJsVHJlZSgpOiBVcmxUcmVlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucHJldmlvdXNVcmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91dGUoKTogQWN0aXZhdGVkUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm91dGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3V0ZXIoKTogUm91dGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlcjtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyQmFzZVNlcnZpY2VFdmVudERhdGEge1xuICAgIHVybDogc3RyaW5nO1xuICAgIHByZXZpb3VzVXJsOiBzdHJpbmc7XG59XG4iXX0=
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyQmFzZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZS9Sb3V0ZXJCYXNlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBRWYsZUFBZSxFQUdsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQTBDO0lBZTdFLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsZUFBZTtJQUNmLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBc0IsT0FBZSxFQUFZLE1BQXNCLEVBQVksTUFBMkI7UUFDMUcsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQVhwRyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFhMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FB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e1xuICAgIEFjdGl2YXRlZFJvdXRlLFxuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgICBOYXZpZ2F0aW9uRW5kLFxuICAgIE5hdmlnYXRpb25FcnJvcixcbiAgICBOYXZpZ2F0aW9uRXh0cmFzLFxuICAgIE5hdmlnYXRpb25TdGFydCxcbiAgICBSb3V0ZXIsXG4gICAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9hZGFibGUsIExvYWRhYmxlRXZlbnQsIExvYWRhYmxlU3RhdHVzIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGVEYXRhIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IE5hdGl2ZVdpbmRvd1NlcnZpY2UgfSBmcm9tICdAdHMtY29yZS9mcm9udGVuZCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFJvdXRlckJhc2VTZXJ2aWNlIGV4dGVuZHMgTG9hZGFibGU8dm9pZCwgUm91dGVyQmFzZVNlcnZpY2VFdmVudERhdGE+IHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIHBhcmFtczogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBleHRyYXNUb0FwcGx5OiBOYXZpZ2F0aW9uRXh0cmFzO1xuICAgIHByb3RlY3RlZCBpc05lZWRVcGRhdGVFeHRyYXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBfbGFzdFVybDogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfcHJldmlvdXNVcmw6IHN0cmluZztcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdENvbnN0cnVjdG9yXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9yb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCB3aW5kb3c6IE5hdGl2ZVdpbmRvd1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5wYXJhbXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICAgIHRoaXMuX2xhc3RVcmwgPSB0aGlzLnVybDtcbiAgICAgICAgdGhpcy53aW5kb3cuZ2V0UGFyYW1zKCkuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gdGhpcy5wYXJhbXMuc2V0KGtleSwgdmFsdWUpKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplT2JzZXJ2ZXJzKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJpdmF0ZSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVPYnNlcnZlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1VybCA9IHRoaXMudXJsO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gTG9hZGFibGVTdGF0dXMuTE9BRElORztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fCBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFzdFVybCA9IGV2ZW50LnVybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBMb2FkYWJsZVN0YXR1cy5MT0FERUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBhcHBseUV4dHJhcyhleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyBOYXZpZ2F0aW9uRXh0cmFzO1xuICAgICAgICBwYXJhbXMucXVlcnlQYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKCFfLmlzTmlsKGV4dHJhcykpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBleHRyYXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCBwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXh0cmFzVG9BcHBseSA9IGV4dHJhcztcbiAgICAgICAgdGhpcy5pc05lZWRVcGRhdGVFeHRyYXMgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFF1ZXJ5UGFyYW1zKCk6IGFueSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyBhbnk7XG4gICAgICAgIHRoaXMucGFyYW1zLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IChwYXJhbXNba2V5XSA9IHZhbHVlKSk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdFN0YXR1c0NoYW5nZWRQcm9wZXJ0aWVzKG9sZFN0YXR1czogTG9hZGFibGVTdGF0dXMsIG5ld1N0YXR1czogTG9hZGFibGVTdGF0dXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuY29tbWl0U3RhdHVzQ2hhbmdlZFByb3BlcnRpZXMob2xkU3RhdHVzLCBuZXdTdGF0dXMpO1xuXG4gICAgICAgIHN3aXRjaCAobmV3U3RhdHVzKSB7XG4gICAgICAgICAgICBjYXNlIExvYWRhYmxlU3RhdHVzLkxPQURJTkc6XG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2FkYWJsZUV2ZW50LlNUQVJURUQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9hZGFibGVTdGF0dXMuTE9BREVEOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTmVlZFVwZGF0ZUV4dHJhcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTmVlZFVwZGF0ZUV4dHJhcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RXh0cmFzKHRoaXMuZXh0cmFzVG9BcHBseSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoTG9hZGFibGVFdmVudC5DT01QTEVURSwgeyB1cmw6IHRoaXMudXJsLCBwcmV2aW91c1VybDogdGhpcy5wcmV2aW91c1VybCB9KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3U3RhdHVzID09PSBMb2FkYWJsZVN0YXR1cy5MT0FERUQgfHwgbmV3U3RhdHVzID09PSBMb2FkYWJsZVN0YXR1cy5FUlJPUikge1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShMb2FkYWJsZUV2ZW50LkZJTklTSEVEKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHROYXZpZ2F0ZSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIG5hdmlnYXRlKHVybDogc3RyaW5nLCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzLCBpc0NsZWFyUGFyYW1zPzogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoaXNDbGVhclBhcmFtcykge1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMuY2xlYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyBOYXZpZ2F0aW9uRXh0cmFzO1xuICAgICAgICBwYXJhbXMucXVlcnlQYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgIGlmICghXy5pc05pbChleHRyYXMpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgZXh0cmFzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlVG9FeHRlcm5hbFVybCh1cmw6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcgPSAnX2JsYW5rJyk6IHZvaWQge1xuICAgICAgICB0aGlzLndpbmRvdy5vcGVuKHVybCwgdGFyZ2V0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmF2aWdhdGVUb0xhc3QoZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZSh0aGlzLmxhc3RVcmwsIGV4dHJhcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG5hdmlnYXRlSWZOb3RMb2FkaW5nKHVybDogc3RyaW5nLCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc0xvYWRpbmcgPyB0aGlzLm5hdmlnYXRlKHVybCwgZXh0cmFzKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGlzVXJsQWN0aXZlKGl0ZW06IHN0cmluZyB8IFVybFRyZWUsIGlzRXhhY3Q6IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKGl0ZW0sIGlzRXhhY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLmlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICAgICAgICBpdGVtID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwoaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMudXJsVHJlZS50b1N0cmluZygpKTtcbiAgICAgICAgaXRlbS5mcmFnbWVudCA9IGN1cnJlbnQuZnJhZ21lbnQgPSBudWxsO1xuICAgICAgICBpdGVtLnF1ZXJ5UGFyYW1zID0gY3VycmVudC5xdWVyeVBhcmFtcyA9IHt9O1xuICAgICAgICByZXR1cm4gaXRlbS50b1N0cmluZygpID09PSBjdXJyZW50LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFBhcmFtIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0UGFyYW1zPFQgPSBhbnk+KCk6IFQge1xuICAgICAgICBsZXQgcGFyYW1zID0ge30gYXMgYW55O1xuICAgICAgICB0aGlzLnBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiAocGFyYW1zW2tleV0gPSB2YWx1ZSkpO1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNQYXJhbShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLmhhcyhuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFyYW08VCA9IHN0cmluZz4obmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1BhcmFtKG5hbWUpID8gKHRoaXMucGFyYW1zLmdldChuYW1lKSBhcyBhbnkpIDogZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQYXJhbShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChfLmlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhcmFtcy5kZWxldGUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKGV4dHJhcykpIHtcbiAgICAgICAgICAgIGV4dHJhcyA9IHsgcmVwbGFjZVVybDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXBwbHlFeHRyYXMoZXh0cmFzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlUGFyYW0obmFtZTogc3RyaW5nLCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1BhcmFtKG5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFBhcmFtKG5hbWUsIG51bGwsIGV4dHJhcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJQYXJhbXMoZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhcmFtcy5jbGVhcigpO1xuICAgICAgICBpZiAoIV8uaXNOaWwoZXh0cmFzKSkge1xuICAgICAgICAgICAgZXh0cmFzID0geyByZXBsYWNlVXJsOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBseUV4dHJhcyhleHRyYXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUGFyYW1zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbXMuc2l6ZSA+IDA7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0RnJhZ21lbnQgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXRGcmFnbWVudChzbmFwc2hvdD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChfLmlzTmlsKHNuYXBzaG90KSkge1xuICAgICAgICAgICAgc25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLmlzTmlsKGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHNuYXBzaG90LmZyYWdtZW50KSA/IHNuYXBzaG90LmZyYWdtZW50IDogZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNGcmFnbWVudChzbmFwc2hvdD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMuZ2V0RnJhZ21lbnQoc25hcHNob3QpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0RnJhZ21lbnQodmFsdWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgIT09IHRoaXMuZ2V0RnJhZ21lbnQoKSA/IHRoaXMuYXBwbHlFeHRyYXMoeyBmcmFnbWVudDogdmFsdWUgfSkgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgVXJsIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHVybFRyZWUoKTogVXJsVHJlZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYXN0VXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXN0VXJsO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGxhc3RVcmxUcmVlKCk6IFVybFRyZWUge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5sYXN0VXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByZXZpb3VzVXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1VybDtcbiAgICB9XG4gICAgcHVibGljIGdldCBwcmV2aW91c1VybFRyZWUoKTogVXJsVHJlZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnByZXZpb3VzVXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvdXRlKCk6IEFjdGl2YXRlZFJvdXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91dGVyKCk6IFJvdXRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXI7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlckJhc2VTZXJ2aWNlRXZlbnREYXRhIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBwcmV2aW91c1VybDogc3RyaW5nO1xufVxuIl19
@@ -90,18 +90,22 @@ export class ViewUtil {
90
90
  }
91
91
  }
92
92
  }
93
- static setBackground(container, image, repeat = 'repeat') {
93
+ static setBackground(container, image, repeat = 'repeat', error) {
94
94
  if (_.isNil(image)) {
95
95
  ViewUtil.removeStyle(container, 'backgroundImage');
96
96
  ViewUtil.removeStyle(container, 'backgroundRepeat');
97
97
  return;
98
98
  }
99
- if (!image.includes('url(')) {
100
- image = 'url(' + image + ')';
99
+ image = ViewUtil.getBackgroundUrl(image);
100
+ if (!_.isEmpty(error)) {
101
+ image += `, ${ViewUtil.getBackgroundUrl(error)}`;
101
102
  }
102
103
  ViewUtil.setStyle(container, 'backgroundImage', image);
103
104
  ViewUtil.setStyle(container, 'backgroundRepeat', repeat);
104
105
  }
106
+ static getBackgroundUrl(item) {
107
+ return !item.includes('url(') ? `url(${item})` : item;
108
+ }
105
109
  // --------------------------------------------------------------------------
106
110
  //
107
111
  // Child Methods
@@ -387,6 +391,13 @@ export class ViewUtil {
387
391
  static removeProperty(container, name) {
388
392
  ViewUtil.removeAttribute(container, name);
389
393
  }
394
+ static getAttribute(container, name) {
395
+ if (_.isNil(name)) {
396
+ return null;
397
+ }
398
+ container = ViewUtil.parseElement(container);
399
+ return !_.isNil(container) ? container.getAttribute(name) : null;
400
+ }
390
401
  static removeAttribute(container, name) {
391
402
  container = ViewUtil.parseElement(container);
392
403
  if (_.isNil(name) || _.isNil(container)) {
@@ -575,4 +586,4 @@ export class ViewUtil {
575
586
  // --------------------------------------------------------------------------
576
587
  ViewUtil._renderer = null;
577
588
  ViewUtil._document = null;
578
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9WaWV3VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sUUFBUTtJQVVWLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxJQUFJLGFBQWEsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFDTSxNQUFNLEtBQUssUUFBUSxDQUFDLEtBQWdCO1FBQ3ZDLElBQUksS0FBSyxLQUFLLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDOUIsT0FBTztTQUNWO1FBQ0QsUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3hFLENBQUM7SUFDTSxNQUFNLEtBQUssUUFBUSxDQUFDLEtBQWU7UUFDdEMsUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sS0FBSyxNQUFNO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFD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QUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQzthQUM3QztTQUNKO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBeUIsRUFBRSxXQUFxQjtRQUN4RSxJQUFJLFdBQVcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLEtBQUssSUFBSSxDQUFDLElBQUksTUFBTSxFQUFFO2dCQUNsQixJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ3BCO2FBQ0o7U0FDSjtRQUNELFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDOztBQW5vQkQsNkVBQTZFO0FBQzdFLEVBQUU7QUFDRixZQUFZO0FBQ1osRUFBRTtBQUNGLDZFQUE2RTtBQUU5RCxrQkFBUyxHQUFjLElBQUksQ0FBQztBQUM1QixrQkFBUyxHQUFhLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgUmVuZGVyZXJTdHlsZUZsYWdzMiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXh0ZW5kZWRFcnJvciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBWaWV3VXRpbCB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb25zdGFudHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcmVuZGVyZXI6IFJlbmRlcmVyMiA9IG51bGw7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2RvY3VtZW50OiBEb2N1bWVudCA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCByZW5kZXJlcigpOiBSZW5kZXJlcjIge1xuICAgICAgICBpZiAoXy5pc05pbChWaWV3VXRpbC5fcmVuZGVyZXIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXh0ZW5kZWRFcnJvcihgVmlld1V0aWwgaXMgbm90IGluaXRpYWxpemVkOiByZW5kZXJlciBpbiBuaWxgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gVmlld1V0aWwuX3JlbmRlcmVyO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHNldCByZW5kZXJlcih2YWx1ZTogUmVuZGVyZXIyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gVmlld1V0aWwuX3JlbmRlcmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgVmlld1V0aWwuX3JlbmRlcmVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgZG9jdW1lbnQoKTogRG9jdW1lbnQge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwoVmlld1V0aWwuX2RvY3VtZW50KSA/IFZpZXdVdGlsLl9kb2N1bWVudCA6IGRvY3VtZW50O1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHNldCBkb2N1bWVudCh2YWx1ZTogRG9jdW1lbnQpIHtcbiAgICAgICAgVmlld1V0aWwuX2RvY3VtZW50ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgd2luZG93KCk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHJpdmF0ZSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29weVRvQ2xpcGJvYXJkKCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgVmlld1V0aWwuZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb21tb24gUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGFyc2VFbGVtZW50PFQgZXh0ZW5kcyBIVE1MRWxlbWVudCA9IEhUTUxFbGVtZW50PihlbGVtZW50OiBJVmlld0VsZW1lbnQ8VD4pOiBUIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgYXMgVDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKGVsZW1lbnQpID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUJhc2U2NChlbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTENhbnZhc0VsZW1lbnQgfCBIVE1MVmlkZW9FbGVtZW50KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IGNhbnZhcyA9IFZpZXdVdGlsLmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBWaWV3VXRpbC5zZXRQcm9wZXJ0eShjYW52YXMsICd3aWR0aCcsIGVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgICAgICBWaWV3VXRpbC5zZXRQcm9wZXJ0eShjYW52YXMsICdoZWlnaHQnLCBlbGVtZW50Lm9mZnNldEhlaWdodCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShlbGVtZW50LCAwLCAwLCBlbGVtZW50Lm9mZnNldFdpZHRoLCBlbGVtZW50Lm9mZnNldEhlaWdodCk7XG4gICAgICAgICAgICB2YWx1ZSA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAxLjApO1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcsICcnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNlbGVjdENvbnRlbnQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIGlzTmVlZENvcHlUb0NsaXBib2FyZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCBjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgaXNXYXNEaXNhYmxlZCA9IGNvbnRhaW5lci5kaXNhYmxlZDtcbiAgICAgICAgICAgIGlmIChpc1dhc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250YWluZXIuc2VsZWN0KCk7XG4gICAgICAgICAgICBpZiAoaXNOZWVkQ29weVRvQ2xpcGJvYXJkKSB7XG4gICAgICAgICAgICAgICAgVmlld1V0aWwuY29weVRvQ2xpcGJvYXJkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNXYXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uID0gVmlld1V0aWwud2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuXG4gICAgICAgICAgICBsZXQgcmFuZ2UgPSBWaWV3VXRpbC5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICAgICAgaWYgKCFfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG5cbiAgICAgICAgICAgIGlmIChpc05lZWRDb3B5VG9DbGlwYm9hcmQpIHtcbiAgICAgICAgICAgICAgICBWaWV3VXRpbC5jb3B5VG9DbGlwYm9hcmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0QmFja2dyb3VuZChjb250YWluZXI6IElWaWV3RWxlbWVudCwgaW1hZ2U6IHN0cmluZywgcmVwZWF0OiBzdHJpbmcgPSAncmVwZWF0Jyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc05pbChpbWFnZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZVN0eWxlKGNvbnRhaW5lciwgJ2JhY2tncm91bmRJbWFnZScpO1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlU3R5bGUoY29udGFpbmVyLCAnYmFja2dyb3VuZFJlcGVhdCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpbWFnZS5pbmNsdWRlcygndXJsKCcpKSB7XG4gICAgICAgICAgICBpbWFnZSA9ICd1cmwoJyArIGltYWdlICsgJyknO1xuICAgICAgICB9XG5cbiAgICAgICAgVmlld1V0aWwuc2V0U3R5bGUoY29udGFpbmVyLCAnYmFja2dyb3VuZEltYWdlJywgaW1hZ2UpO1xuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICdiYWNrZ3JvdW5kUmVwZWF0JywgcmVwZWF0KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENoaWxkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUVsZW1lbnQ8VCA9IGFueT4obmFtZTogc3RyaW5nLCBjbGFzc05hbWU/OiBzdHJpbmcsIGlubmVySFRNTD86IHN0cmluZyk6IFQge1xuICAgICAgICBsZXQgZWxlbWVudCA9IFZpZXdVdGlsLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQobmFtZSk7XG4gICAgICAgIGlmICghXy5pc05pbChuYW1lKSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0UHJvcGVydHkoZWxlbWVudCwgJ2NsYXNzTmFtZScsIGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKGlubmVySFRNTCkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGVsZW1lbnQsICdpbm5lckhUTUwnLCBpbm5lckhUTUwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXBwZW5kQ2hpbGQocGFyZW50OiBhbnksIGNoaWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHBhcmVudCkgJiYgIV8uaXNOaWwoY2hpbGQpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2hpbGQocGFyZW50OiBhbnksIGNoaWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHBhcmVudCkgJiYgIV8uaXNOaWwoY2hpbGQpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9nZ2xlQ2hpbGQoY29udGFpbmVyOiBOb2RlLCBjaGlsZDogTm9kZSwgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbGV0IGlzQ29udGFpbnMgPSBjb250YWluZXIuY29udGFpbnMoY2hpbGQpO1xuICAgICAgICBpZiAodmFsdWUgJiYgIWlzQ29udGFpbnMpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLmFwcGVuZENoaWxkKGNvbnRhaW5lciwgY2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsdWUgJiYgaXNDb250YWlucykge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2hpbGQoY29udGFpbmVyLCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFNpemUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3RhZ2VXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVmlld1V0aWwud2luZG93LmlubmVyV2lkdGggfHwgVmlld1V0aWwuZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFN0YWdlSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBWaWV3VXRpbC53aW5kb3cuaW5uZXJIZWlnaHQgfHwgVmlld1V0aWwuZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRDYW52YXNDb250ZXh0MmQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQ8SFRNTENhbnZhc0VsZW1lbnQ+LCBvcHRpb25zPzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MpOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQge1xuICAgICAgICBsZXQgY2FudmFzID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoJzJkJywgb3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Qm91bmRpbmdSZWN0YW5nbGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBET01SZWN0IHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikgfHwgXy5pc05pbChjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiBOYU4sXG4gICAgICAgICAgICAgICAgeTogTmFOLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBOYU4sXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBOYU4sXG4gICAgICAgICAgICAgICAgdG9wOiBOYU4sXG4gICAgICAgICAgICAgICAgcmlnaHQ6IE5hTixcbiAgICAgICAgICAgICAgICBsZWZ0OiBOYU4sXG4gICAgICAgICAgICAgICAgYm90dG9tOiBOYU5cbiAgICAgICAgICAgIH0gYXMgRE9NUmVjdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V2lkdGgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ3dpZHRoJykpO1xuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gVmlld1V0aWwuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoY29udGFpbmVyKS53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29udGFpbmVyLm9mZnNldFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFdpZHRoKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB2YWx1ZTogbnVtYmVyLCBpc05lZWRDaGVja0xpbWl0czogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikgfHwgXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzTmVlZENoZWNrTGltaXRzICYmXG4gICAgICAgICAgICAodmFsdWUgPCBWaWV3VXRpbC5nZXRNaW5XaWR0aChjb250YWluZXIpIHx8IHZhbHVlID4gVmlld1V0aWwuZ2V0TWF4V2lkdGgoY29udGFpbmVyKSB8fCB2YWx1ZSA9PT0gVmlld1V0aWwuZ2V0V2lkdGgoY29udGFpbmVyKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICd3aWR0aCcsIHZhbHVlICsgJ3B4Jyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWF4V2lkdGgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbWF4V2lkdGgnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWluV2lkdGgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbWluV2lkdGgnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEhlaWdodChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdoZWlnaHQnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBWaWV3VXRpbC5nZXRCb3VuZGluZ1JlY3RhbmdsZShjb250YWluZXIpLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0SGVpZ2h0KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB2YWx1ZTogbnVtYmVyLCBpc05lZWRDaGVja0xpbWl0czogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikgfHwgXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBpc05lZWRDaGVja0xpbWl0cyAmJlxuICAgICAgICAgICAgKHZhbHVlIDwgVmlld1V0aWwuZ2V0TWluSGVpZ2h0KGNvbnRhaW5lcikgfHwgdmFsdWUgPiBWaWV3VXRpbC5nZXRNYXhIZWlnaHQoY29udGFpbmVyKSB8fCB2YWx1ZSA9PT0gVmlld1V0aWwuZ2V0SGVpZ2h0KGNvbnRhaW5lcikpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ2hlaWdodCcsIHZhbHVlICsgJ3B4Jyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldE1heEhlaWdodChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdtYXhIZWlnaHQnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldE1pbkhlaWdodChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdtaW5IZWlnaHQnKSk7XG4gICAgICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaXplKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgaXNOZWVkQ2hlY2tMaW1pdHM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwuc2V0V2lkdGgoY29udGFpbmVyLCB3aWR0aCwgaXNOZWVkQ2hlY2tMaW1pdHMpO1xuICAgICAgICBWaWV3VXRpbC5zZXRIZWlnaHQoY29udGFpbmVyLCBoZWlnaHQsIGlzTmVlZENoZWNrTGltaXRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbGVmdCcpKTtcbiAgICAgICAgcmV0dXJuIF8uaXNOYU4odmFsdWUpID8gMCA6IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0WChjb250YWluZXI6IElWaWV3RWxlbWVudCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSAmJiAhXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ2xlZnQnLCB2YWx1ZSArICdweCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRZKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ3RvcCcpKTtcbiAgICAgICAgcmV0dXJuIF8uaXNOYU4odmFsdWUpID8gMCA6IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHNldFkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGNvbnRhaW5lcikgJiYgIV8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICd0b3AnLCB2YWx1ZSArICdweCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgbW92ZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwuc2V0WChjb250YWluZXIsIHgpO1xuICAgICAgICBWaWV3VXRpbC5zZXRZKGNvbnRhaW5lciwgeSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRGb2N1cyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBmb2N1c0lucHV0KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBsZXQgY2FyZXRJbmRleCA9IDA7XG4gICAgICAgIGlmICghXy5pc05pbChpbnB1dC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNhcmV0SW5kZXggPSBNYXRoLm1heCgwLCBpbnB1dC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoY2FyZXRJbmRleCwgY2FyZXRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDbGFzc2VzIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGFkZENsYXNzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIuYWRkQ2xhc3MoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkQ2xhc3Nlcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZXM6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc0VtcHR5KG5hbWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG5hbWVzLnNwbGl0KCcgJykuZm9yRWFjaChuYW1lID0+IFZpZXdVdGlsLmFkZENsYXNzKGNvbnRhaW5lciwgbmFtZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2xhc3MoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc0VtcHR5KG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmICghXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5yZW1vdmVDbGFzcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVDbGFzc2VzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lczogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkobmFtZXMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbmFtZXMuc3BsaXQoJyAnKS5mb3JFYWNoKG5hbWUgPT4gVmlld1V0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCBuYW1lKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBoYXNDbGFzcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIHJldHVybiAhXy5pc05pbChjb250YWluZXIpID8gY29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucyhuYW1lKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9nZ2xlQ2xhc3MoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5hZGRDbGFzcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9nZ2xlQ2xhc3Nlcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLmFkZENsYXNzZXMoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZUNsYXNzZXMoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UHJvcGVydHkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKGNvbnRhaW5lcikgPyBjb250YWluZXJbbmFtZV0gOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0UHJvcGVydHkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIuc2V0UHJvcGVydHkoY29udGFpbmVyLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW1vdmVQcm9wZXJ0eShjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVQcm9wZXJ0eShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnJlbW92ZUF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQXR0cmlidXRlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0QXR0cmlidXRlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZUF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRTdHlsZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5zdHlsZVtuYW1lXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFN0eWxlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGZsYWdzPzogUmVuZGVyZXJTdHlsZUZsYWdzMik6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlICE9PSBWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsIG5hbWUpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsIG5hbWUsIHZhbHVlLCBmbGFncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZVN0eWxlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIGZsYWdzPzogUmVuZGVyZXJTdHlsZUZsYWdzMik6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgVmlld1V0aWwucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGFpbmVyLCBuYW1lLCBmbGFncyk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRWaWRlbyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVWaWRlbyhpc011dGU6IGJvb2xlYW4gPSB0cnVlLCBpc0lubGluZTogYm9vbGVhbiA9IGZhbHNlKTogSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgICAgIGxldCB2aWRlbyA9IFZpZXdVdGlsLmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XG4gICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KHZpZGVvLCAnYXV0b3BsYXknLCB0cnVlKTtcbiAgICAgICAgaWYgKGlzTXV0ZSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0VmlkZW9NdXRlUGFyYW1ldGVycyh2aWRlbywgaXNNdXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJbmxpbmUpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFZpZGVvSW5saW5lUGFyYW1ldGVycyh2aWRlbyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZpZGVvO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0VmlkZW9NdXRlUGFyYW1ldGVycyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgaXNNdXRlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICB2aWRlby5tdXRlZCA9IHZpZGVvLmRlZmF1bHRNdXRlZCA9IGlzTXV0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0VmlkZW9JbmxpbmVQYXJhbWV0ZXJzKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnNldEF0dHJpYnV0ZSh2aWRlbywgJ3dlYmtpdC1wbGF5c2lubGluZScsIDEpO1xuICAgICAgICBWaWV3VXRpbC5zZXRBdHRyaWJ1dGUodmlkZW8sICdwbGF5c2lubGluZScsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VmlkZW9FcnJvcih2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChfLmlzTmlsKHZpZGVvKSB8fCBfLmlzTmlsKHZpZGVvLmVycm9yKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXJyb3I6IE1lZGlhRXJyb3IgPSB2aWRlby5lcnJvcjtcbiAgICAgICAgbGV0IHZhbHVlID0gJ1ZpZGVvIGVycm9yICcgKyB2aWRlby5zcmMgKyAnLCAnO1xuICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgTWVkaWFFcnJvci5NRURJQV9FUlJfQUJPUlRFRDpcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnbWVkaWEgYWJvcnRlZCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lZGlhRXJyb3IuTUVESUFfRVJSX0RFQ09ERTpcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnZXJyb3IgdG8gZGVjb2RlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVkaWFFcnJvci5NRURJQV9FUlJfTkVUV09SSzpcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnbmV0d29yayBlcnJvcic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lZGlhRXJyb3IuTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVEOlxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdzb3VyY2Ugbm90IHN1cHBvcnRlZCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGxheVZpZGVvKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChfLmlzTmlsKHZpZGVvKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHZpZGVvLnBsYXkoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHBsYXlBdWRpbyhhdWRpbzogSFRNTEF1ZGlvRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXy5pc05pbChhdWRpbykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXVkaW8ucGxheSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGF1c2VWaWRlbyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICB2aWRlby5wYXVzZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc1ZpZGVvUGxheWluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodmlkZW8pID8gIXZpZGVvLnBhdXNlZCAmJiAhdmlkZW8uZW5kZWQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWRWaWRlbyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICB2aWRlby5sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHN0b3BWaWRlb0lmTmVlZCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pICYmICghXy5pc05pbCh2aWRlby5zcmMpIHx8ICFfLmlzTmlsKHZpZGVvLnNyY09iamVjdCkpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zdG9wVmlkZW8odmlkZW8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdG9wVmlkZW8odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmlkZW8uc3JjT2JqZWN0IGluc3RhbmNlb2YgTWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgIGxldCB0cmFja3MgPSB2aWRlby5zcmNPYmplY3QuZ2V0VHJhY2tzKCk7XG4gICAgICAgICAgICB0cmFja3MuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcblxuICAgICAgICB2aWRlby5wYXVzZSgpO1xuICAgICAgICB2aWRlby5zcmMgPSAnJztcbiAgICAgICAgdmlkZW8ubG9hZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGlzcG9zZVZpZGVvKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnN0b3BWaWRlbyh2aWRlbyk7XG4gICAgICAgIFZpZXdVdGlsLnJlbW92ZUNoaWxkKHZpZGVvLnBhcmVudE5vZGUsIHZpZGVvKTtcbiAgICAgICAgdmlkZW8ucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkaXNwb3NlVmlkZW9zKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBmb3IgKGxldCBpID0gY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IGNvbnRhaW5lci5jaGlsZHJlbi5pdGVtKGkpO1xuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgVmlld1V0aWwuZGlzcG9zZVZpZGVvKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRPYmplY3QgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGlzcG9zZU9iamVjdHMoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIGlzSUVCcm93c2VyPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSBjb250YWluZXIuY2hpbGRyZW4uaXRlbShpKTtcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgSFRNTE9iamVjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBWaWV3VXRpbC5kaXNwb3NlT2JqZWN0KGl0ZW0sIGlzSUVCcm93c2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGlzcG9zZU9iamVjdChvYmplY3Q6IEhUTUxPYmplY3RFbGVtZW50LCBpc0lFQnJvd3Nlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzSUVCcm93c2VyICYmIG9iamVjdFsncmVhZHlTdGF0ZSddID09PSA0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpIGluIG9iamVjdCkge1xuICAgICAgICAgICAgICAgIGlmIChfLmlzRnVuY3Rpb24ob2JqZWN0W2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RbaV0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBWaWV3VXRpbC5yZW1vdmVDaGlsZChvYmplY3QucGFyZW50Tm9kZSwgb2JqZWN0KTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIElWaWV3RWxlbWVudDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudD4gPSBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8VD4gfCBWaWV3Q29udGFpbmVyUmVmO1xuIl19
589
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9WaWV3VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sUUFBUTtJQVVWLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxJQUFJLGFBQWEsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFDTSxNQUFNLEtBQUssUUFBUSxDQUFDLEtBQWdCO1FBQ3ZDLElBQUksS0FBSyxLQUFLLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDOUIsT0FBTztTQUNWO1FBQ0QsUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3hFLENBQUM7SUFDTSxNQUFNLEtBQUssUUFBUSxDQUFDLEtBQWU7UUFDdEMsUUFBUSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sS0FBSyxNQUFNO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFD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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQXVCLEVBQUUsS0FBYTtRQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQXVCO1FBQ3RDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBQ00sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUF1QixFQUFFLEtBQWE7UUFDckQsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDckQ7SUFDTCxDQUFDO0lBQ00sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUF1QixFQUFFLENBQVMsRUFBRSxDQUFTO1FBQzVELFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQUMs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QWhwQkQsNkVBQTZFO0FBQzdFLEVBQUU7QUFDRixZQUFZO0FBQ1osRUFBRTtBQUNGLDZFQUE2RTtBQUU5RCxrQkFBUyxHQUFjLElBQUksQ0FBQztBQUM1QixrQkFBUyxHQUFhLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgUmVuZGVyZXJTdHlsZUZsYWdzMiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXh0ZW5kZWRFcnJvciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBWaWV3VXRpbCB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb25zdGFudHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcmVuZGVyZXI6IFJlbmRlcmVyMiA9IG51bGw7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2RvY3VtZW50OiBEb2N1bWVudCA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCByZW5kZXJlcigpOiBSZW5kZXJlcjIge1xuICAgICAgICBpZiAoXy5pc05pbChWaWV3VXRpbC5fcmVuZGVyZXIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXh0ZW5kZWRFcnJvcihgVmlld1V0aWwgaXMgbm90IGluaXRpYWxpemVkOiByZW5kZXJlciBpbiBuaWxgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gVmlld1V0aWwuX3JlbmRlcmVyO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHNldCByZW5kZXJlcih2YWx1ZTogUmVuZGVyZXIyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gVmlld1V0aWwuX3JlbmRlcmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgVmlld1V0aWwuX3JlbmRlcmVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgZG9jdW1lbnQoKTogRG9jdW1lbnQge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwoVmlld1V0aWwuX2RvY3VtZW50KSA/IFZpZXdVdGlsLl9kb2N1bWVudCA6IGRvY3VtZW50O1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHNldCBkb2N1bWVudCh2YWx1ZTogRG9jdW1lbnQpIHtcbiAgICAgICAgVmlld1V0aWwuX2RvY3VtZW50ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgd2luZG93KCk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0UHJpdmF0ZSBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29weVRvQ2xpcGJvYXJkKCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgVmlld1V0aWwuZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDb21tb24gUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGFyc2VFbGVtZW50PFQgZXh0ZW5kcyBIVE1MRWxlbWVudCA9IEhUTUxFbGVtZW50PihlbGVtZW50OiBJVmlld0VsZW1lbnQ8VD4pOiBUIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgYXMgVDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKGVsZW1lbnQpID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUJhc2U2NChlbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTENhbnZhc0VsZW1lbnQgfCBIVE1MVmlkZW9FbGVtZW50KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IGNhbnZhcyA9IFZpZXdVdGlsLmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBWaWV3VXRpbC5zZXRQcm9wZXJ0eShjYW52YXMsICd3aWR0aCcsIGVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgICAgICBWaWV3VXRpbC5zZXRQcm9wZXJ0eShjYW52YXMsICdoZWlnaHQnLCBlbGVtZW50Lm9mZnNldEhlaWdodCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShlbGVtZW50LCAwLCAwLCBlbGVtZW50Lm9mZnNldFdpZHRoLCBlbGVtZW50Lm9mZnNldEhlaWdodCk7XG4gICAgICAgICAgICB2YWx1ZSA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAxLjApO1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcsICcnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNlbGVjdENvbnRlbnQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIGlzTmVlZENvcHlUb0NsaXBib2FyZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCBjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgaXNXYXNEaXNhYmxlZCA9IGNvbnRhaW5lci5kaXNhYmxlZDtcbiAgICAgICAgICAgIGlmIChpc1dhc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250YWluZXIuc2VsZWN0KCk7XG4gICAgICAgICAgICBpZiAoaXNOZWVkQ29weVRvQ2xpcGJvYXJkKSB7XG4gICAgICAgICAgICAgICAgVmlld1V0aWwuY29weVRvQ2xpcGJvYXJkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNXYXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uID0gVmlld1V0aWwud2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuXG4gICAgICAgICAgICBsZXQgcmFuZ2UgPSBWaWV3VXRpbC5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICAgICAgaWYgKCFfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG5cbiAgICAgICAgICAgIGlmIChpc05lZWRDb3B5VG9DbGlwYm9hcmQpIHtcbiAgICAgICAgICAgICAgICBWaWV3VXRpbC5jb3B5VG9DbGlwYm9hcmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0QmFja2dyb3VuZChjb250YWluZXI6IElWaWV3RWxlbWVudCwgaW1hZ2U6IHN0cmluZywgcmVwZWF0OiBzdHJpbmcgPSAncmVwZWF0JywgZXJyb3I/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoaW1hZ2UpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW1vdmVTdHlsZShjb250YWluZXIsICdiYWNrZ3JvdW5kSW1hZ2UnKTtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZVN0eWxlKGNvbnRhaW5lciwgJ2JhY2tncm91bmRSZXBlYXQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGltYWdlID0gVmlld1V0aWwuZ2V0QmFja2dyb3VuZFVybChpbWFnZSk7XG4gICAgICAgIGlmICghXy5pc0VtcHR5KGVycm9yKSkge1xuICAgICAgICAgICAgaW1hZ2UgKz0gYCwgJHtWaWV3VXRpbC5nZXRCYWNrZ3JvdW5kVXJsKGVycm9yKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgVmlld1V0aWwuc2V0U3R5bGUoY29udGFpbmVyLCAnYmFja2dyb3VuZEltYWdlJywgaW1hZ2UpO1xuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICdiYWNrZ3JvdW5kUmVwZWF0JywgcmVwZWF0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEJhY2tncm91bmRVcmwoaXRlbTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICFpdGVtLmluY2x1ZGVzKCd1cmwoJykgPyBgdXJsKCR7aXRlbX0pYCA6IGl0ZW07XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDaGlsZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVFbGVtZW50PFQgPSBhbnk+KG5hbWU6IHN0cmluZywgY2xhc3NOYW1lPzogc3RyaW5nLCBpbm5lckhUTUw/OiBzdHJpbmcpOiBUIHtcbiAgICAgICAgbGV0IGVsZW1lbnQgPSBWaWV3VXRpbC5yZW5kZXJlci5jcmVhdGVFbGVtZW50KG5hbWUpO1xuICAgICAgICBpZiAoIV8uaXNOaWwobmFtZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGVsZW1lbnQsICdjbGFzc05hbWUnLCBjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbChpbm5lckhUTUwpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zZXRQcm9wZXJ0eShlbGVtZW50LCAnaW5uZXJIVE1MJywgaW5uZXJIVE1MKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFwcGVuZENoaWxkKHBhcmVudDogYW55LCBjaGlsZDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbChwYXJlbnQpICYmICFfLmlzTmlsKGNoaWxkKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUNoaWxkKHBhcmVudDogYW55LCBjaGlsZDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbChwYXJlbnQpICYmICFfLmlzTmlsKGNoaWxkKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIucmVtb3ZlQ2hpbGQocGFyZW50LCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRvZ2dsZUNoaWxkKGNvbnRhaW5lcjogTm9kZSwgY2hpbGQ6IE5vZGUsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGxldCBpc0NvbnRhaW5zID0gY29udGFpbmVyLmNvbnRhaW5zKGNoaWxkKTtcbiAgICAgICAgaWYgKHZhbHVlICYmICFpc0NvbnRhaW5zKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5hcHBlbmRDaGlsZChjb250YWluZXIsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbHVlICYmIGlzQ29udGFpbnMpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZUNoaWxkKGNvbnRhaW5lciwgY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRTaXplIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFN0YWdlV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFZpZXdVdGlsLndpbmRvdy5pbm5lcldpZHRoIHx8IFZpZXdVdGlsLmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRTdGFnZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVmlld1V0aWwud2luZG93LmlubmVySGVpZ2h0IHx8IFZpZXdVdGlsLmRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2FudmFzQ29udGV4dDJkKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50PEhUTUxDYW52YXNFbGVtZW50Piwgb3B0aW9ucz86IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzKTogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHtcbiAgICAgICAgbGV0IGNhbnZhcyA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIG9wdGlvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEJvdW5kaW5nUmVjdGFuZ2xlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogRE9NUmVjdCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpIHx8IF8uaXNOaWwoY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgeDogTmFOLFxuICAgICAgICAgICAgICAgIHk6IE5hTixcbiAgICAgICAgICAgICAgICB3aWR0aDogTmFOLFxuICAgICAgICAgICAgICAgIGhlaWdodDogTmFOLFxuICAgICAgICAgICAgICAgIHRvcDogTmFOLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBOYU4sXG4gICAgICAgICAgICAgICAgbGVmdDogTmFOLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogTmFOXG4gICAgICAgICAgICB9IGFzIERPTVJlY3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFdpZHRoKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICd3aWR0aCcpKTtcbiAgICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFZpZXdVdGlsLmdldEJvdW5kaW5nUmVjdGFuZ2xlKGNvbnRhaW5lcikud2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbnRhaW5lci5vZmZzZXRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRXaWR0aChjb250YWluZXI6IElWaWV3RWxlbWVudCwgdmFsdWU6IG51bWJlciwgaXNOZWVkQ2hlY2tMaW1pdHM6IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpIHx8IF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBpc05lZWRDaGVja0xpbWl0cyAmJlxuICAgICAgICAgICAgKHZhbHVlIDwgVmlld1V0aWwuZ2V0TWluV2lkdGgoY29udGFpbmVyKSB8fCB2YWx1ZSA+IFZpZXdVdGlsLmdldE1heFdpZHRoKGNvbnRhaW5lcikgfHwgdmFsdWUgPT09IFZpZXdVdGlsLmdldFdpZHRoKGNvbnRhaW5lcikpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgVmlld1V0aWwuc2V0U3R5bGUoY29udGFpbmVyLCAnd2lkdGgnLCB2YWx1ZSArICdweCcpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1heFdpZHRoKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ21heFdpZHRoJykpO1xuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1pbldpZHRoKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ21pbldpZHRoJykpO1xuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRIZWlnaHQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnaGVpZ2h0JykpO1xuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gVmlld1V0aWwuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoY29udGFpbmVyKS5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHNldEhlaWdodChjb250YWluZXI6IElWaWV3RWxlbWVudCwgdmFsdWU6IG51bWJlciwgaXNOZWVkQ2hlY2tMaW1pdHM6IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpIHx8IF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXNOZWVkQ2hlY2tMaW1pdHMgJiZcbiAgICAgICAgICAgICh2YWx1ZSA8IFZpZXdVdGlsLmdldE1pbkhlaWdodChjb250YWluZXIpIHx8IHZhbHVlID4gVmlld1V0aWwuZ2V0TWF4SGVpZ2h0KGNvbnRhaW5lcikgfHwgdmFsdWUgPT09IFZpZXdVdGlsLmdldEhlaWdodChjb250YWluZXIpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICdoZWlnaHQnLCB2YWx1ZSArICdweCcpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBnZXRNYXhIZWlnaHQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbWF4SGVpZ2h0JykpO1xuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBnZXRNaW5IZWlnaHQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbWluSGVpZ2h0JykpO1xuICAgICAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2l6ZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGlzTmVlZENoZWNrTGltaXRzOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnNldFdpZHRoKGNvbnRhaW5lciwgd2lkdGgsIGlzTmVlZENoZWNrTGltaXRzKTtcbiAgICAgICAgVmlld1V0aWwuc2V0SGVpZ2h0KGNvbnRhaW5lciwgaGVpZ2h0LCBpc05lZWRDaGVja0xpbWl0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRYKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ2xlZnQnKSk7XG4gICAgICAgIHJldHVybiBfLmlzTmFOKHZhbHVlKSA/IDAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGNvbnRhaW5lcikgJiYgIV8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICdsZWZ0JywgdmFsdWUgKyAncHgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0WShjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICd0b3AnKSk7XG4gICAgICAgIHJldHVybiBfLmlzTmFOKHZhbHVlKSA/IDAgOiB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBzZXRZKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbChjb250YWluZXIpICYmICFfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0U3R5bGUoY29udGFpbmVyLCAndG9wJywgdmFsdWUgKyAncHgnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIG1vdmUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnNldFgoY29udGFpbmVyLCB4KTtcbiAgICAgICAgVmlld1V0aWwuc2V0WShjb250YWluZXIsIHkpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0Rm9jdXMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgZm9jdXNJbnB1dChpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IGNhcmV0SW5kZXggPSAwO1xuICAgICAgICBpZiAoIV8uaXNOaWwoaW5wdXQudmFsdWUpKSB7XG4gICAgICAgICAgICBjYXJldEluZGV4ID0gTWF0aC5tYXgoMCwgaW5wdXQudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGNhcmV0SW5kZXgsIGNhcmV0SW5kZXgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0Q2xhc3NlcyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRDbGFzcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLmFkZENsYXNzKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFkZENsYXNzZXMoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWVzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShuYW1lcykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBuYW1lcy5zcGxpdCgnICcpLmZvckVhY2gobmFtZSA9PiBWaWV3VXRpbC5hZGRDbGFzcyhjb250YWluZXIsIG5hbWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUNsYXNzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2xhc3Nlcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZXM6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc0VtcHR5KG5hbWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG5hbWVzLnNwbGl0KCcgJykuZm9yRWFjaChuYW1lID0+IFZpZXdVdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgbmFtZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFzQ2xhc3MoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwoY29udGFpbmVyKSA/IGNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMobmFtZSkgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRvZ2dsZUNsYXNzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgVmlld1V0aWwuYWRkQ2xhc3MoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRvZ2dsZUNsYXNzZXMoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5hZGRDbGFzc2VzKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW1vdmVDbGFzc2VzKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIHJldHVybiAhXy5pc05pbChjb250YWluZXIpID8gY29udGFpbmVyW25hbWVdIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFByb3BlcnR5KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnNldFByb3BlcnR5KGNvbnRhaW5lciwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlUHJvcGVydHkoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlUHJvcGVydHkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBWaWV3VXRpbC5yZW1vdmVBdHRyaWJ1dGUoY29udGFpbmVyLCBuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEF0dHJpYnV0ZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwoY29udGFpbmVyKSA/IGNvbnRhaW5lci5nZXRBdHRyaWJ1dGUobmFtZSkgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQXR0cmlidXRlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0QXR0cmlidXRlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZUF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRTdHlsZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5zdHlsZVtuYW1lXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFN0eWxlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGZsYWdzPzogUmVuZGVyZXJTdHlsZUZsYWdzMik6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlICE9PSBWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsIG5hbWUpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5zZXRTdHlsZShjb250YWluZXIsIG5hbWUsIHZhbHVlLCBmbGFncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZVN0eWxlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIGZsYWdzPzogUmVuZGVyZXJTdHlsZUZsYWdzMik6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgVmlld1V0aWwucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGFpbmVyLCBuYW1lLCBmbGFncyk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRWaWRlbyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVWaWRlbyhpc011dGU6IGJvb2xlYW4gPSB0cnVlLCBpc0lubGluZTogYm9vbGVhbiA9IGZhbHNlKTogSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgICAgIGxldCB2aWRlbyA9IFZpZXdVdGlsLmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XG4gICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KHZpZGVvLCAnYXV0b3BsYXknLCB0cnVlKTtcbiAgICAgICAgaWYgKGlzTXV0ZSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0VmlkZW9NdXRlUGFyYW1ldGVycyh2aWRlbywgaXNNdXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJbmxpbmUpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFZpZGVvSW5saW5lUGFyYW1ldGVycyh2aWRlbyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZpZGVvO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0VmlkZW9NdXRlUGFyYW1ldGVycyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgaXNNdXRlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICB2aWRlby5tdXRlZCA9IHZpZGVvLmRlZmF1bHRNdXRlZCA9IGlzTXV0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0VmlkZW9JbmxpbmVQYXJhbWV0ZXJzKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnNldEF0dHJpYnV0ZSh2aWRlbywgJ3dlYmtpdC1wbGF5c2lubGluZScsIDEpO1xuICAgICAgICBWaWV3VXRpbC5zZXRBdHRyaWJ1dGUodmlkZW8sICdwbGF5c2lubGluZScsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VmlkZW9FcnJvcih2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChfLmlzTmlsKHZpZGVvKSB8fCBfLmlzTmlsKHZpZGVvLmVycm9yKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXJyb3I6IE1lZGlhRXJyb3IgPSB2aWRlby5lcnJvcjtcbiAgICAgICAgbGV0IHZhbHVlID0gJ1ZpZGVvIGVycm9yICcgKyB2aWRlby5zcmMgKyAnLCAnO1xuICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgTWVkaWFFcnJvci5NRURJQV9FUlJfQUJPUlRFRDpcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnbWVkaWEgYWJvcnRlZCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lZGlhRXJyb3IuTUVESUFfRVJSX0RFQ09ERTpcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnZXJyb3IgdG8gZGVjb2RlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVkaWFFcnJvci5NRURJQV9FUlJfTkVUV09SSzpcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnbmV0d29yayBlcnJvcic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lZGlhRXJyb3IuTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVEOlxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdzb3VyY2Ugbm90IHN1cHBvcnRlZCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGxheVZpZGVvKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChfLmlzTmlsKHZpZGVvKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHZpZGVvLnBsYXkoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHBsYXlBdWRpbyhhdWRpbzogSFRNTEF1ZGlvRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXy5pc05pbChhdWRpbykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXVkaW8ucGxheSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGF1c2VWaWRlbyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICB2aWRlby5wYXVzZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc1ZpZGVvUGxheWluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodmlkZW8pID8gIXZpZGVvLnBhdXNlZCAmJiAhdmlkZW8uZW5kZWQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWRWaWRlbyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICB2aWRlby5sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHN0b3BWaWRlb0lmTmVlZCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodmlkZW8pICYmICghXy5pc05pbCh2aWRlby5zcmMpIHx8ICFfLmlzTmlsKHZpZGVvLnNyY09iamVjdCkpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zdG9wVmlkZW8odmlkZW8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdG9wVmlkZW8odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmlkZW8uc3JjT2JqZWN0IGluc3RhbmNlb2YgTWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgIGxldCB0cmFja3MgPSB2aWRlby5zcmNPYmplY3QuZ2V0VHJhY2tzKCk7XG4gICAgICAgICAgICB0cmFja3MuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcblxuICAgICAgICB2aWRlby5wYXVzZSgpO1xuICAgICAgICB2aWRlby5zcmMgPSAnJztcbiAgICAgICAgdmlkZW8ubG9hZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGlzcG9zZVZpZGVvKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnN0b3BWaWRlbyh2aWRlbyk7XG4gICAgICAgIFZpZXdVdGlsLnJlbW92ZUNoaWxkKHZpZGVvLnBhcmVudE5vZGUsIHZpZGVvKTtcbiAgICAgICAgdmlkZW8ucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkaXNwb3NlVmlkZW9zKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBmb3IgKGxldCBpID0gY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IGNvbnRhaW5lci5jaGlsZHJlbi5pdGVtKGkpO1xuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgVmlld1V0aWwuZGlzcG9zZVZpZGVvKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRPYmplY3QgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGlzcG9zZU9iamVjdHMoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIGlzSUVCcm93c2VyPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSBjb250YWluZXIuY2hpbGRyZW4uaXRlbShpKTtcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgSFRNTE9iamVjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBWaWV3VXRpbC5kaXNwb3NlT2JqZWN0KGl0ZW0sIGlzSUVCcm93c2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGlzcG9zZU9iamVjdChvYmplY3Q6IEhUTUxPYmplY3RFbGVtZW50LCBpc0lFQnJvd3Nlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzSUVCcm93c2VyICYmIG9iamVjdFsncmVhZHlTdGF0ZSddID09PSA0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpIGluIG9iamVjdCkge1xuICAgICAgICAgICAgICAgIGlmIChfLmlzRnVuY3Rpb24ob2JqZWN0W2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RbaV0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBWaWV3VXRpbC5yZW1vdmVDaGlsZChvYmplY3QucGFyZW50Tm9kZSwgb2JqZWN0KTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIElWaWV3RWxlbWVudDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQgPSBIVE1MRWxlbWVudD4gPSBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8VD4gfCBWaWV3Q29udGFpbmVyUmVmO1xuIl19
@@ -297,18 +297,22 @@ class ViewUtil {
297
297
  }
298
298
  }
299
299
  }
300
- static setBackground(container, image, repeat = 'repeat') {
300
+ static setBackground(container, image, repeat = 'repeat', error) {
301
301
  if (_.isNil(image)) {
302
302
  ViewUtil.removeStyle(container, 'backgroundImage');
303
303
  ViewUtil.removeStyle(container, 'backgroundRepeat');
304
304
  return;
305
305
  }
306
- if (!image.includes('url(')) {
307
- image = 'url(' + image + ')';
306
+ image = ViewUtil.getBackgroundUrl(image);
307
+ if (!_.isEmpty(error)) {
308
+ image += `, ${ViewUtil.getBackgroundUrl(error)}`;
308
309
  }
309
310
  ViewUtil.setStyle(container, 'backgroundImage', image);
310
311
  ViewUtil.setStyle(container, 'backgroundRepeat', repeat);
311
312
  }
313
+ static getBackgroundUrl(item) {
314
+ return !item.includes('url(') ? `url(${item})` : item;
315
+ }
312
316
  // --------------------------------------------------------------------------
313
317
  //
314
318
  // Child Methods
@@ -594,6 +598,13 @@ class ViewUtil {
594
598
  static removeProperty(container, name) {
595
599
  ViewUtil.removeAttribute(container, name);
596
600
  }
601
+ static getAttribute(container, name) {
602
+ if (_.isNil(name)) {
603
+ return null;
604
+ }
605
+ container = ViewUtil.parseElement(container);
606
+ return !_.isNil(container) ? container.getAttribute(name) : null;
607
+ }
597
608
  static removeAttribute(container, name) {
598
609
  container = ViewUtil.parseElement(container);
599
610
  if (_.isNil(name) || _.isNil(container)) {
@@ -4896,6 +4907,9 @@ class RouterBaseService extends Loadable {
4896
4907
  if (_.isNil(snapshot)) {
4897
4908
  snapshot = this.route.snapshot;
4898
4909
  }
4910
+ if (_.isNil(defaultValue)) {
4911
+ defaultValue = null;
4912
+ }
4899
4913
  return !_.isNil(snapshot.fragment) ? snapshot.fragment : defaultValue;
4900
4914
  }
4901
4915
  hasFragment(snapshot) {