@sumaris-net/ngx-components 1.2.1 → 1.2.2

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.
@@ -175,7 +175,7 @@ export class PlatformService extends StartableService {
175
175
  let location$ = this._downloadingJobs.get(request.uri);
176
176
  if (location$)
177
177
  return location$;
178
- request = Object.assign({ visibleInDownloadsUi: true, notificationVisibility: NotificationVisibility.VisibleNotifyCompleted, title: request.title || request.filename }, request);
178
+ request = Object.assign(Object.assign({ visibleInDownloadsUi: true, notificationVisibility: NotificationVisibility.VisibleNotifyCompleted, title: request.title || request.filename }, request), { destinationInExternalFilesDir: Object.assign({ dirType: 'Downloads', subPath: request.filename || request.title || '' }, request.destinationInExternalFilesDir) });
179
179
  console.debug('[platform] Downloading, using request: ' + JSON.stringify(request));
180
180
  // Start download
181
181
  location$ = from(this.downloader.download(request));
@@ -402,4 +402,4 @@ PlatformService.ctorParameters = () => [
402
402
  { type: InAppBrowser, decorators: [{ type: Optional }] },
403
403
  { type: Downloader, decorators: [{ type: Optional }] }
404
404
  ];
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQWdCLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLElBQUksV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDakcsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFtQixNQUFN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LGNBQWM7WUFrQjdCLGNBQWM7WUFJZCxhQUFhO1lBaEJiLFlBQVk7WUFNWixPQUFPO1lBTFAsYUFBYTs0Q0FtRGhCLE1BQU0sU0FBQyxXQUFXO1lBdkRmLFNBQVMsdUJBd0RaLFFBQVE7WUF2REwsUUFBUSx1QkF3RFgsUUFBUTtZQTFETCxZQUFZLHVCQTJEZixRQUFRO1lBbkRMLFlBQVksdUJBb0RmLFFBQVE7WUFyQ0wsVUFBVSx1QkFzQ2IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtLCBUb2FzdENvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QXV0aFRva2VuVHlwZSwgTmV0d29ya1NlcnZpY2V9IGZyb20gJy4vbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7UGxhdGZvcm1zfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQge1NwbGFzaFNjcmVlbn0gZnJvbSAnQGlvbmljLW5hdGl2ZS9zcGxhc2gtc2NyZWVuL25neCc7XG5pbXBvcnQge1N0YXR1c0Jhcn0gZnJvbSAnQGlvbmljLW5hdGl2ZS9zdGF0dXMtYmFyL25neCc7XG5pbXBvcnQge0tleWJvYXJkfSBmcm9tICdAaW9uaWMtbmF0aXZlL2tleWJvYXJkL25neCc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtDYWNoZVNlcnZpY2V9IGZyb20gJ2lvbmljLWNhY2hlJztcbmltcG9ydCB7QXVkaW9Qcm92aWRlcn0gZnJvbSAnLi4vLi4vc2hhcmVkL2F1ZGlvL2F1ZGlvJztcbmltcG9ydCB7UGxhdGZvcm0gYXMgQ2RrUGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5cbmltcG9ydCB7SW5BcHBCcm93c2VyfSBmcm9tICdAaW9uaWMtbmF0aXZlL2luLWFwcC1icm93c2VyL25neCc7XG5pbXBvcnQge2lzRW1wdHlBcnJheSwgaXNOaWwsIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIHRvQm9vbGVhbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge1N0b3JhZ2V9IGZyb20gJ0Bpb25pYy9zdG9yYWdlJztcbmltcG9ydCB7RW50aXRpZXNTdG9yYWdlfSBmcm9tICcuL3N0b3JhZ2UvZW50aXRpZXMtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7U3RvcmFnZVV0aWxzfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RvcmFnZS51dGlscyc7XG5pbXBvcnQge1Nob3dUb2FzdE9wdGlvbnMsIFRvYXN0c30gZnJvbSAnLi4vLi4vc2hhcmVkL3RvYXN0cyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0ICogYXMgbW9tZW50SW1wb3J0ZWQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7ZnJvbSwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNraXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFTlZJUk9OTUVOVH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4vY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7TW9tZW50RGF0ZUFkYXB0ZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7RG93bmxvYWRlciwgRG93bmxvYWRSZXF1ZXN0LCBOb3RpZmljYXRpb25WaXNpYmlsaXR5fSBmcm9tICdAaW9uaWMtbmF0aXZlL2Rvd25sb2FkZXIvbmd4JztcbmltcG9ydCB7U3RhcnRhYmxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcblxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtU2VydmljZSBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgX21vYmlsZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfY29yZG92YTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfYW5kcm9pZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZG93bmxvYWRpbmdKb2JzOiBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+ID0gbmV3IE1hcCgpO1xuXG4gIHRvdWNoVWk6IGJvb2xlYW47XG5cbiAgZ2V0IG1vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwodGhpcy5fbW9iaWxlKSA/IHRoaXMuX21vYmlsZSA6IHRoaXMucGxhdGZvcm0uaXMoJ21vYmlsZScpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBjZGtQbGF0Zm9ybTogQ2RrUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVBZGFwdGVyOiBNb21lbnREYXRlQWRhcHRlcixcbiAgICBwcml2YXRlIGVudGl0aWVzU3RvcmFnZTogRW50aXRpZXNTdG9yYWdlLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNhY2hlOiBDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlLFxuICAgIHByaXZhdGUgYXVkaW9Qcm92aWRlcjogQXVkaW9Qcm92aWRlcixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzdGF0dXNCYXI6IFN0YXR1c0JhcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGtleWJvYXJkOiBLZXlib2FyZCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHNwbGFzaFNjcmVlbjogU3BsYXNoU2NyZWVuLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYnJvd3NlcjogSW5BcHBCcm93c2VyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZG93bmxvYWRlcjogRG93bmxvYWRlcixcbiAgKSB7XG4gICAgc3VwZXIocGxhdGZvcm0pO1xuXG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1twbGF0Zm9ybV0gQ3JlYXRpbmcgc2VydmljZScpO1xuICB9XG5cbiAgaXMocGxhdGZvcm1OYW1lOiBQbGF0Zm9ybXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5pcyhwbGF0Zm9ybU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNheSBpZiBvcGVuZWQgaGFzIGJlZW4gb3BlbmVkIGZyb20gYSB3ZWIgYnJvd3NlciAoYW5kIE5PVCBpbnNpZGUgYW4gQW5kcm9pZCBvciBpT3MgQXBwKS5cbiAgICogVGhpcyBpcyB1c2VkIHRvIGtub3duIGlmIHRoZXJlIGlzIGNvcmRvdmEgZmVhdHVyZXNcbiAgICovXG4gIGlzV2ViT3JEZXNrdG9wKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxlJykgfHwgdGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxld2ViJyk7XG4gIH1cblxuICBpc0FuZHJvaWRDb3Jkb3ZhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbmRyb2lkICYmIHRoaXMuX2NvcmRvdmE7XG4gIH1cblxuICBnZXQgY2FuRG93bmxvYWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTm90TmlsKHRoaXMuZG93bmxvYWRlcik7XG4gIH1cblxuICB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLndpZHRoKCk7XG4gIH1cblxuICBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5oZWlnaHQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuYWNjb3VudFNlcnZpY2UudG9rZW5UeXBlID0gdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBTdGFydGluZyBwbGF0Zm9ybS4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX21vYmlsZSA9IHRoaXMucGxhdGZvcm0uaXMoJ21vYmlsZScpO1xuICAgICAgdGhpcy5fY29yZG92YSA9IHRoaXMucGxhdGZvcm0uaXMoJ2NvcmRvdmEnKTtcbiAgICAgIHRoaXMuX2FuZHJvaWQgPSB0aGlzLnBsYXRmb3JtLmlzKCdhbmRyb2lkJyk7XG5cbiAgICAgIHRoaXMuY29uZmlndXJlQ29yZG92YVBsdWdpbnModGhpcy5fbW9iaWxlKTtcbiAgICAgIHRoaXMudG91Y2hVaSA9IHRoaXMuX21vYmlsZSB8fCB0aGlzLnBsYXRmb3JtLmlzKCd0YWJsZXQnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdwaGFibGV0Jyk7XG5cbiAgICAgIC8vIEZvcmNlIG1vYmlsZSBpbiBzZXR0aW5nc1xuICAgICAgaWYgKHRoaXMuX21vYmlsZSkge1xuICAgICAgICB0aGlzLnNldHRpbmdzLm1vYmlsZSA9IHRoaXMuX21vYmlsZTtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50b3VjaFVpID0gdGhpcy50b3VjaFVpO1xuICAgICAgfVxuXG4gICAgICAvLyBDb25maWd1cmUgdHJhbnNsYXRpb25cbiAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJlVHJhbnNsYXRlKCk7XG5cbiAgICAgIC8vIENvbmZpZ3VyZSBzdG9yYWdlXG4gICAgICBjb25zdCBmb3JhZ2UgPSBhd2FpdCB0aGlzLnN0b3JhZ2VSZWFkeSgpO1xuICAgICAgYXdhaXQgdGhpcy5taWdyYXRlU3RvcmFnZShmb3JhZ2UpO1xuXG4gICAgICAvLyBTdGFydCByb290IHNlcnZpY2VzXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMuZW50aXRpZXNTdG9yYWdlLnJlYWR5KCksXG4gICAgICAgIHRoaXMuY2FjaGUucmVhZHkoKS50aGVuKCgpID0+IHRoaXMuY29uZmlndXJlQ2FjaGUoKSksXG4gICAgICAgIHRoaXMuc2V0dGluZ3MucmVhZHkoKSxcbiAgICAgICAgdGhpcy5uZXR3b3JrU2VydmljZS5yZWFkeSgpLFxuICAgICAgICB0aGlzLmF1ZGlvUHJvdmlkZXIucmVhZHkoKVxuICAgICAgXSk7XG5cbiAgICAgIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBTdGFydGluZyBwbGF0Zm9ybSBbT0tdIHttb2JpbGU6ICR7dGhpcy5fbW9iaWxlfSwgdG91Y2hVaTogJHt0aGlzLnRvdWNoVWl9LCBkb3dubG9hZGVyOiAke3RoaXMuY2FuRG93bmxvYWR9fSBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcblxuICAgICAgLy8gVXBkYXRlIGNhY2hlIGNvbmZpZ3VyYXRpb24gd2hlbiBuZXR3b3JrIGNoYW5nZWRcbiAgICAgIHRoaXMubmV0d29ya1NlcnZpY2Uub25OZXR3b3JrU3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShza2lwKDEpKSAvLyBTa2lwIHRoZSBmaXJzdCBldmVudCAoYmVoYXZpb3Igc3ViamVjdCBzZW5kIGV2ZW50IGltbWVkaWF0ZWx5KVxuICAgICAgICAuc3Vic2NyaWJlKHR5cGUgPT4gdGhpcy5jb25maWd1cmVDYWNoZSh0eXBlICE9PSAnbm9uZScpKTtcblxuICAgICAgLy8gVXBkYXRlIGF1dGhlbnRpY2F0aW9uIHR5cGVcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWdcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKGNvbmZpZyA9PiBjb25maWc/LmdldFByb3BlcnR5KENPUkVfQ09ORklHX09QVElPTlMuQVVUSF9UT0tFTl9UWVBFKSBhcyBBdXRoVG9rZW5UeXBlKSxcbiAgICAgICAgICBmaWx0ZXIoaXNOb3ROaWxPckJsYW5rKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh0b2tlblR5cGUgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBVc2luZyBhdXRoIHRva2VuIHR5cGUgeyR7dG9rZW5UeXBlfX1gKTtcbiAgICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLnRva2VuVHlwZSA9IHRva2VuVHlwZTtcbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIEhpZGUgdGhlIHNwbGFzaHNjcmVlbiAoaWYgbW9iaWxlKSAtIGFmdGVyIDFzXG4gICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zcGxhc2hTY3JlZW4/LmhpZGUoKTtcblxuICAgICAgICAgIC8vIFBsYXkgc3RhcnR1cCBzb3VuZFxuICAgICAgICAgIHRoaXMuYXVkaW9Qcm92aWRlci5wbGF5U3RhcnR1cFNvdW5kKCk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgfVxuXG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIE1hbmFnZSBzdGFydHVwIGVycm9yXG4gICAgICByZXR1cm4gdGhpcy5vblN0YXJ0dXBFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4odXJsOiBzdHJpbmcsIHRhcmdldD86IHN0cmluZywgZmVhdHVyZXM/OiBzdHJpbmcsIHJlcGxhY2U/OiBib29sZWFuKSB7XG4gICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIE9wZW5pbmcgbGluazogJHt1cmx9YCk7XG4gICAgaWYgKHRoaXMuYnJvd3NlciAmJiB0aGlzLl9tb2JpbGUpIHtcbiAgICAgIHRoaXMuYnJvd3Nlci5jcmVhdGUodXJsLCB0YXJnZXQsIGZlYXR1cmVzKS5zaG93KCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgd2luZG93Lm9wZW4odXJsLCB0YXJnZXQsIGZlYXR1cmVzLCByZXBsYWNlKTtcbiAgICB9XG4gIH1cblxuICBnZXREb3dubG9hZGluZ0pvYih1cmk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25sb2FkaW5nSm9icy5nZXQodXJpKTtcbiAgfVxuXG4gIGRvd25sb2FkKHJlcXVlc3Q6IHt1cmk6IHN0cmluZzsgZmlsZW5hbWU/OiBzdHJpbmcgfSAmIFBhcnRpYWw8RG93bmxvYWRSZXF1ZXN0PiApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICghcmVxdWVzdCB8fCAhcmVxdWVzdC51cmkpIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBhcmd1bWVudCBcXCdyZXF1ZXN0XFwnIG9yIFxcJ3JlcXVlc3QudXJpXFwnJyk7XG5cbiAgICBpZiAodGhpcy5fYW5kcm9pZCAmJiB0aGlzLmRvd25sb2FkZXIpIHtcblxuICAgICAgLy8gQ2hlY2sgaWYgbm90IGFscmVhZHkgZG93bmxvYWRpbmcgZmlsZVxuICAgICAgbGV0IGxvY2F0aW9uJCA9IHRoaXMuX2Rvd25sb2FkaW5nSm9icy5nZXQocmVxdWVzdC51cmkpO1xuICAgICAgaWYgKGxvY2F0aW9uJCkgcmV0dXJuIGxvY2F0aW9uJDtcblxuICAgICAgcmVxdWVzdCA9IHtcbiAgICAgICAgdmlzaWJsZUluRG93bmxvYWRzVWk6IHRydWUsXG4gICAgICAgIG5vdGlmaWNhdGlvblZpc2liaWxpdHk6IE5vdGlmaWNhdGlvblZpc2liaWxpdHkuVmlzaWJsZU5vdGlmeUNvbXBsZXRlZCxcbiAgICAgICAgdGl0bGU6IHJlcXVlc3QudGl0bGUgfHwgcmVxdWVzdC5maWxlbmFtZSxcbiAgICAgICAgLi4ucmVxdWVzdCxcbiAgICAgICAgLypkZXN0aW5hdGlvbkluRXh0ZXJuYWxGaWxlc0Rpcjoge1xuICAgICAgICAgIGRpclR5cGU6ICdEb3dubG9hZHMnLFxuICAgICAgICAgIHN1YlBhdGg6IHJlcXVlc3QuZmlsZW5hbWUgfHwgcmVxdWVzdC50aXRsZSB8fCAnJyxcbiAgICAgICAgICAuLi5yZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbEZpbGVzRGlyXG4gICAgICAgIH0qL1xuICAgICAgfTtcblxuICAgICAgY29uc29sZS5kZWJ1ZygnW3BsYXRmb3JtXSBEb3dubG9hZGluZywgdXNpbmcgcmVxdWVzdDogJyArIEpTT04uc3RyaW5naWZ5KHJlcXVlc3QpKTtcblxuICAgICAgLy8gU3RhcnQgZG93bmxvYWRcbiAgICAgIGxvY2F0aW9uJCA9IGZyb20odGhpcy5kb3dubG9hZGVyLmRvd25sb2FkKHJlcXVlc3QpKTtcblxuICAgICAgLy8gUmVtZW1iZXIgdGhpcyByZXF1ZXN0IHVyaVxuICAgICAgdGhpcy5fZG93bmxvYWRpbmdKb2JzLnNldChyZXF1ZXN0LnVyaSwgbG9jYXRpb24kKTtcbiAgICAgIHJldHVybiBsb2NhdGlvbiRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKGxvY2F0aW9uID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBGaWxlIHN1Y2Nlc3NmdWxseSBkb3dubG9hZGVkIGF0OicgKyBsb2NhdGlvbik7XG4gICAgICAgICAgICAvLyBGb3JnZXQgdGhlIHJlcXVlc3RcbiAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkaW5nSm9icy5kZWxldGUocmVxdWVzdC51cmkpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1twbGF0Zm9ybV0gVW5hYmxlIHRvIGRvd25sb2FkOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpKTtcbiAgICAgICAgICAgIC8vIEZvcmdldCB0aGUgcmVxdWVzdFxuICAgICAgICAgICAgdGhpcy5fZG93bmxvYWRpbmdKb2JzLmRlbGV0ZShyZXF1ZXN0LnVyaSk7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayAoaWYgbm90IEFuZHJvaWQgYW5kIENvcmRvdmEpOiBvcGVuaW5nIHRoZSBVUkkgdXNpbmcgdGhlIGJyb3dzZXJcbiAgICAvLyBUT0RPOiBmaW5kIGEgd2F5IHRvIGRvd25sb2FkIHVuZGVyIGlPUyAoc2VlIGh0dHBzOi8vd3d3LmMtc2hhcnBjb3JuZXIuY29tL2FydGljbGUvaG93LXRvLWRvd25sb2FkLWEtZmlsZS11c2luZy1maWxlLXRyYW5zZmVyLXBsdWdpbi1pbi1pb25pYy0zLylcbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignW3BsYXRmb3JtXSBDYW5ub3QgdXNlIEFuZHJvaWQgZG93bmxvYWRlcjogdXNpbmcgYnJvd3NlciBvcGVuKCknKTtcbiAgICAgIHRoaXMub3BlbihyZXF1ZXN0LnVyaSwgJ19zeXN0ZW0nLCAnbG9jYXRpb249bm8nLCB0cnVlKTtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUNvcmRvdmFQbHVnaW5zKG1vYmlsZTogYm9vbGVhbikge1xuICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBDb25maWd1cmluZyBDb3Jkb3ZhIHBsdWdpbnMuLi4nKTtcblxuICAgIGlmICh0aGlzLnN0YXR1c0Jhcikge1xuICAgICAgdGhpcy5zdGF0dXNCYXIuc3R5bGVEZWZhdWx0KCk7XG4gICAgICB0aGlzLnN0YXR1c0Jhci5vdmVybGF5c1dlYlZpZXcoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy5rZXlib2FyZCkge1xuICAgICAgdGhpcy5rZXlib2FyZC5oaWRlRm9ybUFjY2Vzc29yeUJhcih0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSB0byB1c2UgSW5BcHBCcm93c2VyIGluc3RlYWQgb2YgZGVmYXVsdCB3aW5kb3cub3BlbigpXG4gICAgaWYgKHRoaXMuYnJvd3Nlcikge1xuICAgICAgLy8gRklYTUU6IHRoaXMgY3JlYXRlIGEgaW5maW5pdGUgbG9vcCAoZS5nLiB3aGVuIGRvd25sb2FkaW5nIGFuIGV4dHJhY3Rpb24gZmlsZSlcbiAgICAgIC8vIHdpbmRvdy5vcGVuID0gKHVybD86IHN0cmluZywgdGFyZ2V0Pzogc3RyaW5nLCBmZWF0dXJlcz86IHN0cmluZywgcmVwbGFjZT86IGJvb2xlYW4pID0+IHtcbiAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhcIltwbGF0Zm9ybV0gQ2FsbCB0byB3aW5kb3cub3BlbigpIHJlZGlyZWN0ZWQgdG8gSW5BcHBCcm93c2VyLm9wZW4oKVwiKTtcbiAgICAgIC8vICAgdGhpcy5icm93c2VyLmNyZWF0ZSh1cmwsIHRhcmdldCwgZmVhdHVyZXMpLnNob3coKTtcbiAgICAgIC8vICAgcmV0dXJuIHdpbmRvdztcbiAgICAgIC8vIH07XG4gICAgfVxuICB9XG5cblxuICBwcm90ZWN0ZWQgY29uZmlndXJlVHJhbnNsYXRlKCkge1xuICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBDb25maWd1cmluZyBpMThuIC4uLicpO1xuXG4gICAgLy8gdGhpcyBsYW5ndWFnZSB3aWxsIGJlIHVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIGEgdHJhbnNsYXRpb24gaXNuJ3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyh0aGlzLmVudmlyb25tZW50LmRlZmF1bHRMb2NhbGUpO1xuXG4gICAgLy8gV2hlbiBsb2NhbGUgY2hhbmdlcywgYXBwbHkgdG8gZGF0ZSBhZGFwdGVyXG4gICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQgJiYgZXZlbnQubGFuZykge1xuXG4gICAgICAgIC8vIGZvcmNlICdlbicgYXMgJ2VuX0dCJ1xuICAgICAgICBpZiAoZXZlbnQubGFuZyA9PT0gJ2VuJykge1xuICAgICAgICAgIGV2ZW50LmxhbmcgPSAnZW5fR0InO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29uZmlnIG1vbWVudCBsaWJcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtb21lbnQubG9jYWxlKGV2ZW50LmxhbmcpO1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1twbGF0Zm9ybV0gVXNlIGxvY2FsZSB7JyArIGV2ZW50LmxhbmcgKyAnfScpO1xuICAgICAgICB9XG4gICAgICAgICAgLy8gSWYgZXJyb3IsIGZhbGxiYWNrIHRvIGVuXG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBtb21lbnQubG9jYWxlKCdlbicpO1xuICAgICAgICAgIGNvbnNvbGUud2FybignW3BsYXRmb3JtXSBVbmtub3duIGxvY2FsIGZvciBtb21lbnQgbGliLiBVc2luZyBkZWZhdWx0IFtlbl0nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbmZpZyBkYXRlIGFkYXB0ZXJcbiAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5zZXRMb2NhbGUobW9tZW50LmxvY2FsZSgpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2V0dGluZ3Mub25DaGFuZ2Uuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sb2NhbGUgJiYgZGF0YS5sb2NhbGUgIT09IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShkYXRhLmxvY2FsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVc2UgYWNjb3VudCdzIHNldHRpbmdzLCAobGlrZSBsb2NhbGUpLCB3aGVuIGFjY291bnQgaW5oZXJpdGFuY2UgZW5hYmxlZFxuICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbi5zdWJzY3JpYmUoYWNjb3VudCA9PiB7XG4gICAgICBpZiAoYWNjb3VudC5zZXR0aW5ncyAmJiB0aGlzLnNldHRpbmdzLnNldHRpbmdzLmFjY291bnRJbmhlcml0YW5jZSkge1xuICAgICAgICBjb25zdCBhY2NvdW50U2V0dGluZ3MgPSBhY2NvdW50LnNldHRpbmdzLmFzTG9jYWxTZXR0aW5ncygpO1xuICAgICAgICB0aGlzLnNldHRpbmdzLmFwcGx5KGFjY291bnRTZXR0aW5ncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uZmlndXJlQ2FjaGUob25saW5lPzogYm9vbGVhbikge1xuICAgIG9ubGluZSA9IHRvQm9vbGVhbihvbmxpbmUsIHRoaXMuY2FjaGUuaXNPbmxpbmUoKSk7XG4gICAgY29uc3QgY2FjaGVUVEwgPSBvbmxpbmUgPyAzNjAwIC8qIDFoICovIDogMzYwMCAqIDI0ICogMzA7IC8qIDEgbW9udGggKi9cbiAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gQ29uZmlndXJpbmcgY2FjaGUgW09LXSB7b25saW5lOiAke29ubGluZX0sIHRpbWVUb0xpdmU6ICR7Y2FjaGVUVEwgLyAzNjAwfWgsIG9mZmxpbmVJbnZhbGlkYXRlOiBmYWxzZX1gKTtcbiAgICB0aGlzLmNhY2hlLnNldERlZmF1bHRUVEwoY2FjaGVUVEwpO1xuICAgIHRoaXMuY2FjaGUuc2V0T2ZmbGluZUludmFsaWRhdGUoZmFsc2UpOyAvLyBEbyBub3QgaW52YWxpZGF0ZSBjYWNoZSB3aGVuIG9mZmxpbmVcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzdG9yYWdlUmVhZHkoKTogUHJvbWlzZTxMb2NhbEZvcmFnZT4ge1xuICAgIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBTdGFydGluZyBzdG9yYWdlLi4uYCk7XG4gICAgY29uc3QgZm9yYWdlID0gYXdhaXQgdGhpcy5zdG9yYWdlLnJlYWR5KCk7XG4gICAgY29uc3QgZHJpdmVyID0gZm9yYWdlLmRyaXZlcigpO1xuXG4gICAgaWYgKGlzTmlsKGRyaXZlcikpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1twbGF0Zm9ybV0gTk8gRFJJVkVSIERFRklORUQgSU4gU1RPUkFHRS4gTG9jYWwgc3RvcmFnZSBjYW5ub3QgYmUgdXNlZCAhJyk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZvcmFnZSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIFN0YXJ0aW5nIHN0b3JhZ2UgW09LXSB7bmFtZTogJyR7Zm9yYWdlLmNvbmZpZygpLm5hbWV9JywgZHJpdmVyOiAnJHtmb3JhZ2UuZHJpdmVyKCl9Jywgc2l6ZTogJHtmb3JhZ2UuY29uZmlnKCkuc2l6ZX1gKTtcbiAgICBjb25zb2xlLmRlYnVnKGBbcGxhdGZvcm1dIFN0b3JhZ2Ugc3VwcG9ydHM6IHske2ZvcmFnZS5XRUJTUUx9OiAke2ZvcmFnZS5zdXBwb3J0cyhmb3JhZ2UuV0VCU1FMKX0sICR7Zm9yYWdlLklOREVYRUREQn06ICR7Zm9yYWdlLnN1cHBvcnRzKGZvcmFnZS5JTkRFWEVEREIpfSwgJHtmb3JhZ2UuTE9DQUxTVE9SQUdFfTogJHtmb3JhZ2Uuc3VwcG9ydHMoZm9yYWdlLkxPQ0FMU1RPUkFHRSl9fWApO1xuXG4gICAgcmV0dXJuIGZvcmFnZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBtaWdyYXRlU3RvcmFnZShmb3JhZ2U6IExvY2FsRm9yYWdlKSB7XG4gICAgY29uc3QgY2FuTWlncmF0ZSA9IGZvcmFnZSAmJlxuICAgICAgKChmb3JhZ2UuZHJpdmVyKCkgPT09ICdjb3Jkb3ZhU1FMaXRlRHJpdmVyJyAmJiAoZm9yYWdlLnN1cHBvcnRzKGZvcmFnZS5JTkRFWEVEREIpIHx8IGZvcmFnZS5zdXBwb3J0cyhmb3JhZ2UuV0VCU1FMKSkpIHx8XG4gICAgICAgKGZvcmFnZS5kcml2ZXIoKSA9PT0gZm9yYWdlLldFQlNRTCAmJiBmb3JhZ2Uuc3VwcG9ydHMoZm9yYWdlLklOREVYRUREQikpKTtcblxuICAgIGlmICghY2FuTWlncmF0ZSkgcmV0dXJuOyAvLyBTa2lwXG5cbiAgICBjb25zdCBvbGRGb3JhZ2UgPSBmb3JhZ2UuY3JlYXRlSW5zdGFuY2Uoe1xuICAgICAgbmFtZTogZm9yYWdlLmNvbmZpZygpLm5hbWUsXG4gICAgICBzdG9yZU5hbWU6IGZvcmFnZS5jb25maWcoKS5zdG9yZU5hbWUsXG4gICAgICBkcml2ZXI6IFtmb3JhZ2UuSU5ERVhFRERCLCBmb3JhZ2UuV0VCU1FMXVxuICAgIH0pO1xuXG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IG9sZEZvcmFnZS5rZXlzKCk7XG5cbiAgICAvLyBObyBkYXRhIGluIHRoZSBvZGwgc3RvcmFnZTogc2tpcCBtaWdyYXRpb25cbiAgICBpZiAoaXNFbXB0eUFycmF5KGtleXMpKSB7XG4gICAgICAvLyBEcm9wIHRoZSBvbGQgaW5zdGFuY2UgKG5vdCBuZWVkIGFueW1vcmUpXG4gICAgICBjb25zb2xlLmRlYnVnKGBbcGxhdGZvcm1dIE9sZCBzdG9yYWdlIGlzIGVtcHR5OiBkcm9wcGluZyB1bnVzZWQgaW5zdGFuY2Uge25hbWU6ICcke2ZvcmFnZS5jb25maWcoKS5uYW1lfScsIGRyaXZlcjogJyR7b2xkRm9yYWdlLmRyaXZlcigpfSd9YCk7XG4gICAgICBhd2FpdCBvbGRGb3JhZ2UuZHJvcEluc3RhbmNlKCk7XG4gICAgfVxuICAgIC8vIElGIHNvbWUgZGF0YSBzdG9yZWQgaW4gdGhlIE9MRCBzdG9yYWdlOiBzdGFydCBtaWdyYXRpb25cbiAgICBlbHNlIHtcblxuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBTdGFydGluZyBzdG9yYWdlIG1pZ3JhdGlvbi4uLmApO1xuXG4gICAgICBjb25zdCB0b2FzdCA9IGF3YWl0IHRoaXMuc2hvd1RvYXN0KHttZXNzYWdlOiAnSU5GTy5EQVRBX01JR1JBVElPTl9TVEFSVEVEJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMDB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFN0b3JhZ2VVdGlscy5jb3B5KG9sZEZvcmFnZSwgZm9yYWdlLCB7a2V5cywgZGVsZXRlQWZ0ZXJDb3B5OiBmYWxzZX0pO1xuXG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIG5vdztcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2FzdC5kaXNtaXNzKCksICBNYXRoLm1heCgyMDAwIC0gZHVyYXRpb24sIDApKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zaG93VG9hc3Qoe21lc3NhZ2U6ICdJTkZPLkRBVEFfTUlHUkFUSU9OX1NVQ0NFRUQnLFxuICAgICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnW3BsYXRmb3JtXSBTdGFydGluZyBzdG9yYWdlIG1pZ3JhdGlvbiBbT0tdJyk7XG5cbiAgICAgICAgLy8gRHJvcCB0aGUgb2xkIGluc3RhbmNlXG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBEcm9wIG9sZCBzdG9yYWdlIHtuYW1lOiAnJHtmb3JhZ2UuY29uZmlnKCkubmFtZX0nLCBkcml2ZXI6ICcke29sZEZvcmFnZS5kcml2ZXIoKX0nfWApO1xuICAgICAgICBhd2FpdCBvbGRGb3JhZ2UuZHJvcEluc3RhbmNlKCk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciwgZXJyKTtcbiAgICAgICAgYXdhaXQgdG9hc3QuZGlzbWlzcygpO1xuICAgICAgICBhd2FpdCB0aGlzLnNob3dUb2FzdCh7bWVzc2FnZTogJ0VSUk9SLkRBVEFfTUlHUkFUSU9OX0ZBSUxFRCcsXG4gICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dUb2FzdChvcHRzOiBTaG93VG9hc3RPcHRpb25zKTogUHJvbWlzZTxIVE1MSW9uVG9hc3RFbGVtZW50PiB7XG4gICAgaWYgKCF0aGlzLnRvYXN0Q29udHJvbGxlcikgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHRvYXN0Q29udHJvbGxlciBpbiBjb21wb25lbnRcXCdzIGNvbnN0cnVjdG9yJyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIG9uV2lsbFByZXNlbnQ6ICh0KSA9PiByZXNvbHZlKHQpXG4gICAgICB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25TdGFydHVwRXJyb3IoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcignW3BsYXRmb3JtXSBGYWlsZWQgc3RhcnRpbmcgdGhlIHBsYXRmb3JtISAnLCBlcnIpO1xuICAgIGxldCBtZXNzYWdlID0gZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycjtcbiAgICBjb25zdCBkZXRhaWxzTWVzc2FnZSA9IGVyciAmJiAoZXJyLmRldGFpbHMgJiYgZXJyLmRldGFpbHMubWVzc2FnZSB8fCBlcnIuZGV0YWlscyk7XG4gICAgLy8gU2V0IHNwZWNpZmljIGVycm9yIHdoZW4gRmlyZWZveCBpcyBpbiBwcml2YXRlIG1vZGUgb3IgaGlzdG9yeSBuZXZlciByZW1lbWJlcmVkIChzZWUgTWFudGlzIElmcmVtZXIgIzU2NDQxKVxuICAgIGlmIChlcnIuY29kZSA9PT0gMTEgJiYgdGhpcy5jZGtQbGF0Zm9ybS5GSVJFRk9YKSB7XG4gICAgICBtZXNzYWdlID0gJ0VSUk9SLkZJUkVGT1hfTk9fU1RPUkFHRSc7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zbGF0ZSkge1xuICAgICAgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRlLmdldChtZXNzYWdlKS50b1Byb21pc2UoKTtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgIHtjb2RlOiAke2Vyci5jb2RlfX1gO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG1lc3NhZ2UgPSBgRmF0YWwgZXJyb3I6IFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci5cXG5cXG57Y29kZTogJHtlcnIgJiYgZXJyLmNvZGUgfHwgJ251bGwnfSwgbWVzc2FnZTogXCIke21lc3NhZ2V9XCJ9YDtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9hc3RDb250cm9sbGVyKSB7XG4gICAgICBpZiAoZGV0YWlsc01lc3NhZ2UpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgPGJyLz48c21hbGw+JHtkZXRhaWxzTWVzc2FnZX08L3NtYWxsPmA7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNob3dUb2FzdCh7XG4gICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgIGR1cmF0aW9uOiAtMSxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICBtZXNzYWdlXG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAod2luZG93KSB7XG4gICAgICBpZiAoZGV0YWlsc01lc3NhZ2UpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgXFxuXFxue2NhdXNlOiBcIiR7ZGV0YWlsc01lc3NhZ2V9XCJ9YDtcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5hbGVydChtZXNzYWdlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgaWYgKGVyciAmJiBlcnIuZGV0YWlscykgY29uc29sZS5lcnJvcignY2F1c2UnLCBlcnIuZGV0YWlscyk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
405
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQWdCLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLElBQUksV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDakcsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFtQixNQUFN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LFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7WUEvQnhCLFFBQVE7WUFTSSxXQUFXO1lBVGIsZUFBZTtZQWlCekIsZ0JBQWdCO1lBUWhCLGlCQUFpQjtZQVhqQixlQUFlO1lBUmYsb0JBQW9CO1lBTEwsY0FBYztZQWtCN0IsY0FBYztZQUlkLGFBQWE7WUFoQmIsWUFBWTtZQU1aLE9BQU87WUFMUCxhQUFhOzRDQW1EaEIsTUFBTSxTQUFDLFdBQVc7WUF2RGYsU0FBUyx1QkF3RFosUUFBUTtZQXZETCxRQUFRLHVCQXdEWCxRQUFRO1lBMURMLFlBQVksdUJBMkRmLFFBQVE7WUFuREwsWUFBWSx1QkFvRGYsUUFBUTtZQXJDTCxVQUFVLHVCQXNDYixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtBdXRoVG9rZW5UeXBlLCBOZXR3b3JrU2VydmljZX0gZnJvbSAnLi9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtQbGF0Zm9ybXN9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7U3BsYXNoU2NyZWVufSBmcm9tICdAaW9uaWMtbmF0aXZlL3NwbGFzaC1zY3JlZW4vbmd4JztcbmltcG9ydCB7U3RhdHVzQmFyfSBmcm9tICdAaW9uaWMtbmF0aXZlL3N0YXR1cy1iYXIvbmd4JztcbmltcG9ydCB7S2V5Ym9hcmR9IGZyb20gJ0Bpb25pYy1uYXRpdmUva2V5Ym9hcmQvbmd4JztcbmltcG9ydCB7TG9jYWxTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4vbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0NhY2hlU2VydmljZX0gZnJvbSAnaW9uaWMtY2FjaGUnO1xuaW1wb3J0IHtBdWRpb1Byb3ZpZGVyfSBmcm9tICcuLi8uLi9zaGFyZWQvYXVkaW8vYXVkaW8nO1xuaW1wb3J0IHtQbGF0Zm9ybSBhcyBDZGtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcblxuaW1wb3J0IHtJbkFwcEJyb3dzZXJ9IGZyb20gJ0Bpb25pYy1uYXRpdmUvaW4tYXBwLWJyb3dzZXIvbmd4JztcbmltcG9ydCB7aXNFbXB0eUFycmF5LCBpc05pbCwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnQGlvbmljL3N0b3JhZ2UnO1xuaW1wb3J0IHtFbnRpdGllc1N0b3JhZ2V9IGZyb20gJy4vc3RvcmFnZS9lbnRpdGllcy1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtTdG9yYWdlVXRpbHN9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdG9yYWdlLnV0aWxzJztcbmltcG9ydCB7U2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzfSBmcm9tICcuLi8uLi9zaGFyZWQvdG9hc3RzJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtmcm9tLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2tpcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7Q09SRV9DT05GSUdfT1BUSU9OU30gZnJvbSAnLi9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHtNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHtEb3dubG9hZGVyLCBEb3dubG9hZFJlcXVlc3QsIE5vdGlmaWNhdGlvblZpc2liaWxpdHl9IGZyb20gJ0Bpb25pYy1uYXRpdmUvZG93bmxvYWRlci9uZ3gnO1xuaW1wb3J0IHtTdGFydGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1TZXJ2aWNlIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfbW9iaWxlOiBib29sZWFuO1xuICBwcml2YXRlIF9jb3Jkb3ZhOiBib29sZWFuO1xuICBwcml2YXRlIF9hbmRyb2lkOiBib29sZWFuO1xuICBwcml2YXRlIF9kb3dubG9hZGluZ0pvYnM6IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8c3RyaW5nPj4gPSBuZXcgTWFwKCk7XG5cbiAgdG91Y2hVaTogYm9vbGVhbjtcblxuICBnZXQgbW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc05vdE5pbCh0aGlzLl9tb2JpbGUpID8gdGhpcy5fbW9iaWxlIDogdGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxlJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBwcml2YXRlIGNka1BsYXRmb3JtOiBDZGtQbGF0Zm9ybSxcbiAgICBwcml2YXRlIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgIHByaXZhdGUgZW50aXRpZXNTdG9yYWdlOiBFbnRpdGllc1N0b3JhZ2UsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZXR3b3JrU2VydmljZTogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FjaGU6IENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2UsXG4gICAgcHJpdmF0ZSBhdWRpb1Byb3ZpZGVyOiBBdWRpb1Byb3ZpZGVyLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHN0YXR1c0JhcjogU3RhdHVzQmFyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUga2V5Ym9hcmQ6IEtleWJvYXJkLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgc3BsYXNoU2NyZWVuOiBTcGxhc2hTY3JlZW4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBicm93c2VyOiBJbkFwcEJyb3dzZXIsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkb3dubG9hZGVyOiBEb3dubG9hZGVyLFxuICApIHtcbiAgICBzdXBlcihwbGF0Zm9ybSk7XG5cbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW3BsYXRmb3JtXSBDcmVhdGluZyBzZXJ2aWNlJyk7XG4gIH1cblxuICBpcyhwbGF0Zm9ybU5hbWU6IFBsYXRmb3Jtcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLmlzKHBsYXRmb3JtTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F5IGlmIG9wZW5lZCBoYXMgYmVlbiBvcGVuZWQgZnJvbSBhIHdlYiBicm93c2VyIChhbmQgTk9UIGluc2lkZSBhbiBBbmRyb2lkIG9yIGlPcyBBcHApLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8ga25vd24gaWYgdGhlcmUgaXMgY29yZG92YSBmZWF0dXJlc1xuICAgKi9cbiAgaXNXZWJPckRlc2t0b3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnBsYXRmb3JtLmlzKCdtb2JpbGUnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdtb2JpbGV3ZWInKTtcbiAgfVxuXG4gIGlzQW5kcm9pZENvcmRvdmEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FuZHJvaWQgJiYgdGhpcy5fY29yZG92YTtcbiAgfVxuXG4gIGdldCBjYW5Eb3dubG9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwodGhpcy5kb3dubG9hZGVyKTtcbiAgfVxuXG4gIHdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm0ud2lkdGgoKTtcbiAgfVxuXG4gIGhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLmhlaWdodCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgdGhpcy5hY2NvdW50U2VydmljZS50b2tlblR5cGUgPSB1bmRlZmluZWQ7XG4gICAgY29uc29sZS5pbmZvKCdbcGxhdGZvcm1dIFN0YXJ0aW5nIHBsYXRmb3JtLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fbW9iaWxlID0gdGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxlJyk7XG4gICAgICB0aGlzLl9jb3Jkb3ZhID0gdGhpcy5wbGF0Zm9ybS5pcygnY29yZG92YScpO1xuICAgICAgdGhpcy5fYW5kcm9pZCA9IHRoaXMucGxhdGZvcm0uaXMoJ2FuZHJvaWQnKTtcblxuICAgICAgdGhpcy5jb25maWd1cmVDb3Jkb3ZhUGx1Z2lucyh0aGlzLl9tb2JpbGUpO1xuICAgICAgdGhpcy50b3VjaFVpID0gdGhpcy5fbW9iaWxlIHx8IHRoaXMucGxhdGZvcm0uaXMoJ3RhYmxldCcpIHx8IHRoaXMucGxhdGZvcm0uaXMoJ3BoYWJsZXQnKTtcblxuICAgICAgLy8gRm9yY2UgbW9iaWxlIGluIHNldHRpbmdzXG4gICAgICBpZiAodGhpcy5fbW9iaWxlKSB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MubW9iaWxlID0gdGhpcy5fbW9iaWxlO1xuICAgICAgICB0aGlzLnNldHRpbmdzLnRvdWNoVWkgPSB0aGlzLnRvdWNoVWk7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbmZpZ3VyZSB0cmFuc2xhdGlvblxuICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVUcmFuc2xhdGUoKTtcblxuICAgICAgLy8gQ29uZmlndXJlIHN0b3JhZ2VcbiAgICAgIGNvbnN0IGZvcmFnZSA9IGF3YWl0IHRoaXMuc3RvcmFnZVJlYWR5KCk7XG4gICAgICBhd2FpdCB0aGlzLm1pZ3JhdGVTdG9yYWdlKGZvcmFnZSk7XG5cbiAgICAgIC8vIFN0YXJ0IHJvb3Qgc2VydmljZXNcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgdGhpcy5lbnRpdGllc1N0b3JhZ2UucmVhZHkoKSxcbiAgICAgICAgdGhpcy5jYWNoZS5yZWFkeSgpLnRoZW4oKCkgPT4gdGhpcy5jb25maWd1cmVDYWNoZSgpKSxcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5yZWFkeSgpLFxuICAgICAgICB0aGlzLm5ldHdvcmtTZXJ2aWNlLnJlYWR5KCksXG4gICAgICAgIHRoaXMuYXVkaW9Qcm92aWRlci5yZWFkeSgpXG4gICAgICBdKTtcblxuICAgICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIFN0YXJ0aW5nIHBsYXRmb3JtIFtPS10ge21vYmlsZTogJHt0aGlzLl9tb2JpbGV9LCB0b3VjaFVpOiAke3RoaXMudG91Y2hVaX0sIGRvd25sb2FkZXI6ICR7dGhpcy5jYW5Eb3dubG9hZH19IGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuXG4gICAgICAvLyBVcGRhdGUgY2FjaGUgY29uZmlndXJhdGlvbiB3aGVuIG5ldHdvcmsgY2hhbmdlZFxuICAgICAgdGhpcy5uZXR3b3JrU2VydmljZS5vbk5ldHdvcmtTdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKHNraXAoMSkpIC8vIFNraXAgdGhlIGZpcnN0IGV2ZW50IChiZWhhdmlvciBzdWJqZWN0IHNlbmQgZXZlbnQgaW1tZWRpYXRlbHkpXG4gICAgICAgIC5zdWJzY3JpYmUodHlwZSA9PiB0aGlzLmNvbmZpZ3VyZUNhY2hlKHR5cGUgIT09ICdub25lJykpO1xuXG4gICAgICAvLyBVcGRhdGUgYXV0aGVudGljYXRpb24gdHlwZVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZ1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoY29uZmlnID0+IGNvbmZpZz8uZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5BVVRIX1RPS0VOX1RZUEUpIGFzIEF1dGhUb2tlblR5cGUpLFxuICAgICAgICAgIGZpbHRlcihpc05vdE5pbE9yQmxhbmspLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHRva2VuVHlwZSA9PiB7XG4gICAgICAgICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIFVzaW5nIGF1dGggdG9rZW4gdHlwZSB7JHt0b2tlblR5cGV9fWApO1xuICAgICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2UudG9rZW5UeXBlID0gdG9rZW5UeXBlO1xuICAgICAgICB9KTtcblxuICAgICAgLy8gSGlkZSB0aGUgc3BsYXNoc2NyZWVuIChpZiBtb2JpbGUpIC0gYWZ0ZXIgMXNcbiAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNwbGFzaFNjcmVlbj8uaGlkZSgpO1xuXG4gICAgICAgICAgLy8gUGxheSBzdGFydHVwIHNvdW5kXG4gICAgICAgICAgdGhpcy5hdWRpb1Byb3ZpZGVyLnBsYXlTdGFydHVwU291bmQoKTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9XG5cbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgLy8gTWFuYWdlIHN0YXJ0dXAgZXJyb3JcbiAgICAgIHJldHVybiB0aGlzLm9uU3RhcnR1cEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgb3Blbih1cmw6IHN0cmluZywgdGFyZ2V0Pzogc3RyaW5nLCBmZWF0dXJlcz86IHN0cmluZywgcmVwbGFjZT86IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gT3BlbmluZyBsaW5rOiAke3VybH1gKTtcbiAgICBpZiAodGhpcy5icm93c2VyICYmIHRoaXMuX21vYmlsZSkge1xuICAgICAgdGhpcy5icm93c2VyLmNyZWF0ZSh1cmwsIHRhcmdldCwgZmVhdHVyZXMpLnNob3coKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB3aW5kb3cub3Blbih1cmwsIHRhcmdldCwgZmVhdHVyZXMsIHJlcGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldERvd25sb2FkaW5nSm9iKHVyaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxvYWRpbmdKb2JzLmdldCh1cmkpO1xuICB9XG5cbiAgZG93bmxvYWQocmVxdWVzdDoge3VyaTogc3RyaW5nOyBmaWxlbmFtZT86IHN0cmluZyB9ICYgUGFydGlhbDxEb3dubG9hZFJlcXVlc3Q+ICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCFyZXF1ZXN0IHx8ICFyZXF1ZXN0LnVyaSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFxcJ3JlcXVlc3RcXCcgb3IgXFwncmVxdWVzdC51cmlcXCcnKTtcblxuICAgIGlmICh0aGlzLl9hbmRyb2lkICYmIHRoaXMuZG93bmxvYWRlcikge1xuXG4gICAgICAvLyBDaGVjayBpZiBub3QgYWxyZWFkeSBkb3dubG9hZGluZyBmaWxlXG4gICAgICBsZXQgbG9jYXRpb24kID0gdGhpcy5fZG93bmxvYWRpbmdKb2JzLmdldChyZXF1ZXN0LnVyaSk7XG4gICAgICBpZiAobG9jYXRpb24kKSByZXR1cm4gbG9jYXRpb24kO1xuXG4gICAgICByZXF1ZXN0ID0ge1xuICAgICAgICB2aXNpYmxlSW5Eb3dubG9hZHNVaTogdHJ1ZSxcbiAgICAgICAgbm90aWZpY2F0aW9uVmlzaWJpbGl0eTogTm90aWZpY2F0aW9uVmlzaWJpbGl0eS5WaXNpYmxlTm90aWZ5Q29tcGxldGVkLFxuICAgICAgICB0aXRsZTogcmVxdWVzdC50aXRsZSB8fCByZXF1ZXN0LmZpbGVuYW1lLFxuICAgICAgICAuLi5yZXF1ZXN0LFxuICAgICAgICBkZXN0aW5hdGlvbkluRXh0ZXJuYWxGaWxlc0Rpcjoge1xuICAgICAgICAgIGRpclR5cGU6ICdEb3dubG9hZHMnLFxuICAgICAgICAgIHN1YlBhdGg6IHJlcXVlc3QuZmlsZW5hbWUgfHwgcmVxdWVzdC50aXRsZSB8fCAnJyxcbiAgICAgICAgICAuLi5yZXF1ZXN0LmRlc3RpbmF0aW9uSW5FeHRlcm5hbEZpbGVzRGlyXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnNvbGUuZGVidWcoJ1twbGF0Zm9ybV0gRG93bmxvYWRpbmcsIHVzaW5nIHJlcXVlc3Q6ICcgKyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSk7XG5cbiAgICAgIC8vIFN0YXJ0IGRvd25sb2FkXG4gICAgICBsb2NhdGlvbiQgPSBmcm9tKHRoaXMuZG93bmxvYWRlci5kb3dubG9hZChyZXF1ZXN0KSk7XG5cbiAgICAgIC8vIFJlbWVtYmVyIHRoaXMgcmVxdWVzdCB1cmlcbiAgICAgIHRoaXMuX2Rvd25sb2FkaW5nSm9icy5zZXQocmVxdWVzdC51cmksIGxvY2F0aW9uJCk7XG4gICAgICByZXR1cm4gbG9jYXRpb24kXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcChsb2NhdGlvbiA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gRmlsZSBzdWNjZXNzZnVsbHkgZG93bmxvYWRlZCBhdDonICsgbG9jYXRpb24pO1xuICAgICAgICAgICAgLy8gRm9yZ2V0IHRoZSByZXF1ZXN0XG4gICAgICAgICAgICB0aGlzLl9kb3dubG9hZGluZ0pvYnMuZGVsZXRlKHJlcXVlc3QudXJpKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbcGxhdGZvcm1dIFVuYWJsZSB0byBkb3dubG9hZDogJyArIChlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyKSk7XG4gICAgICAgICAgICAvLyBGb3JnZXQgdGhlIHJlcXVlc3RcbiAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkaW5nSm9icy5kZWxldGUocmVxdWVzdC51cmkpO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgKGlmIG5vdCBBbmRyb2lkIGFuZCBDb3Jkb3ZhKTogb3BlbmluZyB0aGUgVVJJIHVzaW5nIHRoZSBicm93c2VyXG4gICAgLy8gVE9ETzogZmluZCBhIHdheSB0byBkb3dubG9hZCB1bmRlciBpT1MgKHNlZSBodHRwczovL3d3dy5jLXNoYXJwY29ybmVyLmNvbS9hcnRpY2xlL2hvdy10by1kb3dubG9hZC1hLWZpbGUtdXNpbmctZmlsZS10cmFuc2Zlci1wbHVnaW4taW4taW9uaWMtMy8pXG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1twbGF0Zm9ybV0gQ2Fubm90IHVzZSBBbmRyb2lkIGRvd25sb2FkZXI6IHVzaW5nIGJyb3dzZXIgb3BlbigpJyk7XG4gICAgICB0aGlzLm9wZW4ocmVxdWVzdC51cmksICdfc3lzdGVtJywgJ2xvY2F0aW9uPW5vJywgdHJ1ZSk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBjb25maWd1cmVDb3Jkb3ZhUGx1Z2lucyhtb2JpbGU6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gQ29uZmlndXJpbmcgQ29yZG92YSBwbHVnaW5zLi4uJyk7XG5cbiAgICBpZiAodGhpcy5zdGF0dXNCYXIpIHtcbiAgICAgIHRoaXMuc3RhdHVzQmFyLnN0eWxlRGVmYXVsdCgpO1xuICAgICAgdGhpcy5zdGF0dXNCYXIub3ZlcmxheXNXZWJWaWV3KGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5Ym9hcmQpIHtcbiAgICAgIHRoaXMua2V5Ym9hcmQuaGlkZUZvcm1BY2Nlc3NvcnlCYXIodHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgdG8gdXNlIEluQXBwQnJvd3NlciBpbnN0ZWFkIG9mIGRlZmF1bHQgd2luZG93Lm9wZW4oKVxuICAgIGlmICh0aGlzLmJyb3dzZXIpIHtcbiAgICAgIC8vIEZJWE1FOiB0aGlzIGNyZWF0ZSBhIGluZmluaXRlIGxvb3AgKGUuZy4gd2hlbiBkb3dubG9hZGluZyBhbiBleHRyYWN0aW9uIGZpbGUpXG4gICAgICAvLyB3aW5kb3cub3BlbiA9ICh1cmw/OiBzdHJpbmcsIHRhcmdldD86IHN0cmluZywgZmVhdHVyZXM/OiBzdHJpbmcsIHJlcGxhY2U/OiBib29sZWFuKSA9PiB7XG4gICAgICAvLyAgIGNvbnNvbGUuZGVidWcoXCJbcGxhdGZvcm1dIENhbGwgdG8gd2luZG93Lm9wZW4oKSByZWRpcmVjdGVkIHRvIEluQXBwQnJvd3Nlci5vcGVuKClcIik7XG4gICAgICAvLyAgIHRoaXMuYnJvd3Nlci5jcmVhdGUodXJsLCB0YXJnZXQsIGZlYXR1cmVzKS5zaG93KCk7XG4gICAgICAvLyAgIHJldHVybiB3aW5kb3c7XG4gICAgICAvLyB9O1xuICAgIH1cbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZVRyYW5zbGF0ZSgpIHtcbiAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gQ29uZmlndXJpbmcgaTE4biAuLi4nKTtcblxuICAgIC8vIHRoaXMgbGFuZ3VhZ2Ugd2lsbCBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgd2hlbiBhIHRyYW5zbGF0aW9uIGlzbid0IGZvdW5kIGluIHRoZSBjdXJyZW50IGxhbmd1YWdlXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcodGhpcy5lbnZpcm9ubWVudC5kZWZhdWx0TG9jYWxlKTtcblxuICAgIC8vIFdoZW4gbG9jYWxlIGNoYW5nZXMsIGFwcGx5IHRvIGRhdGUgYWRhcHRlclxuICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmxhbmcpIHtcblxuICAgICAgICAvLyBmb3JjZSAnZW4nIGFzICdlbl9HQidcbiAgICAgICAgaWYgKGV2ZW50LmxhbmcgPT09ICdlbicpIHtcbiAgICAgICAgICBldmVudC5sYW5nID0gJ2VuX0dCJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbmZpZyBtb21lbnQgbGliXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbW9tZW50LmxvY2FsZShldmVudC5sYW5nKTtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbcGxhdGZvcm1dIFVzZSBsb2NhbGUgeycgKyBldmVudC5sYW5nICsgJ30nKTtcbiAgICAgICAgfVxuICAgICAgICAgIC8vIElmIGVycm9yLCBmYWxsYmFjayB0byBlblxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbW9tZW50LmxvY2FsZSgnZW4nKTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1twbGF0Zm9ybV0gVW5rbm93biBsb2NhbCBmb3IgbW9tZW50IGxpYi4gVXNpbmcgZGVmYXVsdCBbZW5dJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb25maWcgZGF0ZSBhZGFwdGVyXG4gICAgICAgIHRoaXMuZGF0ZUFkYXB0ZXIuc2V0TG9jYWxlKG1vbWVudC5sb2NhbGUoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldHRpbmdzLm9uQ2hhbmdlLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIGlmIChkYXRhICYmIGRhdGEubG9jYWxlICYmIGRhdGEubG9jYWxlICE9PSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZykge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UoZGF0YS5sb2NhbGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXNlIGFjY291bnQncyBzZXR0aW5ncywgKGxpa2UgbG9jYWxlKSwgd2hlbiBhY2NvdW50IGluaGVyaXRhbmNlIGVuYWJsZWRcbiAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4uc3Vic2NyaWJlKGFjY291bnQgPT4ge1xuICAgICAgaWYgKGFjY291bnQuc2V0dGluZ3MgJiYgdGhpcy5zZXR0aW5ncy5zZXR0aW5ncy5hY2NvdW50SW5oZXJpdGFuY2UpIHtcbiAgICAgICAgY29uc3QgYWNjb3VudFNldHRpbmdzID0gYWNjb3VudC5zZXR0aW5ncy5hc0xvY2FsU2V0dGluZ3MoKTtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5hcHBseShhY2NvdW50U2V0dGluZ3MpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUNhY2hlKG9ubGluZT86IGJvb2xlYW4pIHtcbiAgICBvbmxpbmUgPSB0b0Jvb2xlYW4ob25saW5lLCB0aGlzLmNhY2hlLmlzT25saW5lKCkpO1xuICAgIGNvbnN0IGNhY2hlVFRMID0gb25saW5lID8gMzYwMCAvKiAxaCAqLyA6IDM2MDAgKiAyNCAqIDMwOyAvKiAxIG1vbnRoICovXG4gICAgY29uc29sZS5pbmZvKGBbcGxhdGZvcm1dIENvbmZpZ3VyaW5nIGNhY2hlIFtPS10ge29ubGluZTogJHtvbmxpbmV9LCB0aW1lVG9MaXZlOiAke2NhY2hlVFRMIC8gMzYwMH1oLCBvZmZsaW5lSW52YWxpZGF0ZTogZmFsc2V9YCk7XG4gICAgdGhpcy5jYWNoZS5zZXREZWZhdWx0VFRMKGNhY2hlVFRMKTtcbiAgICB0aGlzLmNhY2hlLnNldE9mZmxpbmVJbnZhbGlkYXRlKGZhbHNlKTsgLy8gRG8gbm90IGludmFsaWRhdGUgY2FjaGUgd2hlbiBvZmZsaW5lXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3RvcmFnZVJlYWR5KCk6IFByb21pc2U8TG9jYWxGb3JhZ2U+IHtcbiAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gU3RhcnRpbmcgc3RvcmFnZS4uLmApO1xuICAgIGNvbnN0IGZvcmFnZSA9IGF3YWl0IHRoaXMuc3RvcmFnZS5yZWFkeSgpO1xuICAgIGNvbnN0IGRyaXZlciA9IGZvcmFnZS5kcml2ZXIoKTtcblxuICAgIGlmIChpc05pbChkcml2ZXIpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbcGxhdGZvcm1dIE5PIERSSVZFUiBERUZJTkVEIElOIFNUT1JBR0UuIExvY2FsIHN0b3JhZ2UgY2Fubm90IGJlIHVzZWQgIScpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmb3JhZ2UpO1xuICAgIH1cblxuICAgIGNvbnNvbGUuaW5mbyhgW3BsYXRmb3JtXSBTdGFydGluZyBzdG9yYWdlIFtPS10ge25hbWU6ICcke2ZvcmFnZS5jb25maWcoKS5uYW1lfScsIGRyaXZlcjogJyR7Zm9yYWdlLmRyaXZlcigpfScsIHNpemU6ICR7Zm9yYWdlLmNvbmZpZygpLnNpemV9YCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgW3BsYXRmb3JtXSBTdG9yYWdlIHN1cHBvcnRzOiB7JHtmb3JhZ2UuV0VCU1FMfTogJHtmb3JhZ2Uuc3VwcG9ydHMoZm9yYWdlLldFQlNRTCl9LCAke2ZvcmFnZS5JTkRFWEVEREJ9OiAke2ZvcmFnZS5zdXBwb3J0cyhmb3JhZ2UuSU5ERVhFRERCKX0sICR7Zm9yYWdlLkxPQ0FMU1RPUkFHRX06ICR7Zm9yYWdlLnN1cHBvcnRzKGZvcmFnZS5MT0NBTFNUT1JBR0UpfX1gKTtcblxuICAgIHJldHVybiBmb3JhZ2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbWlncmF0ZVN0b3JhZ2UoZm9yYWdlOiBMb2NhbEZvcmFnZSkge1xuICAgIGNvbnN0IGNhbk1pZ3JhdGUgPSBmb3JhZ2UgJiZcbiAgICAgICgoZm9yYWdlLmRyaXZlcigpID09PSAnY29yZG92YVNRTGl0ZURyaXZlcicgJiYgKGZvcmFnZS5zdXBwb3J0cyhmb3JhZ2UuSU5ERVhFRERCKSB8fCBmb3JhZ2Uuc3VwcG9ydHMoZm9yYWdlLldFQlNRTCkpKSB8fFxuICAgICAgIChmb3JhZ2UuZHJpdmVyKCkgPT09IGZvcmFnZS5XRUJTUUwgJiYgZm9yYWdlLnN1cHBvcnRzKGZvcmFnZS5JTkRFWEVEREIpKSk7XG5cbiAgICBpZiAoIWNhbk1pZ3JhdGUpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgY29uc3Qgb2xkRm9yYWdlID0gZm9yYWdlLmNyZWF0ZUluc3RhbmNlKHtcbiAgICAgIG5hbWU6IGZvcmFnZS5jb25maWcoKS5uYW1lLFxuICAgICAgc3RvcmVOYW1lOiBmb3JhZ2UuY29uZmlnKCkuc3RvcmVOYW1lLFxuICAgICAgZHJpdmVyOiBbZm9yYWdlLklOREVYRUREQiwgZm9yYWdlLldFQlNRTF1cbiAgICB9KTtcblxuICAgIGNvbnN0IGtleXMgPSBhd2FpdCBvbGRGb3JhZ2Uua2V5cygpO1xuXG4gICAgLy8gTm8gZGF0YSBpbiB0aGUgb2RsIHN0b3JhZ2U6IHNraXAgbWlncmF0aW9uXG4gICAgaWYgKGlzRW1wdHlBcnJheShrZXlzKSkge1xuICAgICAgLy8gRHJvcCB0aGUgb2xkIGluc3RhbmNlIChub3QgbmVlZCBhbnltb3JlKVxuICAgICAgY29uc29sZS5kZWJ1ZyhgW3BsYXRmb3JtXSBPbGQgc3RvcmFnZSBpcyBlbXB0eTogZHJvcHBpbmcgdW51c2VkIGluc3RhbmNlIHtuYW1lOiAnJHtmb3JhZ2UuY29uZmlnKCkubmFtZX0nLCBkcml2ZXI6ICcke29sZEZvcmFnZS5kcml2ZXIoKX0nfWApO1xuICAgICAgYXdhaXQgb2xkRm9yYWdlLmRyb3BJbnN0YW5jZSgpO1xuICAgIH1cbiAgICAvLyBJRiBzb21lIGRhdGEgc3RvcmVkIGluIHRoZSBPTEQgc3RvcmFnZTogc3RhcnQgbWlncmF0aW9uXG4gICAgZWxzZSB7XG5cbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gU3RhcnRpbmcgc3RvcmFnZSBtaWdyYXRpb24uLi5gKTtcblxuICAgICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnNob3dUb2FzdCh7bWVzc2FnZTogJ0lORk8uREFUQV9NSUdSQVRJT05fU1RBUlRFRCcsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAwfSk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBTdG9yYWdlVXRpbHMuY29weShvbGRGb3JhZ2UsIGZvcmFnZSwge2tleXMsIGRlbGV0ZUFmdGVyQ29weTogZmFsc2V9KTtcblxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBub3c7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9hc3QuZGlzbWlzcygpLCAgTWF0aC5tYXgoMjAwMCAtIGR1cmF0aW9uLCAwKSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc2hvd1RvYXN0KHttZXNzYWdlOiAnSU5GTy5EQVRBX01JR1JBVElPTl9TVUNDRUVEJyxcbiAgICAgICAgICB0eXBlOiAnaW5mbycsXG4gICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmluZm8oJ1twbGF0Zm9ybV0gU3RhcnRpbmcgc3RvcmFnZSBtaWdyYXRpb24gW09LXScpO1xuXG4gICAgICAgIC8vIERyb3AgdGhlIG9sZCBpbnN0YW5jZVxuICAgICAgICBjb25zb2xlLmluZm8oYFtwbGF0Zm9ybV0gRHJvcCBvbGQgc3RvcmFnZSB7bmFtZTogJyR7Zm9yYWdlLmNvbmZpZygpLm5hbWV9JywgZHJpdmVyOiAnJHtvbGRGb3JhZ2UuZHJpdmVyKCl9J31gKTtcbiAgICAgICAgYXdhaXQgb2xkRm9yYWdlLmRyb3BJbnN0YW5jZSgpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIsIGVycik7XG4gICAgICAgIGF3YWl0IHRvYXN0LmRpc21pc3MoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zaG93VG9hc3Qoe21lc3NhZ2U6ICdFUlJPUi5EQVRBX01JR1JBVElPTl9GQUlMRUQnLFxuICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzaG93VG9hc3Qob3B0czogU2hvd1RvYXN0T3B0aW9ucyk6IFByb21pc2U8SFRNTElvblRvYXN0RWxlbWVudD4ge1xuICAgIGlmICghdGhpcy50b2FzdENvbnRyb2xsZXIpIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0b2FzdENvbnRyb2xsZXIgaW4gY29tcG9uZW50XFwncyBjb25zdHJ1Y3RvcicpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBvbldpbGxQcmVzZW50OiAodCkgPT4gcmVzb2x2ZSh0KVxuICAgICAgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uU3RhcnR1cEVycm9yKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1twbGF0Zm9ybV0gRmFpbGVkIHN0YXJ0aW5nIHRoZSBwbGF0Zm9ybSEgJywgZXJyKTtcbiAgICBsZXQgbWVzc2FnZSA9IGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnI7XG4gICAgY29uc3QgZGV0YWlsc01lc3NhZ2UgPSBlcnIgJiYgKGVyci5kZXRhaWxzICYmIGVyci5kZXRhaWxzLm1lc3NhZ2UgfHwgZXJyLmRldGFpbHMpO1xuICAgIC8vIFNldCBzcGVjaWZpYyBlcnJvciB3aGVuIEZpcmVmb3ggaXMgaW4gcHJpdmF0ZSBtb2RlIG9yIGhpc3RvcnkgbmV2ZXIgcmVtZW1iZXJlZCAoc2VlIE1hbnRpcyBJZnJlbWVyICM1NjQ0MSlcbiAgICBpZiAoZXJyLmNvZGUgPT09IDExICYmIHRoaXMuY2RrUGxhdGZvcm0uRklSRUZPWCkge1xuICAgICAgbWVzc2FnZSA9ICdFUlJPUi5GSVJFRk9YX05PX1NUT1JBR0UnO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmFuc2xhdGUpIHtcbiAgICAgIG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZS5nZXQobWVzc2FnZSkudG9Qcm9taXNlKCk7XG4gICAgICBpZiAoZXJyICYmIGVyci5jb2RlKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYCB7Y29kZTogJHtlcnIuY29kZX19YDtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBtZXNzYWdlID0gYEZhdGFsIGVycm9yOiBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuXFxuXFxue2NvZGU6ICR7ZXJyICYmIGVyci5jb2RlIHx8ICdudWxsJ30sIG1lc3NhZ2U6IFwiJHttZXNzYWdlfVwifWA7XG4gICAgfVxuICAgIGlmICh0aGlzLnRvYXN0Q29udHJvbGxlcikge1xuICAgICAgaWYgKGRldGFpbHNNZXNzYWdlKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYDxici8+PHNtYWxsPiR7ZGV0YWlsc01lc3NhZ2V9PC9zbWFsbD5gO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5zaG93VG9hc3Qoe1xuICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICBkdXJhdGlvbjogLTEsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHdpbmRvdykge1xuICAgICAgaWYgKGRldGFpbHNNZXNzYWdlKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYFxcblxcbntjYXVzZTogXCIke2RldGFpbHNNZXNzYWdlfVwifWA7XG4gICAgICB9XG4gICAgICB3aW5kb3cuYWxlcnQobWVzc2FnZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmRldGFpbHMpIGNvbnNvbGUuZXJyb3IoJ2NhdXNlJywgZXJyLmRldGFpbHMpO1xuICAgIH1cbiAgfVxufVxuXG4iXX0=
@@ -14716,7 +14716,7 @@ class PlatformService extends StartableService {
14716
14716
  let location$ = this._downloadingJobs.get(request.uri);
14717
14717
  if (location$)
14718
14718
  return location$;
14719
- request = Object.assign({ visibleInDownloadsUi: true, notificationVisibility: NotificationVisibility.VisibleNotifyCompleted, title: request.title || request.filename }, request);
14719
+ request = Object.assign(Object.assign({ visibleInDownloadsUi: true, notificationVisibility: NotificationVisibility.VisibleNotifyCompleted, title: request.title || request.filename }, request), { destinationInExternalFilesDir: Object.assign({ dirType: 'Downloads', subPath: request.filename || request.title || '' }, request.destinationInExternalFilesDir) });
14720
14720
  console.debug('[platform] Downloading, using request: ' + JSON.stringify(request));
14721
14721
  // Start download
14722
14722
  location$ = from(this.downloader.download(request));