info-library 2.14.45-beta.1 → 2.14.45

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.
@@ -179,7 +179,7 @@ export class InfoAuthenticationService {
179
179
  }
180
180
  getPermissions(url, logAtividade = false) {
181
181
  return this._http
182
- .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/getpermissao?' + this._utilities.jsonToEncrypt('url=' + url + '&logatividade=' + logAtividade.toString()), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
182
+ .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/getpermissao?' + encodeURIComponent(this._utilities.jsonToEncrypt('url=' + url + '&logatividade=' + logAtividade.toString())), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
183
183
  .pipe(map((rs) => {
184
184
  var r = this._utilities.decryptToJson(rs);
185
185
  return new InfoLoginModel(r.Success, r.Messages, r.Data);
@@ -269,7 +269,7 @@ export class InfoAuthenticationService {
269
269
  }
270
270
  validaSessao(url) {
271
271
  return this._http
272
- .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/validasessao?' + this._utilities.jsonToEncrypt('url=' + url), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
272
+ .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/validasessao?' + encodeURIComponent(this._utilities.jsonToEncrypt('url=' + url)), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
273
273
  .pipe(map((rs) => {
274
274
  var r = this._utilities.decryptToJson(rs);
275
275
  return new InfoLoginModel(r === true, '', r);
@@ -386,4 +386,4 @@ export class RefreshSessionTimeModalComponent {
386
386
  `
387
387
  }]
388
388
  }], function () { return [{ type: i6.MatDialogRef }]; }, null); })();
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBNEQsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUsvQyxNQUFNLE9BQU8seUJBQXlCO0lBSWxDLFlBQW9CLE9BQWUsRUFDZixLQUFpQixFQUNqQixPQUF5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VTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOztBQW9hRCxNQUFNLE9BQU8sZ0NBQWdDO0lBSTVDLFlBQW9CLElBQW9EO1FBQXBELFNBQUksR0FBSixJQUFJLENBQWdEO1FBSHJFLFNBQUksR0FBRyxFQUFFLENBQUM7SUFHK0QsQ0FBQztJQUUxRSxRQUFRO1FBQ0osYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNYO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDaEM7UUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDOzttSUFyQlEsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0M7UUFMM0MscUNBQWlJO1FBQTVGLG1IQUFVLFVBQU0sSUFBSSxDQUFDLElBQUM7O1FBQ2pELGdDQUE4QjtRQUFBLFlBQXFEOztRQUFBLGlCQUFRLEVBQUE7O1FBRHZCLDhGQUFrRDtRQUN4RixlQUFxRDtRQUFyRCwrRUFBcUQ7O3VGQUlsRixnQ0FBZ0M7Y0FQNUMsU0FBUztlQUFDO2dCQUNWLFFBQVEsRUFBRTs7OztFQUlUO2FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZhYmxlSW5wdXQsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBJbmZvU2Vzc2lvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvc2Vzc2lvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9QbGF0Zm9ybU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvcGxhdGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvTG9naW5Nb2RlbCB9IGZyb20gJy4uL21vZGVsL2xvZ2luLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvRm9ybVByb3BNb2RlbCB9IGZyb20gJy4uL21vZGVsL2Zvcm0tcHJvcC5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgSW5mb01vZGFsQWN0aW9uIH0gZnJvbSAnLi4vZW51bSc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEluZm9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdGllcyB9IGZyb20gJy4uL3V0aWxzL3V0aWxpdGllcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XHJcbiAgICBwcml2YXRlIF9zZXNzaW9uVGltZUludGVydmFsO1xyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbkFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9zZXNzYW86IEluZm9TZXNzaW9uTW9kZWwsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGFmb3JtYTogSW5mb1BsYXRmb3JtTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9kYXRhU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbW9kYWw6IE1hdERpYWxvZywgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF91dGlsaXRpZXM6IFV0aWxpdGllcywgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IEluZm9UcmFuc2xhdGVTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RpdGxlOiBUaXRsZSkgeyB9XHJcblxyXG4gICAgZ2V0U2Vzc2FvKCk6IEluZm9TZXNzaW9uTW9kZWx7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nlc3NhbztcclxuICAgIH1cclxuXHJcbiAgICBnZXRQbGF0Zm9ybSgpOiBJbmZvUGxhdGZvcm1Nb2RlbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYXRhZm9ybWE7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuQWN0aXZhdGUoYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgcm91dGVyU3RhdGVTbmFwc2hvdDogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9nZ2VkKCkgfHwgIXRoaXMuX3Nlc3Npb25BY3RpdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1cmwgPSBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmRhdGFbJ1VSTCddIHx8IHJvdXRlclN0YXRlU25hcHNob3QudXJsO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoU2Vzc2lvblRpbWUoKTsgICAgICAgICAgICBcclxuICAgICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWZpbmVQYWdpbmFBdGl2YSh1cmwpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9uKHVybCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwgPT0gJy8nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHVybCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ3Blcm1pc3Npb24nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJ25vdm8nKSA+IC0xICYmICF0aGlzLmhhc1Blcm1pc3Npb24odXJsLCAnbmV3JykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ3Blcm1pc3Npb24nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJ3Zpc3VhbGl6YXInKSA8IC0xICYmIGFjdGl2YXRlZFJvdXRlU25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpICE9IG51bGwgJiYgIXRoaXMuaGFzUGVybWlzc2lvbih1cmwsICdlZGl0JykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ3Blcm1pc3Npb24nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICkpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcChhc3luYyByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2FvID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5kYXRhWydQZXJtaXNzYW8nXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBlcm1pc3NhbylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyYW1zID0gKHBlcm1pc3Nhb1syXSB8fCAnJykucmVwbGFjZShSZWdFeHAoL1xceyguKj8pXFx9LywgJ2cnKSwgKF8sIHApID0+IGFjdGl2YXRlZFJvdXRlU25hcHNob3QucGFyYW1zW3BdKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGF3YWl0IHRoaXMuX2RhdGFTZXJ2aWNlLmdldChwZXJtaXNzYW9bMF0sIHBlcm1pc3Nhb1sxXSwgcGFyYW1zKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghci5zdWNjZXNzIHx8IHIuZGF0YSAhPSB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xvZ2dlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuX3V0aWxpdGllcy5nZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSkgIT0gbnVsbCk7XHJcbiAgICB9XHJcblxyXG5cdHJlZnJlc2hTZXNzaW9uVGltZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3Nlc3Npb25BY3RpdmUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9zZXNzaW9uVGltZUludGVydmFsKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlID09IG51bGwgfHwgdGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGUgPD0gMClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCB0ZW1wb1Nlc3NhbyA9IHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtcycsIG5ldyBEYXRlKCkudmFsdWVPZigpLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb25UaW1lSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGVtcG9TZXNzYW8gPiAwKSAge1xyXG4gICAgICAgICAgICAgICAgdGVtcG9TZXNzYW8tLTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHRlbXBvUmVzdGFudGUgPSBNYXRoLnJvdW5kKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIC0gKChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAtIHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcycpKSkgLyAxMDAwKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzTmFOKHRlbXBvUmVzdGFudGUpICYmIHRlbXBvUmVzdGFudGUgPiAwKXtcclxuICAgICAgICAgICAgICAgIHRlbXBvU2Vzc2FvID0gdGVtcG9SZXN0YW50ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9zZXNzaW9uVGltZUludGVydmFsKTtcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbkFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzTmFOKHRlbXBvUmVzdGFudGUpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuc2hvd01lc3NhZ2UoKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuXHR9XHJcblxyXG4gICAgc2hvd01lc3NhZ2UoKXtcclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5fbW9kYWwub3BlbihSZWZyZXNoU2Vzc2lvblRpbWVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBkYXRhOiBudWxsLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnNTAwcHgnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocjogSW5mb0Zvcm1Qcm9wTW9kZWwpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChyICE9IG51bGwgJiYgKHIubW9kYWxBY3Rpb24gPT0gSW5mb01vZGFsQWN0aW9uLlllcyB8fCAodGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGUgLSAoKG5ldyBEYXRlKCkudmFsdWVPZigpIC0gcGFyc2VJbnQobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21zJykpKSAvIDEwMDApKSA+IDApKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25BY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoU2Vzc2lvblRpbWUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZ2luKHVzdWFyaW86IHN0cmluZywgc2VuaGE6IHN0cmluZywgcmVDYXB0Y2hhVG9rZW46IHN0cmluZyA9IG51bGwsIGNvZGlnbzJGQTogc3RyaW5nID0gbnVsbCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVTZXNzYW8oKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL2F1dGVudGljYXInLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IFVzdWFyaW86IHVzdWFyaW8sIFNlbmhhOiBzZW5oYSwgUmVDYXB0Y2hhVG9rZW46IHJlQ2FwdGNoYVRva2VuLCBDb2RpZ28yRkE6IGNvZGlnbzJGQSB9KSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEuVG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdHJvY2FyRW1wcmVzYSh1c3VhcmlvOiBzdHJpbmcsIGVtcHJlc2FJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vdHJvY2FyZW1wcmVzYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KHsgRW1wcmVzYUlkOiBlbXByZXNhSWQgfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJvY2FyVW5pZGFkZSh1c3VhcmlvOiBzdHJpbmcsIGVtcHJlc2FJZDogbnVtYmVyLCB1bmlkYWRlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL3Ryb2NhcnVuaWRhZGUnLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IEVtcHJlc2FJZDogZW1wcmVzYUlkLCBVbmlkYWRlSWQ6IHVuaWRhZGVJZCB9KSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuU3VjY2VzcyAmJiByLkRhdGEgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91dGlsaXRpZXMuc2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXksIHIuRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xvbmFyKHVzdWFyaW86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL2Nsb25hcicsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KHsgVXN1YXJpbzogdXN1YXJpbyB9KSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuU3VjY2VzcyAmJiByLkRhdGEgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91dGlsaXRpZXMuc2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXksIHIuRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNMb2dnZWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9odHRwLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vTG9nb3V0JywgbnVsbCwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTZXNzYW8oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnbG9naW4nKS50aGVuKHIgPT4geyBsb2NhdGlvbi5yZWxvYWQoKTsgfSk7ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVTZXNzYW8oKTtcclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2xvZ2luJykudGhlbihyID0+IHsgbG9jYXRpb24ucmVsb2FkKCk7IH0pOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb25zKHVybDogc3RyaW5nLCBsb2dBdGl2aWRhZGU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5nZXQodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vZ2V0cGVybWlzc2FvPycgKyB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCgndXJsPScgKyB1cmwgKyAnJmxvZ2F0aXZpZGFkZT0nICsgbG9nQXRpdmlkYWRlLnRvU3RyaW5nKCkpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUcm9jYVNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9Ucm9jYXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVjdXBlcmFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1JlY3VwZXJhclNlbmhhJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQobW9kZWwpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXNldGFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Jlc2V0YXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2dpblJlc291cmNlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS9hcHAvR2V0TG9naW5SZXNvdXJjZXMnLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlckRlZmF1bHQoKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1Blcm1pc3Npb24odXJsOiBzdHJpbmcsIGtleUZ1bmN0aW9uOiBzdHJpbmcgPSAndmlldycpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKHVybCA9PSAnLycgJiYga2V5RnVuY3Rpb24gPT0gJ3ZpZXcnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHVybEdlbmVyaWNhID0gdGhpcy5nZXRVcmxHZW5lcmljYSh1cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGtleUZ1bmN0aW9uICYmIHMuQWNlc3NvKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9uKHVybDogc3RyaW5nLCBsb2dBdGl2aWRhZGU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG5cclxuICAgICAgICBsZXQgdXJsR2VuZXJpY2EgPSB0aGlzLmdldFVybEdlbmVyaWNhKHVybCk7XHJcbiAgICAgICAgbGV0IGNvbnRlbVVybCA9IHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSk7XHJcbiAgICAgICAgaWYgKGNvbnRlbVVybCkge1xyXG4gICAgICAgICAgICBpZiAobG9nQXRpdmlkYWRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGFTZXNzYW8odXJsKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmV0LnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9ucyh1cmxHZW5lcmljYSwgbG9nQXRpdmlkYWRlKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldC5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMuZmlsdGVyKHMgPT4gcy5VUkwgPT0gaXRlbS5VUkwgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGl0ZW0uQ2hhdmVGdW5jaW9uYWxpZGFkZSkubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5TZXNzaW9uS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzYW8pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYVNlc3Nhbyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby92YWxpZGFzZXNzYW8/JyArIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KCd1cmw9JyArIHVybCksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIgPT09IHRydWUsICcnLCByKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVTZXNzYW8oKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFrZXkuaW5jbHVkZXMoJ0Rhc2hib2FyZCcpICYmICFrZXkuaW5jbHVkZXMoJ2NvbHMnKSkgXHJcbiAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxTdG9yYWdlW2tleV07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVmaW5lUGFnaW5hQXRpdmEodXJsKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9wbGF0YWZvcm1hLk1lbnUgPT0gbnVsbCB8fCB1cmwgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGF1eDogc3RyaW5nW10gPSB1cmwuc3Vic3RyaW5nKDEpLnJlcGxhY2UoLy0vZywgJycpLnRvTG93ZXJDYXNlKCkuc3BsaXQoJy8nKTtcclxuICAgICAgICBsZXQgdGl0dWxvTWVudTogc3RyaW5nID0gYXV4Lmxlbmd0aCA+IDAgPyBhdXhbMF0udG9TdHJpbmcoKSA6IHVybDtcclxuICAgICAgICBsZXQgcGFyYW1ldHJvc1VybDogc3RyaW5nW10gPSB1cmwuc3BsaXQoJy8nKS5zbGljZSgyKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGl0dWxvTWVudS5pbmRleE9mKCdhc2hib2FyZCcpID4gLTEpXHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSB7IEljb25lOiAnd2lkZ2V0cycsIFRpdHVsbzogJ0Rhc2hib2FyZCcgfTsgIFxyXG5cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IGFueSA9IHRoaXMuX3BsYXRhZm9ybWEuTWVudS5maWx0ZXIobSA9PiBtLlRpdGxlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aXR1bG9NZW51KSA+IC0xKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgc3ViVGl0dWxvID0gXCJcIjtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0cm9zVXJsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNHdWlkKHBhcmFtZXRyb3NVcmxbaV0pICYmIGlzTmFOKHBhcnNlRmxvYXQocGFyYW1ldHJvc1VybFtpXSkpKVxyXG4gICAgICAgICAgICAgICAgICAgIHN1YlRpdHVsbyArPSBcIiAtIFwiICsgdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnRvUGFzY2FsQ2FzZShwYXJhbWV0cm9zVXJsW2ldKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9IG51bGwgJiYgaXRlbS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogaXRlbVswXS5JY29uLCBUaXR1bG86IGl0ZW1bMF0uVGl0bGUgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlLnNldFRpdGxlKGAke3RoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUodGhpcy5fcGxhdGFmb3JtYS5Db25maWcudGl0bGUgfHwgXCJQbGF0YWZvcm1hXCIpfSAtICR7dGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZShpdGVtWzBdLlRpdGxlKX1gKyBzdWJUaXR1bG8pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSB7IEljb25lOiAnc2VjdXJpdHknLCBUaXR1bG86IHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLnRpdGxlIHx8ICdQbGF0YWZvcm1hJyB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRVcmxHZW5lcmljYSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJldG9ybm8gPSBcIlwiO1xyXG4gICAgICAgIGxldCB1cmxQYXJ0czogc3RyaW5nW10gPSB1cmwuc3BsaXQoJy8nKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVybFBhcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNOYU4ocGFyc2VGbG9hdCh1cmxQYXJ0c1tpXSkpIHx8IHRoaXMuaXNHdWlkKHVybFBhcnRzW2ldKSB8fCB1cmxQYXJ0c1tpXS50b0xvd2VyQ2FzZSgpID09ICdub3ZvJylcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXRvcm5vICs9ICcvJyArIHVybFBhcnRzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0b3Juby5zdWJzdHJpbmcoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsaW5nKGU6IEh0dHBFcnJvclJlc3BvbnNlKTogT2JzZXJ2YWJsZUlucHV0PEluZm9Mb2dpbk1vZGVsPiB7XHJcbiAgICAgICAgaWYgKGUuc3RhdHVzID09IDQwMSkgXHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGUuc3RhdHVzID09IDUwMClcclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJzUwMCcpO1xyXG5cclxuICAgICAgICBlbHNlIGlmIChlLmVycm9yICE9IG51bGwgJiYgZS5lcnJvci5lcnJvcl9kZXNjcmlwdGlvbiAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gb2YobmV3IEluZm9Mb2dpbk1vZGVsKGZhbHNlLCBlLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKSk7XHJcblxyXG4gICAgICAgIGVsc2UgcmV0dXJuIG9mKG5ldyBJbmZvTG9naW5Nb2RlbChmYWxzZSwgJ0hvdXZlIHVtIHByb2JsZW1hIGUgbsOjbyBmb2kgcG9zc8OtdmVsIGNvbmVjdGFyJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNHdWlkKHZhbHVlKSA6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodmFsdWUgfHwgJycpLm1hdGNoKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9QYXNjYWxDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmd7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyheXFx3fC1cXHcpL2csICh3MSwgdzIsIGkpID0+IGkgPT0gMCA/IHcxLnRvVXBwZXJDYXNlKCkgOiB3MVsxXS50b1VwcGVyQ2FzZSgpKTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxpbmZvLW1vZGFsIG1vZGFsdGl0bGU9XCJJbmF0aXZpZGFkZVwiIChvbnNhdmUpPVwiYXRpdm8odHJ1ZSlcIiBsYWJlbHN1Ym1pdD1cIlNpbVwiIGxhYmVsY2FuY2VsPVwiKHt7IHRpbWUgfX0pIHt7ICdOYW8nIHwgdHJhbnNsYXRlIH19XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cImZvbnQtc2l6ZToxMzAlXCI+e3sgJ1ZvY2VBaW5kYUVzdGFVdGlsaXphbmRvUGxhdGFmb3JtYScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG5cdFx0PC9pbmZvLW1vZGFsPlxyXG5cdGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50IHtcclxuICAgIHRpbWUgPSAxNTtcclxuICAgIGludGVydmFsO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZWY6IE1hdERpYWxvZ1JlZjxSZWZyZXNoU2Vzc2lvblRpbWVNb2RhbENvbXBvbmVudD4pIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGltZSA+IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWUtLTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0aXZvKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYXRpdm8oYXRpdm86IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9yZWYuY2xvc2UoeyBtb2RhbEFjdGlvbjogYXRpdm8gPyBJbmZvTW9kYWxBY3Rpb24uWWVzIDogSW5mb01vZGFsQWN0aW9uLk5vIH0pO1xyXG4gICAgfVxyXG59Il19
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBNEQsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUsvQyxNQUFNLE9BQU8seUJBQXlCO0lBSWxDLFlBQW9CLE9BQWUsRUFDZixLQUFpQixFQUNqQixPQUF5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IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb0xvZ2luTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9sb2dpbi5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0Zvcm1Qcm9wTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9mb3JtLXByb3AubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gJy4uL2VudW0nO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlscy91dGlsaXRpZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvblRpbWVJbnRlcnZhbDtcclxuICAgIHByaXZhdGUgX3Nlc3Npb25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfc2Vzc2FvOiBJbmZvU2Vzc2lvbk1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3BsYXRhZm9ybWE6IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZGF0YVNlcnZpY2U6IEluZm9EYXRhU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2csIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdXRpbGl0aWVzOiBVdGlsaXRpZXMsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBJbmZvVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90aXRsZTogVGl0bGUpIHsgfVxyXG5cclxuICAgIGdldFNlc3NhbygpOiBJbmZvU2Vzc2lvbk1vZGVse1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW87XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGxhdGZvcm0oKTogSW5mb1BsYXRmb3JtTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wbGF0YWZvcm1hO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHJvdXRlclN0YXRlU25hcHNob3Q6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0xvZ2dlZCgpIHx8ICF0aGlzLl9zZXNzaW9uQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXJsID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5kYXRhWydVUkwnXSB8fCByb3V0ZXJTdGF0ZVNuYXBzaG90LnVybDtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGVmaW5lUGFnaW5hQXRpdmEodXJsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbih1cmwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsID09ICcvJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbih1cmwpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCdub3ZvJykgPiAtMSAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHVybCwgJ25ldycpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCd2aXN1YWxpemFyJykgPCAtMSAmJiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSAhPSBudWxsICYmICF0aGlzLmhhc1Blcm1pc3Npb24odXJsLCAnZWRpdCcpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1pc3NhbyA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZGF0YVsnUGVybWlzc2FvJ107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzYW8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtcyA9IChwZXJtaXNzYW9bMl0gfHwgJycpLnJlcGxhY2UoUmVnRXhwKC9cXHsoLio/KVxcfS8sICdnJyksIChfLCBwKSA9PiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtc1twXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhd2FpdCB0aGlzLl9kYXRhU2VydmljZS5nZXQocGVybWlzc2FvWzBdLCBwZXJtaXNzYW9bMV0sIHBhcmFtcykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuc3VjY2VzcyB8fCByLmRhdGEgIT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNMb2dnZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLl91dGlsaXRpZXMuZ2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXkpICE9IG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHRyZWZyZXNoU2Vzc2lvblRpbWUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zZXNzaW9uQWN0aXZlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSA9PSBudWxsIHx8IHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIDw9IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgdGVtcG9TZXNzYW8gPSB0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbXMnLCBuZXcgRGF0ZSgpLnZhbHVlT2YoKS50b1N0cmluZygpKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9zZXNzaW9uVGltZUludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKHRlbXBvU2Vzc2FvID4gMCkgIHtcclxuICAgICAgICAgICAgICAgIHRlbXBvU2Vzc2FvLS07XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB0ZW1wb1Jlc3RhbnRlID0gTWF0aC5yb3VuZCh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSAtICgobmV3IERhdGUoKS52YWx1ZU9mKCkgLSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbXMnKSkpIC8gMTAwMCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFpc05hTih0ZW1wb1Jlc3RhbnRlKSAmJiB0ZW1wb1Jlc3RhbnRlID4gMCl7XHJcbiAgICAgICAgICAgICAgICB0ZW1wb1Nlc3NhbyA9IHRlbXBvUmVzdGFudGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25BY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc05hTih0ZW1wb1Jlc3RhbnRlKSlcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZWxzZSB0aGlzLnNob3dNZXNzYWdlKCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblx0fVxyXG5cclxuICAgIHNob3dNZXNzYWdlKCl7XHJcbiAgICAgICAgbGV0IHJlZiA9IHRoaXMuX21vZGFsLm9wZW4oUmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAociAhPSBudWxsICYmIChyLm1vZGFsQWN0aW9uID09IEluZm9Nb2RhbEFjdGlvbi5ZZXMgfHwgKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIC0gKChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAtIHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcycpKSkgLyAxMDAwKSkgPiAwKSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbih1c3VhcmlvOiBzdHJpbmcsIHNlbmhhOiBzdHJpbmcsIHJlQ2FwdGNoYVRva2VuOiBzdHJpbmcgPSBudWxsLCBjb2RpZ28yRkE6IHN0cmluZyA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9hdXRlbnRpY2FyJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQoeyBVc3VhcmlvOiB1c3VhcmlvLCBTZW5oYTogc2VuaGEsIFJlQ2FwdGNoYVRva2VuOiByZUNhcHRjaGFUb2tlbiwgQ29kaWdvMkZBOiBjb2RpZ28yRkEgfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyRGVmYXVsdCgpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuU3VjY2VzcyAmJiByLkRhdGEgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhLlRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRyb2NhckVtcHJlc2EodXN1YXJpbzogc3RyaW5nLCBlbXByZXNhSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL3Ryb2NhcmVtcHJlc2EnLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IEVtcHJlc2FJZDogZW1wcmVzYUlkIH0pLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRyb2NhclVuaWRhZGUodXN1YXJpbzogc3RyaW5nLCBlbXByZXNhSWQ6IG51bWJlciwgdW5pZGFkZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby90cm9jYXJ1bmlkYWRlJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQoeyBFbXByZXNhSWQ6IGVtcHJlc2FJZCwgVW5pZGFkZUlkOiB1bmlkYWRlSWQgfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsb25hcih1c3VhcmlvOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9jbG9uYXInLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IFVzdWFyaW86IHVzdWFyaW8gfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzTG9nZ2VkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5faHR0cC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL0xvZ291dCcsIG51bGwsIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2xvZ2luJykudGhlbihyID0+IHsgbG9jYXRpb24ucmVsb2FkKCk7IH0pOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdsb2dpbicpLnRoZW4ociA9PiB7IGxvY2F0aW9uLnJlbG9hZCgpOyB9KTsgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9ucyh1cmw6IHN0cmluZywgbG9nQXRpdmlkYWRlOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL2dldHBlcm1pc3Nhbz8nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KCd1cmw9JyArIHVybCArICcmbG9nYXRpdmlkYWRlPScgKyBsb2dBdGl2aWRhZGUudG9TdHJpbmcoKSkpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUcm9jYVNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9Ucm9jYXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVjdXBlcmFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1JlY3VwZXJhclNlbmhhJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQobW9kZWwpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXNldGFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Jlc2V0YXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2dpblJlc291cmNlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS9hcHAvR2V0TG9naW5SZXNvdXJjZXMnLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlckRlZmF1bHQoKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1Blcm1pc3Npb24odXJsOiBzdHJpbmcsIGtleUZ1bmN0aW9uOiBzdHJpbmcgPSAndmlldycpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKHVybCA9PSAnLycgJiYga2V5RnVuY3Rpb24gPT0gJ3ZpZXcnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHVybEdlbmVyaWNhID0gdGhpcy5nZXRVcmxHZW5lcmljYSh1cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGtleUZ1bmN0aW9uICYmIHMuQWNlc3NvKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9uKHVybDogc3RyaW5nLCBsb2dBdGl2aWRhZGU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG5cclxuICAgICAgICBsZXQgdXJsR2VuZXJpY2EgPSB0aGlzLmdldFVybEdlbmVyaWNhKHVybCk7XHJcbiAgICAgICAgbGV0IGNvbnRlbVVybCA9IHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSk7XHJcbiAgICAgICAgaWYgKGNvbnRlbVVybCkge1xyXG4gICAgICAgICAgICBpZiAobG9nQXRpdmlkYWRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGFTZXNzYW8odXJsKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmV0LnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9ucyh1cmxHZW5lcmljYSwgbG9nQXRpdmlkYWRlKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldC5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMuZmlsdGVyKHMgPT4gcy5VUkwgPT0gaXRlbS5VUkwgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGl0ZW0uQ2hhdmVGdW5jaW9uYWxpZGFkZSkubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5TZXNzaW9uS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzYW8pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYVNlc3Nhbyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby92YWxpZGFzZXNzYW8/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCgndXJsPScgKyB1cmwpKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwociA9PT0gdHJ1ZSwgJycsIHIpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVNlc3NhbygpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWtleS5pbmNsdWRlcygnRGFzaGJvYXJkJykgJiYgIWtleS5pbmNsdWRlcygnY29scycpKSBcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbFN0b3JhZ2Vba2V5XTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZpbmVQYWdpbmFBdGl2YSh1cmwpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3BsYXRhZm9ybWEuTWVudSA9PSBudWxsIHx8IHVybCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYXV4OiBzdHJpbmdbXSA9IHVybC5zdWJzdHJpbmcoMSkucmVwbGFjZSgvLS9nLCAnJykudG9Mb3dlckNhc2UoKS5zcGxpdCgnLycpO1xyXG4gICAgICAgIGxldCB0aXR1bG9NZW51OiBzdHJpbmcgPSBhdXgubGVuZ3RoID4gMCA/IGF1eFswXS50b1N0cmluZygpIDogdXJsO1xyXG4gICAgICAgIGxldCBwYXJhbWV0cm9zVXJsOiBzdHJpbmdbXSA9IHVybC5zcGxpdCgnLycpLnNsaWNlKDIpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aXR1bG9NZW51LmluZGV4T2YoJ2FzaGJvYXJkJykgPiAtMSlcclxuICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6ICd3aWRnZXRzJywgVGl0dWxvOiAnRGFzaGJvYXJkJyB9OyAgXHJcblxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgaXRlbTogYW55ID0gdGhpcy5fcGxhdGFmb3JtYS5NZW51LmZpbHRlcihtID0+IG0uVGl0bGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRpdHVsb01lbnUpID4gLTEpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBzdWJUaXR1bG8gPSBcIlwiO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRyb3NVcmwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0d1aWQocGFyYW1ldHJvc1VybFtpXSkgJiYgaXNOYU4ocGFyc2VGbG9hdChwYXJhbWV0cm9zVXJsW2ldKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgc3ViVGl0dWxvICs9IFwiIC0gXCIgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMudG9QYXNjYWxDYXNlKHBhcmFtZXRyb3NVcmxbaV0pKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0gIT0gbnVsbCAmJiBpdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSB7IEljb25lOiBpdGVtWzBdLkljb24sIFRpdHVsbzogaXRlbVswXS5UaXRsZSB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGl0bGUuc2V0VGl0bGUoYCR7dGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy50aXRsZSB8fCBcIlBsYXRhZm9ybWFcIil9IC0gJHt0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKGl0ZW1bMF0uVGl0bGUpfWArIHN1YlRpdHVsbyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6ICdzZWN1cml0eScsIFRpdHVsbzogdGhpcy5fcGxhdGFmb3JtYS5Db25maWcudGl0bGUgfHwgJ1BsYXRhZm9ybWEnIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFVybEdlbmVyaWNhKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmV0b3JubyA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHVybFBhcnRzOiBzdHJpbmdbXSA9IHVybC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXJsUGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCFpc05hTihwYXJzZUZsb2F0KHVybFBhcnRzW2ldKSkgfHwgdGhpcy5pc0d1aWQodXJsUGFydHNbaV0pIHx8IHVybFBhcnRzW2ldLnRvTG93ZXJDYXNlKCkgPT0gJ25vdm8nKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldG9ybm8gKz0gJy8nICsgdXJsUGFydHNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXRvcm5vLnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVycm9ySGFuZGxpbmcoZTogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlSW5wdXQ8SW5mb0xvZ2luTW9kZWw+IHtcclxuICAgICAgICBpZiAoZS5zdGF0dXMgPT0gNDAxKSBcclxuICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAoZS5zdGF0dXMgPT0gNTAwKVxyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnNTAwJyk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGUuZXJyb3IgIT0gbnVsbCAmJiBlLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBvZihuZXcgSW5mb0xvZ2luTW9kZWwoZmFsc2UsIGUuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pKTtcclxuXHJcbiAgICAgICAgZWxzZSByZXR1cm4gb2YobmV3IEluZm9Mb2dpbk1vZGVsKGZhbHNlLCAnSG91dmUgdW0gcHJvYmxlbWEgZSBuw6NvIGZvaSBwb3Nzw612ZWwgY29uZWN0YXInKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0d1aWQodmFsdWUpIDogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh2YWx1ZSB8fCAnJykubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0b1Bhc2NhbENhc2UodmFsdWU6IHN0cmluZyk6IHN0cmluZ3tcclxuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvKF5cXHd8LVxcdykvZywgKHcxLCB3MiwgaSkgPT4gaSA9PSAwID8gdzEudG9VcHBlckNhc2UoKSA6IHcxWzFdLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGluZm8tbW9kYWwgbW9kYWx0aXRsZT1cIkluYXRpdmlkYWRlXCIgKG9uc2F2ZSk9XCJhdGl2byh0cnVlKVwiIGxhYmVsc3VibWl0PVwiU2ltXCIgbGFiZWxjYW5jZWw9XCIoe3sgdGltZSB9fSkge3sgJ05hbycgfCB0cmFuc2xhdGUgfX1cIj5cclxuICAgICAgICAgICAgPGxhYmVsIHN0eWxlPVwiZm9udC1zaXplOjEzMCVcIj57eyAnVm9jZUFpbmRhRXN0YVV0aWxpemFuZG9QbGF0YWZvcm1hJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcblx0XHQ8L2luZm8tbW9kYWw+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQge1xyXG4gICAgdGltZSA9IDE1O1xyXG4gICAgaW50ZXJ2YWw7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlZjogTWF0RGlhbG9nUmVmPFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50PikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50aW1lID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZS0tO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXRpdm8oZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBhdGl2byhhdGl2bzogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3JlZi5jbG9zZSh7IG1vZGFsQWN0aW9uOiBhdGl2byA/IEluZm9Nb2RhbEFjdGlvbi5ZZXMgOiBJbmZvTW9kYWxBY3Rpb24uTm8gfSk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -75,7 +75,7 @@ export class InfoDataService {
75
75
  if (id == undefined || id == null)
76
76
  alert('Id não informado');
77
77
  return this._http
78
- .delete(this.getAPIUrl(controller) + (method || '').toLowerCase() + "?" + this._utilities.jsonToEncrypt("id=" + id.toString()), { headers: this.getHeaderToken(), responseType: 'text' })
78
+ .delete(this.getAPIUrl(controller) + (method || '').toLowerCase() + "?" + encodeURIComponent(this._utilities.jsonToEncrypt("id=" + id.toString())), { headers: this.getHeaderToken(), responseType: 'text' })
79
79
  .pipe(map(r => new InfoDataAccessModel(this._utilities.decryptToJson(r))), catchError((e) => this.errorHandling(e)));
80
80
  }
81
81
  deleteByModel(controller, model, method) {
@@ -92,7 +92,7 @@ export class InfoDataService {
92
92
  for (let index = 0; index < model.length; index++)
93
93
  formData.append(model[index].name, model[index]);
94
94
  return this._http
95
- .request('POST', this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToEncrypt(param))), { headers: this.getHeaderToken(), body: formData, responseType: 'text' })
95
+ .request('POST', this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + encodeURIComponent(this._utilities.jsonToEncrypt(param)))), { headers: this.getHeaderToken(), body: formData, responseType: 'text' })
96
96
  .pipe(map(r => new InfoDataAccessModel(this._utilities.decryptToJson(r))), catchError((e) => this.errorHandling(e)));
97
97
  }
98
98
  errorHandling(e, redirect = true) {
@@ -115,4 +115,4 @@ export class InfoDataService {
115
115
  type: Inject,
116
116
  args: [APICONTROLLER_CONFIG]
117
117
  }] }, { type: i1.HttpClient }, { type: i2.Router }, { type: i3.InfoPlatformModel }, { type: i4.Utilities }]; }, null); })();
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQWMsRUFBRSxFQUFtQixNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUsvQyxNQUFNLE9BQU8sZUFBZTtJQUl4QixZQUFrRCxjQUFtQixFQUNqRCxLQUFpQixFQUNqQixPQUFlLEVBQ2YsV0FBOEIsRUFDOUIsVUFBcUI7UUFKUyxtQkFBYyxHQUFkLGNBQWMsQ0FBSztRQUNqRCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBVztJQUFJLENBQUM7SUFFdkMsUUFBUTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMs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LElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRSxVQUFVLENBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlELENBQUM7SUFDVixDQUFDO0lBRU8sYUFBYSxDQUFDLENBQW9CLEVBQUUsV0FBb0IsSUFBSTtRQUNoRSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRztZQUNmLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQzthQUNuQyxJQUFJLFFBQVE7WUFDYixRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFFdEMsSUFBSSxRQUFRLEdBQWEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7O2lHQTlKUSxlQUFlLGNBSUosb0JBQW9CO29HQUovQixlQUFlLFdBQWYsZUFBZSxtQkFGWixNQUFNO3VGQUVULGVBQWU7Y0FIM0IsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOztzQkFLZ0IsTUFBTTt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmZvRGF0YUFjY2Vzc01vZGVsIH0gZnJvbSAnLi4vbW9kZWwvZGF0YS1hY2Nlc3MubW9kZWwnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBPYnNlcnZhYmxlSW5wdXQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVBJQ09OVFJPTExFUl9DT05GSUcgfSBmcm9tICcuLi9nbG9iYWwtY29uZmlnJztcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9wbGF0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdGllcyB9IGZyb20gJy4uL3V0aWxzL3V0aWxpdGllcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9EYXRhU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoQVBJQ09OVFJPTExFUl9DT05GSUcpIHByaXZhdGUgX2FwaUNvbnRyb2xsZXI6IGFueSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3BsYXRhZm9ybWE6IEluZm9QbGF0Zm9ybU1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3V0aWxpdGllczogVXRpbGl0aWVzKSB7IH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VG9rZW4oKTogc3RyaW5nIHtcclxuICAgICAgICB0aGlzLnRva2VuID0gdGhpcy5fdXRpbGl0aWVzLmdldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5KTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy50b2tlbiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcnKTtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG5cclxuICAgICAgICB9IGVsc2UgcmV0dXJuICdCZWFyZXIgJyArIHRoaXMudG9rZW47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEhlYWRlckRlZmF1bHQoKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLmhlYWRlcnMgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5Db25maWcuaGVhZGVycy5mb3JFYWNoKGl0ZW0gPT4gaGVhZGVycyA9IGhlYWRlcnMuc2V0KGl0ZW0ua2V5LCBpdGVtLnZhbHVlKSk7ICAgXHJcbiAgICAgICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEhlYWRlclRva2VuKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRIZWFkZXJEZWZhdWx0KCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRUb2tlbigpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QVBJVXJsKGNvbnRyb2xsZXI6IGFueSkge1xyXG4gICAgICAgIGxldCBhcGkgPSAnJztcclxuXHJcblx0XHRpZiAodHlwZW9mKGNvbnRyb2xsZXIpID09ICdudW1iZXInKVxyXG5cdFx0XHRhcGkgPSAgdGhpcy5fYXBpQ29udHJvbGxlcltjb250cm9sbGVyXS50b1N0cmluZygpO1xyXG5cclxuICAgICAgICBlbHNlIGFwaSA9IGNvbnRyb2xsZXIgPT0gbnVsbCA/ICcnIDogY29udHJvbGxlci50b1N0cmluZygpO1xyXG4gICAgICAgIFxyXG5cdFx0cmV0dXJuIHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArIChhcGkucmVwbGFjZSgnXycsICcvJykgKyAnLycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldE5vVG9rZW4oY29udHJvbGxlcjogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBnZXROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBnZXROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nLCBwYXJhbT86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1ldGhvZD86IHN0cmluZywgcGFyYW0/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyAocGFyYW0gPT0gbnVsbCA/ICcnIDogKCc/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdChwYXJhbS5yZXBsYWNlKC9udWxsL2csICcnKS5yZXBsYWNlKC91bmRlZmluZWQvZywgJycpKSkpKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlckRlZmF1bHQoKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAociA9PiBuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbCh0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihyKSkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBnZXQoY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBnZXQoY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyAocGFyYW0gPT0gbnVsbCA/ICcnIDogKCc/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdChwYXJhbS5yZXBsYWNlKC9udWxsL2csICcnKS5yZXBsYWNlKC91bmRlZmluZWQvZywgJycpKSkpKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEJ5SWQoY29udHJvbGxlcjogYW55LCBpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyBpZC50b1N0cmluZygpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAociA9PiBuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbCh0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihyKSkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcG9zdE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBwb3N0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgcG9zdE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdChtb2RlbCksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHBvc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBwb3N0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBwb3N0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSwgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQobW9kZWwpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAociA9PiBuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbCh0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihyKSkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlLCBmYWxzZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZShjb250cm9sbGVyOiBhbnksIGlkOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+XHJcbiAgICBwdWJsaWMgZGVsZXRlKGNvbnRyb2xsZXI6IGFueSwgaWQ6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBkZWxldGUoY29udHJvbGxlcjogYW55LCBpZDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgaWYgKGlkID09IHVuZGVmaW5lZCB8fCBpZCA9PSBudWxsKVxyXG4gICAgICAgICAgICBhbGVydCgnSWQgbsOjbyBpbmZvcm1hZG8nKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmRlbGV0ZSh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyBcIj9cIiArIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KFwiaWQ9XCIgKyBpZC50b1N0cmluZygpKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZUJ5TW9kZWwoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPlxyXG4gICAgcHVibGljIGRlbGV0ZUJ5TW9kZWwoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGRlbGV0ZUJ5TW9kZWwoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgbGV0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksXHJcbiAgICAgICAgICAgIGJvZHk6IHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAuZGVsZXRlKHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSwgaHR0cE9wdGlvbnMpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVlc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55W10sIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD5cclxuICAgIHB1YmxpYyByZXF1ZXN0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueVtdLCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyByZXF1ZXN0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueVtdLCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtb2RlbC5sZW5ndGg7IGluZGV4KyspXHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChtb2RlbFtpbmRleF0ubmFtZSwgbW9kZWxbaW5kZXhdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLnJlcXVlc3QoJ1BPU1QnLCB0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyAocGFyYW0gPT0gbnVsbCA/ICcnIDogKCc/JyArIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KHBhcmFtKSkpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyVG9rZW4oKSwgYm9keTogZm9ybURhdGEsIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsaW5nKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZWRpcmVjdDogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlSW5wdXQ8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG4gICAgICAgIGlmIChlLnN0YXR1cyA9PSA0MDEpIFxyXG4gICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gJy8jL2xvZ2luJztcclxuICAgICAgICBlbHNlIGlmIChyZWRpcmVjdCkgXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAnLyMvNTAwJztcclxuXHJcbiAgICAgICAgbGV0IG1lc3NhZ2VzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShlLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBvZihuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbChudWxsLCBmYWxzZSwgbWVzc2FnZXMpKTtcclxuICAgIH1cclxufSJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQWMsRUFBRSxFQUFtQixNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUsvQyxNQUFNLE9BQU8sZUFBZTtJQUl4QixZQUFrRCxjQUFtQixFQUNqRCxLQUFpQixFQUNqQixPQUFlLEVBQ2YsV0FBOEIsRUFDOUIsVUFBcUI7UUFKUyxtQkFBYyxHQUFkLGNBQWMsQ0FBSztRQUNqRCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBVztJQUFJLENBQUM7SUFFdkMsUUFBUTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMs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Q0FDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbkUsVUFBVSxDQUFDLENBQUMsQ0FBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RCxDQUFDO0lBQ1YsQ0FBQztJQUVPLGFBQWEsQ0FBQyxDQUFvQixFQUFFLFdBQW9CLElBQUk7UUFDaEUsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDZixRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7YUFDbkMsSUFBSSxRQUFRO1lBQ2IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBRXRDLElBQUksUUFBUSxHQUFhLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDOztpR0E5SlEsZUFBZSxjQUlKLG9CQUFvQjtvR0FKL0IsZUFBZSxXQUFmLGVBQWUsbUJBRlosTUFBTTt1RkFFVCxlQUFlO2NBSDNCLFVBQVU7ZUFBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7c0JBS2dCLE1BQU07dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5mb0RhdGFBY2Nlc3NNb2RlbCB9IGZyb20gJy4uL21vZGVsL2RhdGEtYWNjZXNzLm1vZGVsJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFQSUNPTlRST0xMRVJfQ09ORklHIH0gZnJvbSAnLi4vZ2xvYmFsLWNvbmZpZyc7XHJcbmltcG9ydCB7IEluZm9QbGF0Zm9ybU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvcGxhdGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlscy91dGlsaXRpZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvRGF0YVNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgdG9rZW46IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQSUNPTlRST0xMRVJfQ09ORklHKSBwcml2YXRlIF9hcGlDb250cm9sbGVyOiBhbnksIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wbGF0YWZvcm1hOiBJbmZvUGxhdGZvcm1Nb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF91dGlsaXRpZXM6IFV0aWxpdGllcykgeyB9XHJcblxyXG4gICAgcHVibGljIGdldFRva2VuKCk6IHN0cmluZyB7XHJcbiAgICAgICAgdGhpcy50b2tlbiA9IHRoaXMuX3V0aWxpdGllcy5nZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMudG9rZW4gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnJyk7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgfSBlbHNlIHJldHVybiAnQmVhcmVyICcgKyB0aGlzLnRva2VuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRIZWFkZXJEZWZhdWx0KCk6IEh0dHBIZWFkZXJzIHtcclxuICAgICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICAgIGlmICh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy5oZWFkZXJzICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLmhlYWRlcnMuZm9yRWFjaChpdGVtID0+IGhlYWRlcnMgPSBoZWFkZXJzLnNldChpdGVtLmtleSwgaXRlbS52YWx1ZSkpOyAgIFxyXG4gICAgICAgIHJldHVybiBoZWFkZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRIZWFkZXJUb2tlbigpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SGVhZGVyRGVmYXVsdCgpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0VG9rZW4oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFQSVVybChjb250cm9sbGVyOiBhbnkpIHtcclxuICAgICAgICBsZXQgYXBpID0gJyc7XHJcblxyXG5cdFx0aWYgKHR5cGVvZihjb250cm9sbGVyKSA9PSAnbnVtYmVyJylcclxuXHRcdFx0YXBpID0gIHRoaXMuX2FwaUNvbnRyb2xsZXJbY29udHJvbGxlcl0udG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgZWxzZSBhcGkgPSBjb250cm9sbGVyID09IG51bGwgPyAnJyA6IGNvbnRyb2xsZXIudG9TdHJpbmcoKTtcclxuICAgICAgICBcclxuXHRcdHJldHVybiB0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAoYXBpLnJlcGxhY2UoJ18nLCAnLycpICsgJy8nKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1ldGhvZD86IHN0cmluZywgcGFyYW0/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGdldE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpICsgKHBhcmFtID09IG51bGwgPyAnJyA6ICgnPycgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQocGFyYW0ucmVwbGFjZSgvbnVsbC9nLCAnJykucmVwbGFjZSgvdW5kZWZpbmVkL2csICcnKSkpKSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldChjb250cm9sbGVyOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGdldChjb250cm9sbGVyOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nLCBwYXJhbT86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nLCBwYXJhbT86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpICsgKHBhcmFtID09IG51bGwgPyAnJyA6ICgnPycgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQocGFyYW0ucmVwbGFjZSgvbnVsbC9nLCAnJykucmVwbGFjZSgvdW5kZWZpbmVkL2csICcnKSkpKSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHIpKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRCeUlkKGNvbnRyb2xsZXI6IGFueSwgaWQ6IG51bWJlcik6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgaWQudG9TdHJpbmcoKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHBvc3ROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgcG9zdE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIHBvc3ROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSwgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQobW9kZWwpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyRGVmYXVsdCgpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHIpKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwb3N0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgcG9zdChjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgcG9zdChjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCksIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSwgZmFsc2UpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWxldGUoY29udHJvbGxlcjogYW55LCBpZDogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPlxyXG4gICAgcHVibGljIGRlbGV0ZShjb250cm9sbGVyOiBhbnksIGlkOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZGVsZXRlKGNvbnRyb2xsZXI6IGFueSwgaWQ6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIGlmIChpZCA9PSB1bmRlZmluZWQgfHwgaWQgPT0gbnVsbClcclxuICAgICAgICAgICAgYWxlcnQoJ0lkIG7Do28gaW5mb3JtYWRvJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5kZWxldGUodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpICsgXCI/XCIgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQoXCJpZD1cIiArIGlkLnRvU3RyaW5nKCkpKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZUJ5TW9kZWwoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPlxyXG4gICAgcHVibGljIGRlbGV0ZUJ5TW9kZWwoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGRlbGV0ZUJ5TW9kZWwoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgbGV0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksXHJcbiAgICAgICAgICAgIGJvZHk6IHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAuZGVsZXRlKHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSwgaHR0cE9wdGlvbnMpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVlc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55W10sIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD5cclxuICAgIHB1YmxpYyByZXF1ZXN0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueVtdLCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyByZXF1ZXN0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueVtdLCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtb2RlbC5sZW5ndGg7IGluZGV4KyspXHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChtb2RlbFtpbmRleF0ubmFtZSwgbW9kZWxbaW5kZXhdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLnJlcXVlc3QoJ1BPU1QnLCB0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyAocGFyYW0gPT0gbnVsbCA/ICcnIDogKCc/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdChwYXJhbSkpKSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJUb2tlbigpLCBib2R5OiBmb3JtRGF0YSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAociA9PiBuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbCh0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihyKSkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVycm9ySGFuZGxpbmcoZTogSHR0cEVycm9yUmVzcG9uc2UsIHJlZGlyZWN0OiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGVJbnB1dDxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcbiAgICAgICAgaWYgKGUuc3RhdHVzID09IDQwMSkgXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAnLyMvbG9naW4nO1xyXG4gICAgICAgIGVsc2UgaWYgKHJlZGlyZWN0KSBcclxuICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9ICcvIy81MDAnO1xyXG5cclxuICAgICAgICBsZXQgbWVzc2FnZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KGUubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKG51bGwsIGZhbHNlLCBtZXNzYWdlcykpO1xyXG4gICAgfVxyXG59Il19
@@ -668,7 +668,7 @@ class InfoDataService {
668
668
  if (id == undefined || id == null)
669
669
  alert('Id não informado');
670
670
  return this._http
671
- .delete(this.getAPIUrl(controller) + (method || '').toLowerCase() + "?" + this._utilities.jsonToEncrypt("id=" + id.toString()), { headers: this.getHeaderToken(), responseType: 'text' })
671
+ .delete(this.getAPIUrl(controller) + (method || '').toLowerCase() + "?" + encodeURIComponent(this._utilities.jsonToEncrypt("id=" + id.toString())), { headers: this.getHeaderToken(), responseType: 'text' })
672
672
  .pipe(map(r => new InfoDataAccessModel(this._utilities.decryptToJson(r))), catchError((e) => this.errorHandling(e)));
673
673
  }
674
674
  deleteByModel(controller, model, method) {
@@ -685,7 +685,7 @@ class InfoDataService {
685
685
  for (let index = 0; index < model.length; index++)
686
686
  formData.append(model[index].name, model[index]);
687
687
  return this._http
688
- .request('POST', this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToEncrypt(param))), { headers: this.getHeaderToken(), body: formData, responseType: 'text' })
688
+ .request('POST', this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + encodeURIComponent(this._utilities.jsonToEncrypt(param)))), { headers: this.getHeaderToken(), body: formData, responseType: 'text' })
689
689
  .pipe(map(r => new InfoDataAccessModel(this._utilities.decryptToJson(r))), catchError((e) => this.errorHandling(e)));
690
690
  }
691
691
  errorHandling(e, redirect = true) {
@@ -1225,7 +1225,7 @@ class InfoAuthenticationService {
1225
1225
  }
1226
1226
  getPermissions(url, logAtividade = false) {
1227
1227
  return this._http
1228
- .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/getpermissao?' + this._utilities.jsonToEncrypt('url=' + url + '&logatividade=' + logAtividade.toString()), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
1228
+ .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/getpermissao?' + encodeURIComponent(this._utilities.jsonToEncrypt('url=' + url + '&logatividade=' + logAtividade.toString())), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
1229
1229
  .pipe(map((rs) => {
1230
1230
  var r = this._utilities.decryptToJson(rs);
1231
1231
  return new InfoLoginModel(r.Success, r.Messages, r.Data);
@@ -1315,7 +1315,7 @@ class InfoAuthenticationService {
1315
1315
  }
1316
1316
  validaSessao(url) {
1317
1317
  return this._http
1318
- .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/validasessao?' + this._utilities.jsonToEncrypt('url=' + url), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
1318
+ .get(this._plataforma.Config.webapiUrl + 'centrocontrole/usuario/validasessao?' + encodeURIComponent(this._utilities.jsonToEncrypt('url=' + url)), { headers: this._dataService.getHeaderToken(), responseType: 'text' })
1319
1319
  .pipe(map((rs) => {
1320
1320
  var r = this._utilities.decryptToJson(rs);
1321
1321
  return new InfoLoginModel(r === true, '', r);