@tilde-nlp/ngx-translate 7.0.79 → 7.0.81

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.
@@ -335,7 +335,7 @@ export class TldTranslateSystemManagementService {
335
335
  this.activeSystem.targetLanguage = targetLanguage;
336
336
  return `${AUTO_LANGUAGE_DETECTION_KEY}-${targetLanguage}`;
337
337
  }
338
- const systemsForLanguagePair = systems.filter(system => system.sourceLanguage === sourceLanguage && targetLanguage === system.targetLanguage && system.domain === domain);
338
+ const systemsForLanguagePair = systems.filter(system => system.sourceLanguage === sourceLanguage && system.targetLanguage === targetLanguage && (!domain || system.domain === domain));
339
339
  if (systemsForLanguagePair.length === 0) {
340
340
  return this.systems.find(system => system.sourceLanguage === sourceLanguage)?.languageId;
341
341
  }
@@ -407,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
407
407
  providedIn: 'root'
408
408
  }]
409
409
  }] });
410
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXN5c3RlbS1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBYyxZQUFZLEVBQVUsa0NBQWtDLEVBQWdCLFVBQVUsRUFBVSxhQUFhLEVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0SyxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFZLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFLbEYsTUFBTSxPQUFPLG1DQUFtQztJQUN0QyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMzQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdCLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFbEQsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQ2QsZ0JBQWdCLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFVBQVUsR0FBRyxNQUFNLENBQWEsRUFBRSxDQUFD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SyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxRixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO3dHQXJkVSxtQ0FBbUM7NEdBQW5DLG1DQUFtQyxjQUZsQyxNQUFNOzs0RkFFUCxtQ0FBbUM7a0JBSC9DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBEb21haW4sIExBU1RfVVNFRF9TWVNURU1fTE9DQUxfU1RPUkFHRV9LRVksIExhbmdMaXN0SXRlbSwgU29ydEhlbHBlciwgU3lzdGVtLCBTeXN0ZW1TZXJ2aWNlLCBWZW5kb3IgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIH0gZnJvbSAnLi4vbW9kZWxzL2F1dG8tbGFuZ3VhZ2UtZGV0ZWN0aW9uLWtleS5jb25zdCc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL3RsZC10cmFuc2xhdGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNvdXJjZSwgUmVzb3VyY2VTZXJ2aWNlLCBSZXNvdXJjZVR5cGUgfSBmcm9tICdAdGlsZGUtbmxwL25neC1zZXJ2aWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgYWxlcnQgPSBpbmplY3QoQWxlcnRTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlc291cmNlU2VydmljZSA9IGluamVjdChSZXNvdXJjZVNlcnZpY2UpO1xyXG5cclxuICBub1N5c3RlbXNFcnJvciA9IGZhbHNlO1xyXG4gIHN5c3RlbXM6IFN5c3RlbVtdID0gW107XHJcbiAgcmVhZG9ubHkgb25saW5lQVNyU3lzdGVtcyA9IHNpZ25hbDxSZXNvdXJjZVtdPihbXSk7XHJcbiAgcmVhZG9ubHkgdHRzU3lzdGVtcyA9IHNpZ25hbDxSZXNvdXJjZVtdPihbXSk7XHJcbiAgd2lkZ2V0SW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBzeXNMaXN0ID0gbmV3IFJlcGxheVN1YmplY3Q8U3lzdGVtW10+KDEpO1xyXG4gIGFjdGl2ZURvbWFpbiE6IERvbWFpbjtcclxuICBjYW5Td2FwTGFuZ3VhZ2VzITogYm9vbGVhbjtcclxuXHJcbiAgZGVmYXVsdEVycm9yVHJhbnNsYXRpb25LZXkgPSAnVExEX1RSQU5TTEFURS5FUlJPUl9OT19TWVNURU1TX0xPQURFRCc7XHJcblxyXG4gIHByaXZhdGUgbG9hZGVkU3lzdGVtc1N1YmplY3QgPSBuZXcgU3ViamVjdDxTeXN0ZW1bXT4oKTtcclxuXHJcbiAgZ2V0IGFjdGl2ZVZlbmRvcigpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbS52ZW5kb3IgfHwgdGhpcy5kZWZhdWx0VmVuZG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRWZW5kb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5kZWZhdWx0VmVuZG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHREb21haW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZGVmYXVsdERvbWFpbnMgYXMgc3RyaW5nW107XHJcbiAgfVxyXG5cclxuICBnZXQgZGVmYXVsdFRhcmdldExhbmd1YWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZGVmYXVsdFRhcmdldExhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRvbWFpbnNBdmFpbGFibGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kb21haW5zLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvdXJjZUxhbmd1YWdlITogc3RyaW5nO1xyXG4gIHByaXZhdGUgYWN0aXZlU3lzdGVtITogU3lzdGVtO1xyXG4gIHByaXZhdGUgZG9tYWluczogRG9tYWluW10gPSBbXTtcclxuICBwcml2YXRlIHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgcHJpdmF0ZSB0YXJnZXRMYW5ndWFnZSE6IHN0cmluZztcclxuICBwcml2YXRlIHNvdXJjZUxhbmdMaXN0OiBMYW5nTGlzdEl0ZW1bXSA9IFtdO1xyXG4gIHByaXZhdGUgdGFyZ2V0TGFuZ0xpc3Q6IExhbmdMaXN0SXRlbVtdID0gW107XHJcblxyXG4gIC8vI3JlZ2lvbiBSZWNlbnQgc3lzdGVtIHZhcmlhYmxlc1xyXG4gIC8vIFBvc3NpYmx5IGZyb20gY29uZmlnXHJcbiAgZ2V0IHJlY2VudFN5c3RlbXNNYXhDb3VudCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcubWF4UmVjZW50U3lzdGVtQ291bnQgYXMgbnVtYmVyOyB9XHJcbiAgcHJpdmF0ZSByZWNlbnRTeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHJlY2VudFN5c3RlbUtleSA9IFwicmVjZW50U3lzdGVtc1wiO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlOiBCZWhhdmlvclN1YmplY3Q8QWN0aXZlRGF0YT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGl2ZURhdGE+KDxhbnk+bnVsbCk7XHJcblxyXG4gIC8qKlxyXG4gICogVGhpcyBtZXRob2QgaXMgYmVpbmcgY2FsbGVkIHdoZW4gYXV0byBsYW5ndWFnZSBkZXRlY3Rpb24gd2FzIGNob3Nlbi5cclxuICAqL1xyXG4gIGVuYWJsZUxhbmd1YWdlRGV0ZWN0aW9uKHJldHJhbnNsYXRlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNvdXJjZUxhbmd1YWdlID0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZO1xyXG4gICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLnNvdXJjZUxhbmd1YWdlLCB0aGlzLnRhcmdldExhbmd1YWdlLCByZXRyYW5zbGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFRoaXMgbWV0aG9kIGlzIGJlaW5nIHVzZWQgdG8gc2V0IGRldGVjdGVkIGxhbmd1YWdlLlxyXG4gICogQWxzbywgd2hlbiBsYW5ndWFnZSB3YXMgZGV0ZWN0ZWQgYW5kIHdlIHdhbnQgdG8gY2xlYXIgc291cmNlIHRleHQsIHRoaXMgbWV0aG9kIGFsc28gaXMgYmVpbmcgY2FsbGVkLlxyXG4gICovXHJcbiAgc2V0RGV0ZWN0ZWRMYW5ndWFnZShsYW5nQ29kZTogc3RyaW5nKSB7XHJcbiAgICBpZiAobGFuZ0NvZGUgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IGxhbmdDb2RlO1xyXG4gICAgICB0aGlzLmVuYWJsZUxhbmd1YWdlRGV0ZWN0aW9uKGZhbHNlKTtcclxuICAgICAgdGhpcy5vbkFjdGl2ZVN5c3RlbUNoYW5nZShmYWxzZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbS5kZXRlY3RlZExhbmd1YWdlID0gbGFuZ0NvZGU7XHJcbiAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKGxhbmdDb2RlLCB0aGlzLnRhcmdldExhbmd1YWdlLCB0cnVlLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIGdldFN5c3RlbXMoKTogU3lzdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtcztcclxuICB9XHJcblxyXG4gIGNoYW5nZUxhbmd1YWdlKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZywgcmV0cmFuc2xhdGU/OiBib29sZWFuLCBpc0RldGVjdGlvbj86IGJvb2xlYW4pIHtcclxuICAgIGlmICgoKHNvdXJjZSAhPT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB8fCAodGhpcy5hY3RpdmVTeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UgPT09IHNvdXJjZSkpICYmICFpc0RldGVjdGlvbikge1xyXG4gICAgICB0aGlzLnNvdXJjZUxhbmd1YWdlID0gc291cmNlO1xyXG4gICAgICB0aGlzLmFjdGl2ZVN5c3RlbS5kZXRlY3RlZExhbmd1YWdlID0gbnVsbDtcclxuICAgICAgdGhpcy5vbkFjdGl2ZVN5c3RlbUNoYW5nZShmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHN5c3RlbUlkID0gdGhpcy5maW5kQ29ycmVjdFN5c3RlbShzb3VyY2UsIHRhcmdldCwgdGhpcy5hY3RpdmVTeXN0ZW0/LmRvbWFpbik7XHJcblxyXG4gICAgaWYgKCFzeXN0ZW1JZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VTeXN0ZW0oc3lzdGVtSWQsIHJldHJhbnNsYXRlKTtcclxuICB9XHJcblxyXG4gIHNob3dTYW1lTGFuZ3VhZ2VzKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbS5kZXRlY3RlZExhbmd1YWdlID0gbGFuZztcclxuICAgIHRoaXMuYWN0aXZlU3lzdGVtLmRvbWFpbiA9ICcnO1xyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0uaW5jbHVkZXNUZXJtaW5vbG9neSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kb21haW5zID0gW107XHJcbiAgICB0aGlzLnZlbmRvcnMgPSBbXTtcclxuICAgIHRoaXMub25BY3RpdmVTeXN0ZW1DaGFuZ2UoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVN5c3RlbU9iaigpOiBTeXN0ZW0ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlU3lzdGVtO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlVmVuZG9yc0FuZERvbWFpbnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc291cmNlTGFuZ3VhZ2UgfHwgIXRoaXMudGFyZ2V0TGFuZ3VhZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmVuZG9yczogVmVuZG9yW10gPSBbXTtcclxuICAgIGNvbnN0IGRvbWFpbnM6IERvbWFpbltdID0gW107XHJcblxyXG4gICAgZm9yIChjb25zdCBzeXN0ZW0gb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgIGlmICghKHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PT0gKHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlID8/IHRoaXMuc291cmNlTGFuZ3VhZ2UpICYmIHN5c3RlbS50YXJnZXRMYW5ndWFnZSA9PT0gdGhpcy50YXJnZXRMYW5ndWFnZSkpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkb21haW46IERvbWFpbiA9IHtcclxuICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICB0aXRsZTogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmdcclxuICAgICAgfTtcclxuICAgICAgZG9tYWlucy5wdXNoKGRvbWFpbik7XHJcbiAgICAgIGNvbnN0IHZlbmRvcjogVmVuZG9yID0ge1xyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgIHRpdGxlOiBzeXN0ZW0udmVuZG9yXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdmVuZG9ycy5pbmNsdWRlcyh2ZW5kb3IpKSB7XHJcbiAgICAgICAgdmVuZG9ycy5wdXNoKHZlbmRvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChkb21haW4ubGFuZ3VhZ2VJZCA9PT0gdGhpcy5hY3RpdmVTeXN0ZW0ubGFuZ3VhZ2VJZCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlRG9tYWluID0gZG9tYWluO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kb21haW5zID0gZG9tYWlucztcclxuICAgIHRoaXMudmVuZG9ycyA9IHZlbmRvcnM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0TGFzdFVzZWRTeXN0ZW0oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMQVNUX1VTRURfU1lTVEVNX0xPQ0FMX1NUT1JBR0VfS0VZKSBhcyBzdHJpbmc7XHJcbiAgfVxyXG5cclxuICBnZXRVbmlxdWVMYW5ndWFnZXMobGlzdDogTGFuZ0xpc3RJdGVtW10pOiBzdHJpbmdbXSB7XHJcbiAgICBpZiAoIWxpc3QpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGl0bGVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGxpc3QuZm9yRWFjaCgobGFuZykgPT4ge1xyXG4gICAgICBjb25zdCBsYW5nVGl0bGUgPSBsYW5nLmxhbmc7XHJcbiAgICAgIGNvbnN0IGl4ID0gdGl0bGVzLmluZGV4T2YobGFuZ1RpdGxlIGFzIHN0cmluZyk7XHJcbiAgICAgIGlmIChpeCA9PSAtMSkge1xyXG4gICAgICAgIHRpdGxlcy5wdXNoKGxhbmdUaXRsZSBhcyBzdHJpbmcpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGl0bGVzO1xyXG4gIH1cclxuXHJcbiAgaW5pdChkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0U3lzdGVtTGlzdCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IFN5c3RlbVtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zeXN0ZW1zID0gcmVzO1xyXG4gICAgICAgIGlmIChyZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIHRoaXMubG9hZGVkU3lzdGVtc1N1YmplY3QubmV4dChyZXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnN5c3RlbUV4aXN0cyhkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCwgdGhpcy5zeXN0ZW1zKSAmJiBkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCAhPT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgICAgICBkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9IHRoaXMuc3lzdGVtc1swXT8ubGFuZ3VhZ2VJZDtcclxuICAgICAgICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICAgICAgICBjb25zdCB2ZW5kb3IgPSBzeXN0ZW0udmVuZG9yO1xyXG4gICAgICAgICAgICBpZiAodmVuZG9yID09PSB0aGlzLmRlZmF1bHRWZW5kb3IpIHtcclxuICAgICAgICAgICAgICBkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9IHN5c3RlbS5sYW5ndWFnZUlkO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgICAgICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRoaXMuZGVmYXVsdFRhcmdldExhbmd1YWdlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jcmVhdGVSZWNlbnRTeXN0ZW1BcnJheSgpO1xyXG4gICAgICAgIHRoaXMuc291cmNlTGFuZ0xpc3QgPSB0aGlzLmNyZWF0ZUxhbmdMaXN0KHRoaXMuc3lzdGVtcyk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VTeXN0ZW0oZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQpO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0SW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3lzTGlzdC5uZXh0KHRoaXMuc3lzdGVtcyk7XHJcbiAgICAgICAgdGhpcy5ub1N5c3RlbXNFcnJvciA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgICAgICAgdGhpcy5lbmFibGVMYW5ndWFnZURldGVjdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubm9TeXN0ZW1zRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWxlcnQuZXJyb3IodGhpcy5kZWZhdWx0RXJyb3JUcmFuc2xhdGlvbktleSwgZXJyb3IpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sb2FkU3BlZWNoU3lzdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9hZGVkU3lzdGVtcygpOiBPYnNlcnZhYmxlPFN5c3RlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2FkZWRTeXN0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHNldExhc3RVc2VkU3lzdGVtKHN5c3RlbUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMQVNUX1VTRURfU1lTVEVNX0xPQ0FMX1NUT1JBR0VfS0VZLCBzeXN0ZW1JZCk7XHJcbiAgfVxyXG5cclxuICBzd2FwU3lzdGVtTGFuZ3VhZ2VzKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLnRhcmdldExhbmd1YWdlLCB0aGlzLnNvdXJjZUxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVN5c3RlbShsYW5ndWFnZUlkOiBzdHJpbmcsIHJldHJhbnNsYXRlID0gdHJ1ZSwgaXNSZWNlbnRTeXN0ZW0/OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVTeXN0ZW0/Lmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZWxlY3RlZFN5c3RlbSE6IFN5c3RlbTtcclxuXHJcbiAgICBpZiAoIWxhbmd1YWdlSWQ/LmluY2x1ZGVzKEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkpIHtcclxuICAgICAgZm9yIChjb25zdCBzeXN0ZW0gb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgICAgaWYgKHN5c3RlbS5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZFN5c3RlbSA9IHN5c3RlbTtcclxuXHJcbiAgICAgICAgICBpZiAoIWlzUmVjZW50U3lzdGVtKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLmFjdGl2ZVN5c3RlbT8uZGV0ZWN0ZWRMYW5ndWFnZSA/PyBudWxsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRTeXN0ZW0gPSB0aGlzLmNyZWF0ZVN5c3RlbSgnJywgbGFuZ3VhZ2VJZCwgbGFuZ3VhZ2VJZCwgQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZLCB0aGlzLnRhcmdldExhbmd1YWdlLCAnJywgdGhpcy5hY3RpdmVTeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UgPz8gbnVsbCwgZmFsc2UpO1xyXG5cclxuICAgICAgdGhpcy50YXJnZXRMYW5nTGlzdCA9IHRoaXMuY3JlYXRlTGFuZ0xpc3QodGhpcy5zeXN0ZW1zLCBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpO1xyXG4gICAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gdGhpcy50YXJnZXRMYW5ndWFnZTtcclxuICAgICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWTtcclxuICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSBzZWxlY3RlZFN5c3RlbTtcclxuICAgICAgdGhpcy5nZXRBY3RpdmVWZW5kb3JzQW5kRG9tYWlucygpO1xyXG4gICAgICB0aGlzLm9uQWN0aXZlU3lzdGVtQ2hhbmdlKHJldHJhbnNsYXRlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGFyZ2V0TGFuZ0xpc3QgPSB0aGlzLmNyZWF0ZUxhbmdMaXN0KHRoaXMuc3lzdGVtcywgc2VsZWN0ZWRTeXN0ZW0/LnNvdXJjZUxhbmd1YWdlKTtcclxuICAgIHRoaXMudGFyZ2V0TGFuZ3VhZ2UgPSBzZWxlY3RlZFN5c3RlbT8udGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICB0aGlzLnNvdXJjZUxhbmd1YWdlID0gdGhpcy5hY3RpdmVTeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UgJiYgIWlzUmVjZW50U3lzdGVtID8gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIDogc2VsZWN0ZWRTeXN0ZW0uc291cmNlTGFuZ3VhZ2U7XHJcblxyXG4gICAgaWYgKCFpc1JlY2VudFN5c3RlbSkge1xyXG4gICAgICBzZWxlY3RlZFN5c3RlbS5kZXRlY3RlZExhbmd1YWdlID0gdGhpcy5hY3RpdmVTeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UgPz8gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHNlbGVjdGVkU3lzdGVtO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVWZW5kb3JzQW5kRG9tYWlucygpO1xyXG5cclxuICAgIHRoaXMub25BY3RpdmVTeXN0ZW1DaGFuZ2UocmV0cmFuc2xhdGUpO1xyXG5cclxuICAgIHRoaXMuc2V0TGFzdFVzZWRTeXN0ZW0oc2VsZWN0ZWRTeXN0ZW0ubGFuZ3VhZ2VJZCk7XHJcbiAgfVxyXG5cclxuICBzeXN0ZW1FeGlzdHMobGFuZ3VhZ2VJZDogc3RyaW5nLCBzeXN0ZW1MaXN0OiBTeXN0ZW1bXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc3lzdGVtcyA9IHN5c3RlbUxpc3QgPz8gdGhpcy5zeXN0ZW1zO1xyXG4gICAgZm9yIChjb25zdCBzeXN0ZW0gb2Ygc3lzdGVtcykge1xyXG4gICAgICBpZiAoc3lzdGVtLmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzVGVybWlub2xvZ3lTdXBwb3J0ZWQoc3lzdGVtOiBTeXN0ZW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzeXN0ZW0uaW5jbHVkZXNUZXJtaW5vbG9neSBhcyBib29sZWFuO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU291cmNlTGFuZ3VhZ2Uoc291cmNlTGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcclxuICAgIGlmIChzb3VyY2VMYW5ndWFnZUNvZGUgPT09IHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2Uoc291cmNlTGFuZ3VhZ2VDb2RlLCB0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHNvdXJjZUxhbmd1YWdlQ29kZSwgdGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGFyZ2V0TGFuZ3VhZ2UodGFyZ2V0TGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVN5c3RlbT8uZGV0ZWN0ZWRMYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZUNvZGUsIHRydWUsIHRydWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRhcmdldExhbmd1YWdlQ29kZSA9PT0gdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2VDb2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy5hY3RpdmVTeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UgPyBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkgOiB0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2VDb2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUmVjZW50U3lzdGVtQXJyYXkoKSB7XHJcbiAgICBsZXQgc3lzdGVtSWRBcnJheTogc3RyaW5nW107XHJcbiAgICBjb25zdCByZWNlbnRTeXN0ZW1BcnJheTogU3lzdGVtW10gPSBbXTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBzeXN0ZW1JZEFycmF5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnJlY2VudFN5c3RlbUtleSkgPz8gXCJbXVwiKTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc3lzdGVtSWRBcnJheS5mb3JFYWNoKChsYW5ndWFnZUlkKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nU3lzdGVtID0gdGhpcy5zeXN0ZW1zLmZpbmQoc3lzdGVtID0+IHN5c3RlbS5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKTtcclxuICAgICAgaWYgKGV4aXN0aW5nU3lzdGVtICYmICF0aGlzLnJlY2VudFN5c3RlbXMuaW5jbHVkZXMoZXhpc3RpbmdTeXN0ZW0pKSB7XHJcbiAgICAgICAgcmVjZW50U3lzdGVtQXJyYXkucHVzaChleGlzdGluZ1N5c3RlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVjZW50U3lzdGVtcyA9IHJlY2VudFN5c3RlbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRUb1JlY2VudFN5c3RlbUFycmF5KHN5c3RlbTogU3lzdGVtKSB7XHJcbiAgICBjb25zdCBleGlzdGluZ1N5c3RlbSA9IHRoaXMucmVjZW50U3lzdGVtcy5maW5kKGV4aXN0aW5nID0+IGV4aXN0aW5nLmxhbmd1YWdlSWQgPT09IHN5c3RlbS5sYW5ndWFnZUlkKTtcclxuICAgIC8vIGlmIHN5c3RlbSBhbHJlYWR5IGluIGxpc3QsIHB1dCBpdCB0byBmaXJzdCBwb3NpdGlvbi4gSWYgaXggMCwgbm8gYWN0aW9uIHJlcXVpcmVkIHNpbmNlIGxhdGVzdCBzeXN0ZW0gaXMgYWxyZWFkeSBmaXJzdC5cclxuICAgIGlmIChleGlzdGluZ1N5c3RlbSkge1xyXG4gICAgICBjb25zdCBzeXN0ZW1JeEluUmVjZW50TGlzdCA9IHRoaXMucmVjZW50U3lzdGVtcy5pbmRleE9mKGV4aXN0aW5nU3lzdGVtKTtcclxuICAgICAgaWYgKHN5c3RlbUl4SW5SZWNlbnRMaXN0ID4gMCkge1xyXG4gICAgICAgIHRoaXMucmVjZW50U3lzdGVtcy5zcGxpY2Uoc3lzdGVtSXhJblJlY2VudExpc3QsIDEpO1xyXG4gICAgICAgIHRoaXMucmVjZW50U3lzdGVtcy5zcGxpY2UoMCwgMCwgc3lzdGVtKTtcclxuICAgICAgICAvLyByZXNldGluZyBkZXRlY3RlZExhbmd1YWdlLCBzbyAoLSBEZXRlY3RlZCkgbGFiZWwgZG9lc250IGFwcGVhcnMgaWYgd2Ugc2VsZWN0IGxhbmd1YWdlIGRpcmVjdGlvbiBmcm9tIHJlY2VudCBzeXN0ZW0gbGlzdFxyXG4gICAgICAgIHN5c3RlbS5kZXRlY3RlZExhbmd1YWdlID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBpZiBsaXN0IHRvbyBsb25nLCByZW1vdmUgbGFzdCAob2xkZXN0IGVsZW1lbnQpXHJcbiAgICAgIHdoaWxlICh0aGlzLnJlY2VudFN5c3RlbXMubGVuZ3RoID49IHRoaXMucmVjZW50U3lzdGVtc01heENvdW50KSB7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnBvcCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJlY2VudFN5c3RlbXMuc3BsaWNlKDAsIDAsIHN5c3RlbSk7XHJcbiAgICB9XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnJlY2VudFN5c3RlbUtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy5yZWNlbnRTeXN0ZW1zLm1hcChzeXN0ZW0gPT4gc3lzdGVtLmxhbmd1YWdlSWQpKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhblN3YXBTeXN0ZW1MYW5ndWFnZXMoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgbGFuZ1N3YXBBY3RpdmUgPSBmYWxzZTtcclxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLnN5c3RlbXMpIHtcclxuICAgICAgY29uc3Qgc3lzdGVtID0gZWxlbWVudDtcclxuICAgICAgaWYgKHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PSB0aGlzLnRhcmdldExhbmd1YWdlICYmIHN5c3RlbS50YXJnZXRMYW5ndWFnZSA9PSB0aGlzLnNvdXJjZUxhbmd1YWdlKSB7XHJcbiAgICAgICAgbGFuZ1N3YXBBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhblN3YXBMYW5ndWFnZXMgPSBsYW5nU3dhcEFjdGl2ZTtcclxuICAgIHJldHVybiBsYW5nU3dhcEFjdGl2ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTGFuZ0xpc3Qoc3lzdGVtczogU3lzdGVtW10sIHNyY0xhbmdDb2RlPzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBsYW5nTGlzdEl0ZW1BcnJheTogTGFuZ0xpc3RJdGVtW10gPSBbXTtcclxuICAgIHN5c3RlbXMuZm9yRWFjaCgoc3lzdGVtKSA9PiB7XHJcbiAgICAgIGlmICghc3JjTGFuZ0NvZGUgfHwgc3JjTGFuZ0NvZGUgPT09IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSB8fCBzcmNMYW5nQ29kZSA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgICAgbGFuZ0xpc3RJdGVtQXJyYXkucHVzaChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZG9tYWluOiBzeXN0ZW0uZG9tYWluIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgbGFuZzogc3JjTGFuZ0NvZGUgPyBzeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgOiBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UsXHJcbiAgICAgICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgICAgICB2ZW5kb3I6IHN5c3RlbS52ZW5kb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGxhbmdMaXN0SXRlbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kQ29ycmVjdFN5c3RlbShzb3VyY2VMYW5ndWFnZTogc3RyaW5nLCB0YXJnZXRMYW5ndWFnZTogc3RyaW5nLCBkb21haW4/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3lzdGVtcyA9IHRoaXMuc3lzdGVtcztcclxuXHJcbiAgICBpZiAoc291cmNlTGFuZ3VhZ2UgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gdGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlID0gdGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICAgIHJldHVybiBgJHtBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVl9LSR7dGFyZ2V0TGFuZ3VhZ2V9YFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN5c3RlbXNGb3JMYW5ndWFnZVBhaXIgPSBzeXN0ZW1zLmZpbHRlcihzeXN0ZW0gPT4gc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBzb3VyY2VMYW5ndWFnZSAmJiB0YXJnZXRMYW5ndWFnZSA9PT0gc3lzdGVtLnRhcmdldExhbmd1YWdlICYmIHN5c3RlbS5kb21haW4gPT09IGRvbWFpbik7XHJcbiAgICBcclxuICAgIGlmIChzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zeXN0ZW1zLmZpbmQoc3lzdGVtID0+IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PT0gc291cmNlTGFuZ3VhZ2UpPy5sYW5ndWFnZUlkIGFzIHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3lzdGVtc1dpdGhEZWZhdWx0VmVuZG9yID0gc3lzdGVtc0Zvckxhbmd1YWdlUGFpci5maWx0ZXIoc3lzdGVtID0+IChzeXN0ZW0udmVuZG9yIHx8IHRoaXMuZGVmYXVsdFZlbmRvcikgPT09IHRoaXMuZGVmYXVsdFZlbmRvcik7XHJcbiAgICBpZiAoc3lzdGVtc1dpdGhEZWZhdWx0VmVuZG9yLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IgPSBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzeXN0ZW1zV2l0aERlZmF1bHREb21haW4gPSBzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IuZmlsdGVyKHN5c3RlbSA9PiBkb21haW4gPyBzeXN0ZW0uZG9tYWluID09PSBkb21haW4gOiB0aGlzLmRlZmF1bHREb21haW5zLmluY2x1ZGVzKHN5c3RlbS5kb21haW4gYXMgc3RyaW5nKSk7XHJcbiAgICBpZiAoc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBzeXN0ZW1zV2l0aERlZmF1bHREb21haW4gPSBzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3I7XHJcbiAgICB9XHJcbiAgICBTb3J0SGVscGVyLnNvcnRCeUFycmF5KHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiwgdGhpcy5kZWZhdWx0RG9tYWlucywgXCJkb21haW5cIik7XHJcblxyXG4gICAgcmV0dXJuIHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpblswXS5sYW5ndWFnZUlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkFjdGl2ZVN5c3RlbUNoYW5nZShyZXRyYW5zbGF0ZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHN5c3RlbTogU3lzdGVtID0gdGhpcy5hY3RpdmVTeXN0ZW07XHJcbiAgICBjb25zdCB2ZW5kb3IgPSB0aGlzLmFjdGl2ZVN5c3RlbS52ZW5kb3I7XHJcblxyXG4gICAgaWYgKHRoaXMuc291cmNlTGFuZ3VhZ2UgIT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSAmJiAhc3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlICYmIHN5c3RlbS5kb21haW4/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFkZFRvUmVjZW50U3lzdGVtQXJyYXkoc3lzdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGl2ZS5uZXh0KHtcclxuICAgICAgc291cmNlTGFuZzoge1xyXG4gICAgICAgIGxhbmc6IHRoaXMuc291cmNlTGFuZ3VhZ2UsXHJcbiAgICAgICAgZG9tYWluOiBzeXN0ZW0uZG9tYWluLFxyXG4gICAgICAgIHZlbmRvcjogdmVuZG9yLFxyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICB9LFxyXG4gICAgICBzb3VyY2VMYW5nTGlzdDogdGhpcy5zb3VyY2VMYW5nTGlzdCxcclxuICAgICAgc3lzdGVtSWQ6IHN5c3RlbS5pZCxcclxuICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgIHRhcmdldExhbmc6IHtcclxuICAgICAgICBkb21haW46IHN5c3RlbS5kb21haW4gPz8gdGhpcy5hY3RpdmVEb21haW4udGl0bGUsXHJcbiAgICAgICAgdmVuZG9yOiB2ZW5kb3IsXHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgbGFuZzogdGhpcy50YXJnZXRMYW5ndWFnZVxyXG4gICAgICB9LFxyXG4gICAgICB0YXJnZXRMYW5nTGlzdDogdGhpcy50YXJnZXRMYW5nTGlzdCxcclxuICAgICAgdmVuZG9yczogdGhpcy52ZW5kb3JzLFxyXG4gICAgICBkb21haW5zOiB7IGFjdGl2ZTogdGhpcy5hY3RpdmVEb21haW4sIGRvbWFpbnM6IHRoaXMuZG9tYWlucyB9LFxyXG4gICAgICBzd2FwTGFuZ0FjdGl2ZTogdGhpcy5jYW5Td2FwU3lzdGVtTGFuZ3VhZ2VzKCksXHJcbiAgICAgIHN5c3RlbTogc3lzdGVtLFxyXG4gICAgICByZXRyYW5zbGF0ZTogcmV0cmFuc2xhdGUsXHJcbiAgICAgIHJlY2VudFN5c3RlbXM6IHRoaXMucmVjZW50U3lzdGVtc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVN5c3RlbShkb21haW46IHN0cmluZywgaWQ6IHN0cmluZywgbGFuZ3VhZ2VJZDogc3RyaW5nLCBzb3VyY2VMYW5ndWFnZTogc3RyaW5nLCB0YXJnZXRMYW5ndWFnZTogc3RyaW5nLCB2ZW5kb3I6IHN0cmluZywgZGV0ZWN0ZWRMYW5ndWFnZTogc3RyaW5nLCBpbmNsdWRlc1Rlcm1pbm9sb2d5OiBib29sZWFuKTogU3lzdGVtIHtcclxuICAgIHJldHVybiB7IGRvbWFpbiwgaWQsIGxhbmd1YWdlSWQsIHNvdXJjZUxhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZSwgdmVuZG9yLCBkZXRlY3RlZExhbmd1YWdlLCBpbmNsdWRlc1Rlcm1pbm9sb2d5IH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFNwZWVjaFN5c3RlbXMoKSB7XHJcbiAgICAvLyBJZiBvbmxpbmUgYXNyIGFuZCB0dHMgbm90IGVuYWJsZWQsIG5vIG5lZWQgdG8gbG9hZC5cclxuICAgIGlmICghdGhpcy5jb25maWcuc3BlZWNoQ29uZmlnLm9ubGluZUFzcj8uZW5hYmxlZCAmJiAhdGhpcy5jb25maWcuc3BlZWNoQ29uZmlnLnRleHRUb1NwZWVjaD8uZW5hYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc291cmNlU2VydmljZS5nZXQoKS5zdWJzY3JpYmUoKHNwZWVjaFN5c3RlbXMpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnNwZWVjaENvbmZpZy5vbmxpbmVBc3I/LmVuYWJsZWQpIHtcclxuICAgICAgICB0aGlzLm9ubGluZUFTclN5c3RlbXMuc2V0KHNwZWVjaFN5c3RlbXMuZmlsdGVyKChzeXN0ZW0pID0+IHN5c3RlbS50eXBlID09PSBSZXNvdXJjZVR5cGUuT05MSU5FKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5zcGVlY2hDb25maWcudGV4dFRvU3BlZWNoPy5lbmFibGVkKSB7XHJcbiAgICAgICAgdGhpcy50dHNTeXN0ZW1zLnNldChzcGVlY2hTeXN0ZW1zLmZpbHRlcigoc3lzdGVtKSA9PiBzeXN0ZW0udHlwZSA9PT0gUmVzb3VyY2VUeXBlLlRUUykpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXN5c3RlbS1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBYyxZQUFZLEVBQVUsa0NBQWtDLEVBQWdCLFVBQVUsRUFBVSxhQUFhLEVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0SyxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFZLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFLbEYsTUFBTSxPQUFPLG1DQUFtQztJQUN0QyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMzQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdCLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFbEQsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQ2QsZ0JBQWdCLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFVBQVUsR0FBRyxNQUFNLENBQWEsRUFBRSxDQUFDLENBQUM7SUFDN0MsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QyxZQUFZLENBQVU7SUFDdEIsZ0JBQWdCLENBQVc7SUFFM0IsMEJBQTBCLEdBQUcsdUNBQXVDLENBQUM7SUFFN0Qsb0JBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztJQUV2RCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUEwQixDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sY0FBYyxDQUFVO0lBQ3hCLFlBQVksQ0FBVTtJQUN0QixPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFDdkIsY0FBYyxDQUFVO0lBQ3hCLGNBQWMsR0FBbUIsRUFBRSxDQUFDO0lBQ3BDLGNBQWMsR0FBbUIsRUFBRSxDQUFDO0lBRTVDLGlDQUFpQztJQUNqQyx1QkFBdUI7SUFDdkIsSUFBSSxxQkFBcUIsS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLG9CQUE4QixDQUFDLENBQUMsQ0FBQztJQUNyRixhQUFhLEdBQWEsRUFBRSxDQUFDO0lBQ3JDLFlBQVk7SUFFSyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ2xDLE1BQU0sR0FBZ0MsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxDQUFDO0lBRWxHOztNQUVFO0lBQ0YsdUJBQXVCLENBQUMsV0FBcUI7UUFDM0MsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7O01BR0U7SUFDRixtQkFBbUIsQ0FBQyxRQUFnQjtRQUNsQyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztZQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLFdBQXFCLEVBQUUsV0FBcUI7UUFDekYsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixLQUFLLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuSCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFakYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsR0FBRywyQkFBMkIsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBRTdCLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUMvSSxTQUFTO1lBQ1gsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFXO2dCQUNyQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBZ0I7YUFDL0IsQ0FBQztZQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckIsTUFBTSxNQUFNLEdBQVc7Z0JBQ3JCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDN0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3JCLENBQUE7WUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBR0QsaUJBQWlCO1FBQ2YsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFXLENBQUM7SUFDNUUsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQW9CO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQW1CLENBQUMsQ0FBQztZQUMvQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBbUIsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUMsdUJBQStCO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzNDLElBQUksRUFBRSxDQUFDLEdBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO2dCQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSx1QkFBdUIsS0FBSywyQkFBMkIsRUFBRSxDQUFDO29CQUN6SCx1QkFBdUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQztvQkFDdEQsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7d0JBQzdCLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDbEMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQzs0QkFDNUMsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxJQUFJLHVCQUF1QixLQUFLLDJCQUEyQixFQUFFLENBQUM7b0JBQzVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2dCQUNuRCxDQUFDO2dCQUVELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBRTVCLElBQUksdUJBQXVCLEtBQUssMkJBQTJCLEVBQUUsQ0FBQztvQkFDNUQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQ2pDLENBQUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFnQjtRQUNoQyxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxZQUFZLENBQUMsVUFBa0IsRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQXdCO1FBQzNFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLGNBQXVCLENBQUM7UUFFNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDO1lBQ3ZELEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNsQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3JDLGNBQWMsR0FBRyxNQUFNLENBQUM7b0JBRXhCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDcEIsY0FBYyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDO29CQUNoRixDQUFDO29CQUVELE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLDJCQUEyQixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXpLLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLDJCQUEyQixDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsMkJBQTJCLENBQUM7WUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUM7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxFQUFFLGNBQWMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBRTNJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixjQUFjLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUM7UUFDaEYsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDO1FBQ25DLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxZQUFZLENBQUMsVUFBa0IsRUFBRSxVQUFvQjtRQUNuRCxNQUFNLE9BQU8sR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQWM7UUFDbkMsT0FBTyxNQUFNLENBQUMsbUJBQThCLENBQUM7SUFDL0MsQ0FBQztJQUVELG9CQUFvQixDQUFDLGtCQUEwQjtRQUM3QyxJQUFJLGtCQUFrQixLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsa0JBQTBCO1FBQzdDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekYsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLGtCQUFrQixLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNoSixDQUFDO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLGFBQXVCLENBQUM7UUFDNUIsTUFBTSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDO1lBQ0gsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU87UUFDVCxDQUFDO1FBRUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQztZQUNyRixJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25FLGlCQUFpQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDO0lBQ3pDLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUFjO1FBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEcseUhBQXlIO1FBQ3pILElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN4RSxJQUFJLG9CQUFvQixHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDeEMsMEhBQTBIO2dCQUMxSCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGlEQUFpRDtZQUNqRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDM0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNqRyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO1FBQ3ZDLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBaUIsRUFBRSxXQUFvQjtRQUM1RCxNQUFNLGlCQUFpQixHQUFtQixFQUFFLENBQUM7UUFDN0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLE1BQU0sQ0FBQyxjQUFjLElBQUksV0FBVyxLQUFLLDJCQUEyQixFQUFFLENBQUM7Z0JBQ3pHLGlCQUFpQixDQUFDLElBQUksQ0FDcEI7b0JBQ0UsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFnQjtvQkFDL0IsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWM7b0JBQ2pFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtvQkFDN0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2lCQUN0QixDQUNGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxjQUFzQixFQUFFLGNBQXNCLEVBQUUsTUFBZTtRQUN2RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTdCLElBQUksY0FBYyxLQUFLLDJCQUEyQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1lBQ2xELE9BQU8sR0FBRywyQkFBMkIsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUMzRCxDQUFDO1FBRUQsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxjQUFjLElBQUksTUFBTSxDQUFDLGNBQWMsS0FBSyxjQUFjLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFdkwsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLEVBQUUsVUFBb0IsQ0FBQztRQUNyRyxDQUFDO1FBRUQsSUFBSSx3QkFBd0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNySSxJQUFJLHdCQUF3QixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyx3QkFBd0IsR0FBRyxzQkFBc0IsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDcEssSUFBSSx3QkFBd0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUMsd0JBQXdCLEdBQUcsd0JBQXdCLENBQUM7UUFDdEQsQ0FBQztRQUNELFVBQVUsQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVoRixPQUFPLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNoRCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsV0FBVyxHQUFHLElBQUk7UUFDN0MsTUFBTSxNQUFNLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUV4QyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssMkJBQTJCLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM5RyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7YUFDOUI7WUFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUNoRCxNQUFNLEVBQUUsTUFBTTtnQkFDZCxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYzthQUMxQjtZQUNELGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDN0QsY0FBYyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM3QyxNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQWMsRUFBRSxFQUFVLEVBQUUsVUFBa0IsRUFBRSxjQUFzQixFQUFFLGNBQXNCLEVBQUUsTUFBYyxFQUFFLGdCQUF3QixFQUFFLG1CQUE0QjtRQUN6TCxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQTtJQUNsSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNwRyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDckQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNuRyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzt3R0FyZFUsbUNBQW1DOzRHQUFuQyxtQ0FBbUMsY0FGbEMsTUFBTTs7NEZBRVAsbUNBQW1DO2tCQUgvQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURhdGEsIEFsZXJ0U2VydmljZSwgRG9tYWluLCBMQVNUX1VTRURfU1lTVEVNX0xPQ0FMX1NUT1JBR0VfS0VZLCBMYW5nTGlzdEl0ZW0sIFNvcnRIZWxwZXIsIFN5c3RlbSwgU3lzdGVtU2VydmljZSwgVmVuZG9yIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSB9IGZyb20gJy4uL21vZGVscy9hdXRvLWxhbmd1YWdlLWRldGVjdGlvbi1rZXkuY29uc3QnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi90bGQtdHJhbnNsYXRlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzb3VyY2UsIFJlc291cmNlU2VydmljZSwgUmVzb3VyY2VUeXBlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtc2VydmljZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3lzdGVtU2VydmljZSA9IGluamVjdChTeXN0ZW1TZXJ2aWNlKTtcclxuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlKTtcclxuICBwcml2YXRlIGFsZXJ0ID0gaW5qZWN0KEFsZXJ0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZXNvdXJjZVNlcnZpY2UgPSBpbmplY3QoUmVzb3VyY2VTZXJ2aWNlKTtcclxuXHJcbiAgbm9TeXN0ZW1zRXJyb3IgPSBmYWxzZTtcclxuICBzeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIHJlYWRvbmx5IG9ubGluZUFTclN5c3RlbXMgPSBzaWduYWw8UmVzb3VyY2VbXT4oW10pO1xyXG4gIHJlYWRvbmx5IHR0c1N5c3RlbXMgPSBzaWduYWw8UmVzb3VyY2VbXT4oW10pO1xyXG4gIHdpZGdldEluaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgc3lzTGlzdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFN5c3RlbVtdPigxKTtcclxuICBhY3RpdmVEb21haW4hOiBEb21haW47XHJcbiAgY2FuU3dhcExhbmd1YWdlcyE6IGJvb2xlYW47XHJcblxyXG4gIGRlZmF1bHRFcnJvclRyYW5zbGF0aW9uS2V5ID0gJ1RMRF9UUkFOU0xBVEUuRVJST1JfTk9fU1lTVEVNU19MT0FERUQnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZFN5c3RlbXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U3lzdGVtW10+KCk7XHJcblxyXG4gIGdldCBhY3RpdmVWZW5kb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVTeXN0ZW0udmVuZG9yIHx8IHRoaXMuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0VmVuZG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0RG9tYWlucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHREb21haW5zIGFzIHN0cmluZ1tdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRUYXJnZXRMYW5ndWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHRUYXJnZXRMYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIGdldCBkb21haW5zQXZhaWxhYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9tYWlucy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzb3VyY2VMYW5ndWFnZSE6IHN0cmluZztcclxuICBwcml2YXRlIGFjdGl2ZVN5c3RlbSE6IFN5c3RlbTtcclxuICBwcml2YXRlIGRvbWFpbnM6IERvbWFpbltdID0gW107XHJcbiAgcHJpdmF0ZSB2ZW5kb3JzOiBWZW5kb3JbXSA9IFtdO1xyXG4gIHByaXZhdGUgdGFyZ2V0TGFuZ3VhZ2UhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBzb3VyY2VMYW5nTGlzdDogTGFuZ0xpc3RJdGVtW10gPSBbXTtcclxuICBwcml2YXRlIHRhcmdldExhbmdMaXN0OiBMYW5nTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICAvLyNyZWdpb24gUmVjZW50IHN5c3RlbSB2YXJpYWJsZXNcclxuICAvLyBQb3NzaWJseSBmcm9tIGNvbmZpZ1xyXG4gIGdldCByZWNlbnRTeXN0ZW1zTWF4Q291bnQoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLm1heFJlY2VudFN5c3RlbUNvdW50IGFzIG51bWJlcjsgfVxyXG4gIHByaXZhdGUgcmVjZW50U3lzdGVtczogU3lzdGVtW10gPSBbXTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWNlbnRTeXN0ZW1LZXkgPSBcInJlY2VudFN5c3RlbXNcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZTogQmVoYXZpb3JTdWJqZWN0PEFjdGl2ZURhdGE+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3RpdmVEYXRhPig8YW55Pm51bGwpO1xyXG5cclxuICAvKipcclxuICAqIFRoaXMgbWV0aG9kIGlzIGJlaW5nIGNhbGxlZCB3aGVuIGF1dG8gbGFuZ3VhZ2UgZGV0ZWN0aW9uIHdhcyBjaG9zZW4uXHJcbiAgKi9cclxuICBlbmFibGVMYW5ndWFnZURldGVjdGlvbihyZXRyYW5zbGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVN5c3RlbT8uZGV0ZWN0ZWRMYW5ndWFnZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWTtcclxuICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy5zb3VyY2VMYW5ndWFnZSwgdGhpcy50YXJnZXRMYW5ndWFnZSwgcmV0cmFuc2xhdGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUaGlzIG1ldGhvZCBpcyBiZWluZyB1c2VkIHRvIHNldCBkZXRlY3RlZCBsYW5ndWFnZS5cclxuICAqIEFsc28sIHdoZW4gbGFuZ3VhZ2Ugd2FzIGRldGVjdGVkIGFuZCB3ZSB3YW50IHRvIGNsZWFyIHNvdXJjZSB0ZXh0LCB0aGlzIG1ldGhvZCBhbHNvIGlzIGJlaW5nIGNhbGxlZC5cclxuICAqL1xyXG4gIHNldERldGVjdGVkTGFuZ3VhZ2UobGFuZ0NvZGU6IHN0cmluZykge1xyXG4gICAgaWYgKGxhbmdDb2RlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgPSBsYW5nQ29kZTtcclxuICAgICAgdGhpcy5lbmFibGVMYW5ndWFnZURldGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIHRoaXMub25BY3RpdmVTeXN0ZW1DaGFuZ2UoZmFsc2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IGxhbmdDb2RlO1xyXG4gICAgdGhpcy5jaGFuZ2VMYW5ndWFnZShsYW5nQ29kZSwgdGhpcy50YXJnZXRMYW5ndWFnZSwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRTeXN0ZW1zKCk6IFN5c3RlbVtdIHtcclxuICAgIHJldHVybiB0aGlzLnN5c3RlbXM7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VMYW5ndWFnZShzb3VyY2U6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcsIHJldHJhbnNsYXRlPzogYm9vbGVhbiwgaXNEZXRlY3Rpb24/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoKChzb3VyY2UgIT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkgfHwgKHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlID09PSBzb3VyY2UpKSAmJiAhaXNEZXRlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHNvdXJjZTtcclxuICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IG51bGw7XHJcbiAgICAgIHRoaXMub25BY3RpdmVTeXN0ZW1DaGFuZ2UoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzeXN0ZW1JZCA9IHRoaXMuZmluZENvcnJlY3RTeXN0ZW0oc291cmNlLCB0YXJnZXQsIHRoaXMuYWN0aXZlU3lzdGVtPy5kb21haW4pO1xyXG5cclxuICAgIGlmICghc3lzdGVtSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlU3lzdGVtKHN5c3RlbUlkLCByZXRyYW5zbGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzaG93U2FtZUxhbmd1YWdlcyhsYW5nOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlID0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZO1xyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IGxhbmc7XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbS5kb21haW4gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlU3lzdGVtLmluY2x1ZGVzVGVybWlub2xvZ3kgPSBmYWxzZTtcclxuICAgIHRoaXMuZG9tYWlucyA9IFtdO1xyXG4gICAgdGhpcy52ZW5kb3JzID0gW107XHJcbiAgICB0aGlzLm9uQWN0aXZlU3lzdGVtQ2hhbmdlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVTeXN0ZW1PYmooKTogU3lzdGVtIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVZlbmRvcnNBbmREb21haW5zKCkge1xyXG4gICAgaWYgKCF0aGlzLnNvdXJjZUxhbmd1YWdlIHx8ICF0aGlzLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgICBjb25zdCBkb21haW5zOiBEb21haW5bXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICBpZiAoIShzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09ICh0aGlzLmFjdGl2ZVN5c3RlbT8uZGV0ZWN0ZWRMYW5ndWFnZSA/PyB0aGlzLnNvdXJjZUxhbmd1YWdlKSAmJiBzeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPT09IHRoaXMudGFyZ2V0TGFuZ3VhZ2UpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZG9tYWluOiBEb21haW4gPSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgdGl0bGU6IHN5c3RlbS5kb21haW4gYXMgc3RyaW5nXHJcbiAgICAgIH07XHJcbiAgICAgIGRvbWFpbnMucHVzaChkb21haW4pO1xyXG4gICAgICBjb25zdCB2ZW5kb3I6IFZlbmRvciA9IHtcclxuICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICB0aXRsZTogc3lzdGVtLnZlbmRvclxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXZlbmRvcnMuaW5jbHVkZXModmVuZG9yKSkge1xyXG4gICAgICAgIHZlbmRvcnMucHVzaCh2ZW5kb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZG9tYWluLmxhbmd1YWdlSWQgPT09IHRoaXMuYWN0aXZlU3lzdGVtLmxhbmd1YWdlSWQpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZURvbWFpbiA9IGRvbWFpbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZG9tYWlucyA9IGRvbWFpbnM7XHJcbiAgICB0aGlzLnZlbmRvcnMgPSB2ZW5kb3JzO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldExhc3RVc2VkU3lzdGVtKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTEFTVF9VU0VEX1NZU1RFTV9MT0NBTF9TVE9SQUdFX0tFWSkgYXMgc3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0VW5pcXVlTGFuZ3VhZ2VzKGxpc3Q6IExhbmdMaXN0SXRlbVtdKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCFsaXN0KSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpdGxlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBsaXN0LmZvckVhY2goKGxhbmcpID0+IHtcclxuICAgICAgY29uc3QgbGFuZ1RpdGxlID0gbGFuZy5sYW5nO1xyXG4gICAgICBjb25zdCBpeCA9IHRpdGxlcy5pbmRleE9mKGxhbmdUaXRsZSBhcyBzdHJpbmcpO1xyXG4gICAgICBpZiAoaXggPT0gLTEpIHtcclxuICAgICAgICB0aXRsZXMucHVzaChsYW5nVGl0bGUgYXMgc3RyaW5nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRpdGxlcztcclxuICB9XHJcblxyXG4gIGluaXQoZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldFN5c3RlbUxpc3QoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBTeXN0ZW1bXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3lzdGVtcyA9IHJlcztcclxuICAgICAgICBpZiAocmVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlZFN5c3RlbXNTdWJqZWN0Lm5leHQocmVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zeXN0ZW1FeGlzdHMoZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQsIHRoaXMuc3lzdGVtcykgJiYgZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQgIT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgICAgICAgZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQgPSB0aGlzLnN5c3RlbXNbMF0/Lmxhbmd1YWdlSWQ7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHN5c3RlbSBvZiB0aGlzLnN5c3RlbXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmVuZG9yID0gc3lzdGVtLnZlbmRvcjtcclxuICAgICAgICAgICAgaWYgKHZlbmRvciA9PT0gdGhpcy5kZWZhdWx0VmVuZG9yKSB7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFN5c3RlbUxhbmd1YWdlSWQgPSBzeXN0ZW0ubGFuZ3VhZ2VJZDtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkID09PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpIHtcclxuICAgICAgICAgIHRoaXMudGFyZ2V0TGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRUYXJnZXRMYW5ndWFnZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlUmVjZW50U3lzdGVtQXJyYXkoKTtcclxuICAgICAgICB0aGlzLnNvdXJjZUxhbmdMaXN0ID0gdGhpcy5jcmVhdGVMYW5nTGlzdCh0aGlzLnN5c3RlbXMpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlU3lzdGVtKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkKTtcclxuICAgICAgICB0aGlzLndpZGdldEluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN5c0xpc3QubmV4dCh0aGlzLnN5c3RlbXMpO1xyXG4gICAgICAgIHRoaXMubm9TeXN0ZW1zRXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkID09PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpIHtcclxuICAgICAgICAgIHRoaXMuZW5hYmxlTGFuZ3VhZ2VEZXRlY3Rpb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm5vU3lzdGVtc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFsZXJ0LmVycm9yKHRoaXMuZGVmYXVsdEVycm9yVHJhbnNsYXRpb25LZXksIGVycm9yKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZFNwZWVjaFN5c3RlbXMoKTtcclxuICB9XHJcblxyXG4gIGdldExvYWRlZFN5c3RlbXMoKTogT2JzZXJ2YWJsZTxTeXN0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkU3lzdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMYXN0VXNlZFN5c3RlbShzeXN0ZW1JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oTEFTVF9VU0VEX1NZU1RFTV9MT0NBTF9TVE9SQUdFX0tFWSwgc3lzdGVtSWQpO1xyXG4gIH1cclxuXHJcbiAgc3dhcFN5c3RlbUxhbmd1YWdlcygpIHtcclxuICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy50YXJnZXRMYW5ndWFnZSwgdGhpcy5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTeXN0ZW0obGFuZ3VhZ2VJZDogc3RyaW5nLCByZXRyYW5zbGF0ZSA9IHRydWUsIGlzUmVjZW50U3lzdGVtPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlU3lzdGVtPy5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2VsZWN0ZWRTeXN0ZW0hOiBTeXN0ZW07XHJcblxyXG4gICAgaWYgKCFsYW5ndWFnZUlkPy5pbmNsdWRlcyhBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICAgIGlmIChzeXN0ZW0ubGFuZ3VhZ2VJZCA9PT0gbGFuZ3VhZ2VJZCkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRTeXN0ZW0gPSBzeXN0ZW07XHJcblxyXG4gICAgICAgICAgaWYgKCFpc1JlY2VudFN5c3RlbSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZFN5c3RlbS5kZXRlY3RlZExhbmd1YWdlID0gdGhpcy5hY3RpdmVTeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UgPz8gbnVsbDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkU3lzdGVtID0gdGhpcy5jcmVhdGVTeXN0ZW0oJycsIGxhbmd1YWdlSWQsIGxhbmd1YWdlSWQsIEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSwgdGhpcy50YXJnZXRMYW5ndWFnZSwgJycsIHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlID8/IG51bGwsIGZhbHNlKTtcclxuXHJcbiAgICAgIHRoaXMudGFyZ2V0TGFuZ0xpc3QgPSB0aGlzLmNyZWF0ZUxhbmdMaXN0KHRoaXMuc3lzdGVtcywgQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKTtcclxuICAgICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRoaXMudGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3lzdGVtID0gc2VsZWN0ZWRTeXN0ZW07XHJcbiAgICAgIHRoaXMuZ2V0QWN0aXZlVmVuZG9yc0FuZERvbWFpbnMoKTtcclxuICAgICAgdGhpcy5vbkFjdGl2ZVN5c3RlbUNoYW5nZShyZXRyYW5zbGF0ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhcmdldExhbmdMaXN0ID0gdGhpcy5jcmVhdGVMYW5nTGlzdCh0aGlzLnN5c3RlbXMsIHNlbGVjdGVkU3lzdGVtPy5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gc2VsZWN0ZWRTeXN0ZW0/LnRhcmdldExhbmd1YWdlO1xyXG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlICYmICFpc1JlY2VudFN5c3RlbSA/IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSA6IHNlbGVjdGVkU3lzdGVtLnNvdXJjZUxhbmd1YWdlO1xyXG5cclxuICAgIGlmICghaXNSZWNlbnRTeXN0ZW0pIHtcclxuICAgICAgc2VsZWN0ZWRTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlID8/IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSBzZWxlY3RlZFN5c3RlbTtcclxuICAgIHRoaXMuZ2V0QWN0aXZlVmVuZG9yc0FuZERvbWFpbnMoKTtcclxuXHJcbiAgICB0aGlzLm9uQWN0aXZlU3lzdGVtQ2hhbmdlKHJldHJhbnNsYXRlKTtcclxuXHJcbiAgICB0aGlzLnNldExhc3RVc2VkU3lzdGVtKHNlbGVjdGVkU3lzdGVtLmxhbmd1YWdlSWQpO1xyXG4gIH1cclxuXHJcbiAgc3lzdGVtRXhpc3RzKGxhbmd1YWdlSWQ6IHN0cmluZywgc3lzdGVtTGlzdDogU3lzdGVtW10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHN5c3RlbXMgPSBzeXN0ZW1MaXN0ID8/IHRoaXMuc3lzdGVtcztcclxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHN5c3RlbXMpIHtcclxuICAgICAgaWYgKHN5c3RlbS5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc1Rlcm1pbm9sb2d5U3VwcG9ydGVkKHN5c3RlbTogU3lzdGVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gc3lzdGVtLmluY2x1ZGVzVGVybWlub2xvZ3kgYXMgYm9vbGVhbjtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNvdXJjZUxhbmd1YWdlKHNvdXJjZUxhbmd1YWdlQ29kZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoc291cmNlTGFuZ3VhZ2VDb2RlID09PSB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHNvdXJjZUxhbmd1YWdlQ29kZSwgdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZShzb3VyY2VMYW5ndWFnZUNvZGUsIHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVRhcmdldExhbmd1YWdlKHRhcmdldExhbmd1YWdlQ29kZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVTeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLmFjdGl2ZVN5c3RlbT8uZGV0ZWN0ZWRMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2VDb2RlLCB0cnVlLCB0cnVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0YXJnZXRMYW5ndWFnZUNvZGUgPT09IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlQ29kZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlID8gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIDogdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlQ29kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVJlY2VudFN5c3RlbUFycmF5KCkge1xyXG4gICAgbGV0IHN5c3RlbUlkQXJyYXk6IHN0cmluZ1tdO1xyXG4gICAgY29uc3QgcmVjZW50U3lzdGVtQXJyYXk6IFN5c3RlbVtdID0gW107XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgc3lzdGVtSWRBcnJheSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5yZWNlbnRTeXN0ZW1LZXkpID8/IFwiW11cIik7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHN5c3RlbUlkQXJyYXkuZm9yRWFjaCgobGFuZ3VhZ2VJZCkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdGluZ1N5c3RlbSA9IHRoaXMuc3lzdGVtcy5maW5kKHN5c3RlbSA9PiBzeXN0ZW0ubGFuZ3VhZ2VJZCA9PT0gbGFuZ3VhZ2VJZCk7XHJcbiAgICAgIGlmIChleGlzdGluZ1N5c3RlbSAmJiAhdGhpcy5yZWNlbnRTeXN0ZW1zLmluY2x1ZGVzKGV4aXN0aW5nU3lzdGVtKSkge1xyXG4gICAgICAgIHJlY2VudFN5c3RlbUFycmF5LnB1c2goZXhpc3RpbmdTeXN0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlY2VudFN5c3RlbXMgPSByZWNlbnRTeXN0ZW1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVG9SZWNlbnRTeXN0ZW1BcnJheShzeXN0ZW06IFN5c3RlbSkge1xyXG4gICAgY29uc3QgZXhpc3RpbmdTeXN0ZW0gPSB0aGlzLnJlY2VudFN5c3RlbXMuZmluZChleGlzdGluZyA9PiBleGlzdGluZy5sYW5ndWFnZUlkID09PSBzeXN0ZW0ubGFuZ3VhZ2VJZCk7XHJcbiAgICAvLyBpZiBzeXN0ZW0gYWxyZWFkeSBpbiBsaXN0LCBwdXQgaXQgdG8gZmlyc3QgcG9zaXRpb24uIElmIGl4IDAsIG5vIGFjdGlvbiByZXF1aXJlZCBzaW5jZSBsYXRlc3Qgc3lzdGVtIGlzIGFscmVhZHkgZmlyc3QuXHJcbiAgICBpZiAoZXhpc3RpbmdTeXN0ZW0pIHtcclxuICAgICAgY29uc3Qgc3lzdGVtSXhJblJlY2VudExpc3QgPSB0aGlzLnJlY2VudFN5c3RlbXMuaW5kZXhPZihleGlzdGluZ1N5c3RlbSk7XHJcbiAgICAgIGlmIChzeXN0ZW1JeEluUmVjZW50TGlzdCA+IDApIHtcclxuICAgICAgICB0aGlzLnJlY2VudFN5c3RlbXMuc3BsaWNlKHN5c3RlbUl4SW5SZWNlbnRMaXN0LCAxKTtcclxuICAgICAgICB0aGlzLnJlY2VudFN5c3RlbXMuc3BsaWNlKDAsIDAsIHN5c3RlbSk7XHJcbiAgICAgICAgLy8gcmVzZXRpbmcgZGV0ZWN0ZWRMYW5ndWFnZSwgc28gKC0gRGV0ZWN0ZWQpIGxhYmVsIGRvZXNudCBhcHBlYXJzIGlmIHdlIHNlbGVjdCBsYW5ndWFnZSBkaXJlY3Rpb24gZnJvbSByZWNlbnQgc3lzdGVtIGxpc3RcclxuICAgICAgICBzeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWYgbGlzdCB0b28gbG9uZywgcmVtb3ZlIGxhc3QgKG9sZGVzdCBlbGVtZW50KVxyXG4gICAgICB3aGlsZSAodGhpcy5yZWNlbnRTeXN0ZW1zLmxlbmd0aCA+PSB0aGlzLnJlY2VudFN5c3RlbXNNYXhDb3VudCkge1xyXG4gICAgICAgIHRoaXMucmVjZW50U3lzdGVtcy5wb3AoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZSgwLCAwLCBzeXN0ZW0pO1xyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5yZWNlbnRTeXN0ZW1LZXksIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50U3lzdGVtcy5tYXAoc3lzdGVtID0+IHN5c3RlbS5sYW5ndWFnZUlkKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5Td2FwU3lzdGVtTGFuZ3VhZ2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGxhbmdTd2FwQWN0aXZlID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgIGNvbnN0IHN5c3RlbSA9IGVsZW1lbnQ7XHJcbiAgICAgIGlmIChzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT0gdGhpcy50YXJnZXRMYW5ndWFnZSAmJiBzeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSkge1xyXG4gICAgICAgIGxhbmdTd2FwQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYW5Td2FwTGFuZ3VhZ2VzID0gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgICByZXR1cm4gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUxhbmdMaXN0KHN5c3RlbXM6IFN5c3RlbVtdLCBzcmNMYW5nQ29kZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgbGFuZ0xpc3RJdGVtQXJyYXk6IExhbmdMaXN0SXRlbVtdID0gW107XHJcbiAgICBzeXN0ZW1zLmZvckVhY2goKHN5c3RlbSkgPT4ge1xyXG4gICAgICBpZiAoIXNyY0xhbmdDb2RlIHx8IHNyY0xhbmdDb2RlID09PSBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgfHwgc3JjTGFuZ0NvZGUgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgICAgIGxhbmdMaXN0SXRlbUFycmF5LnB1c2goXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIGxhbmc6IHNyY0xhbmdDb2RlID8gc3lzdGVtLnRhcmdldExhbmd1YWdlIDogc3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICAgICAgdmVuZG9yOiBzeXN0ZW0udmVuZG9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBsYW5nTGlzdEl0ZW1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENvcnJlY3RTeXN0ZW0oc291cmNlTGFuZ3VhZ2U6IHN0cmluZywgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZywgZG9tYWluPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHN5c3RlbXMgPSB0aGlzLnN5c3RlbXM7XHJcblxyXG4gICAgaWYgKHNvdXJjZUxhbmd1YWdlID09PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpIHtcclxuICAgICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRhcmdldExhbmd1YWdlO1xyXG4gICAgICB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZSA9IHRhcmdldExhbmd1YWdlO1xyXG4gICAgICByZXR1cm4gYCR7QVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZfS0ke3RhcmdldExhbmd1YWdlfWBcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyID0gc3lzdGVtcy5maWx0ZXIoc3lzdGVtID0+IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PT0gc291cmNlTGFuZ3VhZ2UgJiYgc3lzdGVtLnRhcmdldExhbmd1YWdlID09PSB0YXJnZXRMYW5ndWFnZSAmJiAoIWRvbWFpbiB8fCBzeXN0ZW0uZG9tYWluID09PSBkb21haW4pKTtcclxuICAgIFxyXG4gICAgaWYgKHN5c3RlbXNGb3JMYW5ndWFnZVBhaXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN5c3RlbXMuZmluZChzeXN0ZW0gPT4gc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBzb3VyY2VMYW5ndWFnZSk/Lmxhbmd1YWdlSWQgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IgPSBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyLmZpbHRlcihzeXN0ZW0gPT4gKHN5c3RlbS52ZW5kb3IgfHwgdGhpcy5kZWZhdWx0VmVuZG9yKSA9PT0gdGhpcy5kZWZhdWx0VmVuZG9yKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciA9IHN5c3RlbXNGb3JMYW5ndWFnZVBhaXI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvci5maWx0ZXIoc3lzdGVtID0+IGRvbWFpbiA/IHN5c3RlbS5kb21haW4gPT09IGRvbWFpbiA6IHRoaXMuZGVmYXVsdERvbWFpbnMuaW5jbHVkZXMoc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcpKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHREb21haW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvcjtcclxuICAgIH1cclxuICAgIFNvcnRIZWxwZXIuc29ydEJ5QXJyYXkoc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluLCB0aGlzLmRlZmF1bHREb21haW5zLCBcImRvbWFpblwiKTtcclxuXHJcbiAgICByZXR1cm4gc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluWzBdLmxhbmd1YWdlSWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQWN0aXZlU3lzdGVtQ2hhbmdlKHJldHJhbnNsYXRlID0gdHJ1ZSkge1xyXG4gICAgY29uc3Qgc3lzdGVtOiBTeXN0ZW0gPSB0aGlzLmFjdGl2ZVN5c3RlbTtcclxuICAgIGNvbnN0IHZlbmRvciA9IHRoaXMuYWN0aXZlU3lzdGVtLnZlbmRvcjtcclxuXHJcbiAgICBpZiAodGhpcy5zb3VyY2VMYW5ndWFnZSAhPT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZICYmICFzeXN0ZW0/LmRldGVjdGVkTGFuZ3VhZ2UgJiYgc3lzdGVtLmRvbWFpbj8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWRkVG9SZWNlbnRTeXN0ZW1BcnJheShzeXN0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aXZlLm5leHQoe1xyXG4gICAgICBzb3VyY2VMYW5nOiB7XHJcbiAgICAgICAgbGFuZzogdGhpcy5zb3VyY2VMYW5ndWFnZSxcclxuICAgICAgICBkb21haW46IHN5c3RlbS5kb21haW4sXHJcbiAgICAgICAgdmVuZG9yOiB2ZW5kb3IsXHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgIH0sXHJcbiAgICAgIHNvdXJjZUxhbmdMaXN0OiB0aGlzLnNvdXJjZUxhbmdMaXN0LFxyXG4gICAgICBzeXN0ZW1JZDogc3lzdGVtLmlkLFxyXG4gICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgdGFyZ2V0TGFuZzoge1xyXG4gICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiA/PyB0aGlzLmFjdGl2ZURvbWFpbi50aXRsZSxcclxuICAgICAgICB2ZW5kb3I6IHZlbmRvcixcclxuICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICBsYW5nOiB0aGlzLnRhcmdldExhbmd1YWdlXHJcbiAgICAgIH0sXHJcbiAgICAgIHRhcmdldExhbmdMaXN0OiB0aGlzLnRhcmdldExhbmdMaXN0LFxyXG4gICAgICB2ZW5kb3JzOiB0aGlzLnZlbmRvcnMsXHJcbiAgICAgIGRvbWFpbnM6IHsgYWN0aXZlOiB0aGlzLmFjdGl2ZURvbWFpbiwgZG9tYWluczogdGhpcy5kb21haW5zIH0sXHJcbiAgICAgIHN3YXBMYW5nQWN0aXZlOiB0aGlzLmNhblN3YXBTeXN0ZW1MYW5ndWFnZXMoKSxcclxuICAgICAgc3lzdGVtOiBzeXN0ZW0sXHJcbiAgICAgIHJldHJhbnNsYXRlOiByZXRyYW5zbGF0ZSxcclxuICAgICAgcmVjZW50U3lzdGVtczogdGhpcy5yZWNlbnRTeXN0ZW1zXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlU3lzdGVtKGRvbWFpbjogc3RyaW5nLCBpZDogc3RyaW5nLCBsYW5ndWFnZUlkOiBzdHJpbmcsIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsIHRhcmdldExhbmd1YWdlOiBzdHJpbmcsIHZlbmRvcjogc3RyaW5nLCBkZXRlY3RlZExhbmd1YWdlOiBzdHJpbmcsIGluY2x1ZGVzVGVybWlub2xvZ3k6IGJvb2xlYW4pOiBTeXN0ZW0ge1xyXG4gICAgcmV0dXJuIHsgZG9tYWluLCBpZCwgbGFuZ3VhZ2VJZCwgc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlLCB2ZW5kb3IsIGRldGVjdGVkTGFuZ3VhZ2UsIGluY2x1ZGVzVGVybWlub2xvZ3kgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkU3BlZWNoU3lzdGVtcygpIHtcclxuICAgIC8vIElmIG9ubGluZSBhc3IgYW5kIHR0cyBub3QgZW5hYmxlZCwgbm8gbmVlZCB0byBsb2FkLlxyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zcGVlY2hDb25maWcub25saW5lQXNyPy5lbmFibGVkICYmICF0aGlzLmNvbmZpZy5zcGVlY2hDb25maWcudGV4dFRvU3BlZWNoPy5lbmFibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldCgpLnN1YnNjcmliZSgoc3BlZWNoU3lzdGVtcykgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcuc3BlZWNoQ29uZmlnLm9ubGluZUFzcj8uZW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMub25saW5lQVNyU3lzdGVtcy5zZXQoc3BlZWNoU3lzdGVtcy5maWx0ZXIoKHN5c3RlbSkgPT4gc3lzdGVtLnR5cGUgPT09IFJlc291cmNlVHlwZS5PTkxJTkUpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnNwZWVjaENvbmZpZy50ZXh0VG9TcGVlY2g/LmVuYWJsZWQpIHtcclxuICAgICAgICB0aGlzLnR0c1N5c3RlbXMuc2V0KHNwZWVjaFN5c3RlbXMuZmlsdGVyKChzeXN0ZW0pID0+IHN5c3RlbS50eXBlID09PSBSZXNvdXJjZVR5cGUuVFRTKSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, inject, input, signal } from '@angular/core';
2
+ import { Component, computed, inject, input, signal } from '@angular/core';
3
3
  import { MatMenuModule } from '@angular/material/menu';
4
4
  import { TranslateModule } from '@ngx-translate/core';
5
5
  import { AlertService, LLMActions, OpenCloseButtonModule, PlausibleHelper } from '@tilde-nlp/ngx-common';
@@ -31,7 +31,7 @@ export class RephraseComponent {
31
31
  rephraseStyles = Object.values(LLMWritingStyle);
32
32
  selectedRephrasingStyle = signal(null);
33
33
  rephrasedText = signal('');
34
- markedRephrasedText = signal('');
34
+ markedRephrasedText = computed(() => marked.parse(this.rephrasedText()));
35
35
  ngOnInit() {
36
36
  this.selectedRephrasingStyle.set(localStorage.getItem(this.rephraseStyleLocalStorageKey) ?? null);
37
37
  if (this.selectedRephrasingStyle()) {
@@ -40,7 +40,6 @@ export class RephraseComponent {
40
40
  }
41
41
  rephrase(style) {
42
42
  this.rephrasedText.set('');
43
- this.markedRephrasedText.set('');
44
43
  this.setSelectedWritingStyle(style);
45
44
  this.isLoading.set(true);
46
45
  this.rephrasePlausible();
@@ -57,7 +56,6 @@ export class RephraseComponent {
57
56
  .subscribe({
58
57
  next: (text) => {
59
58
  this.rephrasedText.set(text);
60
- this.markedRephrasedText.set(marked.parse(text));
61
59
  },
62
60
  });
63
61
  }
@@ -92,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
92
90
  FlexLayoutModule,
93
91
  ], template: "<lib-open-close-button\r\n\t[ngClass.lt-sm]=\"'mobile'\"\r\n\tclass=\"rephrase-menu-btn\"\r\n\t#state=\"matMenuTrigger\"\r\n\t[matMenuTriggerFor]=\"rephraseStylesMenu\"\r\n\t[isOpened]=\"state.menuOpen\"\r\n\t[disabled]=\"disabled()\"\r\n>\r\n\t<span class=\"rephrase-title\">{{ \"TLD_TRANSLATE.REPHRASE.TITLE\" | translate }} ({{ selectedRephrasingStyle() ?? \"TLD_TRANSLATE.REPHRASE.CHOOSE_LABEL\" | translate }})</span>\r\n</lib-open-close-button>\r\n\r\n<mat-menu #rephraseStylesMenu=\"matMenu\" class=\"rephrase-menu\">\r\n\t@for (style of rephraseStyles; track style) {\r\n\t<button mat-menu-item (click)=\"rephrase(style)\">\r\n\t\t{{ \"TLD_TRANSLATE.REPHRASE.STYLES.\" + (style | uppercase) | translate }}\r\n\t</button>\r\n\t}\r\n</mat-menu>\r\n\r\n@if (isLoading()) {\r\n<p class=\"rephrasing\">{{ \"TLD_TRANSLATE.REPHRASE.LOADING\" | translate }}<span class=\"dot-loading\">...</span></p>\r\n} @if(!selectedRephrasingStyle()) {\r\n<p class=\"rephrase-hint\">{{ \"TLD_TRANSLATE.REPHRASE.HINT\" | translate }}</p>\r\n}\r\n\r\n<p [innerHTML]=\"markedRephrasedText()\"></p>\r\n\r\n@if (rephrasedText()) {\r\n<button mat-icon-button [ngClass.lt-sm]=\"'rephrase-mobile'\" class=\"rephrase-copy-btn\" (click)=\"copyRephraseText()\" [matTooltip]=\"'TOOLTIPS.COPY' | translate\">\r\n\t<span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\"> content_copy </span>\r\n</button>\r\n}\r\n", styles: ["p{margin-top:16px}.rephrase-menu-btn:not(.mobile){margin-left:-8px}.rephrase-title{font-size:16px;color:var(--base-30)}.rephrase-hint,.rephrasing{font-style:italic;color:var(--base-40)}.rephrase-copy-btn{position:absolute;right:-45px;top:20px}.rephrase-mobile{right:-46px}.mobile.rephrase-menu-btn{display:block;width:fit-content}::ng-deep .cdk-overlay-container .rephrase-menu{margin:8px!important;min-width:175px!important}\n"] }]
94
92
  }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwaHJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRleHQvY29tcG9uZW50cy9yZXBocmFzZS9yZXBocmFzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC9jb21wb25lbnRzL3JlcGhyYXNlL3JlcGhyYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFn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Q0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLGlCQUFpQjtRQUN4QixlQUFlLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFTyxhQUFhO1FBQ3BCLGVBQWUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7d0dBM0VXLGlCQUFpQjs0RkFBakIsaUJBQWlCLDJjQzlCOUIsODVDQWdDQSxvZURkRSxZQUFZLDJGQUNaLGFBQWEsNnZCQUNiLHFCQUFxQixnTkFDckIsZUFBZSwyRkFDZixlQUFlLDJJQUNmLGFBQWEsOEJBQ2IsZ0JBQWdCLDRUQUNoQixnQkFBZ0I7OzRGQUtMLGlCQUFpQjtrQkFoQjdCLFNBQVM7K0JBQ0MsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjtxQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgTExNQWN0aW9ucywgT3BlbkNsb3NlQnV0dG9uTW9kdWxlLCBQbGF1c2libGVIZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBMTE1SZXBocmFzZVVzZUNhc2UsIExMTVNlcnZpY2UsIExMTVdyaXRpbmdTdHlsZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXNlcnZpY2VzJztcclxuaW1wb3J0IHsgbWFya2VkIH0gZnJvbSAnbWFya2VkJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAndGxkLXJlcGhyYXNlJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdE1hdE1lbnVNb2R1bGUsXHJcblx0XHRPcGVuQ2xvc2VCdXR0b25Nb2R1bGUsXHJcblx0XHRUcmFuc2xhdGVNb2R1bGUsXHJcblx0XHRNYXRCdXR0b25Nb2R1bGUsXHJcblx0XHRNYXRJY29uTW9kdWxlLFxyXG5cdFx0TWF0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEZsZXhMYXlvdXRNb2R1bGUsXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcmVwaHJhc2UuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9yZXBocmFzZS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBocmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0dGV4dCA9IGlucHV0KCcnKTtcclxuXHRsYW5ndWFnZSA9IGlucHV0KCcnKTtcclxuXHRkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcclxuXHJcblx0aXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcblx0cmVhZG9ubHkgI2xsbSA9IGluamVjdChMTE1TZXJ2aWNlKTtcclxuXHRyZWFkb25seSAjY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZCk7XHJcblx0cmVhZG9ubHkgI2FsZXJ0cyA9IGluamVjdChBbGVydFNlcnZpY2UpO1xyXG5cclxuXHRyZWFkb25seSByZXBocmFzZVN0eWxlTG9jYWxTdG9yYWdlS2V5ID0gJ1JFUEhSQVNFX1NUWUxFJztcclxuXHJcblx0cmVwaHJhc2VTdHlsZXM6IExMTVdyaXRpbmdTdHlsZVtdID0gT2JqZWN0LnZhbHVlcyhMTE1Xcml0aW5nU3R5bGUpO1xyXG5cdHNlbGVjdGVkUmVwaHJhc2luZ1N0eWxlID0gc2lnbmFsPExMTVdyaXRpbmdTdHlsZSB8IG51bGw+KG51bGwpO1xyXG5cclxuXHRyZXBocmFzZWRUZXh0ID0gc2lnbmFsKCcnKTtcclxuXHRtYXJrZWRSZXBocmFzZWRUZXh0ID0gc2lnbmFsKCcnKTtcclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlbGVjdGVkUmVwaHJhc2luZ1N0eWxlLnNldCgobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5yZXBocmFzZVN0eWxlTG9jYWxTdG9yYWdlS2V5KSBhcyBMTE1Xcml0aW5nU3R5bGUpID8/IG51bGwpO1xyXG5cclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkUmVwaHJhc2luZ1N0eWxlKCkpIHtcclxuXHRcdFx0dGhpcy5yZXBocmFzZSh0aGlzLnNlbGVjdGVkUmVwaHJhc2luZ1N0eWxlKCkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmVwaHJhc2Uoc3R5bGU6IExMTVdyaXRpbmdTdHlsZSk6IHZvaWQge1xyXG5cdFx0dGhpcy5yZXBocmFzZWRUZXh0LnNldCgnJyk7XHJcblx0XHR0aGlzLm1hcmtlZFJlcGhyYXNlZFRleHQuc2V0KCcnKTtcclxuXHJcblx0XHR0aGlzLnNldFNlbGVjdGVkV3JpdGluZ1N0eWxlKHN0eWxlKTtcclxuXHJcblx0XHR0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcblxyXG5cdFx0dGhpcy5yZXBocmFzZVBsYXVzaWJsZSgpO1xyXG5cclxuXHRcdHRoaXMuI2xsbVxyXG5cdFx0XHQucmVwaHJhc2Uoe1xyXG5cdFx0XHRcdHVzZUNhc2U6IExMTVJlcGhyYXNlVXNlQ2FzZS5HZW5lcmFsLFxyXG5cdFx0XHRcdGxhbmd1YWdlOiB0aGlzLmxhbmd1YWdlKCksXHJcblx0XHRcdFx0c3R5bGU6IHRoaXMuc2VsZWN0ZWRSZXBocmFzaW5nU3R5bGUoKSxcclxuXHRcdFx0XHR0ZXh0OiB0aGlzLnRleHQoKSxcclxuXHRcdFx0fSlcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh0ZXh0KSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJlcGhyYXNlZFRleHQuc2V0KHRleHQpO1xyXG5cdFx0XHRcdFx0dGhpcy5tYXJrZWRSZXBocmFzZWRUZXh0LnNldChtYXJrZWQucGFyc2UodGV4dCkgYXMgc3RyaW5nKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNvcHlSZXBocmFzZVRleHQoKSB7XHJcblx0XHR0aGlzLiNjbGlwYm9hcmQuY29weSh0aGlzLnJlcGhyYXNlZFRleHQoKSk7XHJcblx0XHR0aGlzLiNhbGVydHMuc3VjY2VzcygnVExEX1RSQU5TTEFURS5SRVBIUkFTRS5DT1BJRUQnKTtcclxuXHRcdHRoaXMuY29weVBsYXVzaWJsZSgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXRTZWxlY3RlZFdyaXRpbmdTdHlsZShzdHlsZTogTExNV3JpdGluZ1N0eWxlKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlbGVjdGVkUmVwaHJhc2luZ1N0eWxlLnNldChzdHlsZSk7XHJcblxyXG5cdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5yZXBocmFzZVN0eWxlTG9jYWxTdG9yYWdlS2V5LCBzdHlsZSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlcGhyYXNlUGxhdXNpYmxlKCk6IHZvaWQge1xyXG5cdFx0UGxhdXNpYmxlSGVscGVyLmN1c3RvbUV2ZW50KExMTUFjdGlvbnMuUkVQSFJBU0UudG9Mb3dlckNhc2UoKSwgeyB3cml0aW5nU3R5bGU6IHRoaXMuc2VsZWN0ZWRSZXBocmFzaW5nU3R5bGUoKSB9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY29weVBsYXVzaWJsZSgpOiB2b2lkIHtcclxuXHRcdFBsYXVzaWJsZUhlbHBlci5jdXN0b21FdmVudChMTE1BY3Rpb25zLlJFUEhSQVNFLnRvTG93ZXJDYXNlKCksIHsgYWN0aW9uOiAnY29weScgfSk7XHJcblx0fVxyXG59XHJcbiIsIjxsaWItb3Blbi1jbG9zZS1idXR0b25cclxuXHRbbmdDbGFzcy5sdC1zbV09XCInbW9iaWxlJ1wiXHJcblx0Y2xhc3M9XCJyZXBocmFzZS1tZW51LWJ0blwiXHJcblx0I3N0YXRlPVwibWF0TWVudVRyaWdnZXJcIlxyXG5cdFttYXRNZW51VHJpZ2dlckZvcl09XCJyZXBocmFzZVN0eWxlc01lbnVcIlxyXG5cdFtpc09wZW5lZF09XCJzdGF0ZS5tZW51T3BlblwiXHJcblx0W2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4+XHJcblx0PHNwYW4gY2xhc3M9XCJyZXBocmFzZS10aXRsZVwiPnt7IFwiVExEX1RSQU5TTEFURS5SRVBIUkFTRS5USVRMRVwiIHwgdHJhbnNsYXRlIH19ICh7eyBzZWxlY3RlZFJlcGhyYXNpbmdTdHlsZSgpID8/IFwiVExEX1RSQU5TTEFURS5SRVBIUkFTRS5DSE9PU0VfTEFCRUxcIiB8IHRyYW5zbGF0ZSB9fSk8L3NwYW4+XHJcbjwvbGliLW9wZW4tY2xvc2UtYnV0dG9uPlxyXG5cclxuPG1hdC1tZW51ICNyZXBocmFzZVN0eWxlc01lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJyZXBocmFzZS1tZW51XCI+XHJcblx0QGZvciAoc3R5bGUgb2YgcmVwaHJhc2VTdHlsZXM7IHRyYWNrIHN0eWxlKSB7XHJcblx0PGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZXBocmFzZShzdHlsZSlcIj5cclxuXHRcdHt7IFwiVExEX1RSQU5TTEFURS5SRVBIUkFTRS5TVFlMRVMuXCIgKyAoc3R5bGUgfCB1cHBlcmNhc2UpIHwgdHJhbnNsYXRlIH19XHJcblx0PC9idXR0b24+XHJcblx0fVxyXG48L21hdC1tZW51PlxyXG5cclxuQGlmIChpc0xvYWRpbmcoKSkge1xyXG48cCBjbGFzcz1cInJlcGhyYXNpbmdcIj57eyBcIlRMRF9UUkFOU0xBVEUuUkVQSFJBU0UuTE9BRElOR1wiIHwgdHJhbnNsYXRlIH19PHNwYW4gY2xhc3M9XCJkb3QtbG9hZGluZ1wiPi4uLjwvc3Bhbj48L3A+XHJcbn0gQGlmKCFzZWxlY3RlZFJlcGhyYXNpbmdTdHlsZSgpKSB7XHJcbjxwIGNsYXNzPVwicmVwaHJhc2UtaGludFwiPnt7IFwiVExEX1RSQU5TTEFURS5SRVBIUkFTRS5ISU5UXCIgfCB0cmFuc2xhdGUgfX08L3A+XHJcbn1cclxuXHJcbjxwIFtpbm5lckhUTUxdPVwibWFya2VkUmVwaHJhc2VkVGV4dCgpXCI+PC9wPlxyXG5cclxuQGlmIChyZXBocmFzZWRUZXh0KCkpIHtcclxuPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW25nQ2xhc3MubHQtc21dPVwiJ3JlcGhyYXNlLW1vYmlsZSdcIiBjbGFzcz1cInJlcGhyYXNlLWNvcHktYnRuXCIgKGNsaWNrKT1cImNvcHlSZXBocmFzZVRleHQoKVwiIFttYXRUb29sdGlwXT1cIidUT09MVElQUy5DT1BZJyB8IHRyYW5zbGF0ZVwiPlxyXG5cdDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuQ09QWScgfCB0cmFuc2xhdGVcIj4gY29udGVudF9jb3B5IDwvc3Bhbj5cclxuPC9idXR0b24+XHJcbn1cclxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwaHJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRleHQvY29tcG9uZW50cy9yZXBocmFzZS9yZXBocmFzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC9jb21wb25lbnRzL3JlcGhyYXNlL3JlcGhyYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8s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LElBQUksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3hCLGVBQWUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVPLGFBQWE7UUFDcEIsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzt3R0F6RVcsaUJBQWlCOzRGQUFqQixpQkFBaUIsMmNDOUI5Qiw4NUNBZ0NBLG9lRGRFLFlBQVksMkZBQ1osYUFBYSw2dkJBQ2IscUJBQXFCLGdOQUNyQixlQUFlLDJGQUNmLGVBQWUsMklBQ2YsYUFBYSw4QkFDYixnQkFBZ0IsNFRBQ2hCLGdCQUFnQjs7NEZBS0wsaUJBQWlCO2tCQWhCN0IsU0FBUzsrQkFDQyxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3FCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgTExNQWN0aW9ucywgT3BlbkNsb3NlQnV0dG9uTW9kdWxlLCBQbGF1c2libGVIZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBMTE1SZXBocmFzZVVzZUNhc2UsIExMTVNlcnZpY2UsIExMTVdyaXRpbmdTdHlsZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXNlcnZpY2VzJztcclxuaW1wb3J0IHsgbWFya2VkIH0gZnJvbSAnbWFya2VkJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAndGxkLXJlcGhyYXNlJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdE1hdE1lbnVNb2R1bGUsXHJcblx0XHRPcGVuQ2xvc2VCdXR0b25Nb2R1bGUsXHJcblx0XHRUcmFuc2xhdGVNb2R1bGUsXHJcblx0XHRNYXRCdXR0b25Nb2R1bGUsXHJcblx0XHRNYXRJY29uTW9kdWxlLFxyXG5cdFx0TWF0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEZsZXhMYXlvdXRNb2R1bGUsXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcmVwaHJhc2UuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9yZXBocmFzZS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBocmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0dGV4dCA9IGlucHV0KCcnKTtcclxuXHRsYW5ndWFnZSA9IGlucHV0KCcnKTtcclxuXHRkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcclxuXHJcblx0aXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcblx0cmVhZG9ubHkgI2xsbSA9IGluamVjdChMTE1TZXJ2aWNlKTtcclxuXHRyZWFkb25seSAjY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZCk7XHJcblx0cmVhZG9ubHkgI2FsZXJ0cyA9IGluamVjdChBbGVydFNlcnZpY2UpO1xyXG5cclxuXHRyZWFkb25seSByZXBocmFzZVN0eWxlTG9jYWxTdG9yYWdlS2V5ID0gJ1JFUEhSQVNFX1NUWUxFJztcclxuXHJcblx0cmVwaHJhc2VTdHlsZXM6IExMTVdyaXRpbmdTdHlsZVtdID0gT2JqZWN0LnZhbHVlcyhMTE1Xcml0aW5nU3R5bGUpO1xyXG5cdHNlbGVjdGVkUmVwaHJhc2luZ1N0eWxlID0gc2lnbmFsPExMTVdyaXRpbmdTdHlsZSB8IG51bGw+KG51bGwpO1xyXG5cclxuXHRyZXBocmFzZWRUZXh0ID0gc2lnbmFsKCcnKTtcclxuXHRtYXJrZWRSZXBocmFzZWRUZXh0ID0gY29tcHV0ZWQoKCkgPT4gbWFya2VkLnBhcnNlKHRoaXMucmVwaHJhc2VkVGV4dCgpKSk7XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZWxlY3RlZFJlcGhyYXNpbmdTdHlsZS5zZXQoKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMucmVwaHJhc2VTdHlsZUxvY2FsU3RvcmFnZUtleSkgYXMgTExNV3JpdGluZ1N0eWxlKSA/PyBudWxsKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZFJlcGhyYXNpbmdTdHlsZSgpKSB7XHJcblx0XHRcdHRoaXMucmVwaHJhc2UodGhpcy5zZWxlY3RlZFJlcGhyYXNpbmdTdHlsZSgpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJlcGhyYXNlKHN0eWxlOiBMTE1Xcml0aW5nU3R5bGUpOiB2b2lkIHtcclxuXHRcdHRoaXMucmVwaHJhc2VkVGV4dC5zZXQoJycpO1xyXG5cclxuXHRcdHRoaXMuc2V0U2VsZWN0ZWRXcml0aW5nU3R5bGUoc3R5bGUpO1xyXG5cclxuXHRcdHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuXHJcblx0XHR0aGlzLnJlcGhyYXNlUGxhdXNpYmxlKCk7XHJcblxyXG5cdFx0dGhpcy4jbGxtXHJcblx0XHRcdC5yZXBocmFzZSh7XHJcblx0XHRcdFx0dXNlQ2FzZTogTExNUmVwaHJhc2VVc2VDYXNlLkdlbmVyYWwsXHJcblx0XHRcdFx0bGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2UoKSxcclxuXHRcdFx0XHRzdHlsZTogdGhpcy5zZWxlY3RlZFJlcGhyYXNpbmdTdHlsZSgpLFxyXG5cdFx0XHRcdHRleHQ6IHRoaXMudGV4dCgpLFxyXG5cdFx0XHR9KVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHRleHQpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMucmVwaHJhc2VkVGV4dC5zZXQodGV4dCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRjb3B5UmVwaHJhc2VUZXh0KCkge1xyXG5cdFx0dGhpcy4jY2xpcGJvYXJkLmNvcHkodGhpcy5yZXBocmFzZWRUZXh0KCkpO1xyXG5cdFx0dGhpcy4jYWxlcnRzLnN1Y2Nlc3MoJ1RMRF9UUkFOU0xBVEUuUkVQSFJBU0UuQ09QSUVEJyk7XHJcblx0XHR0aGlzLmNvcHlQbGF1c2libGUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0U2VsZWN0ZWRXcml0aW5nU3R5bGUoc3R5bGU6IExMTVdyaXRpbmdTdHlsZSk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZWxlY3RlZFJlcGhyYXNpbmdTdHlsZS5zZXQoc3R5bGUpO1xyXG5cclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMucmVwaHJhc2VTdHlsZUxvY2FsU3RvcmFnZUtleSwgc3R5bGUpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZXBocmFzZVBsYXVzaWJsZSgpOiB2b2lkIHtcclxuXHRcdFBsYXVzaWJsZUhlbHBlci5jdXN0b21FdmVudChMTE1BY3Rpb25zLlJFUEhSQVNFLnRvTG93ZXJDYXNlKCksIHsgd3JpdGluZ1N0eWxlOiB0aGlzLnNlbGVjdGVkUmVwaHJhc2luZ1N0eWxlKCkgfSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvcHlQbGF1c2libGUoKTogdm9pZCB7XHJcblx0XHRQbGF1c2libGVIZWxwZXIuY3VzdG9tRXZlbnQoTExNQWN0aW9ucy5SRVBIUkFTRS50b0xvd2VyQ2FzZSgpLCB7IGFjdGlvbjogJ2NvcHknIH0pO1xyXG5cdH1cclxufVxyXG4iLCI8bGliLW9wZW4tY2xvc2UtYnV0dG9uXHJcblx0W25nQ2xhc3MubHQtc21dPVwiJ21vYmlsZSdcIlxyXG5cdGNsYXNzPVwicmVwaHJhc2UtbWVudS1idG5cIlxyXG5cdCNzdGF0ZT1cIm1hdE1lbnVUcmlnZ2VyXCJcclxuXHRbbWF0TWVudVRyaWdnZXJGb3JdPVwicmVwaHJhc2VTdHlsZXNNZW51XCJcclxuXHRbaXNPcGVuZWRdPVwic3RhdGUubWVudU9wZW5cIlxyXG5cdFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuPlxyXG5cdDxzcGFuIGNsYXNzPVwicmVwaHJhc2UtdGl0bGVcIj57eyBcIlRMRF9UUkFOU0xBVEUuUkVQSFJBU0UuVElUTEVcIiB8IHRyYW5zbGF0ZSB9fSAoe3sgc2VsZWN0ZWRSZXBocmFzaW5nU3R5bGUoKSA/PyBcIlRMRF9UUkFOU0xBVEUuUkVQSFJBU0UuQ0hPT1NFX0xBQkVMXCIgfCB0cmFuc2xhdGUgfX0pPC9zcGFuPlxyXG48L2xpYi1vcGVuLWNsb3NlLWJ1dHRvbj5cclxuXHJcbjxtYXQtbWVudSAjcmVwaHJhc2VTdHlsZXNNZW51PVwibWF0TWVudVwiIGNsYXNzPVwicmVwaHJhc2UtbWVudVwiPlxyXG5cdEBmb3IgKHN0eWxlIG9mIHJlcGhyYXNlU3R5bGVzOyB0cmFjayBzdHlsZSkge1xyXG5cdDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVwaHJhc2Uoc3R5bGUpXCI+XHJcblx0XHR7eyBcIlRMRF9UUkFOU0xBVEUuUkVQSFJBU0UuU1RZTEVTLlwiICsgKHN0eWxlIHwgdXBwZXJjYXNlKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdDwvYnV0dG9uPlxyXG5cdH1cclxuPC9tYXQtbWVudT5cclxuXHJcbkBpZiAoaXNMb2FkaW5nKCkpIHtcclxuPHAgY2xhc3M9XCJyZXBocmFzaW5nXCI+e3sgXCJUTERfVFJBTlNMQVRFLlJFUEhSQVNFLkxPQURJTkdcIiB8IHRyYW5zbGF0ZSB9fTxzcGFuIGNsYXNzPVwiZG90LWxvYWRpbmdcIj4uLi48L3NwYW4+PC9wPlxyXG59IEBpZighc2VsZWN0ZWRSZXBocmFzaW5nU3R5bGUoKSkge1xyXG48cCBjbGFzcz1cInJlcGhyYXNlLWhpbnRcIj57eyBcIlRMRF9UUkFOU0xBVEUuUkVQSFJBU0UuSElOVFwiIHwgdHJhbnNsYXRlIH19PC9wPlxyXG59XHJcblxyXG48cCBbaW5uZXJIVE1MXT1cIm1hcmtlZFJlcGhyYXNlZFRleHQoKVwiPjwvcD5cclxuXHJcbkBpZiAocmVwaHJhc2VkVGV4dCgpKSB7XHJcbjxidXR0b24gbWF0LWljb24tYnV0dG9uIFtuZ0NsYXNzLmx0LXNtXT1cIidyZXBocmFzZS1tb2JpbGUnXCIgY2xhc3M9XCJyZXBocmFzZS1jb3B5LWJ0blwiIChjbGljayk9XCJjb3B5UmVwaHJhc2VUZXh0KClcIiBbbWF0VG9vbHRpcF09XCInVE9PTFRJUFMuQ09QWScgfCB0cmFuc2xhdGVcIj5cclxuXHQ8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FSSUFfTEFCRUxTLkNPUFknIHwgdHJhbnNsYXRlXCI+IGNvbnRlbnRfY29weSA8L3NwYW4+XHJcbjwvYnV0dG9uPlxyXG59XHJcbiJdfQ==