@valtimo/zgw 12.1.0 → 12.1.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.
Files changed (41) hide show
  1. package/esm2022/lib/components/dossier-management-zgw/dossier-management-zgw.component.mjs +4 -4
  2. package/esm2022/lib/modules/contactmomenten/components/contact-moments/contact-moments.component.mjs +4 -4
  3. package/esm2022/lib/modules/contactmomenten/services/contact-moment.service.mjs +4 -4
  4. package/esm2022/lib/modules/documenten-api/components/documenten-api-column-modal/documenten-api-column-modal.component.mjs +4 -4
  5. package/esm2022/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.mjs +4 -4
  6. package/esm2022/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.mjs +15 -8
  7. package/esm2022/lib/modules/documenten-api/components/documenten-api-filter/documenten-api-filter.component.mjs +4 -4
  8. package/esm2022/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.mjs +4 -4
  9. package/esm2022/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +157 -36
  10. package/esm2022/lib/modules/documenten-api/components/documenten-api-tag-modal/documenten-api-tag-modal.component.mjs +4 -4
  11. package/esm2022/lib/modules/documenten-api/components/documenten-api-tags/documenten-api-tags.component.mjs +4 -4
  12. package/esm2022/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.mjs +4 -4
  13. package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.mjs +22 -16
  14. package/esm2022/lib/modules/documenten-api/services/documenten-api-column.service.mjs +4 -4
  15. package/esm2022/lib/modules/documenten-api/services/documenten-api-document.service.mjs +4 -4
  16. package/esm2022/lib/modules/documenten-api/services/documenten-api-link-process.service.mjs +4 -4
  17. package/esm2022/lib/modules/documenten-api/services/documenten-api-tag.service.mjs +4 -4
  18. package/esm2022/lib/modules/documenten-api/services/documenten-api-version.service.mjs +4 -4
  19. package/esm2022/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.mjs +4 -4
  20. package/esm2022/lib/modules/haalcentraal-brp/components/customer-list/customer-list.component.mjs +4 -4
  21. package/esm2022/lib/modules/haalcentraal-brp/customer-routing.module.mjs +5 -5
  22. package/esm2022/lib/modules/haalcentraal-brp/customer.module.mjs +5 -5
  23. package/esm2022/lib/modules/haalcentraal-brp/services/customer.service.mjs +4 -4
  24. package/esm2022/lib/modules/objecten-api/components/object-type/object-type.component.mjs +4 -4
  25. package/esm2022/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.mjs +4 -4
  26. package/esm2022/lib/modules/objecten-api/services/zaakobjecten.service.mjs +4 -4
  27. package/esm2022/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.mjs +4 -4
  28. package/esm2022/lib/modules/zaakdetails/services/document-objecten-api-sync.service.mjs +4 -4
  29. package/esm2022/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.mjs +4 -4
  30. package/esm2022/lib/modules/zaken-api/services/zaken-api-zaaktype-link.service.mjs +4 -4
  31. package/esm2022/lib/services/dossier-management-zgw.service.mjs +4 -4
  32. package/esm2022/lib/zgw.module.mjs +5 -5
  33. package/fesm2022/valtimo-zgw.mjs +290 -156
  34. package/fesm2022/valtimo-zgw.mjs.map +1 -1
  35. package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts +4 -2
  36. package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -1
  37. package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts +24 -16
  38. package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts.map +1 -1
  39. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts +9 -5
  40. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts.map +1 -1
  41. package/package.json +1 -1
@@ -19,7 +19,7 @@ import { Filter16, TagGroup16, Upload16 } from '@carbon/icons';
19
19
  import { TranslateModule } from '@ngx-translate/core';
20
20
  import { CarbonListModule, ConfirmationModalModule, ViewType, } from '@valtimo/components';
21
21
  import { ButtonModule, DialogModule, IconModule } from 'carbon-components-angular';
22
- import { BehaviorSubject, combineLatest, of, ReplaySubject, Subject } from 'rxjs';
22
+ import { BehaviorSubject, combineLatest, of, ReplaySubject, Subject, Subscription, } from 'rxjs';
23
23
  import { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';
24
24
  import { COLUMN_VIEW_TYPES, DOCUMENTEN_COLUMN_KEYS, } from '../../models';
25
25
  import { DocumentenApiFilterComponent } from '../documenten-api-filter/documenten-api-filter.component';
@@ -145,6 +145,7 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
145
145
  this._itemsLoading$.next(false);
146
146
  return of([]);
147
147
  }));
148
+ this._subscriptions = new Subscription();
148
149
  this.iconService.register(Filter16);
149
150
  }
150
151
  ngOnInit() {
@@ -154,6 +155,9 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
154
155
  this.isUserAdmin();
155
156
  this.iconService.registerAll([Filter16, TagGroup16, Upload16]);
156
157
  }
158
+ ngOnDestroy() {
159
+ this._subscriptions.unsubscribe();
160
+ }
157
161
  onDeleteActionClick(item) {
158
162
  this.document = item;
159
163
  this.showDeleteConfirmationModal$.next(true);
@@ -186,7 +190,10 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
186
190
  return 'dossier.documenten.noProcessLinked.regularUser';
187
191
  }
188
192
  isUserAdmin() {
189
- this.userProviderService.getUserSubject().subscribe(userIdentity => {
193
+ this.userProviderService
194
+ .getUserSubject()
195
+ .pipe(take(1))
196
+ .subscribe(userIdentity => {
190
197
  this.isAdmin = userIdentity.roles.includes('ROLE_ADMIN');
191
198
  }, () => {
192
199
  this.isAdmin = false;
@@ -267,7 +274,7 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
267
274
  this.downloadService.downloadFile(`/api/v1/documenten-api/${relatedFile.pluginConfigurationId}/files/${relatedFile.fileId}/download`, relatedFile.bestandsnaam ?? '', forceDownload);
268
275
  }
269
276
  openQueryParamsSubscription() {
270
- combineLatest([
277
+ this._subscriptions.add(combineLatest([
271
278
  this.documentDefinitionName$,
272
279
  this.documentId$,
273
280
  this.filter$,
@@ -276,7 +283,7 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
276
283
  this.router.navigate([`/dossiers/${definitionName}/document/${documentId}/documents`], {
277
284
  queryParams: { ...filter, ...sort },
278
285
  });
279
- });
286
+ }));
280
287
  }
281
288
  resetFileInput() {
282
289
  this.fileInput.nativeElement.value = '';
@@ -301,10 +308,10 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
301
308
  this.filter$.next(filter);
302
309
  });
303
310
  }
304
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.UploadProviderService }, { token: i2.DownloadService }, { token: i3.TranslateService }, { token: i4.ConfigService }, { token: i5.UserProviderService }, { token: i6.IconService }, { token: i7.DocumentenApiDocumentService }, { token: i8.DocumentenApiColumnService }, { token: i8.DocumentenApiVersionService }], target: i0.ɵɵFactoryTarget.Component }); }
305
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: DossierDetailTabDocumentenApiDocumentsComponent, isStandalone: true, selector: "valtimo-dossier-detail-tab-documenten-api-documents", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "translationTemplate", first: true, predicate: ["translationTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"carbon-document-table-wrapper\"\n *ngIf=\"{\n loading: loading$ | async,\n fieldsLoading: fieldsLoading$ | async,\n uploading: uploading$ | async,\n relatedFiles: relatedFiles$ | async,\n fields: fields$ | async,\n initialSortState: initialSortState$ | async,\n supportedDocumentenApiFeatures: supportedDocumentenApiFeatures$ | async\n } as obs\"\n>\n @if ((!obs.fieldsLoading && obs.fields.length) || obs.fieldsLoading) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.relatedFiles\"\n [fields]=\"obs.fields\"\n [loading]=\"obs.loading\"\n [initialSortState]=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && obs.initialSortState\n \"\n (rowClicked)=\"onRowClick($event)\"\n (sortChanged)=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && onSortChanged($event)\n \"\n hideColumnHeader\n >\n <div carbonToolbarContent>\n <input\n [accept]=\"acceptedFiles\"\n (change)=\"onFileSelected($event)\"\n hidden\n type=\"file\"\n #fileInput\n />\n\n <button\n *ngIf=\"obs?.supportedDocumentenApiFeatures?.supportsFilterableColumns\"\n [cdsOverflowMenu]=\"overflowFilter\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"noResults\"></ng-container>\n </valtimo-carbon-list>\n } @else {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'zgw.documents.noColumns.description' | translate\"\n [title]=\"'zgw.documents.noColumns.title' | translate\"\n ></valtimo-no-results>\n }\n\n <valtimo-documenten-api-metadata-modal\n [open]=\"showUploadModal$ | async\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [isEditMode]=\"isEditMode$ | async\"\n [supportsTrefwoorden]=\"obs?.supportedDocumentenApiFeatures?.supportsTrefwoorden\"\n (modalClose)=\"closeMetadataModal()\"\n (metadata)=\"metadataSet($event)\"\n ></valtimo-documenten-api-metadata-modal>\n</div>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n contentTranslationKey=\"dossier.documenten.deleteConfirmationModal.content\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"dossier.documenten.deleteConfirmationModal.title\"\n [showModalSubject$]=\"showDeleteConfirmationModal$\"\n (confirmEvent)=\"deleteDocument()\"\n>\n</valtimo-confirmation-modal>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n class=\"download-button-container\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #noResults>\n @if ((filter$ | async | keyvalue)?.length) {\n <valtimo-no-results\n [action]=\"resetFilterButton\"\n [description]=\"'zgw.documents.noResults.filterDescription' | translate\"\n [title]=\"'zgw.documents.noResults.filterTitle' | translate\"\n ></valtimo-no-results>\n } @else if (showZaakLinkWarning && isAdmin) {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'dossier.documenten.noZaakFound' | translate\"\n [title]=\"'dossier.documenten.noZaakFoundTitle' | translate\"\n ></valtimo-no-results>\n } @else {\n <valtimo-no-results\n [action]=\"uploadButton\"\n [description]=\"'dossier.documenten.noFiles' | translate\"\n [title]=\"'dossier.documenten.noFilesTitle' | translate\"\n ></valtimo-no-results>\n }\n</ng-template>\n\n<ng-template #overflowFilter>\n <valtimo-dossier-detail-tab-documenten-api-filter\n [prefillFilter]=\"filter$ | async\"\n (filterEvent)=\"onFilterEvent($event)\"\n ></valtimo-dossier-detail-tab-documenten-api-filter>\n</ng-template>\n\n<ng-template #resetFilterButton>\n <button cdsButton=\"primary\" (click)=\"onFilterEvent(null)\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #uploadButton let-disabled=\"disabled\">\n <button\n [disabled]=\"(uploadProcessLinkedSet && !uploadProcessLinked) || showZaakLinkWarning || disabled\"\n [vTooltip]=\"getUploadButtonTooltip() | translate\"\n (click)=\"onUploadButtonClick()\"\n cdsButton=\"primary\"\n >\n {{ 'Upload' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #translationTemplate let-data=\"data\">\n {{ 'document.' + data.item[data.key] | translate }}\n</ng-template>\n\n<ng-template #navigateToCaseAdminButton>\n <button (click)=\"onNavigateToCaseAdminClick()\" cdsButton=\"primary\">\n {{ 'dossier.documenten.navigateToCaseAdmin' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"settings\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.carbon-document-table-wrapper{margin:0}.documenten-api-documents-filesize-template{text-align:right}::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i10.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i10.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: DocumentenApiMetadataModalComponent, selector: "valtimo-documenten-api-metadata-modal", inputs: ["disabled$", "file$", "author", "confidentialityLevel", "description", "disableAuthor", "disableConfidentialityLevel", "disableDescription", "disableDocumentTitle", "disableDocumentType", "disableFilename", "disableLanguage", "disableStatus", "documentTitle", "documentType", "disableTrefwoorden", "filename", "isEditMode", "language", "open", "status", "supportsTrefwoorden"], outputs: ["metadata", "modalClose"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DocumentenApiFilterComponent, selector: "valtimo-dossier-detail-tab-documenten-api-filter", outputs: ["filterEvent"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: i6.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i10.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
311
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.UploadProviderService }, { token: i2.DownloadService }, { token: i3.TranslateService }, { token: i4.ConfigService }, { token: i5.UserProviderService }, { token: i6.IconService }, { token: i7.DocumentenApiDocumentService }, { token: i8.DocumentenApiColumnService }, { token: i8.DocumentenApiVersionService }], target: i0.ɵɵFactoryTarget.Component }); }
312
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierDetailTabDocumentenApiDocumentsComponent, isStandalone: true, selector: "valtimo-dossier-detail-tab-documenten-api-documents", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "translationTemplate", first: true, predicate: ["translationTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"carbon-document-table-wrapper\"\n *ngIf=\"{\n loading: loading$ | async,\n fieldsLoading: fieldsLoading$ | async,\n uploading: uploading$ | async,\n relatedFiles: relatedFiles$ | async,\n fields: fields$ | async,\n initialSortState: initialSortState$ | async,\n supportedDocumentenApiFeatures: supportedDocumentenApiFeatures$ | async\n } as obs\"\n>\n @if ((!obs.fieldsLoading && obs.fields.length) || obs.fieldsLoading) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.relatedFiles\"\n [fields]=\"obs.fields\"\n [loading]=\"obs.loading\"\n [initialSortState]=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && obs.initialSortState\n \"\n (rowClicked)=\"onRowClick($event)\"\n (sortChanged)=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && onSortChanged($event)\n \"\n hideColumnHeader\n >\n <div carbonToolbarContent>\n <input\n [accept]=\"acceptedFiles\"\n (change)=\"onFileSelected($event)\"\n hidden\n type=\"file\"\n #fileInput\n />\n\n <button\n *ngIf=\"obs?.supportedDocumentenApiFeatures?.supportsFilterableColumns\"\n [cdsOverflowMenu]=\"overflowFilter\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"noResults\"></ng-container>\n </valtimo-carbon-list>\n } @else {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'zgw.documents.noColumns.description' | translate\"\n [title]=\"'zgw.documents.noColumns.title' | translate\"\n ></valtimo-no-results>\n }\n\n <valtimo-documenten-api-metadata-modal\n [open]=\"showUploadModal$ | async\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [isEditMode]=\"isEditMode$ | async\"\n [supportsTrefwoorden]=\"obs?.supportedDocumentenApiFeatures?.supportsTrefwoorden\"\n (modalClose)=\"closeMetadataModal()\"\n (metadata)=\"metadataSet($event)\"\n ></valtimo-documenten-api-metadata-modal>\n</div>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n contentTranslationKey=\"dossier.documenten.deleteConfirmationModal.content\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"dossier.documenten.deleteConfirmationModal.title\"\n [showModalSubject$]=\"showDeleteConfirmationModal$\"\n (confirmEvent)=\"deleteDocument()\"\n>\n</valtimo-confirmation-modal>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n class=\"download-button-container\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #noResults>\n @if ((filter$ | async | keyvalue)?.length) {\n <valtimo-no-results\n [action]=\"resetFilterButton\"\n [description]=\"'zgw.documents.noResults.filterDescription' | translate\"\n [title]=\"'zgw.documents.noResults.filterTitle' | translate\"\n ></valtimo-no-results>\n } @else if (showZaakLinkWarning && isAdmin) {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'dossier.documenten.noZaakFound' | translate\"\n [title]=\"'dossier.documenten.noZaakFoundTitle' | translate\"\n ></valtimo-no-results>\n } @else {\n <valtimo-no-results\n [action]=\"uploadButton\"\n [description]=\"'dossier.documenten.noFiles' | translate\"\n [title]=\"'dossier.documenten.noFilesTitle' | translate\"\n ></valtimo-no-results>\n }\n</ng-template>\n\n<ng-template #overflowFilter>\n <valtimo-dossier-detail-tab-documenten-api-filter\n [prefillFilter]=\"filter$ | async\"\n (filterEvent)=\"onFilterEvent($event)\"\n ></valtimo-dossier-detail-tab-documenten-api-filter>\n</ng-template>\n\n<ng-template #resetFilterButton>\n <button cdsButton=\"primary\" (click)=\"onFilterEvent(null)\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #uploadButton let-disabled=\"disabled\">\n <button\n [disabled]=\"(uploadProcessLinkedSet && !uploadProcessLinked) || showZaakLinkWarning || disabled\"\n [vTooltip]=\"getUploadButtonTooltip() | translate\"\n (click)=\"onUploadButtonClick()\"\n cdsButton=\"primary\"\n >\n {{ 'Upload' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #translationTemplate let-data=\"data\">\n {{ 'document.' + data.item[data.key] | translate }}\n</ng-template>\n\n<ng-template #navigateToCaseAdminButton>\n <button (click)=\"onNavigateToCaseAdminClick()\" cdsButton=\"primary\">\n {{ 'dossier.documenten.navigateToCaseAdmin' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"settings\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.carbon-document-table-wrapper{margin:0}.documenten-api-documents-filesize-template{text-align:right}::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i10.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i10.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: DocumentenApiMetadataModalComponent, selector: "valtimo-documenten-api-metadata-modal", inputs: ["disabled$", "file$", "author", "confidentialityLevel", "description", "disableAuthor", "disableConfidentialityLevel", "disableDescription", "disableDocumentTitle", "disableDocumentType", "disableFilename", "disableLanguage", "disableStatus", "disableTrefwoorden", "documentTitle", "documentType", "filename", "isEditMode", "language", "open", "status", "supportsTrefwoorden"], outputs: ["metadata", "modalClose"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DocumentenApiFilterComponent, selector: "valtimo-dossier-detail-tab-documenten-api-filter", outputs: ["filterEvent"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: i6.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i10.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
306
313
  }
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, decorators: [{
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, decorators: [{
308
315
  type: Component,
309
316
  args: [{ selector: 'valtimo-dossier-detail-tab-documenten-api-documents', standalone: true, imports: [
310
317
  CommonModule,
@@ -324,4 +331,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
324
331
  type: ViewChild,
325
332
  args: ['translationTemplate']
326
333
  }] } });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFtQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFHdkIsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFJN0IsT0FBTyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFjLE1BQU0sMkJBQTJCLENBQUM7QUFDOUYsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUYsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxF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LENBQUMsS0FBSyxDQUFDLGFBQWE7YUFDckIsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEIsTUFBTSxFQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXZYVSwrQ0FBK0M7a0dBQS9DLCtDQUErQyxvVUNqRTVELHl2TUFrTEEsK2hDRDVISSxZQUFZLHlaQUNaLGdCQUFnQiwyMUJBQ2hCLG1DQUFtQyx5ZkFDbkMsWUFBWSxnTUFDWixVQUFVLDROQUNWLGVBQWUsNEZBQ2YsNEJBQTRCLHNIQUM1QixZQUFZLG1RQUNaLHVCQUF1Qjs7MkZBR2QsK0NBQStDO2tCQWpCM0QsU0FBUzsrQkFDRSxxREFBcUQsY0FHbkQsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixtQ0FBbUM7d0JBQ25DLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixlQUFlO3dCQUNmLDRCQUE0Qjt3QkFDNUIsWUFBWTt3QkFDWix1QkFBdUI7cUJBQ3hCOytaQUd1QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1ksbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGaWx0ZXIxNiwgVGFnR3JvdXAxNiwgVXBsb2FkMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uSXRlbSxcbiAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgQ29sdW1uQ29uZmlnLFxuICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgRG9jdW1lbnRlbkFwaU1ldGFkYXRhLFxuICBTb3J0U3RhdGUsXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG93bmxvYWRTZXJ2aWNlLCBVcGxvYWRQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3Jlc291cmNlJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgSWNvbk1vZHVsZSwgSWNvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDT0xVTU5fVklFV19UWVBFUyxcbiAgQ29uZmlndXJlZENvbHVtbixcbiAgRE9DVU1FTlRFTl9DT0xVTU5fS0VZUyxcbiAgRG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsLFxuICBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUsXG4gIFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UsIERvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaUZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi4vZG9jdW1lbnRlbi1hcGktZmlsdGVyL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpTWV0YWRhdGFNb2RhbENvbXBvbmVudH0gZnJvbSAnLi4vZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwvZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgRG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnQsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIERvY3VtZW50ZW5BcGlGaWx0ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiRG9jdW1lbnRlbkFwaURvY3VtZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndHJhbnNsYXRpb25UZW1wbGF0ZScpIHRyYW5zbGF0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoY2FzZURlZmluaXRpb25OYW1lID0+ICEhY2FzZURlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQ6IE9ic2VydmFibGU8U3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPiA9XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjYXNlRGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UuZ2V0U3VwcG9ydGVkQXBpRmVhdHVyZXMoY2FzZURlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIHRhcChzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMgPT5cbiAgICAgICAgdGhpcy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLm5leHQoc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8Q29sdW1uQ29uZmlnW10+ID0gdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5maWVsZHNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UuZ2V0Q29uZmlndXJlZENvbHVtbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgICAgIHRoaXMuX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQsXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbY29sdW1ucywgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzXSkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNvcnRDb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4gfCB1bmRlZmluZWQgPSBjb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4pID0+ICEhY29sdW1uLmRlZmF1bHRTb3J0XG4gICAgICApO1xuICAgICAgaWYgKCEhZGVmYXVsdFNvcnRDb2x1bW4gJiYgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzU29ydGFibGVDb2x1bW5zKSB7XG4gICAgICAgIHRoaXMuX3NvcnQkLm5leHQoe3NvcnQ6IGAke2RlZmF1bHRTb3J0Q29sdW1uLmtleX0sJHtkZWZhdWx0U29ydENvbHVtbi5kZWZhdWx0U29ydH1gfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sdW1uOiBDb25maWd1cmVkQ29sdW1uKSA9PiAoe1xuICAgICAgICBrZXk6IGNvbHVtbi5rZXkgPT09IERPQ1VNRU5URU5fQ09MVU1OX0tFWVMuQkVTVEFORFNPTVZBTkcgPyAnc2l6ZScgOiBjb2x1bW4ua2V5LFxuICAgICAgICBsYWJlbDogYHpndy5kb2N1bWVudENvbHVtbnMuJHtjb2x1bW4ua2V5fWAsXG4gICAgICAgIHZpZXdUeXBlOiAhQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0gPyBWaWV3VHlwZS5URVhUIDogQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0sXG4gICAgICAgIC4uLihDT0xVTU5fVklFV19UWVBFU1tjb2x1bW4ua2V5XSA9PT0gVmlld1R5cGUuVEVNUExBVEUgJiYge1xuICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnRyYW5zbGF0aW9uVGVtcGxhdGUsXG4gICAgICAgICAgdGVtcGxhdGVEYXRhOiB7a2V5OiBjb2x1bW4ua2V5fSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihjb2x1bW4ua2V5ID09PSBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkNSRUFUSUVEQVRVTSAmJiB7Zm9ybWF0OiAnREQtTU0tWVlZWSd9KSxcbiAgICAgICAgc29ydGFibGU6IGNvbHVtbi5zb3J0YWJsZSAmJiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMuc3VwcG9ydHNTb3J0YWJsZUNvbHVtbnMsXG4gICAgICB9KSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHRoaXMuZmllbGRzTG9hZGluZyQubmV4dChmYWxzZSkpXG4gICk7XG4gIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlO1xuICBwdWJsaWMgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRvd25sb2FkJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRG93bmxvYWRBY3Rpb25DbGljay5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub25FZGl0TWV0YWRhdGEuYmluZCh0aGlzKSxcbiAgICAgIGRpc2FibGVkQ2FsbGJhY2s6IHRoaXMuZWRpdERpc2FibGVkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnbm9ybWFsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnZG9jdW1lbnQuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRGVsZXRlQWN0aW9uQ2xpY2suYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiAhIWRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SWQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGluaXRpYWxTb3J0U3RhdGUkOiBPYnNlcnZhYmxlPFNvcnRTdGF0ZSB8IG51bGw+ID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXNbJ3BhcmFtcyddKSxcbiAgICBtYXAocGFyYW1zID0+IHtcbiAgICAgIGlmICghIXBhcmFtc1snc29ydCddKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc1NwbGl0ID0gcGFyYW1zWydzb3J0J10uc3BsaXQoJywnKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICAgICAgbmFtZTogcGFyYW1zU3BsaXRbMF0sXG4gICAgICAgICAgZGlyZWN0aW9uOiBwYXJhbXNTcGxpdFsxXSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlzU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93WmFha0xpbmtXYXJuaW5nOiBib29sZWFuO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IGZhbHNlO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZCE6IGJvb2xlYW47XG5cbiAgcHVibGljIGlzRWRpdE1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjY2VwdGVkRmlsZXM6IHN0cmluZyB8IG51bGwgPVxuICAgIHRoaXMuY29uZmlnU2VydmljZT8uY29uZmlnPy5jYXNlRmlsZVVwbG9hZEFjY2VwdGVkRmlsZXMgfHwgbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IG1heEZpbGVTaXplOiBudW1iZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVTaXplVXBsb2FkTGltaXRNQiB8fCA1O1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWxlVG9CZVVwbG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsZSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kYWxEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1VwbG9hZE1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSB1cGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pdGVtc0xvYWRpbmckLCB0aGlzLmZpZWxkc0xvYWRpbmckXSkucGlwZShcbiAgICBtYXAoKFtpdGVtc0xvYWRpbmcsIGZpZWxkc0xvYWRpbmddKSA9PiBpdGVtc0xvYWRpbmcgfHwgZmllbGRzTG9hZGluZylcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0PERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGw+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZmV0Y2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydCQgPSBuZXcgUmVwbGF5U3ViamVjdDx7c29ydDogc3RyaW5nfSB8IG51bGw+KCk7XG5cbiAgcHVibGljIHJlbGF0ZWRGaWxlcyQ6IE9ic2VydmFibGU8QXJyYXk8RG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvY3VtZW50SWQkLFxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcCxcbiAgICB0aGlzLl9yZWZldGNoJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudElkLCBxdWVyeVBhcmFtc10pID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmdldEZpbHRlcmVkWmFrZW5BcGlEb2N1bWVudHMoXG4gICAgICAgICAgZG9jdW1lbnRJZCxcbiAgICAgICAgICBxdWVyeVBhcmFtc1sncGFyYW1zJ11cbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbcmVsYXRlZEZpbGVzXSkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEZpbGVzID0gcmVsYXRlZEZpbGVzPy5jb250ZW50Py5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAuLi5maWxlLFxuICAgICAgICBjcmVhdGVkQnk6IGZpbGUuY3JlYXRlZEJ5IHx8IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaXN0LmF1dG9tYXRpY2FsbHlHZW5lcmF0ZWQnKSxcbiAgICAgICAgc2l6ZTogdGhpcy5ieXRlc1RvTWVnYWJ5dGVzKGZpbGUuYmVzdGFuZHNvbXZhbmcpLFxuICAgICAgICB0YWdzOiBmaWxlLnRyZWZ3b29yZGVuPy5tYXAoKHRyZWZ3b29yZDogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IHRyZWZ3b29yZCxcbiAgICAgICAgfSkpLFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRGaWxlcyB8fCBbXTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1phYWtMaW5rV2FybmluZyA9IHRydWU7XG4gICAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cGxvYWRQcm92aWRlclNlcnZpY2U6IFVwbG9hZFByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvd25sb2FkU2VydmljZTogRG93bmxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZTogRG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlOiBEb2N1bWVudGVuQXBpQ29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZTogRG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXIoRmlsdGVyMTYpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0SW5pdGlhbEZpbHRlckFuZFNvcnQoKTtcbiAgICB0aGlzLm9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpO1xuICAgIHRoaXMuaXNVc2VyQWRtaW4oKTtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtGaWx0ZXIxNiwgVGFnR3JvdXAxNiwgVXBsb2FkMTZdKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZUFjdGlvbkNsaWNrKGl0ZW06IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnQgPSBpdGVtO1xuICAgIHRoaXMuc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZURvY3VtZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UuZGVsZXRlRG9jdW1lbnQodGhpcy5kb2N1bWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGJ5dGVzVG9NZWdhYnl0ZXMoYnl0ZXM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFieXRlcykgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgbWVnYWJ5dGVzID0gYnl0ZXMgLyAoMTAyNCAqIDEwMjQpO1xuICAgIGlmIChtZWdhYnl0ZXMgPCAxKSB7XG4gICAgICByZXR1cm4gYCR7TWF0aC5jZWlsKG1lZ2FieXRlcyAqIDEwMDApfSBLQmA7XG4gICAgfSBlbHNlIGlmIChtZWdhYnl0ZXMgPCAxMDAwKSB7XG4gICAgICByZXR1cm4gbWVnYWJ5dGVzLnRvRml4ZWQoMikgKyAnIE1CJztcbiAgICB9XG5cbiAgICByZXR1cm4gKG1lZ2FieXRlcyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIEdCJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcGxvYWRCdXR0b25Ub29sdGlwKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZFNldCAmJiB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQpIHtcbiAgICAgIHJldHVybiAnVXBsb2FkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNBZG1pbikge1xuICAgICAgcmV0dXJuICdkb3NzaWVyLmRvY3VtZW50ZW4ubm9Qcm9jZXNzTGlua2VkLmFkbWluUm9sZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdkb3NzaWVyLmRvY3VtZW50ZW4ubm9Qcm9jZXNzTGlua2VkLnJlZ3VsYXJVc2VyJztcbiAgfVxuXG4gIHB1YmxpYyBpc1VzZXJBZG1pbigpIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VXNlclN1YmplY3QoKS5zdWJzY3JpYmUoXG4gICAgICB1c2VySWRlbnRpdHkgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB1c2VySWRlbnRpdHkucm9sZXMuaW5jbHVkZXMoJ1JPTEVfQURNSU4nKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWV0YWRhdGFTZXQobWV0YWRhdGE6IERvY3VtZW50ZW5BcGlNZXRhZGF0YSk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5maWxlVG9CZVVwbG9hZGVkJCwgdGhpcy5kb2N1bWVudElkJF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoW2ZpbGUsIGRvY3VtZW50SWRdKSA9PiB7XG4gICAgICAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gICAgICAgICAgaWYgKHRoaXMuaXNFZGl0TW9kZSQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLnVwZGF0ZURvY3VtZW50KGZpbGUsIG1ldGFkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm92aWRlclNlcnZpY2VcbiAgICAgICAgICAgICAgLnVwbG9hZEZpbGVXaXRoTWV0YWRhdGEoZmlsZSwgZG9jdW1lbnRJZCwgbWV0YWRhdGEpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRvd25sb2FkQWN0aW9uQ2xpY2soZmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZERvY3VtZW50KGZpbGUsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRWRpdE1ldGFkYXRhKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmlzRWRpdE1vZGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KGZpbGUpO1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTWV0YWRhdGFNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0TW9kZSQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KGV2ZW50LnRhcmdldC5maWxlc1swXSk7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5yZXNldEZpbGVJbnB1dCgpO1xuICB9XG5cbiAgcHVibGljIG9uTmF2aWdhdGVUb0Nhc2VBZG1pbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9YF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uUm93Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWREb2N1bWVudChldmVudCwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uVXBsb2FkQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIG9uRmlsdGVyRXZlbnQoZmlsdGVyOiBEb2N1bWVudGVuQXBpRmlsdGVyTW9kZWwgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXIkLm5leHQoZmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvcnRDaGFuZ2VkKHNvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fc29ydCQubmV4dChcbiAgICAgIHNvcnRTdGF0ZS5pc1NvcnRpbmdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzb3J0OiBgJHtzb3J0U3RhdGUuc3RhdGUubmFtZSA9PT0gJ3NpemUnID8gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5CRVNUQU5EU09NVkFORyA6IHNvcnRTdGF0ZS5zdGF0ZS5uYW1lfSwke3NvcnRTdGF0ZS5zdGF0ZS5kaXJlY3Rpb259YCxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVmZXRjaERvY3VtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZldGNoJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGl0RGlzYWJsZWQoZmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpbGUuc3RhdHVzID09PSAnZGVmaW5pdGllZic7XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkRG9jdW1lbnQocmVsYXRlZEZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSwgZm9yY2VEb3dubG9hZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLmRvd25sb2FkRmlsZShcbiAgICAgIGAvYXBpL3YxL2RvY3VtZW50ZW4tYXBpLyR7cmVsYXRlZEZpbGUucGx1Z2luQ29uZmlndXJhdGlvbklkfS9maWxlcy8ke3JlbGF0ZWRGaWxlLmZpbGVJZH0vZG93bmxvYWRgLFxuICAgICAgcmVsYXRlZEZpbGUuYmVzdGFuZHNuYWFtID8/ICcnLFxuICAgICAgZm9yY2VEb3dubG9hZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gICAgICB0aGlzLmRvY3VtZW50SWQkLFxuICAgICAgdGhpcy5maWx0ZXIkLFxuICAgICAgdGhpcy5fc29ydCQsXG4gICAgXSkuc3Vic2NyaWJlKChbZGVmaW5pdGlvbk5hbWUsIGRvY3VtZW50SWQsIGZpbHRlciwgc29ydF0pID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXJzLyR7ZGVmaW5pdGlvbk5hbWV9L2RvY3VtZW50LyR7ZG9jdW1lbnRJZH0vZG9jdW1lbnRzYF0sIHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHsuLi5maWx0ZXIsIC4uLnNvcnR9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmlsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZS5jaGVja1VwbG9hZFByb2Nlc3NMaW5rKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkU2V0ID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxpbmtlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQgPSBsaW5rZWQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbEZpbHRlckFuZFNvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKHF1ZXJ5UGFyYW1zID0+IHtcbiAgICAgICAgICBjb25zdCB7c29ydCwgLi4uZmlsdGVyfSA9IHF1ZXJ5UGFyYW1zWydwYXJhbXMnXTtcbiAgICAgICAgICByZXR1cm4ge3NvcnQsIGZpbHRlcn07XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7ZmlsdGVyLCBzb3J0fSkgPT4ge1xuICAgICAgICB0aGlzLl9zb3J0JC5uZXh0KHtzb3J0fSk7XG4gICAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KGZpbHRlcik7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdlxuICBjbGFzcz1cImNhcmJvbi1kb2N1bWVudC10YWJsZS13cmFwcGVyXCJcbiAgKm5nSWY9XCJ7XG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICBmaWVsZHNMb2FkaW5nOiBmaWVsZHNMb2FkaW5nJCB8IGFzeW5jLFxuICAgIHVwbG9hZGluZzogdXBsb2FkaW5nJCB8IGFzeW5jLFxuICAgIHJlbGF0ZWRGaWxlczogcmVsYXRlZEZpbGVzJCB8IGFzeW5jLFxuICAgIGZpZWxkczogZmllbGRzJCB8IGFzeW5jLFxuICAgIGluaXRpYWxTb3J0U3RhdGU6IGluaXRpYWxTb3J0U3RhdGUkIHwgYXN5bmMsXG4gICAgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzOiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICBAaWYgKCghb2JzLmZpZWxkc0xvYWRpbmcgJiYgb2JzLmZpZWxkcy5sZW5ndGgpIHx8IG9icy5maWVsZHNMb2FkaW5nKSB7XG4gICAgPHZhbHRpbW8tY2FyYm9uLWxpc3RcbiAgICAgIFthY3Rpb25JdGVtc109XCJhY3Rpb25JdGVtc1wiXG4gICAgICBbaXRlbXNdPVwib2JzLnJlbGF0ZWRGaWxlc1wiXG4gICAgICBbZmllbGRzXT1cIm9icy5maWVsZHNcIlxuICAgICAgW2xvYWRpbmddPVwib2JzLmxvYWRpbmdcIlxuICAgICAgW2luaXRpYWxTb3J0U3RhdGVdPVwiXG4gICAgICAgIG9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucyAmJiBvYnMuaW5pdGlhbFNvcnRTdGF0ZVxuICAgICAgXCJcbiAgICAgIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAoc29ydENoYW5nZWQpPVwiXG4gICAgICAgIG9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucyAmJiBvblNvcnRDaGFuZ2VkKCRldmVudClcbiAgICAgIFwiXG4gICAgICBoaWRlQ29sdW1uSGVhZGVyXG4gICAgPlxuICAgICAgPGRpdiBjYXJib25Ub29sYmFyQ29udGVudD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRlZEZpbGVzXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIGhpZGRlblxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgIC8+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwib2JzPy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM/LnN1cHBvcnRzRmlsdGVyYWJsZUNvbHVtbnNcIlxuICAgICAgICAgIFtjZHNPdmVyZmxvd01lbnVdPVwib3ZlcmZsb3dGaWx0ZXJcIlxuICAgICAgICAgIFtjdXN0b21QYW5lXT1cInRydWVcIlxuICAgICAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgICAgICBbZmxpcF09XCJ0cnVlXCJcbiAgICAgICAgICBbb2Zmc2V0XT1cInt4OiAwLCB5OiA0N31cIlxuICAgICAgICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImZpbHRlclwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUmVzdWx0c1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvdmFsdGltby1jYXJib24tbGlzdD5cbiAgfSBAZWxzZSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInemd3LmRvY3VtZW50cy5ub0NvbHVtbnMuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInemd3LmRvY3VtZW50cy5ub0NvbHVtbnMudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH1cblxuICA8dmFsdGltby1kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbFxuICAgIFtvcGVuXT1cInNob3dVcGxvYWRNb2RhbCQgfCBhc3luY1wiXG4gICAgW2Rpc2FibGVkJF09XCJtb2RhbERpc2FibGVkJFwiXG4gICAgW2ZpbGUkXT1cImZpbGVUb0JlVXBsb2FkZWQkXCJcbiAgICBbaXNFZGl0TW9kZV09XCJpc0VkaXRNb2RlJCB8IGFzeW5jXCJcbiAgICBbc3VwcG9ydHNUcmVmd29vcmRlbl09XCJvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNUcmVmd29vcmRlblwiXG4gICAgKG1vZGFsQ2xvc2UpPVwiY2xvc2VNZXRhZGF0YU1vZGFsKClcIlxuICAgIChtZXRhZGF0YSk9XCJtZXRhZGF0YVNldCgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbD5cbjwvZGl2PlxuXG48dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImRhc2hib2FyZE1hbmFnZW1lbnQuZGVsZXRlTW9kYWwuY29uZmlybVwiXG4gIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuZG9jdW1lbnRlbi5kZWxldGVDb25maXJtYXRpb25Nb2RhbC5jb250ZW50XCJcbiAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5kb2N1bWVudGVuLmRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsLnRpdGxlXCJcbiAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCRcIlxuICAoY29uZmlybUV2ZW50KT1cImRlbGV0ZURvY3VtZW50KClcIlxuPlxuPC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNkb3dubG9hZEJ1dHRvbiBsZXQtaW5kZXg9XCJpbmRleFwiIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJ7aXNEb3dubG9hZGluZzogaW5kZXhlc0luY2x1ZGVJbmRleChkb3dubG9hZGluZ0ZpbGVJbmRleGVzJCB8IGFzeW5jLCBpbmRleCl9IGFzIHZhcnNcIlxuICAgIGNsYXNzPVwiZG93bmxvYWQtYnV0dG9uLWNvbnRhaW5lclwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIiF2YXJzLmlzRG93bmxvYWRpbmdcIlxuICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwic21cIlxuICAgICAgKGNsaWNrKT1cImRvd25sb2FkRG9jdW1lbnQoaXRlbSwgaW5kZXgpXCJcbiAgICA+XG4gICAgICB7eyAnaW50ZXJmYWNlLmRvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZG93bmxvYWRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxjZHMtbG9hZGluZyBzaXplPVwic21cIiAqbmdJZj1cInZhcnMuaXNEb3dubG9hZGluZ1wiPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub1Jlc3VsdHM+XG4gIEBpZiAoKGZpbHRlciQgfCBhc3luYyB8IGtleXZhbHVlKT8ubGVuZ3RoKSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJyZXNldEZpbHRlckJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ3pndy5kb2N1bWVudHMubm9SZXN1bHRzLmZpbHRlckRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ3pndy5kb2N1bWVudHMubm9SZXN1bHRzLmZpbHRlclRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9IEBlbHNlIGlmIChzaG93WmFha0xpbmtXYXJuaW5nICYmIGlzQWRtaW4pIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cIm5hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9aYWFrRm91bmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInZG9zc2llci5kb2N1bWVudGVuLm5vWmFha0ZvdW5kVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH0gQGVsc2Uge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwidXBsb2FkQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci5kb2N1bWVudGVuLm5vRmlsZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInZG9zc2llci5kb2N1bWVudGVuLm5vRmlsZXNUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNvdmVyZmxvd0ZpbHRlcj5cbiAgPHZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWZpbHRlclxuICAgIFtwcmVmaWxsRmlsdGVyXT1cImZpbHRlciQgfCBhc3luY1wiXG4gICAgKGZpbHRlckV2ZW50KT1cIm9uRmlsdGVyRXZlbnQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWZpbHRlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVzZXRGaWx0ZXJCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkZpbHRlckV2ZW50KG51bGwpXCI+XG4gICAge3sgJ1Jlc2V0IGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3VwbG9hZEJ1dHRvbiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPlxuICA8YnV0dG9uXG4gICAgW2Rpc2FibGVkXT1cIih1cGxvYWRQcm9jZXNzTGlua2VkU2V0ICYmICF1cGxvYWRQcm9jZXNzTGlua2VkKSB8fCBzaG93WmFha0xpbmtXYXJuaW5nIHx8IGRpc2FibGVkXCJcbiAgICBbdlRvb2x0aXBdPVwiZ2V0VXBsb2FkQnV0dG9uVG9vbHRpcCgpIHwgdHJhbnNsYXRlXCJcbiAgICAoY2xpY2spPVwib25VcGxvYWRCdXR0b25DbGljaygpXCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgPlxuICAgIHt7ICdVcGxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInVwbG9hZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJhbnNsYXRpb25UZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAge3sgJ2RvY3VtZW50LicgKyBkYXRhLml0ZW1bZGF0YS5rZXldIHwgdHJhbnNsYXRlIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cIm9uTmF2aWdhdGVUb0Nhc2VBZG1pbkNsaWNrKClcIiBjZHNCdXR0b249XCJwcmltYXJ5XCI+XG4gICAge3sgJ2Rvc3NpZXIuZG9jdW1lbnRlbi5uYXZpZ2F0ZVRvQ2FzZUFkbWluJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInNldHRpbmdzXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUE4QyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFHdkIsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFJN0IsT0FBTyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFjLE1BQU0sMkJBQTJCLENBQUM7QUFDOUYsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBRWIsRUFBRSxFQUNGLGFBQWEsRUFDYixPQUFPLEVBQ1AsWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVB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O3dCQUM1QixZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEI7K1pBR3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbHVtbkNvbmZpZyxcbiAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIERvY3VtZW50ZW5BcGlNZXRhZGF0YSxcbiAgU29ydFN0YXRlLFxuICBWaWV3VHlwZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0Rvd25sb2FkU2VydmljZSwgVXBsb2FkUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9yZXNvdXJjZSc7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEljb25Nb2R1bGUsIEljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ09MVU1OX1ZJRVdfVFlQRVMsXG4gIENvbmZpZ3VyZWRDb2x1bW4sXG4gIERPQ1VNRU5URU5fQ09MVU1OX0tFWVMsXG4gIERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCxcbiAgRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlLFxuICBTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLCBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnQuc2VydmljZSc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLWZpbHRlci9kb2N1bWVudGVuLWFwaS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWRvY3VtZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDYXJib25MaXN0TW9kdWxlLFxuICAgIERvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsQ29tcG9uZW50LFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBEb2N1bWVudGVuQXBpRmlsdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFRhYkRvY3VtZW50ZW5BcGlEb2N1bWVudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndHJhbnNsYXRpb25UZW1wbGF0ZScpIHRyYW5zbGF0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoY2FzZURlZmluaXRpb25OYW1lID0+ICEhY2FzZURlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQ6IE9ic2VydmFibGU8U3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPiA9XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjYXNlRGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UuZ2V0U3VwcG9ydGVkQXBpRmVhdHVyZXMoY2FzZURlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIHRhcChzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMgPT5cbiAgICAgICAgdGhpcy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLm5leHQoc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8Q29sdW1uQ29uZmlnW10+ID0gdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5maWVsZHNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UuZ2V0Q29uZmlndXJlZENvbHVtbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgICAgIHRoaXMuX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQsXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbY29sdW1ucywgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzXSkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNvcnRDb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4gfCB1bmRlZmluZWQgPSBjb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4pID0+ICEhY29sdW1uLmRlZmF1bHRTb3J0XG4gICAgICApO1xuICAgICAgaWYgKCEhZGVmYXVsdFNvcnRDb2x1bW4gJiYgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzU29ydGFibGVDb2x1bW5zKSB7XG4gICAgICAgIHRoaXMuX3NvcnQkLm5leHQoe3NvcnQ6IGAke2RlZmF1bHRTb3J0Q29sdW1uLmtleX0sJHtkZWZhdWx0U29ydENvbHVtbi5kZWZhdWx0U29ydH1gfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sdW1uOiBDb25maWd1cmVkQ29sdW1uKSA9PiAoe1xuICAgICAgICBrZXk6IGNvbHVtbi5rZXkgPT09IERPQ1VNRU5URU5fQ09MVU1OX0tFWVMuQkVTVEFORFNPTVZBTkcgPyAnc2l6ZScgOiBjb2x1bW4ua2V5LFxuICAgICAgICBsYWJlbDogYHpndy5kb2N1bWVudENvbHVtbnMuJHtjb2x1bW4ua2V5fWAsXG4gICAgICAgIHZpZXdUeXBlOiAhQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0gPyBWaWV3VHlwZS5URVhUIDogQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0sXG4gICAgICAgIC4uLihDT0xVTU5fVklFV19UWVBFU1tjb2x1bW4ua2V5XSA9PT0gVmlld1R5cGUuVEVNUExBVEUgJiYge1xuICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnRyYW5zbGF0aW9uVGVtcGxhdGUsXG4gICAgICAgICAgdGVtcGxhdGVEYXRhOiB7a2V5OiBjb2x1bW4ua2V5fSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihjb2x1bW4ua2V5ID09PSBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkNSRUFUSUVEQVRVTSAmJiB7Zm9ybWF0OiAnREQtTU0tWVlZWSd9KSxcbiAgICAgICAgc29ydGFibGU6IGNvbHVtbi5zb3J0YWJsZSAmJiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMuc3VwcG9ydHNTb3J0YWJsZUNvbHVtbnMsXG4gICAgICB9KSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHRoaXMuZmllbGRzTG9hZGluZyQubmV4dChmYWxzZSkpXG4gICk7XG4gIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlO1xuICBwdWJsaWMgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRvd25sb2FkJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRG93bmxvYWRBY3Rpb25DbGljay5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub25FZGl0TWV0YWRhdGEuYmluZCh0aGlzKSxcbiAgICAgIGRpc2FibGVkQ2FsbGJhY2s6IHRoaXMuZWRpdERpc2FibGVkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnbm9ybWFsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnZG9jdW1lbnQuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRGVsZXRlQWN0aW9uQ2xpY2suYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiAhIWRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SWQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGluaXRpYWxTb3J0U3RhdGUkOiBPYnNlcnZhYmxlPFNvcnRTdGF0ZSB8IG51bGw+ID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXNbJ3BhcmFtcyddKSxcbiAgICBtYXAocGFyYW1zID0+IHtcbiAgICAgIGlmICghIXBhcmFtc1snc29ydCddKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc1NwbGl0ID0gcGFyYW1zWydzb3J0J10uc3BsaXQoJywnKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICAgICAgbmFtZTogcGFyYW1zU3BsaXRbMF0sXG4gICAgICAgICAgZGlyZWN0aW9uOiBwYXJhbXNTcGxpdFsxXSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlzU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93WmFha0xpbmtXYXJuaW5nOiBib29sZWFuO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IGZhbHNlO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZCE6IGJvb2xlYW47XG5cbiAgcHVibGljIGlzRWRpdE1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjY2VwdGVkRmlsZXM6IHN0cmluZyB8IG51bGwgPVxuICAgIHRoaXMuY29uZmlnU2VydmljZT8uY29uZmlnPy5jYXNlRmlsZVVwbG9hZEFjY2VwdGVkRmlsZXMgfHwgbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IG1heEZpbGVTaXplOiBudW1iZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVTaXplVXBsb2FkTGltaXRNQiB8fCA1O1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWxlVG9CZVVwbG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsZSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kYWxEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1VwbG9hZE1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSB1cGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pdGVtc0xvYWRpbmckLCB0aGlzLmZpZWxkc0xvYWRpbmckXSkucGlwZShcbiAgICBtYXAoKFtpdGVtc0xvYWRpbmcsIGZpZWxkc0xvYWRpbmddKSA9PiBpdGVtc0xvYWRpbmcgfHwgZmllbGRzTG9hZGluZylcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0PERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGw+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZmV0Y2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydCQgPSBuZXcgUmVwbGF5U3ViamVjdDx7c29ydDogc3RyaW5nfSB8IG51bGw+KCk7XG5cbiAgcHVibGljIHJlbGF0ZWRGaWxlcyQ6IE9ic2VydmFibGU8QXJyYXk8RG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvY3VtZW50SWQkLFxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcCxcbiAgICB0aGlzLl9yZWZldGNoJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudElkLCBxdWVyeVBhcmFtc10pID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmdldEZpbHRlcmVkWmFrZW5BcGlEb2N1bWVudHMoXG4gICAgICAgICAgZG9jdW1lbnRJZCxcbiAgICAgICAgICBxdWVyeVBhcmFtc1sncGFyYW1zJ11cbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbcmVsYXRlZEZpbGVzXSkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEZpbGVzID0gcmVsYXRlZEZpbGVzPy5jb250ZW50Py5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAuLi5maWxlLFxuICAgICAgICBjcmVhdGVkQnk6IGZpbGUuY3JlYXRlZEJ5IHx8IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaXN0LmF1dG9tYXRpY2FsbHlHZW5lcmF0ZWQnKSxcbiAgICAgICAgc2l6ZTogdGhpcy5ieXRlc1RvTWVnYWJ5dGVzKGZpbGUuYmVzdGFuZHNvbXZhbmcpLFxuICAgICAgICB0YWdzOiBmaWxlLnRyZWZ3b29yZGVuPy5tYXAoKHRyZWZ3b29yZDogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IHRyZWZ3b29yZCxcbiAgICAgICAgfSkpLFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRGaWxlcyB8fCBbXTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1phYWtMaW5rV2FybmluZyA9IHRydWU7XG4gICAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwbG9hZFByb3ZpZGVyU2VydmljZTogVXBsb2FkUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2U6IERvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlOiBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlcihGaWx0ZXIxNik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRJbml0aWFsRmlsdGVyQW5kU29ydCgpO1xuICAgIHRoaXMub3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5zZXRVcGxvYWRQcm9jZXNzTGlua2VkKCk7XG4gICAgdGhpcy5pc1VzZXJBZG1pbigpO1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0ZpbHRlcjE2LCBUYWdHcm91cDE2LCBVcGxvYWQxNl0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZUFjdGlvbkNsaWNrKGl0ZW06IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnQgPSBpdGVtO1xuICAgIHRoaXMuc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZURvY3VtZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UuZGVsZXRlRG9jdW1lbnQodGhpcy5kb2N1bWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGJ5dGVzVG9NZWdhYnl0ZXMoYnl0ZXM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFieXRlcykgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgbWVnYWJ5dGVzID0gYnl0ZXMgLyAoMTAyNCAqIDEwMjQpO1xuICAgIGlmIChtZWdhYnl0ZXMgPCAxKSB7XG4gICAgICByZXR1cm4gYCR7TWF0aC5jZWlsKG1lZ2FieXRlcyAqIDEwMDApfSBLQmA7XG4gICAgfSBlbHNlIGlmIChtZWdhYnl0ZXMgPCAxMDAwKSB7XG4gICAgICByZXR1cm4gbWVnYWJ5dGVzLnRvRml4ZWQoMikgKyAnIE1CJztcbiAgICB9XG5cbiAgICByZXR1cm4gKG1lZ2FieXRlcyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIEdCJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcGxvYWRCdXR0b25Ub29sdGlwKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZFNldCAmJiB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQpIHtcbiAgICAgIHJldHVybiAnVXBsb2FkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNBZG1pbikge1xuICAgICAgcmV0dXJuICdkb3NzaWVyLmRvY3VtZW50ZW4ubm9Qcm9jZXNzTGlua2VkLmFkbWluUm9sZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdkb3NzaWVyLmRvY3VtZW50ZW4ubm9Qcm9jZXNzTGlua2VkLnJlZ3VsYXJVc2VyJztcbiAgfVxuXG4gIHB1YmxpYyBpc1VzZXJBZG1pbigpIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2VcbiAgICAgIC5nZXRVc2VyU3ViamVjdCgpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgdXNlcklkZW50aXR5ID0+IHtcbiAgICAgICAgICB0aGlzLmlzQWRtaW4gPSB1c2VySWRlbnRpdHkucm9sZXMuaW5jbHVkZXMoJ1JPTEVfQURNSU4nKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG1ldGFkYXRhU2V0KG1ldGFkYXRhOiBEb2N1bWVudGVuQXBpTWV0YWRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZGluZyQubmV4dCh0cnVlKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZmlsZVRvQmVVcGxvYWRlZCQsIHRoaXMuZG9jdW1lbnRJZCRdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKFtmaWxlLCBkb2N1bWVudElkXSkgPT4ge1xuICAgICAgICAgIGlmICghZmlsZSkgcmV0dXJuO1xuICAgICAgICAgIGlmICh0aGlzLmlzRWRpdE1vZGUkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZS51cGRhdGVEb2N1bWVudChmaWxlLCBtZXRhZGF0YSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvdmlkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgIC51cGxvYWRGaWxlV2l0aE1ldGFkYXRhKGZpbGUsIGRvY3VtZW50SWQsIG1ldGFkYXRhKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlciQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25Eb3dubG9hZEFjdGlvbkNsaWNrKGZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWREb2N1bWVudChmaWxlLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRNZXRhZGF0YShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5pc0VkaXRNb2RlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChmaWxlKTtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZU1ldGFkYXRhTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzRWRpdE1vZGUkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChldmVudC50YXJnZXQuZmlsZXNbMF0pO1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KHRydWUpO1xuICAgIHRoaXMucmVzZXRGaWxlSW5wdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5hdmlnYXRlVG9DYXNlQWRtaW5DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4ge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvZG9zc2llci1tYW5hZ2VtZW50L2Rvc3NpZXIvJHtkb2N1bWVudERlZmluaXRpb25OYW1lfWBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd0NsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkRG9jdW1lbnQoZXZlbnQsIGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblVwbG9hZEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZpbHRlckV2ZW50KGZpbHRlcjogRG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyJC5uZXh0KGZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgb25Tb3J0Q2hhbmdlZChzb3J0U3RhdGU6IFNvcnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3NvcnQkLm5leHQoXG4gICAgICBzb3J0U3RhdGUuaXNTb3J0aW5nXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc29ydDogYCR7c29ydFN0YXRlLnN0YXRlLm5hbWUgPT09ICdzaXplJyA/IERPQ1VNRU5URU5fQ09MVU1OX0tFWVMuQkVTVEFORFNPTVZBTkcgOiBzb3J0U3RhdGUuc3RhdGUubmFtZX0sJHtzb3J0U3RhdGUuc3RhdGUuZGlyZWN0aW9ufWAsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlZmV0Y2hEb2N1bWVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmZXRjaCQubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZWRpdERpc2FibGVkKGZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWxlLnN0YXR1cyA9PT0gJ2RlZmluaXRpZWYnO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZERvY3VtZW50KHJlbGF0ZWRGaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUsIGZvcmNlRG93bmxvYWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZEZpbGUoXG4gICAgICBgL2FwaS92MS9kb2N1bWVudGVuLWFwaS8ke3JlbGF0ZWRGaWxlLnBsdWdpbkNvbmZpZ3VyYXRpb25JZH0vZmlsZXMvJHtyZWxhdGVkRmlsZS5maWxlSWR9L2Rvd25sb2FkYCxcbiAgICAgIHJlbGF0ZWRGaWxlLmJlc3RhbmRzbmFhbSA/PyAnJyxcbiAgICAgIGZvcmNlRG93bmxvYWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUXVlcnlQYXJhbXNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJCxcbiAgICAgICAgdGhpcy5kb2N1bWVudElkJCxcbiAgICAgICAgdGhpcy5maWx0ZXIkLFxuICAgICAgICB0aGlzLl9zb3J0JCxcbiAgICAgIF0pLnN1YnNjcmliZSgoW2RlZmluaXRpb25OYW1lLCBkb2N1bWVudElkLCBmaWx0ZXIsIHNvcnRdKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXJzLyR7ZGVmaW5pdGlvbk5hbWV9L2RvY3VtZW50LyR7ZG9jdW1lbnRJZH0vZG9jdW1lbnRzYF0sIHtcbiAgICAgICAgICBxdWVyeVBhcmFtczogey4uLmZpbHRlciwgLi4uc29ydH0sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpbGVJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIHNldFVwbG9hZFByb2Nlc3NMaW5rZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm92aWRlclNlcnZpY2UuY2hlY2tVcGxvYWRQcm9jZXNzTGluayhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgICApLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChsaW5rZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkID0gbGlua2VkO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxGaWx0ZXJBbmRTb3J0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChxdWVyeVBhcmFtcyA9PiB7XG4gICAgICAgICAgY29uc3Qge3NvcnQsIC4uLmZpbHRlcn0gPSBxdWVyeVBhcmFtc1sncGFyYW1zJ107XG4gICAgICAgICAgcmV0dXJuIHtzb3J0LCBmaWx0ZXJ9O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoe2ZpbHRlciwgc29ydH0pID0+IHtcbiAgICAgICAgdGhpcy5fc29ydCQubmV4dCh7c29ydH0pO1xuICAgICAgICB0aGlzLmZpbHRlciQubmV4dChmaWx0ZXIpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cbjxkaXZcbiAgY2xhc3M9XCJjYXJib24tZG9jdW1lbnQtdGFibGUtd3JhcHBlclwiXG4gICpuZ0lmPVwie1xuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgZmllbGRzTG9hZGluZzogZmllbGRzTG9hZGluZyQgfCBhc3luYyxcbiAgICB1cGxvYWRpbmc6IHVwbG9hZGluZyQgfCBhc3luYyxcbiAgICByZWxhdGVkRmlsZXM6IHJlbGF0ZWRGaWxlcyQgfCBhc3luYyxcbiAgICBmaWVsZHM6IGZpZWxkcyQgfCBhc3luYyxcbiAgICBpbml0aWFsU29ydFN0YXRlOiBpbml0aWFsU29ydFN0YXRlJCB8IGFzeW5jLFxuICAgIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlczogc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgQGlmICgoIW9icy5maWVsZHNMb2FkaW5nICYmIG9icy5maWVsZHMubGVuZ3RoKSB8fCBvYnMuZmllbGRzTG9hZGluZykge1xuICAgIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICBbYWN0aW9uSXRlbXNdPVwiYWN0aW9uSXRlbXNcIlxuICAgICAgW2l0ZW1zXT1cIm9icy5yZWxhdGVkRmlsZXNcIlxuICAgICAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgICAgIFtsb2FkaW5nXT1cIm9icy5sb2FkaW5nXCJcbiAgICAgIFtpbml0aWFsU29ydFN0YXRlXT1cIlxuICAgICAgICBvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNTb3J0YWJsZUNvbHVtbnMgJiYgb2JzLmluaXRpYWxTb3J0U3RhdGVcbiAgICAgIFwiXG4gICAgICAocm93Q2xpY2tlZCk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICAgICAgKHNvcnRDaGFuZ2VkKT1cIlxuICAgICAgICBvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNTb3J0YWJsZUNvbHVtbnMgJiYgb25Tb3J0Q2hhbmdlZCgkZXZlbnQpXG4gICAgICBcIlxuICAgICAgaGlkZUNvbHVtbkhlYWRlclxuICAgID5cbiAgICAgIDxkaXYgY2FyYm9uVG9vbGJhckNvbnRlbnQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlc1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBoaWRkZW5cbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAvPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIm9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c0ZpbHRlcmFibGVDb2x1bW5zXCJcbiAgICAgICAgICBbY2RzT3ZlcmZsb3dNZW51XT1cIm92ZXJmbG93RmlsdGVyXCJcbiAgICAgICAgICBbY3VzdG9tUGFuZV09XCJ0cnVlXCJcbiAgICAgICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgW2ZsaXBdPVwidHJ1ZVwiXG4gICAgICAgICAgW29mZnNldF09XCJ7eDogMCwgeTogNDd9XCJcbiAgICAgICAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJmaWx0ZXJcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1Jlc3VsdHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG4gIH0gQGVsc2Uge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwibmF2aWdhdGVUb0Nhc2VBZG1pbkJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ3pndy5kb2N1bWVudHMubm9Db2x1bW5zLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ3pndy5kb2N1bWVudHMubm9Db2x1bW5zLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9XG5cbiAgPHZhbHRpbW8tZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWxcbiAgICBbb3Blbl09XCJzaG93VXBsb2FkTW9kYWwkIHwgYXN5bmNcIlxuICAgIFtkaXNhYmxlZCRdPVwibW9kYWxEaXNhYmxlZCRcIlxuICAgIFtmaWxlJF09XCJmaWxlVG9CZVVwbG9hZGVkJFwiXG4gICAgW2lzRWRpdE1vZGVdPVwiaXNFZGl0TW9kZSQgfCBhc3luY1wiXG4gICAgW3N1cHBvcnRzVHJlZndvb3JkZW5dPVwib2JzPy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM/LnN1cHBvcnRzVHJlZndvb3JkZW5cIlxuICAgIChtb2RhbENsb3NlKT1cImNsb3NlTWV0YWRhdGFNb2RhbCgpXCJcbiAgICAobWV0YWRhdGEpPVwibWV0YWRhdGFTZXQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWw+XG48L2Rpdj5cblxuPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJkYXNoYm9hcmRNYW5hZ2VtZW50LmRlbGV0ZU1vZGFsLmNvbmZpcm1cIlxuICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmRvY3VtZW50ZW4uZGVsZXRlQ29uZmlybWF0aW9uTW9kYWwuY29udGVudFwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuZG9jdW1lbnRlbi5kZWxldGVDb25maXJtYXRpb25Nb2RhbC50aXRsZVwiXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93RGVsZXRlQ29uZmlybWF0aW9uTW9kYWwkXCJcbiAgKGNvbmZpcm1FdmVudCk9XCJkZWxldGVEb2N1bWVudCgpXCJcbj5cbjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjZG93bmxvYWRCdXR0b24gbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdlxuICAgICpuZ0lmPVwie2lzRG93bmxvYWRpbmc6IGluZGV4ZXNJbmNsdWRlSW5kZXgoZG93bmxvYWRpbmdGaWxlSW5kZXhlcyQgfCBhc3luYywgaW5kZXgpfSBhcyB2YXJzXCJcbiAgICBjbGFzcz1cImRvd25sb2FkLWJ1dHRvbi1jb250YWluZXJcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhdmFycy5pc0Rvd25sb2FkaW5nXCJcbiAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cInNtXCJcbiAgICAgIChjbGljayk9XCJkb3dubG9hZERvY3VtZW50KGl0ZW0sIGluZGV4KVwiXG4gICAgPlxuICAgICAge3sgJ2ludGVyZmFjZS5kb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImRvd25sb2FkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG5cbiAgICA8Y2RzLWxvYWRpbmcgc2l6ZT1cInNtXCIgKm5nSWY9XCJ2YXJzLmlzRG93bmxvYWRpbmdcIj48L2Nkcy1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9SZXN1bHRzPlxuICBAaWYgKChmaWx0ZXIkIHwgYXN5bmMgfCBrZXl2YWx1ZSk/Lmxlbmd0aCkge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwicmVzZXRGaWx0ZXJCdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIid6Z3cuZG9jdW1lbnRzLm5vUmVzdWx0cy5maWx0ZXJEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIid6Z3cuZG9jdW1lbnRzLm5vUmVzdWx0cy5maWx0ZXJUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfSBAZWxzZSBpZiAoc2hvd1phYWtMaW5rV2FybmluZyAmJiBpc0FkbWluKSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci5kb2N1bWVudGVuLm5vWmFha0ZvdW5kJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1phYWtGb3VuZFRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9IEBlbHNlIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cInVwbG9hZEJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub0ZpbGVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub0ZpbGVzVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjb3ZlcmZsb3dGaWx0ZXI+XG4gIDx2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1maWx0ZXJcbiAgICBbcHJlZmlsbEZpbHRlcl09XCJmaWx0ZXIkIHwgYXN5bmNcIlxuICAgIChmaWx0ZXJFdmVudCk9XCJvbkZpbHRlckV2ZW50KCRldmVudClcIlxuICA+PC92YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1maWx0ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0RmlsdGVyQnV0dG9uPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwib25GaWx0ZXJFdmVudChudWxsKVwiPlxuICAgIHt7ICdSZXNldCBmaWx0ZXInIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN1cGxvYWRCdXR0b24gbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgPGJ1dHRvblxuICAgIFtkaXNhYmxlZF09XCIodXBsb2FkUHJvY2Vzc0xpbmtlZFNldCAmJiAhdXBsb2FkUHJvY2Vzc0xpbmtlZCkgfHwgc2hvd1phYWtMaW5rV2FybmluZyB8fCBkaXNhYmxlZFwiXG4gICAgW3ZUb29sdGlwXT1cImdldFVwbG9hZEJ1dHRvblRvb2x0aXAoKSB8IHRyYW5zbGF0ZVwiXG4gICAgKGNsaWNrKT1cIm9uVXBsb2FkQnV0dG9uQ2xpY2soKVwiXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gID5cbiAgICB7eyAnVXBsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ1cGxvYWRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyYW5zbGF0aW9uVGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIHt7ICdkb2N1bWVudC4nICsgZGF0YS5pdGVtW2RhdGEua2V5XSB8IHRyYW5zbGF0ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJvbk5hdmlnYXRlVG9DYXNlQWRtaW5DbGljaygpXCIgY2RzQnV0dG9uPVwicHJpbWFyeVwiPlxuICAgIHt7ICdkb3NzaWVyLmRvY3VtZW50ZW4ubmF2aWdhdGVUb0Nhc2VBZG1pbicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJzZXR0aW5nc1wiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -146,10 +146,10 @@ export class DocumentenApiFilterComponent {
146
146
  selected: true,
147
147
  }));
148
148
  }
149
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DocumentenApiFilterComponent, deps: [{ token: i1.DocumentService }, { token: i2.FormBuilder }, { token: i3.IconService }, { token: i4.ActivatedRoute }, { token: i5.TranslateService }, { token: i6.DocumentenApiTagService }], target: i0.ɵɵFactoryTarget.Component }); }
150
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DocumentenApiFilterComponent, isStandalone: true, selector: "valtimo-dossier-detail-tab-documenten-api-filter", outputs: { filterEvent: "filterEvent" }, viewQueries: [{ propertyName: "creationDateFromPicker", first: true, predicate: ["creationDateFrom"], descendants: true }, { propertyName: "creationDateToPicker", first: true, predicate: ["creationDateTo"], descendants: true }], ngImport: i0, template: "<div class=\"valtimo-documenten-api-filter\" (click)=\"$event.stopImmediatePropagation()\">\n <form\n *ngIf=\"{\n confidentialityLevels: confidentialityLevels$ | async,\n informationObjectTypes: informationObjectTypes$ | async,\n tags: tags$ | async\n } as obs\"\n class=\"valtimo-documenten-api-filter__form\"\n [formGroup]=\"formGroup\"\n >\n <cds-text-label>\n {{ 'zgw.documentColumns.titel' | translate }}\n\n <input cdsText formControlName=\"titel\" />\n </cds-text-label>\n\n <cds-dropdown\n [disabled]=\"!obs.informationObjectTypes?.length\"\n [dropUp]=\"false\"\n [label]=\"'zgw.documentColumns.informatieobjecttype' | translate\"\n formControlName=\"informatieObjectType\"\n >\n <cds-dropdown-list [items]=\"obs.informationObjectTypes\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-documenten-api-filter__dates\">\n <cds-date-picker\n #creationDateFrom\n [label]=\"'interface.labels.dateCreationFrom' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('createdFrom', $event)\"\n ></cds-date-picker>\n\n <cds-date-picker\n #creationDateTo\n [label]=\"'interface.labels.dateCreationTo' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('createdTo', $event)\"\n ></cds-date-picker>\n </div>\n\n <cds-text-label>\n {{ 'zgw.documentColumns.auteur' | translate }}\n\n <input cdsText formControlName=\"auteur\" />\n </cds-text-label>\n\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'zgw.documentColumns.vertrouwelijkheidaanduiding' | translate\"\n formControlName=\"vertrouwelijkHeidaanduiding\"\n >\n <cds-dropdown-list [items]=\"obs.confidentialityLevels\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [label]=\"'zgw.documentColumns.trefwoorden' | translate\"\n formControlName=\"trefwoorden\"\n type=\"multi\"\n >\n <cds-dropdown-list [items]=\"obs.tags\"></cds-dropdown-list>\n </cds-dropdown>\n </form>\n\n <footer class=\"valtimo-documenten-api-filter__footer\">\n <button cdsButton=\"tertiary\" (click)=\"resetFilter()\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </footer>\n</div>\n", styles: [":host .valtimo-documenten-api-filter{display:flex;flex-direction:column;max-width:880px}:host .valtimo-documenten-api-filter__form{display:grid;grid-template-columns:repeat(3,1fr);align-items:flex-end;padding:16px;gap:16px}:host .valtimo-documenten-api-filter__dates{display:flex;gap:16px}:host .valtimo-documenten-api-filter__footer{display:flex;padding:0 16px 16px}::ng-deep .cds--date-picker.cds--date-picker--single .cds--date-picker__input{inline-size:unset!important;padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: DatePickerInputModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i3.DatePicker, selector: "cds-date-picker, ibm-date-picker", inputs: ["range", "dateFormat", "language", "label", "helperText", "rangeHelperText", "rangeLabel", "placeholder", "ariaLabel", "inputPattern", "id", "value", "theme", "disabled", "invalid", "invalidText", "warn", "warnText", "size", "rangeInvalid", "rangeInvalidText", "rangeWarn", "rangeWarnText", "skeleton", "plugins", "flatpickrOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i3.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i3.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentenApiFilterComponent, deps: [{ token: i1.DocumentService }, { token: i2.FormBuilder }, { token: i3.IconService }, { token: i4.ActivatedRoute }, { token: i5.TranslateService }, { token: i6.DocumentenApiTagService }], target: i0.ɵɵFactoryTarget.Component }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DocumentenApiFilterComponent, isStandalone: true, selector: "valtimo-dossier-detail-tab-documenten-api-filter", outputs: { filterEvent: "filterEvent" }, viewQueries: [{ propertyName: "creationDateFromPicker", first: true, predicate: ["creationDateFrom"], descendants: true }, { propertyName: "creationDateToPicker", first: true, predicate: ["creationDateTo"], descendants: true }], ngImport: i0, template: "<div class=\"valtimo-documenten-api-filter\" (click)=\"$event.stopImmediatePropagation()\">\n <form\n *ngIf=\"{\n confidentialityLevels: confidentialityLevels$ | async,\n informationObjectTypes: informationObjectTypes$ | async,\n tags: tags$ | async\n } as obs\"\n class=\"valtimo-documenten-api-filter__form\"\n [formGroup]=\"formGroup\"\n >\n <cds-text-label>\n {{ 'zgw.documentColumns.titel' | translate }}\n\n <input cdsText formControlName=\"titel\" />\n </cds-text-label>\n\n <cds-dropdown\n [disabled]=\"!obs.informationObjectTypes?.length\"\n [dropUp]=\"false\"\n [label]=\"'zgw.documentColumns.informatieobjecttype' | translate\"\n formControlName=\"informatieObjectType\"\n >\n <cds-dropdown-list [items]=\"obs.informationObjectTypes\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-documenten-api-filter__dates\">\n <cds-date-picker\n #creationDateFrom\n [label]=\"'interface.labels.dateCreationFrom' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('createdFrom', $event)\"\n ></cds-date-picker>\n\n <cds-date-picker\n #creationDateTo\n [label]=\"'interface.labels.dateCreationTo' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('createdTo', $event)\"\n ></cds-date-picker>\n </div>\n\n <cds-text-label>\n {{ 'zgw.documentColumns.auteur' | translate }}\n\n <input cdsText formControlName=\"auteur\" />\n </cds-text-label>\n\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'zgw.documentColumns.vertrouwelijkheidaanduiding' | translate\"\n formControlName=\"vertrouwelijkHeidaanduiding\"\n >\n <cds-dropdown-list [items]=\"obs.confidentialityLevels\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-dropdown\n [label]=\"'zgw.documentColumns.trefwoorden' | translate\"\n formControlName=\"trefwoorden\"\n type=\"multi\"\n >\n <cds-dropdown-list [items]=\"obs.tags\"></cds-dropdown-list>\n </cds-dropdown>\n </form>\n\n <footer class=\"valtimo-documenten-api-filter__footer\">\n <button cdsButton=\"tertiary\" (click)=\"resetFilter()\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </footer>\n</div>\n", styles: [":host .valtimo-documenten-api-filter{display:flex;flex-direction:column;max-width:880px}:host .valtimo-documenten-api-filter__form{display:grid;grid-template-columns:repeat(3,1fr);align-items:flex-end;padding:16px;gap:16px}:host .valtimo-documenten-api-filter__dates{display:flex;gap:16px}:host .valtimo-documenten-api-filter__footer{display:flex;padding:0 16px 16px}::ng-deep .cds--date-picker.cds--date-picker--single .cds--date-picker__input{inline-size:unset!important;padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: DatePickerInputModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i3.DatePicker, selector: "cds-date-picker, ibm-date-picker", inputs: ["range", "dateFormat", "language", "label", "helperText", "rangeHelperText", "rangeLabel", "placeholder", "ariaLabel", "inputPattern", "id", "value", "theme", "disabled", "invalid", "invalidText", "warn", "warnText", "size", "rangeInvalid", "rangeInvalidText", "rangeWarn", "rangeWarnText", "skeleton", "plugins", "flatpickrOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i3.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i3.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
151
151
  }
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DocumentenApiFilterComponent, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentenApiFilterComponent, decorators: [{
153
153
  type: Component,
154
154
  args: [{ selector: 'valtimo-dossier-detail-tab-documenten-api-filter', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
155
155
  CommonModule,
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
171
171
  }], filterEvent: [{
172
172
  type: Output
173
173
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWZpbHRlci9kb2N1bWVudGVuLWFwaS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZmlsdGVyL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBR3RFLE9BQU8sRUFDTCxZQUFZLEVBRVoscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsVUFBVSxFQUVWLFdBQVcsR0FFWixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFDWixNQUFNLEVBQ04sR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7Ozs7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XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbU1hcH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhc2hDYW4xNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NvbmZpZGVudGlhbGl0eUxldmVsfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBEb2N1bWVudFR5cGV9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgRGF0ZVBpY2tlcixcbiAgRGF0ZVBpY2tlcklucHV0TW9kdWxlLFxuICBEYXRlUGlja2VyTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSWNvblNlcnZpY2UsXG4gIElucHV0TW9kdWxlLFxuICBMaXN0SXRlbSxcbn0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQgZmxhdHBpY2tyIGZyb20gJ2ZsYXRwaWNrcic7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpVGFnfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9jdW1lbnRlbi1hcGktdGFnLm1vZGVsJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaVRhZ1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItZG9jdW1lbnRlbi1hcGktZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgRGF0ZVBpY2tlcklucHV0TW9kdWxlLFxuICAgIERhdGVQaWNrZXJNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRlbkFwaUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnY3JlYXRpb25EYXRlRnJvbScpIHB1YmxpYyByZWFkb25seSBjcmVhdGlvbkRhdGVGcm9tUGlja2VyOiBEYXRlUGlja2VyO1xuICBAVmlld0NoaWxkKCdjcmVhdGlvbkRhdGVUbycpIHB1YmxpYyByZWFkb25seSBjcmVhdGlvbkRhdGVUb1BpY2tlcjogRGF0ZVBpY2tlcjtcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZGVudGlhbGl0eUxldmVsczogQXJyYXk8Q29uZmlkZW50aWFsaXR5TGV2ZWw+ID0gW1xuICAgICdvcGVuYmFhcicsXG4gICAgJ2JlcGVya3Rfb3BlbmJhYXInLFxuICAgICdpbnRlcm4nLFxuICAgICd6YWFrdmVydHJvdXdlbGlqaycsXG4gICAgJ3ZlcnRyb3V3ZWxpamsnLFxuICAgICdjb25maWRlbnRpZWVsJyxcbiAgICAnZ2VoZWltJyxcbiAgICAnemVlcl9nZWhlaW0nLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlciQgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICBtYXAocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgbGV0IHtzb3J0LCAuLi5maWx0ZXJ9ID0gcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICAgIGlmICghIWZpbHRlci50cmVmd29vcmRlbikge1xuICAgICAgICAgIGZpbHRlciA9IHsuLi5maWx0ZXIsIHRyZWZ3b29yZGVuOiB0aGlzLmNvbnZlcnRUcmVmd29vcmRlblBhcmFtKGZpbHRlci50cmVmd29vcmRlbil9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoZmlsdGVyLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWRlbnRpYWxpdHlMZXZlbHMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZmlsdGVyJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtmaWx0ZXJdKSA9PlxuICAgICAgdGhpcy5fY29uZmlkZW50aWFsaXR5TGV2ZWxzLm1hcCgoY29uZmlkZW50aWFsaXR5TGV2ZWw6IENvbmZpZGVudGlhbGl0eUxldmVsKSA9PiAoe1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgZG9jdW1lbnQuJHtjb25maWRlbnRpYWxpdHlMZXZlbH1gKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZpbHRlcj8udmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nID09PSBjb25maWRlbnRpYWxpdHlMZXZlbCxcbiAgICAgICAgaWQ6IGNvbmZpZGVudGlhbGl0eUxldmVsLFxuICAgICAgfSkpXG4gICAgKSxcbiAgICBzdGFydFdpdGgoW10pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGluZm9ybWF0aW9uT2JqZWN0VHlwZXMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIGZpbHRlcigocGFyYW1NYXA6IFBhcmFtTWFwKSA9PiAhIXBhcmFtTWFwLmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpKSxcbiAgICBzd2l0Y2hNYXAoKHBhcmFtTWFwOiBQYXJhbU1hcCkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudFR5cGVzKHBhcmFtTWFwLmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpID8/ICcnKSxcbiAgICAgICAgdGhpcy5fZmlsdGVyJCxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFt0eXBlcywgZmlsdGVyXSkgPT5cbiAgICAgIHR5cGVzLm1hcCgodHlwZTogRG9jdW1lbnRUeXBlKSA9PiAoe1xuICAgICAgICBjb250ZW50OiB0eXBlLm5hbWUsXG4gICAgICAgIHNlbGVjdGVkOiBmaWx0ZXI/LmluZm9ybWF0aWVvYmplY3R0eXBlID09PSB0eXBlLnVybCxcbiAgICAgICAgaWQ6IHR5cGUudXJsLFxuICAgICAgfSkpXG4gICAgKSxcbiAgICBzdGFydFdpdGgoW10pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhZ3MkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIGZpbHRlcigocGFyYW1NYXA6IFBhcmFtTWFwKSA9PiAhIXBhcmFtTWFwLmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpKSxcbiAgICBzd2l0Y2hNYXAoKHBhcmFtTWFwOiBQYXJhbU1hcCkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlUYWdTZXJ2aWNlLmdldFRhZ3MocGFyYW1NYXAuZ2V0KCdkb2N1bWVudERlZmluaXRpb25OYW1lJykgPz8gJycpLFxuICAgICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAsXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbdGFncywgcXVlcnlQYXJhbU1hcF0pID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGFncyA9IHRoaXMuY29udmVydFRyZWZ3b29yZGVuUGFyYW0ocXVlcnlQYXJhbU1hcFsncGFyYW1zJ10/LnRyZWZ3b29yZGVuKS5tYXAoXG4gICAgICAgIChpdGVtOiBMaXN0SXRlbSkgPT4gaXRlbS5jb250ZW50XG4gICAgICApO1xuICAgICAgcmV0dXJuIHRhZ3MubWFwKCh0YWc6IERvY3VtZW50ZW5BcGlUYWcpID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IHRhZy52YWx1ZSxcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkVGFncy5pbmNsdWRlcyh0YWcudmFsdWUpLFxuICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHN0YXJ0V2l0aChbXSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgYXV0ZXVyOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgIHZlcnRyb3V3ZWxpamtIZWlkYWFuZHVpZGluZzogdGhpcy5mYi5jb250cm9sKHt9KSxcbiAgICBjcmVhdGllZGF0dW1Gcm9tOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgIGNyZWF0aWVkYXR1bVRvOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgIGluZm9ybWF0aWVPYmplY3RUeXBlOiB0aGlzLmZiLmNvbnRyb2woe30pLFxuICAgIHRyZWZ3b29yZGVuOiB0aGlzLmZiLmNvbnRyb2woW10pLFxuICAgIHRpdGVsOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlUYWdTZXJ2aWNlOiBEb2N1bWVudGVuQXBpVGFnU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKFRyYXNoQ2FuMTYpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkZvcm1WYWx1ZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY3JlYXRpb25EYXRlRnJvbUNvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnY3JlYXRpZWRhdHVtRnJvbScpPy52YWx1ZTtcbiAgICBjb25zdCBjcmVhdGlvbkRhdGVUb0NvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnY3JlYXRpZWRhdHVtVG8nKT8udmFsdWU7XG5cbiAgICBpZiAoISFjcmVhdGlvbkRhdGVGcm9tQ29udHJvbFZhbHVlKSB7XG4gICAgICB0aGlzLmNyZWF0aW9uRGF0ZUZyb21QaWNrZXIud3JpdGVWYWx1ZShbXG4gICAgICAgIGZsYXRwaWNrci5mb3JtYXREYXRlKG5ldyBEYXRlKGNyZWF0aW9uRGF0ZUZyb21Db250cm9sVmFsdWUpLCAnZC1tLVknKSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGlmICghIWNyZWF0aW9uRGF0ZVRvQ29udHJvbFZhbHVlKSB7XG4gICAgICB0aGlzLmNyZWF0aW9uRGF0ZVRvUGlja2VyLndyaXRlVmFsdWUoW1xuICAgICAgICBmbGF0cGlja3IuZm9ybWF0RGF0ZShuZXcgRGF0ZShjcmVhdGlvbkRhdGVUb0NvbnRyb2xWYWx1ZSksICdkLW0tWScpLFxuICAgICAgXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0RmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRpb25EYXRlRnJvbVBpY2tlci53cml0ZVZhbHVlKFtdKTtcbiAgICB0aGlzLmNyZWF0aW9uRGF0ZVRvUGlja2VyLndyaXRlVmFsdWUoW10pO1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgb25EYXRlU2VsZWN0ZWQoY29udHJvbDogJ2NyZWF0ZWRUbycgfCAnY3JlYXRlZEZyb20nLCBldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wgPT09ICdjcmVhdGVkRnJvbScpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnY3JlYXRpZWRhdHVtRnJvbScpPy5wYXRjaFZhbHVlKGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2NyZWF0aWVkYXR1bVRvJyk/LnBhdGNoVmFsdWUoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRm9ybVZhbHVlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckV2ZW50LmVtaXQoe1xuICAgICAgICAgIC4uLighIWZvcm1WYWx1ZS5hdXRldXIgJiYge2F1dGV1cjogZm9ybVZhbHVlLmF1dGV1cn0pLFxuICAgICAgICAgIC4uLighIWZvcm1WYWx1ZS50aXRlbCAmJiB7dGl0ZWw6IGZvcm1WYWx1ZS50aXRlbH0pLFxuICAgICAgICAgIC4uLighIWZvcm1WYWx1ZS5jcmVhdGllZGF0dW1Gcm9tICYmIHtcbiAgICAgICAgICAgIGNyZWF0aWVkYXR1bUZyb206IGZsYXRwaWNrci5mb3JtYXREYXRlKG5ldyBEYXRlKGZvcm1WYWx1ZS5jcmVhdGllZGF0dW1Gcm9tKSwgJ1ktbS1kJyksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKCEhZm9ybVZhbHVlLmNyZWF0aWVkYXR1bVRvICYmIHtcbiAgICAgICAgICAgIGNyZWF0aWVkYXR1bVRvOiBmbGF0cGlja3IuZm9ybWF0RGF0ZShuZXcgRGF0ZShmb3JtVmFsdWUuY3JlYXRpZWRhdHVtVG8pLCAnWS1tLWQnKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oISEoZm9ybVZhbHVlLnZlcnRyb3V3ZWxpamtIZWlkYWFuZHVpZGluZyBhcyBMaXN0SXRlbSk/LmlkICYmIHtcbiAgICAgICAgICAgIHZlcnRyb3V3ZWxpamtoZWlkYWFuZHVpZGluZzogKGZvcm1WYWx1ZS52ZXJ0cm91d2VsaWprSGVpZGFhbmR1aWRpbmcgYXMgTGlzdEl0ZW0pLmlkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLighIShmb3JtVmFsdWUuaW5mb3JtYXRpZU9iamVjdFR5cGUgYXMgTGlzdEl0ZW0pPy5pZCAmJiB7XG4gICAgICAgICAgICBpbmZvcm1hdGllb2JqZWN0dHlwZTogKGZvcm1WYWx1ZS5pbmZvcm1hdGllT2JqZWN0VHlwZSBhcyBMaXN0SXRlbSkuaWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKCEhZm9ybVZhbHVlLnRyZWZ3b29yZGVuICYmXG4gICAgICAgICAgICBmb3JtVmFsdWUudHJlZndvb3JkZW4ubGVuZ3RoID4gMCAmJiB7XG4gICAgICAgICAgICAgIHRyZWZ3b29yZGVuOiAoZm9ybVZhbHVlLnRyZWZ3b29yZGVuIGFzIExpc3RJdGVtW10pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYWNjLCBjdXJyLCBpbmRleCkgPT4gKGluZGV4ID09PSAwID8gY3Vyci5jb250ZW50IDogYCR7YWNjfSwke2N1cnIuY29udGVudH1gKSxcbiAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VHJlZndvb3JkZW5QYXJhbShzdHJpbmdBcnJheTogc3RyaW5nIHwgdW5kZWZpbmVkKTogTGlzdEl0ZW1bXSB7XG4gICAgaWYgKCFzdHJpbmdBcnJheSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGFycmF5ID0gc3RyaW5nQXJyYXkuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBhcnJheS5tYXAoKGNvbnRlbnQ6IHN0cmluZykgPT4gKHtcbiAgICAgIGNvbnRlbnQsXG4gICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICB9KSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLWZpbHRlclwiIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIj5cbiAgPGZvcm1cbiAgICAqbmdJZj1cIntcbiAgICAgIGNvbmZpZGVudGlhbGl0eUxldmVsczogY29uZmlkZW50aWFsaXR5TGV2ZWxzJCB8IGFzeW5jLFxuICAgICAgaW5mb3JtYXRpb25PYmplY3RUeXBlczogaW5mb3JtYXRpb25PYmplY3RUeXBlcyQgfCBhc3luYyxcbiAgICAgIHRhZ3M6IHRhZ3MkIHwgYXN5bmNcbiAgICB9IGFzIG9ic1wiXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLWZpbHRlcl9fZm9ybVwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICA+XG4gICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAge3sgJ3pndy5kb2N1bWVudENvbHVtbnMudGl0ZWwnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxpbnB1dCBjZHNUZXh0IGZvcm1Db250cm9sTmFtZT1cInRpdGVsXCIgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgPGNkcy1kcm9wZG93blxuICAgICAgW2Rpc2FibGVkXT1cIiFvYnMuaW5mb3JtYXRpb25PYmplY3RUeXBlcz8ubGVuZ3RoXCJcbiAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgW2xhYmVsXT1cIid6Z3cuZG9jdW1lbnRDb2x1bW5zLmluZm9ybWF0aWVvYmplY3R0eXBlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbmZvcm1hdGllT2JqZWN0VHlwZVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMuaW5mb3JtYXRpb25PYmplY3RUeXBlc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG5cbiAgICA8ZGl2IGNsYXNzPVwidmFsdGltby1kb2N1bWVudGVuLWFwaS1maWx0ZXJfX2RhdGVzXCI+XG4gICAgICA8Y2RzLWRhdGUtcGlja2VyXG4gICAgICAgICNjcmVhdGlvbkRhdGVGcm9tXG4gICAgICAgIFtsYWJlbF09XCInaW50ZXJmYWNlLmxhYmVscy5kYXRlQ3JlYXRpb25Gcm9tJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiREQtTU0tWVlZWVwiXG4gICAgICAgIFtkYXRlRm9ybWF0XT1cIidkLW0tWSdcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25EYXRlU2VsZWN0ZWQoJ2NyZWF0ZWRGcm9tJywgJGV2ZW50KVwiXG4gICAgICA+PC9jZHMtZGF0ZS1waWNrZXI+XG5cbiAgICAgIDxjZHMtZGF0ZS1waWNrZXJcbiAgICAgICAgI2NyZWF0aW9uRGF0ZVRvXG4gICAgICAgIFtsYWJlbF09XCInaW50ZXJmYWNlLmxhYmVscy5kYXRlQ3JlYXRpb25UbycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRELU1NLVlZWVlcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCInZC1tLVknXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdGVkKCdjcmVhdGVkVG8nLCAkZXZlbnQpXCJcbiAgICAgID48L2Nkcy1kYXRlLXBpY2tlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgIHt7ICd6Z3cuZG9jdW1lbnRDb2x1bW5zLmF1dGV1cicgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0IGNkc1RleHQgZm9ybUNvbnRyb2xOYW1lPVwiYXV0ZXVyXCIgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgPGNkcy1kcm9wZG93blxuICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICBbbGFiZWxdPVwiJ3pndy5kb2N1bWVudENvbHVtbnMudmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJ0cm91d2VsaWprSGVpZGFhbmR1aWRpbmdcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLmNvbmZpZGVudGlhbGl0eUxldmVsc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBbbGFiZWxdPVwiJ3pndy5kb2N1bWVudENvbHVtbnMudHJlZndvb3JkZW4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInRyZWZ3b29yZGVuXCJcbiAgICAgIHR5cGU9XCJtdWx0aVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMudGFnc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG4gIDwvZm9ybT5cblxuICA8Zm9vdGVyIGNsYXNzPVwidmFsdGltby1kb2N1bWVudGVuLWFwaS1maWx0ZXJfX2Zvb3RlclwiPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwidGVydGlhcnlcIiAoY2xpY2spPVwicmVzZXRGaWx0ZXIoKVwiPlxuICAgICAge3sgJ1Jlc2V0IGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Zvb3Rlcj5cbjwvZGl2PlxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWZpbHRlci9kb2N1bWVudGVuLWFwaS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZmlsdGVyL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBR3RFLE9BQU8sRUFDTCxZQUFZLEVBRVoscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsVUFBVSxFQUVWLFdBQVcsR0FFWixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFDWixNQUFNLEVBQ04sR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7Ozs7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XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbU1hcH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhc2hDYW4xNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NvbmZpZGVudGlhbGl0eUxldmVsfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBEb2N1bWVudFR5cGV9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgRGF0ZVBpY2tlcixcbiAgRGF0ZVBpY2tlcklucHV0TW9kdWxlLFxuICBEYXRlUGlja2VyTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSWNvblNlcnZpY2UsXG4gIElucHV0TW9kdWxlLFxuICBMaXN0SXRlbSxcbn0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQgZmxhdHBpY2tyIGZyb20gJ2ZsYXRwaWNrcic7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpVGFnfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9jdW1lbnRlbi1hcGktdGFnLm1vZGVsJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaVRhZ1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItZG9jdW1lbnRlbi1hcGktZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgRGF0ZVBpY2tlcklucHV0TW9kdWxlLFxuICAgIERhdGVQaWNrZXJNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRlbkFwaUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnY3JlYXRpb25EYXRlRnJvbScpIHB1YmxpYyByZWFkb25seSBjcmVhdGlvbkRhdGVGcm9tUGlja2VyOiBEYXRlUGlja2VyO1xuICBAVmlld0NoaWxkKCdjcmVhdGlvbkRhdGVUbycpIHB1YmxpYyByZWFkb25seSBjcmVhdGlvbkRhdGVUb1BpY2tlcjogRGF0ZVBpY2tlcjtcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZGVudGlhbGl0eUxldmVsczogQXJyYXk8Q29uZmlkZW50aWFsaXR5TGV2ZWw+ID0gW1xuICAgICdvcGVuYmFhcicsXG4gICAgJ2JlcGVya3Rfb3BlbmJhYXInLFxuICAgICdpbnRlcm4nLFxuICAgICd6YWFrdmVydHJvdXdlbGlqaycsXG4gICAgJ3ZlcnRyb3V3ZWxpamsnLFxuICAgICdjb25maWRlbnRpZWVsJyxcbiAgICAnZ2VoZWltJyxcbiAgICAnemVlcl9nZWhlaW0nLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlciQgPSB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICBtYXAocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgbGV0IHtzb3J0LCAuLi5maWx0ZXJ9ID0gcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICAgIGlmICghIWZpbHRlci50cmVmd29vcmRlbikge1xuICAgICAgICAgIGZpbHRlciA9IHsuLi5maWx0ZXIsIHRyZWZ3b29yZGVuOiB0aGlzLmNvbnZlcnRUcmVmd29vcmRlblBhcmFtKGZpbHRlci50cmVmd29vcmRlbil9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoZmlsdGVyLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWRlbnRpYWxpdHlMZXZlbHMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZmlsdGVyJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtmaWx0ZXJdKSA9PlxuICAgICAgdGhpcy5fY29uZmlkZW50aWFsaXR5TGV2ZWxzLm1hcCgoY29uZmlkZW50aWFsaXR5TGV2ZWw6IENvbmZpZGVudGlhbGl0eUxldmVsKSA9PiAoe1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgZG9jdW1lbnQuJHtjb25maWRlbnRpYWxpdHlMZXZlbH1gKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZpbHRlcj8udmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nID09PSBjb25maWRlbnRpYWxpdHlMZXZlbCxcbiAgICAgICAgaWQ6IGNvbmZpZGVudGlhbGl0eUxldmVsLFxuICAgICAgfSkpXG4gICAgKSxcbiAgICBzdGFydFdpdGgoW10pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGluZm9ybWF0aW9uT2JqZWN0VHlwZXMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIGZpbHRlcigocGFyYW1NYXA6IFBhcmFtTWFwKSA9PiAhIXBhcmFtTWFwLmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpKSxcbiAgICBzd2l0Y2hNYXAoKHBhcmFtTWFwOiBQYXJhbU1hcCkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudFR5cGVzKHBhcmFtTWFwLmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpID8/ICcnKSxcbiAgICAgICAgdGhpcy5fZmlsdGVyJCxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFt0eXBlcywgZmlsdGVyXSkgPT5cbiAgICAgIHR5cGVzLm1hcCgodHlwZTogRG9jdW1lbnRUeXBlKSA9PiAoe1xuICAgICAgICBjb250ZW50OiB0eXBlLm5hbWUsXG4gICAgICAgIHNlbGVjdGVkOiBmaWx0ZXI/LmluZm9ybWF0aWVvYmplY3R0eXBlID09PSB0eXBlLnVybCxcbiAgICAgICAgaWQ6IHR5cGUudXJsLFxuICAgICAgfSkpXG4gICAgKSxcbiAgICBzdGFydFdpdGgoW10pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhZ3MkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIGZpbHRlcigocGFyYW1NYXA6IFBhcmFtTWFwKSA9PiAhIXBhcmFtTWFwLmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpKSxcbiAgICBzd2l0Y2hNYXAoKHBhcmFtTWFwOiBQYXJhbU1hcCkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlUYWdTZXJ2aWNlLmdldFRhZ3MocGFyYW1NYXAuZ2V0KCdkb2N1bWVudERlZmluaXRpb25OYW1lJykgPz8gJycpLFxuICAgICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAsXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbdGFncywgcXVlcnlQYXJhbU1hcF0pID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGFncyA9IHRoaXMuY29udmVydFRyZWZ3b29yZGVuUGFyYW0ocXVlcnlQYXJhbU1hcFsncGFyYW1zJ10/LnRyZWZ3b29yZGVuKS5tYXAoXG4gICAgICAgIChpdGVtOiBMaXN0SXRlbSkgPT4gaXRlbS5jb250ZW50XG4gICAgICApO1xuICAgICAgcmV0dXJuIHRhZ3MubWFwKCh0YWc6IERvY3VtZW50ZW5BcGlUYWcpID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IHRhZy52YWx1ZSxcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkVGFncy5pbmNsdWRlcyh0YWcudmFsdWUpLFxuICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHN0YXJ0V2l0aChbXSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgYXV0ZXVyOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgIHZlcnRyb3V3ZWxpamtIZWlkYWFuZHVpZGluZzogdGhpcy5mYi5jb250cm9sKHt9KSxcbiAgICBjcmVhdGllZGF0dW1Gcm9tOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgIGNyZWF0aWVkYXR1bVRvOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgIGluZm9ybWF0aWVPYmplY3RUeXBlOiB0aGlzLmZiLmNvbnRyb2woe30pLFxuICAgIHRyZWZ3b29yZGVuOiB0aGlzLmZiLmNvbnRyb2woW10pLFxuICAgIHRpdGVsOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlUYWdTZXJ2aWNlOiBEb2N1bWVudGVuQXBpVGFnU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKFRyYXNoQ2FuMTYpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkZvcm1WYWx1ZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY3JlYXRpb25EYXRlRnJvbUNvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnY3JlYXRpZWRhdHVtRnJvbScpPy52YWx1ZTtcbiAgICBjb25zdCBjcmVhdGlvbkRhdGVUb0NvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnY3JlYXRpZWRhdHVtVG8nKT8udmFsdWU7XG5cbiAgICBpZiAoISFjcmVhdGlvbkRhdGVGcm9tQ29udHJvbFZhbHVlKSB7XG4gICAgICB0aGlzLmNyZWF0aW9uRGF0ZUZyb21QaWNrZXIud3JpdGVWYWx1ZShbXG4gICAgICAgIGZsYXRwaWNrci5mb3JtYXREYXRlKG5ldyBEYXRlKGNyZWF0aW9uRGF0ZUZyb21Db250cm9sVmFsdWUpLCAnZC1tLVknKSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGlmICghIWNyZWF0aW9uRGF0ZVRvQ29udHJvbFZhbHVlKSB7XG4gICAgICB0aGlzLmNyZWF0aW9uRGF0ZVRvUGlja2VyLndyaXRlVmFsdWUoW1xuICAgICAgICBmbGF0cGlja3IuZm9ybWF0RGF0ZShuZXcgRGF0ZShjcmVhdGlvbkRhdGVUb0NvbnRyb2xWYWx1ZSksICdkLW0tWScpLFxuICAgICAgXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0RmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRpb25EYXRlRnJvbVBpY2tlci53cml0ZVZhbHVlKFtdKTtcbiAgICB0aGlzLmNyZWF0aW9uRGF0ZVRvUGlja2VyLndyaXRlVmFsdWUoW10pO1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgb25EYXRlU2VsZWN0ZWQoY29udHJvbDogJ2NyZWF0ZWRUbycgfCAnY3JlYXRlZEZyb20nLCBldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wgPT09ICdjcmVhdGVkRnJvbScpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnY3JlYXRpZWRhdHVtRnJvbScpPy5wYXRjaFZhbHVlKGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2NyZWF0aWVkYXR1bVRvJyk/LnBhdGNoVmFsdWUoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRm9ybVZhbHVlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckV2ZW50LmVtaXQoe1xuICAgICAgICAgIC4uLighIWZvcm1WYWx1ZS5hdXRldXIgJiYge2F1dGV1cjogZm9ybVZhbHVlLmF1dGV1cn0pLFxuICAgICAgICAgIC4uLighIWZvcm1WYWx1ZS50aXRlbCAmJiB7dGl0ZWw6IGZvcm1WYWx1ZS50aXRlbH0pLFxuICAgICAgICAgIC4uLighIWZvcm1WYWx1ZS5jcmVhdGllZGF0dW1Gcm9tICYmIHtcbiAgICAgICAgICAgIGNyZWF0aWVkYXR1bUZyb206IGZsYXRwaWNrci5mb3JtYXREYXRlKG5ldyBEYXRlKGZvcm1WYWx1ZS5jcmVhdGllZGF0dW1Gcm9tKSwgJ1ktbS1kJyksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKCEhZm9ybVZhbHVlLmNyZWF0aWVkYXR1bVRvICYmIHtcbiAgICAgICAgICAgIGNyZWF0aWVkYXR1bVRvOiBmbGF0cGlja3IuZm9ybWF0RGF0ZShuZXcgRGF0ZShmb3JtVmFsdWUuY3JlYXRpZWRhdHVtVG8pLCAnWS1tLWQnKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oISEoZm9ybVZhbHVlLnZlcnRyb3V3ZWxpamtIZWlkYWFuZHVpZGluZyBhcyBMaXN0SXRlbSk/LmlkICYmIHtcbiAgICAgICAgICAgIHZlcnRyb3V3ZWxpamtoZWlkYWFuZHVpZGluZzogKGZvcm1WYWx1ZS52ZXJ0cm91d2VsaWprSGVpZGFhbmR1aWRpbmcgYXMgTGlzdEl0ZW0pLmlkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLighIShmb3JtVmFsdWUuaW5mb3JtYXRpZU9iamVjdFR5cGUgYXMgTGlzdEl0ZW0pPy5pZCAmJiB7XG4gICAgICAgICAgICBpbmZvcm1hdGllb2JqZWN0dHlwZTogKGZvcm1WYWx1ZS5pbmZvcm1hdGllT2JqZWN0VHlwZSBhcyBMaXN0SXRlbSkuaWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKCEhZm9ybVZhbHVlLnRyZWZ3b29yZGVuICYmXG4gICAgICAgICAgICBmb3JtVmFsdWUudHJlZndvb3JkZW4ubGVuZ3RoID4gMCAmJiB7XG4gICAgICAgICAgICAgIHRyZWZ3b29yZGVuOiAoZm9ybVZhbHVlLnRyZWZ3b29yZGVuIGFzIExpc3RJdGVtW10pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYWNjLCBjdXJyLCBpbmRleCkgPT4gKGluZGV4ID09PSAwID8gY3Vyci5jb250ZW50IDogYCR7YWNjfSwke2N1cnIuY29udGVudH1gKSxcbiAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VHJlZndvb3JkZW5QYXJhbShzdHJpbmdBcnJheTogc3RyaW5nIHwgdW5kZWZpbmVkKTogTGlzdEl0ZW1bXSB7XG4gICAgaWYgKCFzdHJpbmdBcnJheSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGFycmF5ID0gc3RyaW5nQXJyYXkuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBhcnJheS5tYXAoKGNvbnRlbnQ6IHN0cmluZykgPT4gKHtcbiAgICAgIGNvbnRlbnQsXG4gICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICB9KSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLWZpbHRlclwiIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIj5cbiAgPGZvcm1cbiAgICAqbmdJZj1cIntcbiAgICAgIGNvbmZpZGVudGlhbGl0eUxldmVsczogY29uZmlkZW50aWFsaXR5TGV2ZWxzJCB8IGFzeW5jLFxuICAgICAgaW5mb3JtYXRpb25PYmplY3RUeXBlczogaW5mb3JtYXRpb25PYmplY3RUeXBlcyQgfCBhc3luYyxcbiAgICAgIHRhZ3M6IHRhZ3MkIHwgYXN5bmNcbiAgICB9IGFzIG9ic1wiXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLWZpbHRlcl9fZm9ybVwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICA+XG4gICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAge3sgJ3pndy5kb2N1bWVudENvbHVtbnMudGl0ZWwnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxpbnB1dCBjZHNUZXh0IGZvcm1Db250cm9sTmFtZT1cInRpdGVsXCIgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgPGNkcy1kcm9wZG93blxuICAgICAgW2Rpc2FibGVkXT1cIiFvYnMuaW5mb3JtYXRpb25PYmplY3RUeXBlcz8ubGVuZ3RoXCJcbiAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgW2xhYmVsXT1cIid6Z3cuZG9jdW1lbnRDb2x1bW5zLmluZm9ybWF0aWVvYmplY3R0eXBlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbmZvcm1hdGllT2JqZWN0VHlwZVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMuaW5mb3JtYXRpb25PYmplY3RUeXBlc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG5cbiAgICA8ZGl2IGNsYXNzPVwidmFsdGltby1kb2N1bWVudGVuLWFwaS1maWx0ZXJfX2RhdGVzXCI+XG4gICAgICA8Y2RzLWRhdGUtcGlja2VyXG4gICAgICAgICNjcmVhdGlvbkRhdGVGcm9tXG4gICAgICAgIFtsYWJlbF09XCInaW50ZXJmYWNlLmxhYmVscy5kYXRlQ3JlYXRpb25Gcm9tJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiREQtTU0tWVlZWVwiXG4gICAgICAgIFtkYXRlRm9ybWF0XT1cIidkLW0tWSdcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25EYXRlU2VsZWN0ZWQoJ2NyZWF0ZWRGcm9tJywgJGV2ZW50KVwiXG4gICAgICA+PC9jZHMtZGF0ZS1waWNrZXI+XG5cbiAgICAgIDxjZHMtZGF0ZS1waWNrZXJcbiAgICAgICAgI2NyZWF0aW9uRGF0ZVRvXG4gICAgICAgIFtsYWJlbF09XCInaW50ZXJmYWNlLmxhYmVscy5kYXRlQ3JlYXRpb25UbycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRELU1NLVlZWVlcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCInZC1tLVknXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdGVkKCdjcmVhdGVkVG8nLCAkZXZlbnQpXCJcbiAgICAgID48L2Nkcy1kYXRlLXBpY2tlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgIHt7ICd6Z3cuZG9jdW1lbnRDb2x1bW5zLmF1dGV1cicgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0IGNkc1RleHQgZm9ybUNvbnRyb2xOYW1lPVwiYXV0ZXVyXCIgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgPGNkcy1kcm9wZG93blxuICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICBbbGFiZWxdPVwiJ3pndy5kb2N1bWVudENvbHVtbnMudmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJ0cm91d2VsaWprSGVpZGFhbmR1aWRpbmdcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLmNvbmZpZGVudGlhbGl0eUxldmVsc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBbbGFiZWxdPVwiJ3pndy5kb2N1bWVudENvbHVtbnMudHJlZndvb3JkZW4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInRyZWZ3b29yZGVuXCJcbiAgICAgIHR5cGU9XCJtdWx0aVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMudGFnc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG4gIDwvZm9ybT5cblxuICA8Zm9vdGVyIGNsYXNzPVwidmFsdGltby1kb2N1bWVudGVuLWFwaS1maWx0ZXJfX2Zvb3RlclwiPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwidGVydGlhcnlcIiAoY2xpY2spPVwicmVzZXRGaWx0ZXIoKVwiPlxuICAgICAge3sgJ1Jlc2V0IGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Zvb3Rlcj5cbjwvZGl2PlxuIl19