@ohioepa/oepa-ui-lib 1.4.9 → 1.4.11

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.
@@ -43,7 +43,7 @@ export class OepaUserAccountService {
43
43
  * @param userid
44
44
  */
45
45
  retrieveAccountForUser(userid, app) {
46
- return this.http.get(this.hostUrl + this.accountsUrl + '/' + userid, { params: { 'app': app } });
46
+ return this.http.get(this.hostUrl + this.accountsUrl + '/account', { params: { 'userid': userid, 'app': app } });
47
47
  }
48
48
  retrieveAccountByOHID(ohid, app) {
49
49
  const url = this.hostUrl + this.accountsUrl + '/ohid/' + ohid;
@@ -346,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
346
346
  type: Inject,
347
347
  args: ['app']
348
348
  }] }] });
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNMUI7O0dBRUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBcUJiO0lBQ2E7SUFDUjtJQXRCakIsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsQixXQUFXLEdBQUcsdUJBQXVCLENBQUM7SUFDdEMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQ3JDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztJQUNuQyxPQUFPLENBQW1CO0lBQzFCLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUN2QixjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDekIsUUFBUSxHQUFVLENBQUMsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7SUFDbEUsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDcEMsU0FBUyxDQUFNO0lBQ2hCLFlBQVksR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7SUFDeEUsVUFBVSxHQUFvQixJ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LENBQUMsQ0FBQztJQUM1RSxDQUFDO3dHQXpWUSxzQkFBc0IsNENBc0J2QixhQUFhLGFBQ2IsS0FBSzs0R0F2Qkosc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXVCSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPZXBhVXNlckFjY291bnQsIFByb2dyYW1Qcml2aWxlZ2UsIFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBEZWxlZ2F0aW9uLCBPRVBBUm9sZSwgT2VwYVByaXZpbGVnZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5pbXBvcnQgeyBTdHJpbmdSZXNwb25zZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtZWJpei1saWInO1xuXG4vKipcbiAqIE9lcGFVc2VyQWNjb3VudFNlcnZpY2UgLSBBIGNvbGxlY3Rpb24gb2YgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGFuZCBtYW5pcHVsYXRpbmcgdXNlciBhY2NvdW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT2VwYVVzZXJBY2NvdW50U2VydmljZSB7XG4gIHByaXZhdGUgaG9zdFVybCA9ICcvZWJpeic7XG4gIHByaXZhdGUgYWNjb3VudHNVcmwgPSAnL2FwaS92MS91c2VyLWFjY291bnRzJztcbiAgcHJpdmF0ZSBlYml6QWNjb3VudHNVcmwgPSAnL2FwaS92Mi9hY2NvdW50cyc7XG4gIHByaXZhdGUgZWJpelNlc3Npb25VcmwgPSAnL2FwaS92Mi9zZXNzaW9uJztcbiAgcHJpdmF0ZSBhY2NvdW50ITogT2VwYVVzZXJBY2NvdW50O1xuICBwcml2YXRlIHBlcnNvbklEOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBzZXNzaW9uSUQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHdlYmFwcHNSb290VVJMOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBlYml6VmVyc2lvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgbG9nb3V0UGF0aDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgaWRsZVRpbWVyUnVubmluZyA9IGZhbHNlO1xuICBwcml2YXRlIGlkbGVUaW1lOm51bWJlciA9IDA7XG4gIHByaXZhdGUgaWRsZVRocmVzaG9sZCA9ICgyOSo2MCk7IC8vIDI5IG1pbnV0ZSB0aW1lb3V0IHRocmVzaG9sZCBieSBkZWZhdWx0XG4gIHByaXZhdGUgaWRsZVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgdGltZW91dElEOiBhbnk7XG4gIHB1YmxpYyB1c2VyQWNjb3VudCQ6IFN1YmplY3Q8T2VwYVVzZXJBY2NvdW50PiA9IG5ldyBTdWJqZWN0PE9lcGFVc2VyQWNjb3VudD4oKTtcbiAgcHVibGljIHNlc3Npb25JRCQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTsgLy8gc2Vzc2lvbiBJRCBpcyB1c2VkIGZvciBcImJhY2tkb29yXCIgcHJvY2Vzc2luZyBvZiBpbnRlcm5hbCAod2ViYXBwcykgYWNjb3VudHNcbiAgcHJpdmF0ZSBhdXRoVG9rZW46IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHBhcmFtczogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBcbiAgICBASW5qZWN0KCdlYml6Um9vdFVSTCcpIHByaXZhdGUgZWJpelJvb3RVUkw6IHN0cmluZyxcbiAgICBASW5qZWN0KCdhcHAnKSBwcml2YXRlIGFwcDogc3RyaW5nKSB7XG4gICAgdGhpcy5ob3N0VXJsID0gdGhpcy5lYml6Um9vdFVSTCArIHRoaXMuaG9zdFVybDtcbiAgICB0aGlzLmxvZ291dFBhdGggPSB0aGlzLmViaXpSb290VVJMICsgJy9qc3AvbG9nb3V0LmpzcCc7XG4gICAgdGhpcy5wYXJhbXMgPSB7ICdhcHAnOiB0aGlzLmFwcCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBVc2VyIEFjY291bnQgZm9yIHRoZSB1c2VyIHVzZXJpZC5cbiAgICogQHBhcmFtIHVzZXJpZFxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEZvclVzZXIodXNlcmlkOiBzdHJpbmcsIGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuYWNjb3VudHNVcmwgKyAnLycgKyB1c2VyaWQsIHsgcGFyYW1zOiB7ICdhcHAnOiBhcHAgfSB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRCeU9ISUQob2hpZDogc3RyaW5nLCBhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgdGhpcy5hY2NvdW50c1VybCArICcvb2hpZC8nICsgb2hpZCA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih1cmwsIHsgcGFyYW1zOiB7ICdhcHAnOiBhcHAgfSB9KS5waXBlKFxuICAgICAgbWFwKCh1c2VyQWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICAgIHRoaXMudXNlckFjY291bnQkLm5leHQodXNlckFjY291bnQpO1xuICAgICAgICByZXR1cm4gdXNlckFjY291bnQ7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHVzZXIgYWNjb3VudCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+XG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIoYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvdXNlckFjY291bnRzL2xvZ2luJykucGlwZShtYXAoKGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCkgPT4ge1xuICAgICAgaWYgKCFhY2NvdW50KSB7XG4gICAgICAgIGlmICh0aGlzLnBlcnNvbklEICYmIHRoaXMuc2Vzc2lvbklEKSB7XG4gICAgICAgICAgdGhpcy5yZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb24odGhpcy5wZXJzb25JRCwgdGhpcy5zZXNzaW9uSUQsIGFwcCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGludGVybmFsQWNjb3VudCA9PiB7XG4gICAgICAgICAgICBpZiAoaW50ZXJuYWxBY2NvdW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuYWNjb3VudCA9IGludGVybmFsQWNjb3VudFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgICB9fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0IHRvIGxvZ291dCBzY3JlZW4gaWYgdXNlciBpcyBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyByZWRpcmVjdFRvTG9nb3V0KG1zZyA/OiBzdHJpbmcpIHtcbiAgICBsZXQgbG9nb3V0VXJsID0gdGhpcy5sb2dvdXRQYXRoO1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICBsb2dvdXRVcmwgPSB0aGlzLndlYmFwcHNSb290VVJMICsgKHRoaXMubG9nb3V0UGF0aCB8fCAnJyk7XG4gICAgfVxuICAgIGFsZXJ0KG1zZyB8fCAnQ29ubmVjdGlvbiBsb3N0LiBZb3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBsb2dpbiBwYWdlLicpO1xuICAgIGNvbnNvbGUubG9nKCdyZWRpcmVjdGluZyB0byBsb2dvdXRVcmw6JyArIGxvZ291dFVybCk7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dvdXRVcmw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHVzZXIgYWNjb3VudCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICogQHBhcmFtIHNlc3Npb25JRCBwZXJzb24gSUQgZm9yIGludGVybmFsIHVzZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+XG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uKHBlcnNvbklEOiBzdHJpbmcsIHNlc3Npb25JRDogc3RyaW5nLCBhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgdGhpcy5hY2NvdW50ID0ge307XG4gICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgdGhpcy5hY2NvdW50c1VybCArICcvaW50ZXJuYWwvcGVyc29uSUQvJyArIHBlcnNvbklEICsgJy9zZXNzaW9uSUQvJyArIHNlc3Npb25JRDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhVXNlckFjY291bnQ+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUobWFwKChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpID0+IHtcbiAgICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XG4gICAgICB0aGlzLnBlcnNvbklEID0gcGVyc29uSUQ7XG4gICAgICB0aGlzLnNlc3Npb25JRCA9IHNlc3Npb25JRDtcbiAgICAgIHRoaXMuc2Vzc2lvbklEJC5uZXh0KHNlc3Npb25JRCk7XG4gICAgICByZXR1cm4gYWNjb3VudDtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYWNjb3VudCBoYXMgdGhlIHJvbGUgcm9sZU5hbWUuXG4gICAqIEBwYXJhbSBhY2NvdW50XG4gICAqIEBwYXJhbSByb2xlTmFtZVxuICAgKi9cbiAgcHVibGljIGFjY291bnRIYXNSb2xlKGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCwgcm9sZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNSb2xlID0gZmFsc2U7XG4gICAgY29uc3Qgcm9sZUxpc3QgPSB0aGlzLmdldFJvbGVMaXN0KGFjY291bnQpO1xuICAgIGlmIChyb2xlTGlzdCAmJiByb2xlTGlzdC5sZW5ndGgpIHtcbiAgICAgIGhhc1JvbGUgPSAocm9sZUxpc3QuaW5kZXhPZihyb2xlTmFtZSkgPiAtMSk7XG4gICAgfVxuICAgIHJldHVybiBoYXNSb2xlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb2xlTGlzdChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCByb2xlTGlzdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGlmIChhY2NvdW50LnJvbGVMaXN0ICYmIGFjY291bnQucm9sZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgYWNjb3VudC5yb2xlTGlzdC5mb3JFYWNoKChyb2xlOiBPRVBBUm9sZSkgPT4ge1xuICAgICAgICByb2xlTGlzdC5wdXNoKHJvbGUubmFtZSB8fCAnJyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvbGVMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGFjY291bnQgaGFzIHRoZSBwcml2aWxlZ2UgcHJpdmlsZWdlVHlwZS5cbiAgICogQHBhcmFtIGFjY291bnRcbiAgICogQHBhcmFtIHByaXZpbGVnZVR5cGVcbiAgICovXG4gIHB1YmxpYyBhY2NvdW50SGFzUHJpdmlsZWdlKGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCwgcHJpdmlsZWdlVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGhhc1ByaXZpbGVnZSA9IGZhbHNlO1xuICAgIGNvbnN0IHByaXZpbGVnZUxpc3QgPSB0aGlzLmdldFByaXZpbGVnZUxpc3QoYWNjb3VudCk7XG4gICAgaWYgKHByaXZpbGVnZUxpc3QgJiYgcHJpdmlsZWdlTGlzdC5sZW5ndGgpIHtcbiAgICAgIGhhc1ByaXZpbGVnZSA9IChwcml2aWxlZ2VMaXN0LmluZGV4T2YocHJpdmlsZWdlVHlwZSkgPiAtMSk7XG4gICAgfVxuICAgIHJldHVybiBoYXNQcml2aWxlZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpdmlsZWdlTGlzdChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcml2aWxlZ2VMaXN0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgaWYgKGFjY291bnQucm9sZUxpc3QgJiYgYWNjb3VudC5yb2xlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBhY2NvdW50LnJvbGVMaXN0LmZvckVhY2goKHJvbGU6IE9FUEFSb2xlKSA9PiB7XG4gICAgICAgIGlmIChyb2xlLnByaXZpbGVnZUxpc3QgJiYgcm9sZS5wcml2aWxlZ2VMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByb2xlLnByaXZpbGVnZUxpc3QuZm9yRWFjaCgocHJpdmlsZWdlOiBPZXBhUHJpdmlsZWdlKSA9PiB7XG4gICAgICAgICAgICBwcml2aWxlZ2VMaXN0LnB1c2gocHJpdmlsZWdlLnR5cGUgfHwgJycpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHByaXZpbGVnZUxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHVzZXJBY2NvdW50IG9mIHRoZSBjdXJyZW50IHVzZXIuIFRoZSByZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlciBtZXRob2RcbiAgICogbXVzdCBiZSBpbnZva2VkIHByaW9yIHRvIGludm9raW5nIHRoaXMgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIGdldEN1cnJlbnRVc2VyQWNjb3VudCgpOiBPZXBhVXNlckFjY291bnQge1xuICAgIHJldHVybiB0aGlzLmFjY291bnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Q3VycmVudFVzZXJBY2NvdW50KGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCkge1xuICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XG4gICAgdGhpcy51c2VyQWNjb3VudCQubmV4dCh0aGlzLmFjY291bnQpO1xuICB9XG5cbiAgcHVibGljIGdldEF1dGhUb2tlbigpIDogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoVG9rZW47XG4gIH1cblxuICBwdWJsaWMgc2V0QXV0aFRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmF1dGhUb2tlbiA9IHRva2VuO1xuICB9XG4gXG4gIC8qKlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICogRUJJWiBNRVRIT0RTOlxuICAgKiBUaGUgbWV0aG9kcyBiZWxvdyBjdXJyZW50bHkgYXBwbHkgb25seSB0byBlQml6LlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICovXG5cbiAgcHVibGljIGdldFdlYmFwcHNSb290VVJMKGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy53ZWJhcHBzUm9vdFVSTCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMud2ViYXBwc1Jvb3RVUkwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS9nYXRld2F5L2dhdGV3YXlDb25maWcnO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwsIHsgcGFyYW1zOiB7ICdhcHAnOiBhcHAgfSB9KS5waXBlKG1hcCgoZ2F0ZXdheUNvbmZpZzphbnkpID0+IHtcbiAgICAgICAgaWYgKGdhdGV3YXlDb25maWcpIHtcbiAgICAgICAgICB0aGlzLndlYmFwcHNSb290VVJMID0gZ2F0ZXdheUNvbmZpZy53ZWJhcHBzUm9vdFVSTDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy53ZWJhcHBzUm9vdFVSTDtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgfVxuXG4gIHB1YmxpYyBnZXRFQml6VmVyc2lvbihhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuZWJpelZlcnNpb24pIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmViaXpWZXJzaW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvZ2F0ZXdheS92ZXJzaW9uJztcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFN0cmluZ1Jlc3BvbnNlPih1cmwsIHsgcGFyYW1zOiB7ICdhcHAnOiBhcHAgfSB9KS5waXBlKG1hcCgodmVyc2lvbjogU3RyaW5nUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHZlcnNpb24gJiYgdmVyc2lvbi5yZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuZWJpelZlcnNpb24gPSB2ZXJzaW9uLnJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZWJpelZlcnNpb24gPSAndW5rbm93bic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWJpelZlcnNpb247XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhcnJheSBvZiBQcm9ncmFtUHJpdmlsZWdlcyBtYXRjaGluZyBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdC5cbiAgICogQHBhcmFtIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8QXJyYXk8UHJvZ3JhbVByaXZpbGVnZT4+XG4gICAqL1xuICBwdWJsaWMgc2VhcmNoUHJpdmlsZWdlcyhwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdDogUHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QsIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8UHJvZ3JhbVByaXZpbGVnZT4+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpBY2NvdW50c1VybCArICcvcHJvZ3JhbVByaXZpbGVnZXMvc2VhcmNoJyArIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj4odXJsLCBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgeyBwYXJhbXM6IHRoaXMucGFyYW1zIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBQcm9ncmFtUHJpdmlsZWdlIGJhc2VkIG9uIGNvbnRlbnRzIG9mIFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcm9ncmFtUHJpdmlsZWdlP1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZVByb2dyYW1Qcml2aWxlZ2UocHJvZ3JhbVByaXZpbGVnZVJlcXVlc3Q6IFByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2dyYW1Qcml2aWxlZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UHJvZ3JhbVByaXZpbGVnZT4odGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzJysgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksIFxuICAgIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCB7IHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHRoZSBQcm9ncmFtUHJpdmlsZWdlIGlkZW50aWZpZWQgYnkgcHJvZ3JhbVByaXZpbGVnZUlELlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZUlEXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxldGVQcm9ncmFtUHJpdmlsZWdlKHByb2dyYW1Qcml2aWxlZ2VJRDogc3RyaW5nLCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy8nICsgcHJvZ3JhbVByaXZpbGVnZUlEICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksIFxuICAgIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcsIHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZWdhdGUgYSBwcm9ncmFtIHByaXZpbGVnZSBiYXNlZCBvbiBpbmZvcm1hdGlvbiBpbiBkZWxlZ2F0aW9uLlxuICAgKiBAcGFyYW0gZGVsZWdhdGlvblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHZvaWQ+XG4gICAqL1xuICBwdWJsaWMgZGVsZWdhdGVQcm9ncmFtUHJpdmlsZWdlKGRlbGVnYXRpb246IERlbGVnYXRpb24sIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9kZWxlZ2F0aW9uJyArIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpLFxuICAgIGRlbGVnYXRpb24sIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcsIHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gIH1cblxuIC8qKlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICogSGVscGVyIE1FVEhPRFM6XG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICAgLyoqXG4gICAgKiBTZXQgdGhlIHVzZXIgYWNjb3VudCB0byBiZSB1c2VkIGZvciBcImxpdmUgcmVsb2FkIG1vZGVcIlxuICAgICogQHBhcmFtIHVzZXJBY2NvdW50IFxuICAgICovXG4gICAgcHVibGljIHNldExpdmVSZWxvYWRVc2VyKHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICAgdGhpcy5hY2NvdW50ID0gdXNlckFjY291bnQ7XG4gICAgICBjb25zb2xlLmxvZygnc2V0TGl2ZVJlbG9hZFVzZXI6ICcgKyB0aGlzLmFjY291bnQ/LmxvZ2luTmFtZSB8fCAnPHVua25vd24+Jyk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpBY2NvdW50c1VybCArICcvbGl2ZVJlbG9hZCcsIHVzZXJBY2NvdW50LCB7IHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gICAgfVxuXG4gICAvKipcbiAgICAqIFN0b3JlcyB0aGUgZ2l2ZW4gdXNlciBpbiB0aGUgZUJpeiBzZXNzaW9uLlxuICAgICogQHBhcmFtIGFjY291bnRVc2VySUQgXG4gICAgKi9cbiAgIHB1YmxpYyBzdG9yZVVzZXJJblNlc3Npb24oYWNjb3VudFVzZXJJRDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICAgbGV0IGFjY3QgPSB7fSBhcyBPZXBhVXNlckFjY291bnQ7XG4gICAgIGFjY3QuYWNjb3VudElEID0gYWNjb3VudFVzZXJJRDtcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE9lcGFVc2VyQWNjb3VudD4odGhpcy5ob3N0VXJsICsgdGhpcy5lYml6U2Vzc2lvblVybCArICcvc3RvcmVVc2VyLycgKyBhY2NvdW50VXNlcklELCBudWxsICwgeyBwYXJhbXM6IHRoaXMucGFyYW1zIH0pO1xuICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VlIGlmIHRoZSBjdXJyZW50IHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gc2VlIFwiZGVtb1wiIGNhcGFiaWxpdGllc1xuICAgICAqL1xuICAgIHB1YmxpYyBkZW1vQ2FwYWJpbGl0aWVzQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICAgIGxldCBkZW1vQWxsb3dlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYWNjb3VudCAmJiB0aGlzLmFjY291bnQucm9sZUxpc3QpIHtcbiAgICAgICAgdGhpcy5hY2NvdW50LnJvbGVMaXN0LmZvckVhY2gocm9sZSA9PiB7XG4gICAgICAgICAgaWYgKHJvbGUubmFtZSA9PT0gJ0FsbG93RGVtbycpIHtcbiAgICAgICAgICAgIGRlbW9BbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlbW9BbGxvd2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydElkbGVUaW1lcih0aHJlc2hvbGQ/OiBudW1iZXIpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJRCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgfVxuICAgICAgdGhpcy5pZGxlVGhyZXNob2xkID0gdGhyZXNob2xkIHx8IHRoaXMuaWRsZVRocmVzaG9sZDtcbiAgICAgIGlmICghdGhpcy5pZGxlVGltZXJSdW5uaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdUaGUgaWRsZSB0aW1lb3V0IHN0YXJ0ZWQgd2l0aCB0aHJlc2hvbGQ6ICcgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNldElkbGVUaW1lKCkge1xuICAgICAgY29uc29sZS5sb2coJ2lkbGUgdGltZXIgcmVzZXQnKTtcbiAgICAgIHRoaXMuaWRsZVRpbWUgPSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUaW1lb3V0KCkge1xuICAgICAgdGhpcy50aW1lb3V0SUQgPSBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICB0aGlzLmlkbGVUaW1lICs9IDYwO1xuICAgICAgICBjb25zb2xlLmxvZygnaWRsZSB0aW1lID0gJyArIHRoaXMuaWRsZVRpbWUgKyBcIiwgdGhyZXNob2xkID0gXCIgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICBpZiAodGhpcy5pZGxlVGltZSA+PSB0aGlzLmlkbGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZmlyaW5nIG5leHQgaWRsZVN1YmplY3QuLi4nKTtcbiAgICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlkbGVTdWJqZWN0Lm5leHQodGhpcy5pZGxlVGltZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZW91dElEKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgICB9XG4gICAgICB9LCA2MDAwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkbGVUaW1lb3V0KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICByZXR1cm4gdGhpcy5pZGxlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBzdXBwb3J0IHRoaXMgZ29pbmcgZm9yd2FyZFxuICAgICAqIEBwYXJhbSBtZXNzYWdlXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHVibGljIGxvZ01lc3NhZ2VPblNlcnZlcihtZXNzYWdlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VSZXNwb25zZTogYW55ID0ge1xuICAgICAgICByZXNwb25zZTogbWVzc2FnZVxuICAgICAgfVxuICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgJy9hcGkvdjEvdXNlckFjY291bnRzL2xvZ3MvbWVzc2FnZSc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIG1lc3NhZ2VSZXNwb25zZSwgeyBwYXJhbXM6IHRoaXMucGFyYW1zIH0pO1xuICAgIH1cbn1cbiJdfQ==
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNMUI7O0dBRUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBcUJiO0lBQ2E7SUFDUjtJQXRCakIsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsQixXQUFXLEdBQUcsdUJBQXVCLENBQUM7SUFDdEMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQ3JDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztJQUNuQyxPQUFPLENBQW1CO0lBQzFCLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUN2QixjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDekIsUUFBUSxHQUFVLENBQUMsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7SUFDbEUsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDcEMsU0FBUyxDQUFNO0lBQ2hCLFlBQVksR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7SUFDeEUsVUFBVSxHQUFvQixJ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LE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQzt3R0F6VlEsc0JBQXNCLDRDQXNCdkIsYUFBYSxhQUNiLEtBQUs7NEdBdkJKLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF1QkksTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2VwYVVzZXJBY2NvdW50LCBQcm9ncmFtUHJpdmlsZWdlLCBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgRGVsZWdhdGlvbiwgT0VQQVJvbGUsIE9lcGFQcml2aWxlZ2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuaW1wb3J0IHsgU3RyaW5nUmVzcG9uc2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJztcblxuLyoqXG4gKiBPZXBhVXNlckFjY291bnRTZXJ2aWNlIC0gQSBjb2xsZWN0aW9uIG9mIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBhbmQgbWFuaXB1bGF0aW5nIHVzZXIgYWNjb3VudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9lcGFVc2VyQWNjb3VudFNlcnZpY2Uge1xuICBwcml2YXRlIGhvc3RVcmwgPSAnL2ViaXonO1xuICBwcml2YXRlIGFjY291bnRzVXJsID0gJy9hcGkvdjEvdXNlci1hY2NvdW50cyc7XG4gIHByaXZhdGUgZWJpekFjY291bnRzVXJsID0gJy9hcGkvdjIvYWNjb3VudHMnO1xuICBwcml2YXRlIGViaXpTZXNzaW9uVXJsID0gJy9hcGkvdjIvc2Vzc2lvbic7XG4gIHByaXZhdGUgYWNjb3VudCE6IE9lcGFVc2VyQWNjb3VudDtcbiAgcHJpdmF0ZSBwZXJzb25JRDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc2Vzc2lvbklEOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSB3ZWJhcHBzUm9vdFVSTDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgZWJpelZlcnNpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGxvZ291dFBhdGg6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGlkbGVUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpZGxlVGltZTpudW1iZXIgPSAwO1xuICBwcml2YXRlIGlkbGVUaHJlc2hvbGQgPSAoMjkqNjApOyAvLyAyOSBtaW51dGUgdGltZW91dCB0aHJlc2hvbGQgYnkgZGVmYXVsdFxuICBwcml2YXRlIGlkbGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIHRpbWVvdXRJRDogYW55O1xuICBwdWJsaWMgdXNlckFjY291bnQkOiBTdWJqZWN0PE9lcGFVc2VyQWNjb3VudD4gPSBuZXcgU3ViamVjdDxPZXBhVXNlckFjY291bnQ+KCk7XG4gIHB1YmxpYyBzZXNzaW9uSUQkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7IC8vIHNlc3Npb24gSUQgaXMgdXNlZCBmb3IgXCJiYWNrZG9vclwiIHByb2Nlc3Npbmcgb2YgaW50ZXJuYWwgKHdlYmFwcHMpIGFjY291bnRzXG4gIHByaXZhdGUgYXV0aFRva2VuOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBwYXJhbXM6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgXG4gICAgQEluamVjdCgnZWJpelJvb3RVUkwnKSBwcml2YXRlIGViaXpSb290VVJMOiBzdHJpbmcsXG4gICAgQEluamVjdCgnYXBwJykgcHJpdmF0ZSBhcHA6IHN0cmluZykge1xuICAgIHRoaXMuaG9zdFVybCA9IHRoaXMuZWJpelJvb3RVUkwgKyB0aGlzLmhvc3RVcmw7XG4gICAgdGhpcy5sb2dvdXRQYXRoID0gdGhpcy5lYml6Um9vdFVSTCArICcvanNwL2xvZ291dC5qc3AnO1xuICAgIHRoaXMucGFyYW1zID0geyAnYXBwJzogdGhpcy5hcHAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgVXNlciBBY2NvdW50IGZvciB0aGUgdXNlciB1c2VyaWQuXG4gICAqIEBwYXJhbSB1c2VyaWRcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JVc2VyKHVzZXJpZDogc3RyaW5nLCBhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9hY2NvdW50JywgeyBwYXJhbXM6IHsgJ3VzZXJpZCc6IHVzZXJpZCwgJ2FwcCc6IGFwcCB9IH0pO1xuICB9XG5cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEJ5T0hJRChvaGlkOiBzdHJpbmcsIGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9vaGlkLycgKyBvaGlkIDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhVXNlckFjY291bnQ+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUoXG4gICAgICBtYXAoKHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQpID0+IHtcbiAgICAgICAgdGhpcy51c2VyQWNjb3VudCQubmV4dCh1c2VyQWNjb3VudCk7XG4gICAgICAgIHJldHVybiB1c2VyQWNjb3VudDtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlciBhY2NvdW50IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlcihhcHA6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS91c2VyQWNjb3VudHMvbG9naW4nKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgaWYgKHRoaXMucGVyc29uSUQgJiYgdGhpcy5zZXNzaW9uSUQpIHtcbiAgICAgICAgICB0aGlzLnJldHJpZXZlQWNjb3VudEZvckludGVybmFsU2Vzc2lvbih0aGlzLnBlcnNvbklELCB0aGlzLnNlc3Npb25JRCwgYXBwKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaW50ZXJuYWxBY2NvdW50ID0+IHtcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbEFjY291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY2NvdW50ID0gaW50ZXJuYWxBY2NvdW50XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0xvZ291dCgpO1xuICAgICAgICAgIH19KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICAgICAgY29uc29sZS5sb2coJ3JldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyOiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuYWNjb3VudDtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVkaXJlY3QgdG8gbG9nb3V0IHNjcmVlbiBpZiB1c2VyIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgcHVibGljIHJlZGlyZWN0VG9Mb2dvdXQobXNnID86IHN0cmluZykge1xuICAgIGxldCBsb2dvdXRVcmwgPSB0aGlzLmxvZ291dFBhdGg7XG4gICAgaWYgKHRoaXMud2ViYXBwc1Jvb3RVUkwpIHtcbiAgICAgIGxvZ291dFVybCA9IHRoaXMud2ViYXBwc1Jvb3RVUkwgKyAodGhpcy5sb2dvdXRQYXRoIHx8ICcnKTtcbiAgICB9XG4gICAgYWxlcnQobXNnIHx8ICdDb25uZWN0aW9uIGxvc3QuIFlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGxvZ2luIHBhZ2UuJyk7XG4gICAgY29uc29sZS5sb2coJ3JlZGlyZWN0aW5nIHRvIGxvZ291dFVybDonICsgbG9nb3V0VXJsKTtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ291dFVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlciBhY2NvdW50IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgKiBAcGFyYW0gc2Vzc2lvbklEIHBlcnNvbiBJRCBmb3IgaW50ZXJuYWwgdXNlclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb24ocGVyc29uSUQ6IHN0cmluZywgc2Vzc2lvbklEOiBzdHJpbmcsIGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICB0aGlzLmFjY291bnQgPSB7fTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9pbnRlcm5hbC9wZXJzb25JRC8nICsgcGVyc29uSUQgKyAnL3Nlc3Npb25JRC8nICsgc2Vzc2lvbklEO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsLCB7IHBhcmFtczogeyAnYXBwJzogYXBwIH0gfSkucGlwZShtYXAoKGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCkgPT4ge1xuICAgICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICAgIHRoaXMucGVyc29uSUQgPSBwZXJzb25JRDtcbiAgICAgIHRoaXMuc2Vzc2lvbklEID0gc2Vzc2lvbklEO1xuICAgICAgdGhpcy5zZXNzaW9uSUQkLm5leHQoc2Vzc2lvbklEKTtcbiAgICAgIHJldHVybiBhY2NvdW50O1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhY2NvdW50IGhhcyB0aGUgcm9sZSByb2xlTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnRcbiAgICogQHBhcmFtIHJvbGVOYW1lXG4gICAqL1xuICBwdWJsaWMgYWNjb3VudEhhc1JvbGUoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50LCByb2xlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGhhc1JvbGUgPSBmYWxzZTtcbiAgICBjb25zdCByb2xlTGlzdCA9IHRoaXMuZ2V0Um9sZUxpc3QoYWNjb3VudCk7XG4gICAgaWYgKHJvbGVMaXN0ICYmIHJvbGVMaXN0Lmxlbmd0aCkge1xuICAgICAgaGFzUm9sZSA9IChyb2xlTGlzdC5pbmRleE9mKHJvbGVOYW1lKSA+IC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1JvbGU7XG4gIH1cblxuICBwcml2YXRlIGdldFJvbGVMaXN0KGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHJvbGVMaXN0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgaWYgKGFjY291bnQucm9sZUxpc3QgJiYgYWNjb3VudC5yb2xlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBhY2NvdW50LnJvbGVMaXN0LmZvckVhY2goKHJvbGU6IE9FUEFSb2xlKSA9PiB7XG4gICAgICAgIHJvbGVMaXN0LnB1c2gocm9sZS5uYW1lIHx8ICcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm9sZUxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYWNjb3VudCBoYXMgdGhlIHByaXZpbGVnZSBwcml2aWxlZ2VUeXBlLlxuICAgKiBAcGFyYW0gYWNjb3VudFxuICAgKiBAcGFyYW0gcHJpdmlsZWdlVHlwZVxuICAgKi9cbiAgcHVibGljIGFjY291bnRIYXNQcml2aWxlZ2UoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50LCBwcml2aWxlZ2VUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUHJpdmlsZWdlID0gZmFsc2U7XG4gICAgY29uc3QgcHJpdmlsZWdlTGlzdCA9IHRoaXMuZ2V0UHJpdmlsZWdlTGlzdChhY2NvdW50KTtcbiAgICBpZiAocHJpdmlsZWdlTGlzdCAmJiBwcml2aWxlZ2VMaXN0Lmxlbmd0aCkge1xuICAgICAgaGFzUHJpdmlsZWdlID0gKHByaXZpbGVnZUxpc3QuaW5kZXhPZihwcml2aWxlZ2VUeXBlKSA+IC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1ByaXZpbGVnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcml2aWxlZ2VMaXN0KGFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHByaXZpbGVnZUxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBpZiAoYWNjb3VudC5yb2xlTGlzdCAmJiBhY2NvdW50LnJvbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFjY291bnQucm9sZUxpc3QuZm9yRWFjaCgocm9sZTogT0VQQVJvbGUpID0+IHtcbiAgICAgICAgaWYgKHJvbGUucHJpdmlsZWdlTGlzdCAmJiByb2xlLnByaXZpbGVnZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJvbGUucHJpdmlsZWdlTGlzdC5mb3JFYWNoKChwcml2aWxlZ2U6IE9lcGFQcml2aWxlZ2UpID0+IHtcbiAgICAgICAgICAgIHByaXZpbGVnZUxpc3QucHVzaChwcml2aWxlZ2UudHlwZSB8fCAnJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHJpdmlsZWdlTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgdXNlckFjY291bnQgb2YgdGhlIGN1cnJlbnQgdXNlci4gVGhlIHJldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyIG1ldGhvZFxuICAgKiBtdXN0IGJlIGludm9rZWQgcHJpb3IgdG8gaW52b2tpbmcgdGhpcyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXJBY2NvdW50KCk6IE9lcGFVc2VyQWNjb3VudCB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDdXJyZW50VXNlckFjY291bnQoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSB7XG4gICAgdGhpcy5hY2NvdW50ID0gYWNjb3VudDtcbiAgICB0aGlzLnVzZXJBY2NvdW50JC5uZXh0KHRoaXMuYWNjb3VudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXV0aFRva2VuKCkgOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF1dGhUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuYXV0aFRva2VuID0gdG9rZW47XG4gIH1cbiBcbiAgLyoqXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBFQklaIE1FVEhPRFM6XG4gICAqIFRoZSBtZXRob2RzIGJlbG93IGN1cnJlbnRseSBhcHBseSBvbmx5IHRvIGVCaXouXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICBwdWJsaWMgZ2V0V2ViYXBwc1Jvb3RVUkwoYXBwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy53ZWJhcHBzUm9vdFVSTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL2dhdGV3YXkvZ2F0ZXdheUNvbmZpZyc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUobWFwKChnYXRld2F5Q29uZmlnOmFueSkgPT4ge1xuICAgICAgICBpZiAoZ2F0ZXdheUNvbmZpZykge1xuICAgICAgICAgIHRoaXMud2ViYXBwc1Jvb3RVUkwgPSBnYXRld2F5Q29uZmlnLndlYmFwcHNSb290VVJMO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLndlYmFwcHNSb290VVJMO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICB9XG5cbiAgcHVibGljIGdldEVCaXpWZXJzaW9uKGFwcDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5lYml6VmVyc2lvbikge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuZWJpelZlcnNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS9nYXRld2F5L3ZlcnNpb24nO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U3RyaW5nUmVzcG9uc2U+KHVybCwgeyBwYXJhbXM6IHsgJ2FwcCc6IGFwcCB9IH0pLnBpcGUobWFwKCh2ZXJzaW9uOiBTdHJpbmdSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAodmVyc2lvbiAmJiB2ZXJzaW9uLnJlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5lYml6VmVyc2lvbiA9IHZlcnNpb24ucmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lYml6VmVyc2lvbiA9ICd1bmtub3duJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lYml6VmVyc2lvbjtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFycmF5IG9mIFByb2dyYW1Qcml2aWxlZ2VzIG1hdGNoaW5nIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hQcml2aWxlZ2VzKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9zZWFyY2gnICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+Pih1cmwsIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LCB7IHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IFByb2dyYW1Qcml2aWxlZ2UgYmFzZWQgb24gY29udGVudHMgb2YgUHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByb2dyYW1Qcml2aWxlZ2U/XG4gICAqL1xuICBwdWJsaWMgY3JlYXRlUHJvZ3JhbVByaXZpbGVnZShwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdDogUHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QsIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8UHJvZ3JhbVByaXZpbGVnZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxQcm9ncmFtUHJpdmlsZWdlPih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpBY2NvdW50c1VybCArICcvcHJvZ3JhbVByaXZpbGVnZXMnKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKSwgXG4gICAgcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3QsIHsgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIFByb2dyYW1Qcml2aWxlZ2UgaWRlbnRpZmllZCBieSBwcm9ncmFtUHJpdmlsZWdlSUQuXG4gICAqIEBwYXJhbSBwcm9ncmFtUHJpdmlsZWdlSURcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx2b2lkPlxuICAgKi9cbiAgcHVibGljIGRlbGV0ZVByb2dyYW1Qcml2aWxlZ2UocHJvZ3JhbVByaXZpbGVnZUlEOiBzdHJpbmcsIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzLycgKyBwcm9ncmFtUHJpdmlsZWdlSUQgKyAoYWx0VXNlcklEID8gJz91c2VyaWQ9JyArIGFsdFVzZXJJRCA6ICcnKSwgXG4gICAgeyByZXNwb25zZVR5cGU6ICd0ZXh0JywgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSBhIHByb2dyYW0gcHJpdmlsZWdlIGJhc2VkIG9uIGluZm9ybWF0aW9uIGluIGRlbGVnYXRpb24uXG4gICAqIEBwYXJhbSBkZWxlZ2F0aW9uXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxlZ2F0ZVByb2dyYW1Qcml2aWxlZ2UoZGVsZWdhdGlvbjogRGVsZWdhdGlvbiwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5ob3N0VXJsICsgdGhpcy5lYml6QWNjb3VudHNVcmwgKyAnL3Byb2dyYW1Qcml2aWxlZ2VzL2RlbGVnYXRpb24nICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksXG4gICAgZGVsZWdhdGlvbiwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JywgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgfVxuXG4gLyoqXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKiBIZWxwZXIgTUVUSE9EUzpcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gICAvKipcbiAgICAqIFNldCB0aGUgdXNlciBhY2NvdW50IHRvIGJlIHVzZWQgZm9yIFwibGl2ZSByZWxvYWQgbW9kZVwiXG4gICAgKiBAcGFyYW0gdXNlckFjY291bnQgXG4gICAgKi9cbiAgICBwdWJsaWMgc2V0TGl2ZVJlbG9hZFVzZXIodXNlckFjY291bnQ6IE9lcGFVc2VyQWNjb3VudCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSB1c2VyQWNjb3VudDtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXRMaXZlUmVsb2FkVXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9saXZlUmVsb2FkJywgdXNlckFjY291bnQsIHsgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KTtcbiAgICB9XG5cbiAgIC8qKlxuICAgICogU3RvcmVzIHRoZSBnaXZlbiB1c2VyIGluIHRoZSBlQml6IHNlc3Npb24uXG4gICAgKiBAcGFyYW0gYWNjb3VudFVzZXJJRCBcbiAgICAqL1xuICAgcHVibGljIHN0b3JlVXNlckluU2Vzc2lvbihhY2NvdW50VXNlcklEOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICBsZXQgYWNjdCA9IHt9IGFzIE9lcGFVc2VyQWNjb3VudDtcbiAgICAgYWNjdC5hY2NvdW50SUQgPSBhY2NvdW50VXNlcklEO1xuICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpTZXNzaW9uVXJsICsgJy9zdG9yZVVzZXIvJyArIGFjY291bnRVc2VySUQsIG51bGwgLCB7IHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWUgaWYgdGhlIGN1cnJlbnQgdXNlciBzaG91bGQgYmUgYWxsb3dlZCB0byBzZWUgXCJkZW1vXCIgY2FwYWJpbGl0aWVzXG4gICAgICovXG4gICAgcHVibGljIGRlbW9DYXBhYmlsaXRpZXNBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgICAgbGV0IGRlbW9BbGxvd2VkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5hY2NvdW50ICYmIHRoaXMuYWNjb3VudC5yb2xlTGlzdCkge1xuICAgICAgICB0aGlzLmFjY291bnQucm9sZUxpc3QuZm9yRWFjaChyb2xlID0+IHtcbiAgICAgICAgICBpZiAocm9sZS5uYW1lID09PSAnQWxsb3dEZW1vJykge1xuICAgICAgICAgICAgZGVtb0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVtb0FsbG93ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0SWRsZVRpbWVyKHRocmVzaG9sZD86IG51bWJlcikge1xuICAgICAgaWYgKHRoaXMudGltZW91dElEKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJRCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlkbGVUaHJlc2hvbGQgPSB0aHJlc2hvbGQgfHwgdGhpcy5pZGxlVGhyZXNob2xkO1xuICAgICAgaWYgKCF0aGlzLmlkbGVUaW1lclJ1bm5pbmcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1RoZSBpZGxlIHRpbWVvdXQgc3RhcnRlZCB3aXRoIHRocmVzaG9sZDogJyArIHRoaXMuaWRsZVRocmVzaG9sZCk7XG4gICAgICAgIHRoaXMuaWRsZVRpbWVyUnVubmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hlY2tUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0SWRsZVRpbWUoKSB7XG4gICAgICBjb25zb2xlLmxvZygnaWRsZSB0aW1lciByZXNldCcpO1xuICAgICAgdGhpcy5pZGxlVGltZSA9IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1RpbWVvdXQoKSB7XG4gICAgICB0aGlzLnRpbWVvdXRJRCA9IHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgIHRoaXMuaWRsZVRpbWUgKz0gNjA7XG4gICAgICAgIGNvbnNvbGUubG9nKCdpZGxlIHRpbWUgPSAnICsgdGhpcy5pZGxlVGltZSArIFwiLCB0aHJlc2hvbGQgPSBcIiArIHRoaXMuaWRsZVRocmVzaG9sZCk7XG4gICAgICAgIGlmICh0aGlzLmlkbGVUaW1lID49IHRoaXMuaWRsZVRocmVzaG9sZCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdmaXJpbmcgbmV4dCBpZGxlU3ViamVjdC4uLicpO1xuICAgICAgICAgIHRoaXMuaWRsZVRpbWVyUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaWRsZVN1YmplY3QubmV4dCh0aGlzLmlkbGVUaW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy50aW1lb3V0SUQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJRCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2hlY2tUaW1lb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDYwMDAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWRsZVRpbWVvdXQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgIHJldHVybiB0aGlzLmlkbGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBXZSBwcm9iYWJseSBkb24ndCB3YW50IHRvIHN1cHBvcnQgdGhpcyBnb2luZyBmb3J3YXJkXG4gICAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9nTWVzc2FnZU9uU2VydmVyKG1lc3NhZ2U/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgY29uc3QgbWVzc2FnZVJlc3BvbnNlOiBhbnkgPSB7XG4gICAgICAgIHJlc3BvbnNlOiBtZXNzYWdlXG4gICAgICB9XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyAnL2FwaS92MS91c2VyQWNjb3VudHMvbG9ncy9tZXNzYWdlJztcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgbWVzc2FnZVJlc3BvbnNlLCB7IHBhcmFtczogdGhpcy5wYXJhbXMgfSk7XG4gICAgfVxufVxuIl19