ngx-material-entity 16.0.7 → 16.0.8
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.
- package/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.d.ts +10 -5
- package/components/input/array/array-string-chips-input/array-string-chips-input.component.d.ts +4 -2
- package/components/input/input.component.d.ts +28 -8
- package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +12 -2
- package/components/input/relations/references-many-input/references-many-input.component.d.ts +10 -2
- package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +4 -2
- package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +12 -2
- package/components/input/string/string-password-input/string-password-input.component.d.ts +12 -0
- package/components/table/create-dialog/create-entity-dialog.component.d.ts +1 -1
- package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +1 -1
- package/components/table/table-data.builder.d.ts +2 -1
- package/components/table/table-data.d.ts +10 -0
- package/decorators/array/array-decorator-internal.data.d.ts +2 -1
- package/decorators/array/array-decorator.data.d.ts +3 -1
- package/decorators/string/string-decorator-internal.data.d.ts +3 -1
- package/decorators/string/string-decorator.data.d.ts +7 -1
- package/directives/dynamic-style-class.directive.d.ts +25 -0
- package/directives/included-in.directive.d.ts +1 -1
- package/esm2022/components/create-page/create-page.component.mjs +8 -5
- package/esm2022/components/edit-page/edit-page.component.mjs +8 -5
- package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +28 -15
- package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +14 -19
- package/esm2022/components/input/base-input.component.mjs +7 -2
- package/esm2022/components/input/input.component.mjs +73 -27
- package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +36 -8
- package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +29 -5
- package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +17 -10
- package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +36 -8
- package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +57 -3
- package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +4 -4
- package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +9 -5
- package/esm2022/components/table/table-data.builder.mjs +5 -1
- package/esm2022/components/table/table-data.mjs +1 -1
- package/esm2022/components/table/table.component.mjs +6 -4
- package/esm2022/decorators/array/array-decorator-internal.data.mjs +11 -3
- package/esm2022/decorators/array/array-decorator.data.mjs +1 -1
- package/esm2022/decorators/string/string-decorator-internal.data.mjs +14 -3
- package/esm2022/decorators/string/string-decorator.data.mjs +1 -1
- package/esm2022/directives/dynamic-style-class.directive.mjs +51 -0
- package/esm2022/directives/included-in.directive.mjs +2 -3
- package/esm2022/encapsulation/reflect.utilities.mjs +6 -2
- package/esm2022/functions/default-style-classes.function.mjs +7 -0
- package/esm2022/public-api.mjs +6 -1
- package/esm2022/services/entity.service.mjs +3 -1
- package/esm2022/utilities/entity.utilities.mjs +37 -33
- package/esm2022/utilities/validation.utilities.mjs +46 -12
- package/fesm2022/ngx-material-entity.mjs +485 -158
- package/fesm2022/ngx-material-entity.mjs.map +1 -1
- package/functions/default-style-classes.function.d.ts +6 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
- package/utilities/entity.utilities.d.ts +4 -3
- package/utilities/validation.utilities.d.ts +7 -3
|
@@ -3,6 +3,7 @@ import { Inject } from '@angular/core';
|
|
|
3
3
|
import { BaseBuilder } from '../../classes/base.builder';
|
|
4
4
|
import { NGX_INTERNAL_GLOBAL_DEFAULT_VALUES } from '../../default-global-configuration-values';
|
|
5
5
|
import { defaultFalse } from '../../functions/default-false.function';
|
|
6
|
+
import { defaultDynamicStyleClasses } from '../../functions/default-style-classes.function';
|
|
6
7
|
import { defaultTrue } from '../../functions/default-true.function';
|
|
7
8
|
import { getConfigValue } from '../../functions/get-config-value.function';
|
|
8
9
|
import { isAsyncFunction } from '../../functions/is-async-function.function';
|
|
@@ -170,6 +171,8 @@ export let BaseDataInternal = class BaseDataInternal {
|
|
|
170
171
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
171
172
|
importActionData;
|
|
172
173
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
174
|
+
dynamicRowStyleClasses;
|
|
175
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
173
176
|
EntityClass;
|
|
174
177
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
175
178
|
edit;
|
|
@@ -199,6 +202,7 @@ export let BaseDataInternal = class BaseDataInternal {
|
|
|
199
202
|
this.displayLoadingSpinner = data.displayLoadingSpinner ?? true;
|
|
200
203
|
this.allowJsonImport = data.allowJsonImport ?? false;
|
|
201
204
|
this.importActionData = this.buildImportActionData(data.importActionData);
|
|
205
|
+
this.dynamicRowStyleClasses = data.dynamicRowStyleClasses ?? defaultDynamicStyleClasses;
|
|
202
206
|
this.edit = data.edit;
|
|
203
207
|
this.create = data.create;
|
|
204
208
|
this.allowCreate = this.allowDataToFunction(data.allowCreate);
|
|
@@ -290,4 +294,4 @@ export function defaultSearchFunction(entity) {
|
|
|
290
294
|
.toLowerCase();
|
|
291
295
|
return searchString;
|
|
292
296
|
}
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0NBQStDLENBQUM7QUFDcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLHFDQUFxQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0saUNBQWlDLENBQUM7QUFHcEY7O0dBRUc7QUFDSCxXQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF1QjtJQWlCVDtJQWhCdkIsK0NBQStDO0lBQy9DLElBQUksR0FBYyxTQUFTLENBQUM7SUFDNUIsK0NBQStDO0lBQy9DLFdBQVcsQ0FBUztJQUNwQiwrQ0FBK0M7SUFDL0MsTUFBTSxDQUF5QjtJQUMvQiwrQ0FBK0M7SUFDL0MsT0FBTyxDQUFrQjtJQUN6QiwrQ0FBK0M7SUFDL0Msb0JBQW9CLENBQWtCO0lBQ3RDLCtDQUErQztJQUMvQyxpQkFBaUIsQ0FBNEI7SUFFN0MsWUFDSSxJQUFxQixFQUVGLFlBQW9DO1FBQXBD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QUUsQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDNUcsTUFBTSxJQUFJLEtBQUssQ0FDWDtnREFDZ0MsQ0FDbkMsQ0FBQztTQUNMO1FBQ0QsSUFDSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVztlQUN2QixDQUNDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLEtBQUs7bUJBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLEtBQUs7bUJBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLEtBQUs7bUJBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FDekMsRUFDSDtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQ1g7eUdBQ3lGLENBQzVGLENBQUM7U0FDTDtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxNQUFNLEVBQUU7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FDWDs7MERBRTBDLENBQzdDLENBQUM7U0FDTDtJQUNMLENBQUM7Q0FDSjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQWdELE1BQWtCO0lBQ25HLE1BQU0sWUFBWSxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzNDLE1BQU0sQ0FBQyxDQUFDLFdBQW1CLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDekMsT0FBTyxHQUFHLFdBQVcsR0FBSSxNQUFrQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDeEUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNMLFdBQVcsRUFBRSxDQUFDO0lBQ25CLE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSwgRW50aXR5U2VydmljZUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMgfSBmcm9tICcuLi8uLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBkZWZhdWx0RmFsc2UgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZGVmYXVsdC1mYWxzZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBkZWZhdWx0VHJ1ZSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9kZWZhdWx0LXRydWUuZnVuY3Rpb24nO1xuaW1wb3J0IHsgZ2V0Q29uZmlnVmFsdWUgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZ2V0LWNvbmZpZy12YWx1ZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBpc0FzeW5jRnVuY3Rpb24gfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvaXMtYXN5bmMtZnVuY3Rpb24uZnVuY3Rpb24nO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIsIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQ3JlYXRlRGF0YUJ1aWxkZXIsIENyZWF0ZURhdGFJbnRlcm5hbCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEVkaXREYXRhQnVpbGRlciwgRWRpdERhdGFJbnRlcm5hbCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZURhdGEsIEJhc2VUYWJsZUFjdGlvbiwgRGlzcGxheUNvbHVtbiwgTXVsdGlTZWxlY3RBY3Rpb24sIFRhYmxlRGF0YSB9IGZyb20gJy4vdGFibGUtZGF0YSc7XG5cbi8qKlxuICogVGhlIGludGVybmFsIEJhc2VUYWJsZUFjdGlvbi4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VUYWJsZUFjdGlvbkludGVybmFsIGltcGxlbWVudHMgQmFzZVRhYmxlQWN0aW9uIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHR5cGU6ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhY3Rpb246ICgpID0+IFByb21pc2U8dW5rbm93bj47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlbmFibGVkOiAoKCkgPT4gYm9vbGVhbik7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZXF1aXJlQ29uZmlybURpYWxvZzogKCgpID0+IGJvb2xlYW4pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY29uZmlybURpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZGF0YTogQmFzZVRhYmxlQWN0aW9uLFxuICAgICAgICBASW5qZWN0KE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXNcbiAgICApIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IGRhdGEuZGlzcGxheU5hbWU7XG4gICAgICAgIHRoaXMuYWN0aW9uID0gdGhpcy5mdW5jdGlvblRvQXN5bmMoZGF0YS5hY3Rpb24pO1xuICAgICAgICB0aGlzLmVuYWJsZWQgPSBkYXRhLmVuYWJsZWQgPz8gZGVmYXVsdFRydWU7XG4gICAgICAgIHRoaXMucmVxdWlyZUNvbmZpcm1EaWFsb2cgPSBkYXRhLnJlcXVpcmVDb25maXJtRGlhbG9nID8/IGRlZmF1bHRGYWxzZTtcbiAgICAgICAgdGhpcy5jb25maXJtRGlhbG9nRGF0YSA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGRhdGEuY29uZmlybURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBnbG9iYWxDb25maWcuY29uZmlybUJhc2VBY3Rpb25UZXh0KVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZnVuY3Rpb25Ub0FzeW5jKG9yaWdpbmFsRnVuY3Rpb246ICgoKSA9PiB1bmtub3duKSB8ICgoKSA9PiBQcm9taXNlPHVua25vd24+KSk6ICgpID0+IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBpZiAoaXNBc3luY0Z1bmN0aW9uKG9yaWdpbmFsRnVuY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbiBhcyAoKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuICgpID0+IG5ldyBQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcmlnaW5hbEZ1bmN0aW9uKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBCYXNlVGFibGVBY3Rpb24uIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0eXBlOiAnbXVsdGktc2VsZWN0JyA9ICdtdWx0aS1zZWxlY3QnO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFjdGlvbjogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVuYWJsZWQ6ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlcXVpcmVDb25maXJtRGlhbG9nOiAoKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gYm9vbGVhbik7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjb25maXJtRGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBkYXRhOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPixcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSBkYXRhLmRpc3BsYXlOYW1lO1xuICAgICAgICB0aGlzLmFjdGlvbiA9IHRoaXMuZnVuY3Rpb25Ub0FzeW5jKGRhdGEuYWN0aW9uKTtcbiAgICAgICAgdGhpcy5lbmFibGVkID0gZGF0YS5lbmFibGVkID8/ICgoZW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gISFlbnRpdGllcy5sZW5ndGgpO1xuICAgICAgICB0aGlzLnJlcXVpcmVDb25maXJtRGlhbG9nID0gZGF0YS5yZXF1aXJlQ29uZmlybURpYWxvZyA/PyBkZWZhdWx0RmFsc2U7XG4gICAgICAgIHRoaXMuY29uZmlybURpYWxvZ0RhdGEgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCBkYXRhLmNvbmZpcm1EaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgZ2xvYmFsQ29uZmlnLmNvbmZpcm1CYXNlQWN0aW9uVGV4dClcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIHByaXZhdGUgZnVuY3Rpb25Ub0FzeW5jKG9yaWdpbmFsRnVuY3Rpb246ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiB1bmtub3duKSB8ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBQcm9taXNlPHVua25vd24+KSk6IChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBpZiAoaXNBc3luY0Z1bmN0aW9uKG9yaWdpbmFsRnVuY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbiBhcyAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuIChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IG5ldyBQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcmlnaW5hbEZ1bmN0aW9uKHNlbGVjdGVkRW50aXRpZXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgSW50ZXJuYWwgVGFibGUgQWN0aW9uLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgdHlwZSBUYWJsZUFjdGlvbkludGVybmFsPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gPVxuICAgIEJhc2VUYWJsZUFjdGlvbkludGVybmFsIHwgTXVsdGlTZWxlY3RBY3Rpb25JbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLiBSZXF1aXJlcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdGhlIHVzZXIgY2FuIGxlYXZlIG91dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBUYWJsZURhdGE8RW50aXR5VHlwZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYmFzZURhdGE6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGVEYXRhOiBDcmVhdGVEYXRhSW50ZXJuYWw7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlZGl0RGF0YTogRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPixcbiAgICAgICAgY3JlYXRlRGF0YTogQ3JlYXRlRGF0YUludGVybmFsLFxuICAgICAgICBlZGl0RGF0YTogRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPlxuICAgICkge1xuICAgICAgICB0aGlzLmJhc2VEYXRhID0gYmFzZURhdGE7XG4gICAgICAgIHRoaXMuY3JlYXRlRGF0YSA9IGNyZWF0ZURhdGE7XG4gICAgICAgIHRoaXMuZWRpdERhdGEgPSBlZGl0RGF0YTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIEJ1aWxkZXIgZm9yIHRoZSB0YWJsZSBCYXNlRGF0YS4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VEYXRhQnVpbGRlcjxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBCYXNlQnVpbGRlcjxCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBCYXNlRGF0YTxFbnRpdHlUeXBlPj4ge1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4sIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihnbG9iYWxDb25maWcsIGRhdGEpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlQmFzZURhdGEoZGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4pOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KGRhdGEsIHRoaXMuZ2xvYmFsQ29uZmlnKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIFRhYmxlRGF0YS4gUmVxdWlyZXMgYWxsIGRlZmF1bHQgdmFsdWVzIHRoZSB1c2VyIGNhbiBsZWF2ZSBvdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBCYXNlRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RW50aXR5VHlwZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eVNlcnZpY2VDbGFzczogRW50aXR5U2VydmljZUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHNlYXJjaExhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGVmYXVsdEVkaXQ6ICdkaWFsb2cnIHwgJ3BhZ2UnO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGVmYXVsdENyZWF0ZTogJ2RpYWxvZycgfCAncGFnZSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBzZWFyY2hTdHJpbmc6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93Q3JlYXRlOiAoKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dSZWFkOiAoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93VXBkYXRlOiAoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RGVsZXRlOiAoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRhYmxlQWN0aW9uczogVGFibGVBY3Rpb25JbnRlcm5hbDxFbnRpdHlUeXBlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGFibGVBY3Rpb25zTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcjogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93SnNvbkltcG9ydDogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGltcG9ydEFjdGlvbkRhdGE6IE9taXQ8QmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwsICdhY3Rpb24nPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eUNsYXNzPzogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZWRpdD86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd247XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGRhdGE6IEJhc2VEYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBASW5qZWN0KE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXNcbiAgICApIHtcbiAgICAgICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkYXRhLmRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB0aGlzLkVudGl0eVNlcnZpY2VDbGFzcyA9IGRhdGEuRW50aXR5U2VydmljZUNsYXNzO1xuICAgICAgICB0aGlzLkVudGl0eUNsYXNzID0gZGF0YS5FbnRpdHlDbGFzcztcbiAgICAgICAgdGhpcy5zZWFyY2hMYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5zZWFyY2hMYWJlbCwgZGF0YS5zZWFyY2hMYWJlbCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuY3JlYXRlTGFiZWwsIGRhdGEuY3JlYXRlQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLmRlZmF1bHRFZGl0ID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmRlZmF1bHRFZGl0TWV0aG9kLCBkYXRhLmRlZmF1bHRFZGl0KTtcbiAgICAgICAgdGhpcy5kZWZhdWx0Q3JlYXRlID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmRlZmF1bHRDcmVhdGVNZXRob2QsIGRhdGEuZGVmYXVsdENyZWF0ZSk7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZGF0YS5zZWFyY2hTdHJpbmcgPz8gZGVmYXVsdFNlYXJjaEZ1bmN0aW9uO1xuICAgICAgICBpZiAoZGF0YS50YWJsZUFjdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVBY3Rpb25zID0gZGF0YS50YWJsZUFjdGlvbnMubWFwKHRBID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgICAgIHJldHVybiB0QS50eXBlID09PSAnZGVmYXVsdCcgPyBuZXcgQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwodEEsIGdsb2JhbENvbmZpZykgOiBuZXcgTXVsdGlTZWxlY3RBY3Rpb25JbnRlcm5hbCh0QSwgZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWJsZUFjdGlvbnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxlQWN0aW9uc0xhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmFjdGlvbnNMYWJlbCwgZGF0YS50YWJsZUFjdGlvbnNMYWJlbCk7XG4gICAgICAgIHRoaXMuZGlzcGxheUxvYWRpbmdTcGlubmVyID0gZGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXIgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5hbGxvd0pzb25JbXBvcnQgPSBkYXRhLmFsbG93SnNvbkltcG9ydCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5pbXBvcnRBY3Rpb25EYXRhID0gdGhpcy5idWlsZEltcG9ydEFjdGlvbkRhdGEoZGF0YS5pbXBvcnRBY3Rpb25EYXRhKTtcbiAgICAgICAgdGhpcy5lZGl0ID0gZGF0YS5lZGl0O1xuICAgICAgICB0aGlzLmNyZWF0ZSA9IGRhdGEuY3JlYXRlO1xuICAgICAgICB0aGlzLmFsbG93Q3JlYXRlID0gdGhpcy5hbGxvd0RhdGFUb0Z1bmN0aW9uKGRhdGEuYWxsb3dDcmVhdGUpO1xuICAgICAgICB0aGlzLmFsbG93UmVhZCA9IHRoaXMuYWxsb3dEYXRhVG9GdW5jdGlvbihkYXRhLmFsbG93UmVhZCk7XG4gICAgICAgIHRoaXMuYWxsb3dVcGRhdGUgPSB0aGlzLmFsbG93RGF0YVRvRnVuY3Rpb24oZGF0YS5hbGxvd1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuYWxsb3dEZWxldGUgPSB0aGlzLmFsbG93RGF0YVRvRnVuY3Rpb24oZGF0YS5hbGxvd0RlbGV0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEltcG9ydEFjdGlvbkRhdGEoXG4gICAgICAgIGltcG9ydEFjdGlvbkRhdGE/OiBPbWl0PEJhc2VUYWJsZUFjdGlvbiwgJ2FjdGlvbicgfCAncmVxdWlyZUNvbmZpcm1EaWFsb2cnIHwgJ3R5cGUnPlxuICAgICk6IE9taXQ8QmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwsICdhY3Rpb24nPiB7XG4gICAgICAgIGltcG9ydEFjdGlvbkRhdGEgPSBpbXBvcnRBY3Rpb25EYXRhID8/IHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAnSW1wb3J0IChKU09OKScsXG4gICAgICAgICAgICBjb25maXJtRGlhbG9nRGF0YTogbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZylcbiAgICAgICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCB0aGlzLmdsb2JhbENvbmZpZy5jb25maXJtSW1wb3J0SnNvblRleHQpXG4gICAgICAgICAgICAgICAgLmdldFJlc3VsdCgpXG4gICAgICAgIH07XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGNvbnN0IGRhdGE6IE9taXQ8QmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwsICdhY3Rpb24nPiA9IHtcbiAgICAgICAgICAgIC4uLmltcG9ydEFjdGlvbkRhdGEsXG4gICAgICAgICAgICBlbmFibGVkOiBpbXBvcnRBY3Rpb25EYXRhLmVuYWJsZWQgPz8gZGVmYXVsdFRydWUsXG4gICAgICAgICAgICByZXF1aXJlQ29uZmlybURpYWxvZzogZGVmYXVsdEZhbHNlLFxuICAgICAgICAgICAgY29uZmlybURpYWxvZ0RhdGE6IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGltcG9ydEFjdGlvbkRhdGEuY29uZmlybURpYWxvZ0RhdGEpLmdldFJlc3VsdCgpLFxuICAgICAgICAgICAgdHlwZTogJ2RlZmF1bHQnXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWxsb3dEYXRhVG9GdW5jdGlvbih2YWx1ZT86IGJvb2xlYW4gfCAoKGVudGl0eT86IEVudGl0eVR5cGUpID0+IGJvb2xlYW4pKTogKChlbnRpdHk/OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0RmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIGNvbXBsZXRlIFRhYmxlRGF0YS4gU2V0cyBkZWZhdWx0IHZhbHVlcyBhbmQgdmFsaWRhdGVzIHVzZXIgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBUYWJsZURhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcywgZGF0YTogVGFibGVEYXRhPEVudGl0eVR5cGU+KSB7XG4gICAgICAgIHN1cGVyKGdsb2JhbENvbmZpZywgZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVCYXNlRGF0YShkYXRhOiBUYWJsZURhdGE8RW50aXR5VHlwZT4pOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiB7XG5cbiAgICAgICAgY29uc3QgY3JlYXRlRGlhbG9nRGF0YTogQ3JlYXRlRGF0YUludGVybmFsID0gbmV3IENyZWF0ZURhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCBkYXRhLmNyZWF0ZURhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBlZGl0RGlhbG9nRGF0YTogRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBFZGl0RGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGRhdGEuZWRpdERhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBCYXNlRGF0YUJ1aWxkZXIoZGF0YS5iYXNlRGF0YSwgdGhpcy5nbG9iYWxDb25maWcpLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KFxuICAgICAgICAgICAgYmFzZURhdGEsXG4gICAgICAgICAgICBjcmVhdGVEaWFsb2dEYXRhLFxuICAgICAgICAgICAgZWRpdERpYWxvZ0RhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZUlucHV0KGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnM/Lmxlbmd0aCAmJiBkYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLmZpbmQoZHAgPT4gZHAuZGlzcGxheU5hbWUgPT09ICdzZWxlY3QnKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBUaGUgbmFtZSBcInNlbGVjdFwiIGZvciBhIGRpc3BsYXkgY29sdW1uIGlzIHJlc2VydmVkIGZvciB0aGUgbXVsdGktc2VsZWN0IGFjdGlvbiBmdW5jdGlvbmFsaXR5LlxuICAgICAgICAgICAgICAgIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFkYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSAhPT0gZmFsc2VcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93UmVhZCAhPT0gZmFsc2VcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlICE9PSBmYWxzZVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUgIT09IGZhbHNlXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIElucHV0IGRhdGEgXCJFbnRpdHlDbGFzc1wiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgaWYgeW91IGNhbiBuZWl0aGVyIGNyZWF0ZSwgcmVhZCwgdXBkYXRlIG9yIGRlbGV0ZSBlbnRpdGllcy5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmVkaXREYXRhICYmIGRhdGEuYmFzZURhdGEuZGVmYXVsdEVkaXQgPT0gJ3BhZ2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRoZSBjb25maWd1cmVkIGVkaXQgZGF0YSBjYW4ndCBiZSB1c2VkLCBhcyB0aGUgZW50aXR5IGdldHMgZWRpdGVkIG9uIGl0cyBvd24gcGFnZS5cbiAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBwcm92aWRlIHZhbHVlcyBmb3IgdGhlIFwiTkdYX0VESVRfREFUQVwiLCBcIk5HWF9FRElUX0RBVEFfRU5USVRZXCIgYW5kIFwiTkdYX0VESVRfREFUQV9FTlRJVFlfU0VSVklDRVwiIGluamVjdGlvbiBrZXlzXG4gICAgICAgICAgICAgICAgb24gdGhlIHJvdXRlIHdoZXJlIHRoZSBlZGl0IHBhZ2UgaXMgdXNlZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvbiB0YWtlbiBmcm9tIGdvb2dsZXMgbWF0IHRhYmxlLlxuICogVGhpcyB3aWxsIGJlIHVzZWQgaWYgbm8gY3VzdG9tIHNlYXJjaCBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB0aGUgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBJdCBnZW5lcmF0ZXMgYSBzdHJpbmcgZnJvbSBhbiBlbnRpdHkgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGNvbXBhcmUgaXQgdG8gdGhlIHNlYXJjaCBpbnB1dC5cbiAqIEBwYXJhbSBlbnRpdHkgLSBBbiBlbnRpdHkgdGhhdCBpcyBpbiB0aGUgc2VhcmNoLlxuICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBzdHJpbmcgb2YgdGhlIGdpdmVuIGVudGl0eSB1c2VkIGZvciBjb21wYXJpc29uIHdpdGggdGhlIHNlYXJjaCBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRTZWFyY2hGdW5jdGlvbjxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+KGVudGl0eTogRW50aXR5VHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2VhcmNoU3RyaW5nOiBzdHJpbmcgPSBPYmplY3Qua2V5cyhlbnRpdHkpXG4gICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRUZXJtOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7Y3VycmVudFRlcm19JHsoZW50aXR5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldfeKXrGA7XG4gICAgICAgIH0sICcnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc2VhcmNoU3RyaW5nO1xufSJdfQ==
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0NBQStDLENBQUM7QUFDcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLHFDQUFxQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0saUNBQWlDLENBQUM7QUFHcEY7O0dBRUc7QUFDSCxXQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF1QjtJQWlCVDtJQWhCdkIsK0NBQStDO0lBQy9DLElBQUksR0FBYyxTQUFTLENBQUM7SUFDNUIsK0NBQStDO0lBQy9DLFdBQVcsQ0FBUztJQUNwQiwrQ0FBK0M7SUFDL0MsTUFBTSxDQUF5QjtJQUMvQiwrQ0FBK0M7SUFDL0MsT0FBTyxDQUFrQjtJQUN6QiwrQ0FBK0M7SUFDL0Msb0JBQW9CLENBQWtCO0lBQ3RDLCtDQUErQztJQUMvQyxp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QUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS5idWlsZGVyJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUsIEVudGl0eVNlcnZpY2VDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgZGVmYXVsdEZhbHNlIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2RlZmF1bHQtZmFsc2UuZnVuY3Rpb24nO1xuaW1wb3J0IHsgZGVmYXVsdER5bmFtaWNTdHlsZUNsYXNzZXMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZGVmYXVsdC1zdHlsZS1jbGFzc2VzLmZ1bmN0aW9uJztcbmltcG9ydCB7IGRlZmF1bHRUcnVlIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2RlZmF1bHQtdHJ1ZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBnZXRDb25maWdWYWx1ZSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9nZXQtY29uZmlnLXZhbHVlLmZ1bmN0aW9uJztcbmltcG9ydCB7IGlzQXN5bmNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9pcy1hc3luYy1mdW5jdGlvbi5mdW5jdGlvbic7XG5pbXBvcnQgeyBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBDcmVhdGVEYXRhQnVpbGRlciwgQ3JlYXRlRGF0YUludGVybmFsIH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgRWRpdERhdGFCdWlsZGVyLCBFZGl0RGF0YUludGVybmFsIH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlRGF0YSwgQmFzZVRhYmxlQWN0aW9uLCBEaXNwbGF5Q29sdW1uLCBEeW5hbWljU3R5bGVDbGFzc2VzLCBNdWx0aVNlbGVjdEFjdGlvbiwgVGFibGVEYXRhIH0gZnJvbSAnLi90YWJsZS1kYXRhJztcblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgQmFzZVRhYmxlQWN0aW9uLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwgaW1wbGVtZW50cyBCYXNlVGFibGVBY3Rpb24ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdHlwZTogJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFjdGlvbjogKCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVuYWJsZWQ6ICgoKSA9PiBib29sZWFuKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlcXVpcmVDb25maXJtRGlhbG9nOiAoKCkgPT4gYm9vbGVhbik7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjb25maXJtRGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBkYXRhOiBCYXNlVGFibGVBY3Rpb24sXG4gICAgICAgIEBJbmplY3QoTkdYX0lOVEVSTkFMX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUylcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge1xuICAgICAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGF0YS5kaXNwbGF5TmFtZTtcbiAgICAgICAgdGhpcy5hY3Rpb24gPSB0aGlzLmZ1bmN0aW9uVG9Bc3luYyhkYXRhLmFjdGlvbik7XG4gICAgICAgIHRoaXMuZW5hYmxlZCA9IGRhdGEuZW5hYmxlZCA/PyBkZWZhdWx0VHJ1ZTtcbiAgICAgICAgdGhpcy5yZXF1aXJlQ29uZmlybURpYWxvZyA9IGRhdGEucmVxdWlyZUNvbmZpcm1EaWFsb2cgPz8gZGVmYXVsdEZhbHNlO1xuICAgICAgICB0aGlzLmNvbmZpcm1EaWFsb2dEYXRhID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZywgZGF0YS5jb25maXJtRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIGdsb2JhbENvbmZpZy5jb25maXJtQmFzZUFjdGlvblRleHQpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmdW5jdGlvblRvQXN5bmMob3JpZ2luYWxGdW5jdGlvbjogKCgpID0+IHVua25vd24pIHwgKCgpID0+IFByb21pc2U8dW5rbm93bj4pKTogKCkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGlmIChpc0FzeW5jRnVuY3Rpb24ob3JpZ2luYWxGdW5jdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEZ1bmN0aW9uIGFzICgpID0+IFByb21pc2U8dW5rbm93bj47XG4gICAgICAgIH1cblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm4gKCkgPT4gbmV3IFByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG9yaWdpbmFsRnVuY3Rpb24oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIEJhc2VUYWJsZUFjdGlvbi4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0QWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHR5cGU6ICdtdWx0aS1zZWxlY3QnID0gJ211bHRpLXNlbGVjdCc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWN0aW9uOiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZW5hYmxlZDogKChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IGJvb2xlYW4pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVxdWlyZUNvbmZpcm1EaWFsb2c6ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNvbmZpcm1EaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGRhdGE6IE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+LFxuICAgICAgICBASW5qZWN0KE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXNcbiAgICApIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IGRhdGEuZGlzcGxheU5hbWU7XG4gICAgICAgIHRoaXMuYWN0aW9uID0gdGhpcy5mdW5jdGlvblRvQXN5bmMoZGF0YS5hY3Rpb24pO1xuICAgICAgICB0aGlzLmVuYWJsZWQgPSBkYXRhLmVuYWJsZWQgPz8gKChlbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiAhIWVudGl0aWVzLmxlbmd0aCk7XG4gICAgICAgIHRoaXMucmVxdWlyZUNvbmZpcm1EaWFsb2cgPSBkYXRhLnJlcXVpcmVDb25maXJtRGlhbG9nID8/IGRlZmF1bHRGYWxzZTtcbiAgICAgICAgdGhpcy5jb25maXJtRGlhbG9nRGF0YSA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGRhdGEuY29uZmlybURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBnbG9iYWxDb25maWcuY29uZmlybUJhc2VBY3Rpb25UZXh0KVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgcHJpdmF0ZSBmdW5jdGlvblRvQXN5bmMob3JpZ2luYWxGdW5jdGlvbjogKChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IHVua25vd24pIHwgKChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IFByb21pc2U8dW5rbm93bj4pKTogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGlmIChpc0FzeW5jRnVuY3Rpb24ob3JpZ2luYWxGdW5jdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEZ1bmN0aW9uIGFzIChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IFByb21pc2U8dW5rbm93bj47XG4gICAgICAgIH1cblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm4gKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gbmV3IFByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG9yaWdpbmFsRnVuY3Rpb24oc2VsZWN0ZWRFbnRpdGllcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBJbnRlcm5hbCBUYWJsZSBBY3Rpb24uIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFRhYmxlQWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9XG4gICAgQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwgfCBNdWx0aVNlbGVjdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+O1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBUYWJsZURhdGEuIFJlcXVpcmVzIGFsbCBkZWZhdWx0IHZhbHVlcyB0aGUgdXNlciBjYW4gbGVhdmUgb3V0LlxuICovXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIFRhYmxlRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZURhdGE6IENyZWF0ZURhdGFJbnRlcm5hbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVkaXREYXRhOiBFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJhc2VEYXRhOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LFxuICAgICAgICBjcmVhdGVEYXRhOiBDcmVhdGVEYXRhSW50ZXJuYWwsXG4gICAgICAgIGVkaXREYXRhOiBFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuYmFzZURhdGEgPSBiYXNlRGF0YTtcbiAgICAgICAgdGhpcy5jcmVhdGVEYXRhID0gY3JlYXRlRGF0YTtcbiAgICAgICAgdGhpcy5lZGl0RGF0YSA9IGVkaXREYXRhO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIHRhYmxlIEJhc2VEYXRhLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgQmFzZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sIEJhc2VEYXRhPEVudGl0eVR5cGU+PiB7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBCYXNlRGF0YTxFbnRpdHlUeXBlPiwgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgIHN1cGVyKGdsb2JhbENvbmZpZywgZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVCYXNlRGF0YShkYXRhOiBCYXNlRGF0YTxFbnRpdHlUeXBlPik6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4ge1xuICAgICAgICByZXR1cm4gbmV3IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4oZGF0YSwgdGhpcy5nbG9iYWxDb25maWcpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLiBSZXF1aXJlcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdGhlIHVzZXIgY2FuIGxlYXZlIG91dC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIEJhc2VEYXRhPEVudGl0eVR5cGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgRW50aXR5U2VydmljZUNsYXNzOiBFbnRpdHlTZXJ2aWNlQ2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgc2VhcmNoTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkZWZhdWx0RWRpdDogJ2RpYWxvZycgfCAncGFnZSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkZWZhdWx0Q3JlYXRlOiAnZGlhbG9nJyB8ICdwYWdlJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHNlYXJjaFN0cmluZzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dDcmVhdGU6ICgpID0+IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd1JlYWQ6IChlbnRpdHk/OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dVcGRhdGU6IChlbnRpdHk/OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEZWxldGU6IChlbnRpdHk/OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGFibGVBY3Rpb25zOiBUYWJsZUFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0YWJsZUFjdGlvbnNMYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUxvYWRpbmdTcGlubmVyOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dKc29uSW1wb3J0OiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaW1wb3J0QWN0aW9uRGF0YTogT21pdDxCYXNlVGFibGVBY3Rpb25JbnRlcm5hbCwgJ2FjdGlvbic+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3NlczogRHluYW1pY1N0eWxlQ2xhc3NlczxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eUNsYXNzPzogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZWRpdD86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd247XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGRhdGE6IEJhc2VEYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBASW5qZWN0KE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXNcbiAgICApIHtcbiAgICAgICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkYXRhLmRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB0aGlzLkVudGl0eVNlcnZpY2VDbGFzcyA9IGRhdGEuRW50aXR5U2VydmljZUNsYXNzO1xuICAgICAgICB0aGlzLkVudGl0eUNsYXNzID0gZGF0YS5FbnRpdHlDbGFzcztcbiAgICAgICAgdGhpcy5zZWFyY2hMYWJlbCA9IGdldENvbmZpZ1ZhbHVlKGdsb2JhbENvbmZpZy5zZWFyY2hMYWJlbCwgZGF0YS5zZWFyY2hMYWJlbCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uTGFiZWwgPSBnZXRDb25maWdWYWx1ZShnbG9iYWxDb25maWcuY3JlYXRlTGFiZWwsIGRhdGEuY3JlYXRlQnV0dG9uTGFiZWwpO1xuICAgICAgICB0aGlzLmRlZmF1bHRFZGl0ID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmRlZmF1bHRFZGl0TWV0aG9kLCBkYXRhLmRlZmF1bHRFZGl0KTtcbiAgICAgICAgdGhpcy5kZWZhdWx0Q3JlYXRlID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmRlZmF1bHRDcmVhdGVNZXRob2QsIGRhdGEuZGVmYXVsdENyZWF0ZSk7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZGF0YS5zZWFyY2hTdHJpbmcgPz8gZGVmYXVsdFNlYXJjaEZ1bmN0aW9uO1xuICAgICAgICBpZiAoZGF0YS50YWJsZUFjdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVBY3Rpb25zID0gZGF0YS50YWJsZUFjdGlvbnMubWFwKHRBID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgICAgIHJldHVybiB0QS50eXBlID09PSAnZGVmYXVsdCcgPyBuZXcgQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwodEEsIGdsb2JhbENvbmZpZykgOiBuZXcgTXVsdGlTZWxlY3RBY3Rpb25JbnRlcm5hbCh0QSwgZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWJsZUFjdGlvbnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxlQWN0aW9uc0xhYmVsID0gZ2V0Q29uZmlnVmFsdWUoZ2xvYmFsQ29uZmlnLmFjdGlvbnNMYWJlbCwgZGF0YS50YWJsZUFjdGlvbnNMYWJlbCk7XG4gICAgICAgIHRoaXMuZGlzcGxheUxvYWRpbmdTcGlubmVyID0gZGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXIgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5hbGxvd0pzb25JbXBvcnQgPSBkYXRhLmFsbG93SnNvbkltcG9ydCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5pbXBvcnRBY3Rpb25EYXRhID0gdGhpcy5idWlsZEltcG9ydEFjdGlvbkRhdGEoZGF0YS5pbXBvcnRBY3Rpb25EYXRhKTtcbiAgICAgICAgdGhpcy5keW5hbWljUm93U3R5bGVDbGFzc2VzID0gZGF0YS5keW5hbWljUm93U3R5bGVDbGFzc2VzID8/IGRlZmF1bHREeW5hbWljU3R5bGVDbGFzc2VzO1xuICAgICAgICB0aGlzLmVkaXQgPSBkYXRhLmVkaXQ7XG4gICAgICAgIHRoaXMuY3JlYXRlID0gZGF0YS5jcmVhdGU7XG4gICAgICAgIHRoaXMuYWxsb3dDcmVhdGUgPSB0aGlzLmFsbG93RGF0YVRvRnVuY3Rpb24oZGF0YS5hbGxvd0NyZWF0ZSk7XG4gICAgICAgIHRoaXMuYWxsb3dSZWFkID0gdGhpcy5hbGxvd0RhdGFUb0Z1bmN0aW9uKGRhdGEuYWxsb3dSZWFkKTtcbiAgICAgICAgdGhpcy5hbGxvd1VwZGF0ZSA9IHRoaXMuYWxsb3dEYXRhVG9GdW5jdGlvbihkYXRhLmFsbG93VXBkYXRlKTtcbiAgICAgICAgdGhpcy5hbGxvd0RlbGV0ZSA9IHRoaXMuYWxsb3dEYXRhVG9GdW5jdGlvbihkYXRhLmFsbG93RGVsZXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkSW1wb3J0QWN0aW9uRGF0YShcbiAgICAgICAgaW1wb3J0QWN0aW9uRGF0YT86IE9taXQ8QmFzZVRhYmxlQWN0aW9uLCAnYWN0aW9uJyB8ICdyZXF1aXJlQ29uZmlybURpYWxvZycgfCAndHlwZSc+XG4gICAgKTogT21pdDxCYXNlVGFibGVBY3Rpb25JbnRlcm5hbCwgJ2FjdGlvbic+IHtcbiAgICAgICAgaW1wb3J0QWN0aW9uRGF0YSA9IGltcG9ydEFjdGlvbkRhdGEgPz8ge1xuICAgICAgICAgICAgZGlzcGxheU5hbWU6ICdJbXBvcnQgKEpTT04pJyxcbiAgICAgICAgICAgIGNvbmZpcm1EaWFsb2dEYXRhOiBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnKVxuICAgICAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZ2xvYmFsQ29uZmlnLmNvbmZpcm1JbXBvcnRKc29uVGV4dClcbiAgICAgICAgICAgICAgICAuZ2V0UmVzdWx0KClcbiAgICAgICAgfTtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgY29uc3QgZGF0YTogT21pdDxCYXNlVGFibGVBY3Rpb25JbnRlcm5hbCwgJ2FjdGlvbic+ID0ge1xuICAgICAgICAgICAgLi4uaW1wb3J0QWN0aW9uRGF0YSxcbiAgICAgICAgICAgIGVuYWJsZWQ6IGltcG9ydEFjdGlvbkRhdGEuZW5hYmxlZCA/PyBkZWZhdWx0VHJ1ZSxcbiAgICAgICAgICAgIHJlcXVpcmVDb25maXJtRGlhbG9nOiBkZWZhdWx0RmFsc2UsXG4gICAgICAgICAgICBjb25maXJtRGlhbG9nRGF0YTogbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZywgaW1wb3J0QWN0aW9uRGF0YS5jb25maXJtRGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCksXG4gICAgICAgICAgICB0eXBlOiAnZGVmYXVsdCdcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhbGxvd0RhdGFUb0Z1bmN0aW9uKHZhbHVlPzogYm9vbGVhbiB8ICgoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbikpOiAoKGVudGl0eT86IEVudGl0eVR5cGUpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRUcnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRGYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBCdWlsZGVyIGZvciB0aGUgY29tcGxldGUgVGFibGVEYXRhLiBTZXRzIGRlZmF1bHQgdmFsdWVzIGFuZCB2YWxpZGF0ZXMgdXNlciBpbnB1dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YUJ1aWxkZXI8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgQmFzZUJ1aWxkZXI8VGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sIFRhYmxlRGF0YTxFbnRpdHlUeXBlPj4ge1xuXG4gICAgY29uc3RydWN0b3IoZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzLCBkYXRhOiBUYWJsZURhdGE8RW50aXR5VHlwZT4pIHtcbiAgICAgICAgc3VwZXIoZ2xvYmFsQ29uZmlnLCBkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcblxuICAgICAgICBjb25zdCBjcmVhdGVEaWFsb2dEYXRhOiBDcmVhdGVEYXRhSW50ZXJuYWwgPSBuZXcgQ3JlYXRlRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGRhdGEuY3JlYXRlRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGVkaXREaWFsb2dEYXRhOiBFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEVkaXREYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZywgZGF0YS5lZGl0RGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGJhc2VEYXRhOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEJhc2VEYXRhQnVpbGRlcihkYXRhLmJhc2VEYXRhLCB0aGlzLmdsb2JhbENvbmZpZykuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4oXG4gICAgICAgICAgICBiYXNlRGF0YSxcbiAgICAgICAgICAgIGNyZWF0ZURpYWxvZ0RhdGEsXG4gICAgICAgICAgICBlZGl0RGlhbG9nRGF0YVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlSW5wdXQoZGF0YTogVGFibGVEYXRhPEVudGl0eVR5cGU+KTogdm9pZCB7XG4gICAgICAgIGlmIChkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucz8ubGVuZ3RoICYmIGRhdGEuYmFzZURhdGEuZGlzcGxheUNvbHVtbnMuZmluZChkcCA9PiBkcC5kaXNwbGF5TmFtZSA9PT0gJ3NlbGVjdCcpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRoZSBuYW1lIFwic2VsZWN0XCIgZm9yIGEgZGlzcGxheSBjb2x1bW4gaXMgcmVzZXJ2ZWQgZm9yIHRoZSBtdWx0aS1zZWxlY3QgYWN0aW9uIGZ1bmN0aW9uYWxpdHkuXG4gICAgICAgICAgICAgICAgUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBuYW1lLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3NcbiAgICAgICAgICAgICYmIChcbiAgICAgICAgICAgICAgICBkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlICE9PSBmYWxzZVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dSZWFkICE9PSBmYWxzZVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dVcGRhdGUgIT09IGZhbHNlXG4gICAgICAgICAgICAgICAgfHwgZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSAhPT0gZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcIkVudGl0eUNsYXNzXCIuXG4gICAgICAgICAgICAgICAgWW91IGNhbiBvbmx5IG9taXQgdGhpcyB2YWx1ZSBpZiB5b3UgY2FuIG5laXRoZXIgY3JlYXRlLCByZWFkLCB1cGRhdGUgb3IgZGVsZXRlIGVudGl0aWVzLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuZWRpdERhdGEgJiYgZGF0YS5iYXNlRGF0YS5kZWZhdWx0RWRpdCA9PSAncGFnZScpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgVGhlIGNvbmZpZ3VyZWQgZWRpdCBkYXRhIGNhbid0IGJlIHVzZWQsIGFzIHRoZSBlbnRpdHkgZ2V0cyBlZGl0ZWQgb24gaXRzIG93biBwYWdlLlxuICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgXCJOR1hfRURJVF9EQVRBXCIsIFwiTkdYX0VESVRfREFUQV9FTlRJVFlcIiBhbmQgXCJOR1hfRURJVF9EQVRBX0VOVElUWV9TRVJWSUNFXCIgaW5qZWN0aW9uIGtleXNcbiAgICAgICAgICAgICAgICBvbiB0aGUgcm91dGUgd2hlcmUgdGhlIGVkaXQgcGFnZSBpcyB1c2VkLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgc2VhcmNoIGZ1bmN0aW9uIHRha2VuIGZyb20gZ29vZ2xlcyBtYXQgdGFibGUuXG4gKiBUaGlzIHdpbGwgYmUgdXNlZCBpZiBubyBjdXN0b20gc2VhcmNoIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHRoZSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEl0IGdlbmVyYXRlcyBhIHN0cmluZyBmcm9tIGFuIGVudGl0eSB3aGljaCBpcyB0aGVuIHVzZWQgdG8gY29tcGFyZSBpdCB0byB0aGUgc2VhcmNoIGlucHV0LlxuICogQHBhcmFtIGVudGl0eSAtIEFuIGVudGl0eSB0aGF0IGlzIGluIHRoZSBzZWFyY2guXG4gKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIHN0cmluZyBvZiB0aGUgZ2l2ZW4gZW50aXR5IHVzZWQgZm9yIGNvbXBhcmlzb24gd2l0aCB0aGUgc2VhcmNoIGlucHV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFNlYXJjaEZ1bmN0aW9uPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4oZW50aXR5OiBFbnRpdHlUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWFyY2hTdHJpbmc6IHN0cmluZyA9IE9iamVjdC5rZXlzKGVudGl0eSlcbiAgICAgICAgLnJlZHVjZSgoY3VycmVudFRlcm06IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgJHtjdXJyZW50VGVybX0keyhlbnRpdHkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV194pesYDtcbiAgICAgICAgfSwgJycpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzZWFyY2hTdHJpbmc7XG59Il19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSwgRW50aXR5U2VydmljZUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlRGlzcGxheUNvbHVtblZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5LWNvbHVtbi12YWx1ZS9iYXNlLWRpc3BsYXktY29sdW1uLXZhbHVlLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVGhlIERlZmluaXRpb24gb2YgYSBDb2x1bW4gaW5zaWRlIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIGluc2lkZSB0aGUgaGVhZGVyLlxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogV2hhdCB0byBkaXNwbGF5IGluc2lkZSB0aGUgcm93LlxuICAgICAqL1xuICAgIHZhbHVlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQSBjdXN0b20gY29tcG9uZW50IHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSB2YWx1ZS5cbiAgICAgKiBZb3Ugc3RpbGwgbmVlZCB0byBwcm92aWRlIGEgdmFsdWUgZnVuY3Rpb24gZm9yIHRoZSBzb3J0aW5nIGJ5IGhlYWRlciB0byB3b3JrLlxuICAgICAqL1xuICAgIENvbXBvbmVudD86IFR5cGU8Tmd4TWF0RW50aXR5QmFzZURpc3BsYXlDb2x1bW5WYWx1ZUNvbXBvbmVudDxFbnRpdHlUeXBlPj4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGNsaWNrIGV2ZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91ciBjb21wb25lbnQgaGFzIGEgY3VzdG9tIHdheSB0byBoYW5kbGUgY2xpY2tzLlxuICAgICAqL1xuICAgIGRpc2FibGVDbGljaz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBBIHRhYmxlIGFjdGlvbiB0aGF0IHdpbGwgcnVuIHJlZ2FyZGxlc3MgaWYgc29tZXRoaW5nIGhhcyBiZWVuIHNlbGVjdGVkIGluIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlVGFibGVBY3Rpb24ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSB0YWJsZSBhY3Rpb24gdG8gZGlzdGluY3QgYmV0d2VlbiBiYXNlIGFuZCBtdWx0aS1zZWxlY3QgYWN0aW9ucy5cbiAgICAgKi9cbiAgICB0eXBlOiAnZGVmYXVsdCcsXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBhY3Rpb24gaXRzZWxmLlxuICAgICAqL1xuICAgIGFjdGlvbjogKCgpID0+IHVua25vd24pIHwgKCgpID0+IFByb21pc2U8dW5rbm93bj4pLFxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogKCkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgYSBjb25maXJtIGRpYWxvZyBpcyBuZWVkZWQgdG8gcnVuIHRoZSBhY3Rpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZXF1aXJlQ29uZmlybURpYWxvZz86ICgpID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSB0YWJsZSBhY3Rpb24uXG4gICAgICovXG4gICAgY29uZmlybURpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YVxufVxuXG4vKipcbiAqIFRoZSBEZWZpbml0aW9uIG9mIGFuIEFjdGlvbiB0aGF0IGNhbiBiZSBydW4gb24gbXVsdGlwbGUgc2VsZWN0ZWQgZW50aXRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgdGhlIHRhYmxlIGFjdGlvbiB0byBkaXN0aW5jdCBiZXR3ZWVuIGJhc2UgYW5kIG11bHRpLXNlbGVjdCBhY3Rpb25zLlxuICAgICAqL1xuICAgIHR5cGU6ICdtdWx0aS1zZWxlY3QnLFxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24uXG4gICAgICovXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgYWN0aW9uIGl0c2VsZi5cbiAgICAgKi9cbiAgICBhY3Rpb246ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiB1bmtub3duKSB8ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBQcm9taXNlPHVua25vd24+KSxcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZC5cbiAgICAgKiBAZGVmYXVsdCAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiAhIXNlbGVjdGVkRW50aXRpZXMubGVuZ3RoXG4gICAgICovXG4gICAgZW5hYmxlZD86IChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBkZWZpbmVzIHdoZXRoZXIgb3Igbm90IGEgY29uZmlybSBkaWFsb2cgaXMgbmVlZGVkIHRvIHJ1biB0aGUgYWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVxdWlyZUNvbmZpcm1EaWFsb2c/OiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgdGFibGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGNvbmZpcm1EaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGFcbn1cblxuLyoqXG4gKiBBbiBhY3Rpb24gZm9yIHRoZSB0YWJsZS4gQ2FuIGVpdGhlciBiZSBpbmRlcGVuZGVudCBvciBydW4gb24gdGhlIHNlbGVjdGVkIGVudGl0aWVzIGluIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgVGFibGVBY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9IEJhc2VUYWJsZUFjdGlvbiB8IE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+O1xuXG4vKipcbiAqIFRoZSBiYXNlIGRhdGEgb2YgdGhlIG5neC1tYXQtZW50aXR5LXRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEYXRhPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgY29sdW1ucyB0byBkaXNwbGF5LiBDb25zaXN0cyBvZiB0aGUgZGlzcGxheU5hbWUgdG8gc2hvdyBpbiB0aGUgaGVhZGVyIG9mIHRoZSByb3dcbiAgICAgKiBhbmQgdGhlIHZhbHVlLCB3aGljaCBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHRoZSB2YWx1ZSB0byBkaXNwbGF5IGluc2lkZSBhIGNvbHVtbi5cbiAgICAgKi9cbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdLFxuICAgIC8qKlxuICAgICAqIFRoZSBDbGFzcyBvZiB0aGUgc2VydmljZSB0aGF0IGhhbmRsZXMgdGhlIGVudGl0aWVzLlxuICAgICAqIE5lZWRzIHRvIGJlIGluamVjdGFibGUgYW5kIGFuIGV4dGVuc2lvbiBvZiB0aGUgXCJFbnRpdHlTZXJ2aWNlXCItQ2xhc3MuXG4gICAgICovXG4gICAgRW50aXR5U2VydmljZUNsYXNzOiBFbnRpdHlTZXJ2aWNlQ2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+LFxuICAgIC8qKlxuICAgICAqIFRoZSBDbGFzcyBvZiB0aGUgZW50aXRpZXMgdG8gbWFuYWdlLlxuICAgICAqL1xuICAgIEVudGl0eUNsYXNzPzogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+LFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgc2VhcmNoIGJhci4gRGVmYXVsdHMgdG8gXCJTZWFyY2hcIi5cbiAgICAgKi9cbiAgICBzZWFyY2hMYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGJ1dHRvbiBmb3IgYWRkaW5nIG5ldyBlbnRpdGllcy4gRGVmYXVsdHMgdG8gXCJDcmVhdGVcIi5cbiAgICAgKi9cbiAgICBjcmVhdGVCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGVkaXRpbmcgaGFwcGVucyBpbiBhIGRpYWxvZyBvciBhIHNlcGFyYXRlIHBhZ2UuXG4gICAgICovXG4gICAgZGVmYXVsdEVkaXQ/OiAnZGlhbG9nJyB8ICdwYWdlJyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGNyZWF0aW5nIGhhcHBlbnMgaW4gYSBkaWFsb2cgb3IgYSBzZXBhcmF0ZSBwYWdlLlxuICAgICAqL1xuICAgIGRlZmF1bHRDcmVhdGU/OiAnZGlhbG9nJyB8ICdwYWdlJyxcbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIGN1c3RvbSBlZGl0IG1ldGhvZCB3aGljaCBydW5zIHdoZW4geW91IGNsaWNrIG9uIGEgZW50aXR5LlxuICAgICAqIElmIHlvdSBkb24ndCBuZWVkIGFueSBzcGVjaWFsIGVkaXRpbmcgb2YgZW50cmllcyB5b3UgY2FuIGFsc28gb21pdCB0aGlzLlxuICAgICAqIEluIHRoYXQgY2FzZSBhIGRlZmF1bHQgZWRpdCBkaWFsb2cgaXMgZ2VuZXJhdGVkLlxuICAgICAqL1xuICAgIGVkaXQ/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgbWV0aG9kIHRvIHJ1biB3aGVuIHlvdSBjbGljayBvbiB0aGUgbmV3IGJ1dHRvbi5cbiAgICAgKiBJZiB5b3UgZG9uJ3QgbmVlZCBhbnl0aGluZyBzcGVjaWFsIHlvdSBjYW4gYWxzbyBvbWl0IHRoaXMuXG4gICAgICogSW4gdGhhdCBjYXNlIGEgZGVmYXVsdCBjcmVhdGUgZGlhbG9nIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaG93IHRoZSBzZWFyY2ggc3RyaW5nIG9mIGVudGl0aWVzIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBzZWFyY2hTdHJpbmc/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gYWRkIG5ldyBlbnRpdGllcy5cbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGU/OiBib29sZWFuIHwgKCgpID0+IGJvb2xlYW4pLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHZpZXcgdGhlIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dSZWFkPzogYm9vbGVhbiB8ICgoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbiksXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gZWRpdCB0aGUgc3BlY2lmaWMgZW50aXR5LlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBhbGxvd1VwZGF0ZT86IGJvb2xlYW4gfCAoKGVudGl0eT86IEVudGl0eVR5cGUpID0+IGJvb2xlYW4pLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBkZWxldGUgdGhpcyBzcGVjaWZpYyBlbnRpdHkuXG4gICAgICogQGRlZmF1bHQgKCkgPT4gdHJ1ZVxuICAgICAqL1xuICAgIGFsbG93RGVsZXRlPzogYm9vbGVhbiB8ICgoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbiksXG4gICAgLyoqXG4gICAgICogQWxsIEFjdGlvbnMgdGhhdCB5b3Ugd2FudCB0byBydW4gb24gdGhlIHRhYmxlIGNhbiBiZSBkZWZpbmVkIGhlcmUuXG4gICAgICogKGUuZy4gRG93bmxvYWQgYXMgemlwLWZpbGUsIGltcG9ydCBvciBtYXNzIGRlbGV0ZSkuXG4gICAgICovXG4gICAgdGFibGVBY3Rpb25zPzogVGFibGVBY3Rpb248RW50aXR5VHlwZT5bXSxcbiAgICAvKipcbiAgICAgKiBUaGUgTGFiZWwgZm9yIHRoZSBidXR0b24gdGhhdCBvcGVucyBhbGwgdGFibGUtYWN0aW9ucy5cbiAgICAgKi9cbiAgICB0YWJsZUFjdGlvbnNMYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IGEgbG9hZGluZyBzcGlubmVyIHdoaWxlIHRoZSBlbnRpdGllcyBvZiB0aGUgdGFibGUgYXJlIGxvYWRlZC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZGlzcGxheUxvYWRpbmdTcGlubmVyPzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBKU09OIGltcG9ydHMgYXJlIGFsbG93ZWQuXG4gICAgICogVGhpcyBhZGRzIGFuIHRhYmxlIHNlbGVjdCBhY3Rpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBhbGxvd0pzb25JbXBvcnQ/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIERhdGEgdG8gY3VzdG9taXplIHRoZSBqc29uIGltcG9ydCBhY3Rpb24uXG4gICAgICovXG4gICAgaW1wb3J0QWN0aW9uRGF0YT86IE9taXQ8QmFzZVRhYmxlQWN0aW9uLCAnYWN0aW9uJyB8ICdyZXF1aXJlQ29uZmlybURpYWxvZycgfCAndHlwZSc+XG59XG5cbi8qKlxuICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVEYXRhIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGl0bGUgb2YgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKi9cbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGNyZWF0ZS1idXR0b24gb2YgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy4gRGVmYXVsdHMgdG8gXCJDcmVhdGVcIi5cbiAgICAgKi9cbiAgICBjcmVhdGVCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGNhbmNlbC1idXR0b24gZm9yIHRoZSBkZWZhdWx0IGNyZWF0ZS1kaWFsb2cuIERlZmF1bHRzIHRvIFwiQ2FuY2VsXCIuXG4gICAgICovXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGNyZWF0aW9uIG9mIGFuIGVudHJ5IHNob3VsZCByZXF1aXJlIGEgY29uZmlybSBkaWFsb2cuXG4gICAgICovXG4gICAgY3JlYXRlUmVxdWlyZXNDb25maXJtRGlhbG9nPzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSB1c2VkIHRvIGdlbmVyYXRlIGEgY29uZmlybWF0aW9uIGRpYWxvZyBmb3IgdGhlIGNyZWF0ZSBhY3Rpb24uXG4gICAgICovXG4gICAgY29uZmlybUNyZWF0ZURpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YVxufVxuXG4vKipcbiAqIEFuIGFjdGlvbiB0aGF0IGNhbiBiZSBydW4gZnJvbSBpbnNpZGUgdGhlIGVkaXQgZGlhbG9nIG9yIHBhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdEFjdGlvbjxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGFjdGlvbiBpdHNlbGYuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICBhY3Rpb246ICgoZW50aXR5OiBFbnRpdHlUeXBlLCBlbnRpdHlQcmlvckNoYW5nZXM6IEVudGl0eVR5cGUpID0+IHVua25vd24pIHwgKChlbnRpdHk6IEVudGl0eVR5cGUsIGVudGl0eVByaW9yQ2hhbmdlczogRW50aXR5VHlwZSkgPT4gUHJvbWlzZTx1bmtub3duPiksXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBkZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICogQGRlZmF1bHQgKCkgPT4gdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiAoZTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgYSBjb25maXJtIGRpYWxvZyBpcyBuZWVkZWQgdG8gcnVuIHRoZSBhY3Rpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZXF1aXJlQ29uZmlybURpYWxvZz86IChlOiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGNvbmZpcm1EaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGFcbn1cblxuLyoqXG4gKiBUaGUgZGF0YSBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZyBvciBwYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkaXREYXRhPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZy5cbiAgICAgKi9cbiAgICB0aXRsZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGNvbmZpcm0tYnV0dG9uIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nIG9yIHBhZ2UuIERlZmF1bHRzIHRvIFwiU2F2ZVwiLlxuICAgICAqL1xuICAgIGNvbmZpcm1CdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGRlbGV0ZS1idXR0b24gb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cgb3IgcGFnZS4gRGVmYXVsdHMgdG8gXCJEZWxldGVcIi5cbiAgICAgKi9cbiAgICBkZWxldGVCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGNhbmNlbC1idXR0b24gZm9yIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nIG9yIHBhZ2UuIERlZmF1bHRzIHRvIFwiQ2FuY2VsXCIuXG4gICAgICovXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGRlbGV0aW9uIG9mIGFuIGVudHJ5IHNob3VsZCByZXF1aXJlIGEgY29uZmlybSBkaWFsb2cuXG4gICAgICovXG4gICAgZGVsZXRlUmVxdWlyZXNDb25maXJtRGlhbG9nPzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZWRpdGluZyBvZiBhbiBlbnRyeSBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAqL1xuICAgIGVkaXRSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgZGVsZXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRGVsZXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgZWRpdCBhY3Rpb24uXG4gICAgICovXG4gICAgY29uZmlybUVkaXREaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9mIHRoZSBhY3Rpb25zIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBhY3Rpb25zTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQWxsIGFjdGlvbnMgb2YgdGhlIGVkaXQgcGFnZS9kaWFsb2cuXG4gICAgICovXG4gICAgYWN0aW9ucz86IEVkaXRBY3Rpb248RW50aXR5VHlwZT5bXVxufVxuXG4vKipcbiAqIEFsbCB0aGUgY29uZmlndXJhdGlvbiBkYXRhIHJlcXVpcmVkIHRvIGRpc3BsYXkgYSBuZ3gtbWF0LWVudGl0eS10YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZURhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZGF0YSBmb3IgdGhlIHRhYmxlLWNvbXBvbmVudC5cbiAgICAgKiBJbmNsdWRlcyBzdHVmZiBsaWtlIHRoZSB0aXRsZSBmb3IgdGhlIHRhYmxlLCB3aGF0IHRvIGRpc3BsYXkgaW5zaWRlIHRoZSByb3dzIGV0Yy5cbiAgICAgKi9cbiAgICBiYXNlRGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGNyZWF0ZS1kaWFsb2cuXG4gICAgICogQ2FuIGJlIG9taXR0ZWQgd2hlbiBzcGVjaWZ5aW5nIGEgY3VzdG9tIFwiY3JlYXRlXCIgbWV0aG9kIGluc2lkZSB0aGUgYmFzZURhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRGF0YT86IENyZWF0ZURhdGEsXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLlxuICAgICAqIENhbiBiZSBvbWl0dGVkIHdoZW4gc3BlY2lmeWluZyBhIGN1c3RvbSBcImVkaXRcIiBtZXRob2QgaW5zaWRlIHRoZSBiYXNlRGF0YS5cbiAgICAgKi9cbiAgICBlZGl0RGF0YT86IEVkaXREYXRhPEVudGl0eVR5cGU+XG59Il19
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSwgRW50aXR5U2VydmljZUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlRGlzcGxheUNvbHVtblZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5LWNvbHVtbi12YWx1ZS9iYXNlLWRpc3BsYXktY29sdW1uLXZhbHVlLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVGhlIERlZmluaXRpb24gb2YgYSBDb2x1bW4gaW5zaWRlIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIGluc2lkZSB0aGUgaGVhZGVyLlxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogV2hhdCB0byBkaXNwbGF5IGluc2lkZSB0aGUgcm93LlxuICAgICAqL1xuICAgIHZhbHVlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQSBjdXN0b20gY29tcG9uZW50IHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSB2YWx1ZS5cbiAgICAgKiBZb3Ugc3RpbGwgbmVlZCB0byBwcm92aWRlIGEgdmFsdWUgZnVuY3Rpb24gZm9yIHRoZSBzb3J0aW5nIGJ5IGhlYWRlciB0byB3b3JrLlxuICAgICAqL1xuICAgIENvbXBvbmVudD86IFR5cGU8Tmd4TWF0RW50aXR5QmFzZURpc3BsYXlDb2x1bW5WYWx1ZUNvbXBvbmVudDxFbnRpdHlUeXBlPj4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGNsaWNrIGV2ZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91ciBjb21wb25lbnQgaGFzIGEgY3VzdG9tIHdheSB0byBoYW5kbGUgY2xpY2tzLlxuICAgICAqL1xuICAgIGRpc2FibGVDbGljaz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBEeW5hbWljIGNzcyBjbGFzcyB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIGJhc2VkIG9uIGEgY29uZGl0aW9uLlxuICovXG5leHBvcnQgdHlwZSBEeW5hbWljU3R5bGVDbGFzc2VzPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gPSAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmdbXTtcblxuLyoqXG4gKiBBIHRhYmxlIGFjdGlvbiB0aGF0IHdpbGwgcnVuIHJlZ2FyZGxlc3MgaWYgc29tZXRoaW5nIGhhcyBiZWVuIHNlbGVjdGVkIGluIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlVGFibGVBY3Rpb24ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSB0YWJsZSBhY3Rpb24gdG8gZGlzdGluY3QgYmV0d2VlbiBiYXNlIGFuZCBtdWx0aS1zZWxlY3QgYWN0aW9ucy5cbiAgICAgKi9cbiAgICB0eXBlOiAnZGVmYXVsdCcsXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBhY3Rpb24gaXRzZWxmLlxuICAgICAqL1xuICAgIGFjdGlvbjogKCgpID0+IHVua25vd24pIHwgKCgpID0+IFByb21pc2U8dW5rbm93bj4pLFxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogKCkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgYSBjb25maXJtIGRpYWxvZyBpcyBuZWVkZWQgdG8gcnVuIHRoZSBhY3Rpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZXF1aXJlQ29uZmlybURpYWxvZz86ICgpID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSB0YWJsZSBhY3Rpb24uXG4gICAgICovXG4gICAgY29uZmlybURpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YVxufVxuXG4vKipcbiAqIFRoZSBEZWZpbml0aW9uIG9mIGFuIEFjdGlvbiB0aGF0IGNhbiBiZSBydW4gb24gbXVsdGlwbGUgc2VsZWN0ZWQgZW50aXRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgdGhlIHRhYmxlIGFjdGlvbiB0byBkaXN0aW5jdCBiZXR3ZWVuIGJhc2UgYW5kIG11bHRpLXNlbGVjdCBhY3Rpb25zLlxuICAgICAqL1xuICAgIHR5cGU6ICdtdWx0aS1zZWxlY3QnLFxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24uXG4gICAgICovXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgYWN0aW9uIGl0c2VsZi5cbiAgICAgKi9cbiAgICBhY3Rpb246ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiB1bmtub3duKSB8ICgoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBQcm9taXNlPHVua25vd24+KSxcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZC5cbiAgICAgKiBAZGVmYXVsdCAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiAhIXNlbGVjdGVkRW50aXRpZXMubGVuZ3RoXG4gICAgICovXG4gICAgZW5hYmxlZD86IChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBkZWZpbmVzIHdoZXRoZXIgb3Igbm90IGEgY29uZmlybSBkaWFsb2cgaXMgbmVlZGVkIHRvIHJ1biB0aGUgYWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVxdWlyZUNvbmZpcm1EaWFsb2c/OiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgdGFibGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGNvbmZpcm1EaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGFcbn1cblxuLyoqXG4gKiBBbiBhY3Rpb24gZm9yIHRoZSB0YWJsZS4gQ2FuIGVpdGhlciBiZSBpbmRlcGVuZGVudCBvciBydW4gb24gdGhlIHNlbGVjdGVkIGVudGl0aWVzIGluIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgVGFibGVBY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9IEJhc2VUYWJsZUFjdGlvbiB8IE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+O1xuXG4vKipcbiAqIFRoZSBiYXNlIGRhdGEgb2YgdGhlIG5neC1tYXQtZW50aXR5LXRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEYXRhPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgY29sdW1ucyB0byBkaXNwbGF5LiBDb25zaXN0cyBvZiB0aGUgZGlzcGxheU5hbWUgdG8gc2hvdyBpbiB0aGUgaGVhZGVyIG9mIHRoZSByb3dcbiAgICAgKiBhbmQgdGhlIHZhbHVlLCB3aGljaCBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHRoZSB2YWx1ZSB0byBkaXNwbGF5IGluc2lkZSBhIGNvbHVtbi5cbiAgICAgKi9cbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdLFxuICAgIC8qKlxuICAgICAqIFRoZSBDbGFzcyBvZiB0aGUgc2VydmljZSB0aGF0IGhhbmRsZXMgdGhlIGVudGl0aWVzLlxuICAgICAqIE5lZWRzIHRvIGJlIGluamVjdGFibGUgYW5kIGFuIGV4dGVuc2lvbiBvZiB0aGUgXCJFbnRpdHlTZXJ2aWNlXCItQ2xhc3MuXG4gICAgICovXG4gICAgRW50aXR5U2VydmljZUNsYXNzOiBFbnRpdHlTZXJ2aWNlQ2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+LFxuICAgIC8qKlxuICAgICAqIFRoZSBDbGFzcyBvZiB0aGUgZW50aXRpZXMgdG8gbWFuYWdlLlxuICAgICAqL1xuICAgIEVudGl0eUNsYXNzPzogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+LFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgc2VhcmNoIGJhci4gRGVmYXVsdHMgdG8gXCJTZWFyY2hcIi5cbiAgICAgKi9cbiAgICBzZWFyY2hMYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGJ1dHRvbiBmb3IgYWRkaW5nIG5ldyBlbnRpdGllcy4gRGVmYXVsdHMgdG8gXCJDcmVhdGVcIi5cbiAgICAgKi9cbiAgICBjcmVhdGVCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGVkaXRpbmcgaGFwcGVucyBpbiBhIGRpYWxvZyBvciBhIHNlcGFyYXRlIHBhZ2UuXG4gICAgICovXG4gICAgZGVmYXVsdEVkaXQ/OiAnZGlhbG9nJyB8ICdwYWdlJyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGNyZWF0aW5nIGhhcHBlbnMgaW4gYSBkaWFsb2cgb3IgYSBzZXBhcmF0ZSBwYWdlLlxuICAgICAqL1xuICAgIGRlZmF1bHRDcmVhdGU/OiAnZGlhbG9nJyB8ICdwYWdlJyxcbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIGN1c3RvbSBlZGl0IG1ldGhvZCB3aGljaCBydW5zIHdoZW4geW91IGNsaWNrIG9uIGEgZW50aXR5LlxuICAgICAqIElmIHlvdSBkb24ndCBuZWVkIGFueSBzcGVjaWFsIGVkaXRpbmcgb2YgZW50cmllcyB5b3UgY2FuIGFsc28gb21pdCB0aGlzLlxuICAgICAqIEluIHRoYXQgY2FzZSBhIGRlZmF1bHQgZWRpdCBkaWFsb2cgaXMgZ2VuZXJhdGVkLlxuICAgICAqL1xuICAgIGVkaXQ/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgbWV0aG9kIHRvIHJ1biB3aGVuIHlvdSBjbGljayBvbiB0aGUgbmV3IGJ1dHRvbi5cbiAgICAgKiBJZiB5b3UgZG9uJ3QgbmVlZCBhbnl0aGluZyBzcGVjaWFsIHlvdSBjYW4gYWxzbyBvbWl0IHRoaXMuXG4gICAgICogSW4gdGhhdCBjYXNlIGEgZGVmYXVsdCBjcmVhdGUgZGlhbG9nIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaG93IHRoZSBzZWFyY2ggc3RyaW5nIG9mIGVudGl0aWVzIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBzZWFyY2hTdHJpbmc/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gYWRkIG5ldyBlbnRpdGllcy5cbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGU/OiBib29sZWFuIHwgKCgpID0+IGJvb2xlYW4pLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHZpZXcgdGhlIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dSZWFkPzogYm9vbGVhbiB8ICgoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbiksXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gZWRpdCB0aGUgc3BlY2lmaWMgZW50aXR5LlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBhbGxvd1VwZGF0ZT86IGJvb2xlYW4gfCAoKGVudGl0eT86IEVudGl0eVR5cGUpID0+IGJvb2xlYW4pLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBkZWxldGUgdGhpcyBzcGVjaWZpYyBlbnRpdHkuXG4gICAgICogQGRlZmF1bHQgKCkgPT4gdHJ1ZVxuICAgICAqL1xuICAgIGFsbG93RGVsZXRlPzogYm9vbGVhbiB8ICgoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbiksXG4gICAgLyoqXG4gICAgICogQWxsIEFjdGlvbnMgdGhhdCB5b3Ugd2FudCB0byBydW4gb24gdGhlIHRhYmxlIGNhbiBiZSBkZWZpbmVkIGhlcmUuXG4gICAgICogKGUuZy4gRG93bmxvYWQgYXMgemlwLWZpbGUsIGltcG9ydCBvciBtYXNzIGRlbGV0ZSkuXG4gICAgICovXG4gICAgdGFibGVBY3Rpb25zPzogVGFibGVBY3Rpb248RW50aXR5VHlwZT5bXSxcbiAgICAvKipcbiAgICAgKiBUaGUgTGFiZWwgZm9yIHRoZSBidXR0b24gdGhhdCBvcGVucyBhbGwgdGFibGUtYWN0aW9ucy5cbiAgICAgKi9cbiAgICB0YWJsZUFjdGlvbnNMYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IGEgbG9hZGluZyBzcGlubmVyIHdoaWxlIHRoZSBlbnRpdGllcyBvZiB0aGUgdGFibGUgYXJlIGxvYWRlZC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZGlzcGxheUxvYWRpbmdTcGlubmVyPzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBKU09OIGltcG9ydHMgYXJlIGFsbG93ZWQuXG4gICAgICogVGhpcyBhZGRzIGFuIHRhYmxlIHNlbGVjdCBhY3Rpb24uXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBhbGxvd0pzb25JbXBvcnQ/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIERhdGEgdG8gY3VzdG9taXplIHRoZSBqc29uIGltcG9ydCBhY3Rpb24uXG4gICAgICovXG4gICAgaW1wb3J0QWN0aW9uRGF0YT86IE9taXQ8QmFzZVRhYmxlQWN0aW9uLCAnYWN0aW9uJyB8ICdyZXF1aXJlQ29uZmlybURpYWxvZycgfCAndHlwZSc+LFxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIGNzcyBjbGFzc2VzIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGFibGUgcm93cyBiYXNlZCBvbiBhIGNvbmRpdGlvbi5cbiAgICAgKiBUaGlzIGNvdWxkIGJlIHVzZWQgdG8gZWcuIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byBncmVlbiB3aGVuIGFuIGl0ZW0gaGFzIHRoZSBzdGF0dXMgY29tcGxldGVkIGV0Yy5cbiAgICAgKiBJTkZPOiBZb3UgbmVlZCB0byB1c2UgbmctZGVlcCBvciBhcHBseSB0aGUgc3R5bGluZyBpbiB0aGUgc3R5bGVzLnNjc3MuXG4gICAgICovXG4gICAgZHluYW1pY1Jvd1N0eWxlQ2xhc3Nlcz86IER5bmFtaWNTdHlsZUNsYXNzZXM8RW50aXR5VHlwZT5cbn1cblxuLyoqXG4gKiBUaGUgZGF0YSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZURhdGEge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICAgICAqL1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY3JlYXRlLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLiBEZWZhdWx0cyB0byBcIkNyZWF0ZVwiLlxuICAgICAqL1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3JlYXRpb24gb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgY3JlYXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtQ3JlYXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhXG59XG5cbi8qKlxuICogQW4gYWN0aW9uIHRoYXQgY2FuIGJlIHJ1biBmcm9tIGluc2lkZSB0aGUgZWRpdCBkaWFsb2cgb3IgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGl0QWN0aW9uPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBhY3Rpb24uXG4gICAgICovXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgYWN0aW9uIGl0c2VsZi5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIGFjdGlvbjogKChlbnRpdHk6IEVudGl0eVR5cGUsIGVudGl0eVByaW9yQ2hhbmdlczogRW50aXR5VHlwZSkgPT4gdW5rbm93bikgfCAoKGVudGl0eTogRW50aXR5VHlwZSwgZW50aXR5UHJpb3JDaGFuZ2VzOiBFbnRpdHlUeXBlKSA9PiBQcm9taXNlPHVua25vd24+KSxcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZC5cbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IChlOiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCBhIGNvbmZpcm0gZGlhbG9nIGlzIG5lZWRlZCB0byBydW4gdGhlIGFjdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlcXVpcmVDb25maXJtRGlhbG9nPzogKGU6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSBhY3Rpb24uXG4gICAgICovXG4gICAgY29uZmlybURpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YVxufVxuXG4vKipcbiAqIFRoZSBkYXRhIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nIG9yIHBhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdERhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLlxuICAgICAqL1xuICAgIHRpdGxlPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY29uZmlybS1idXR0b24gb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cgb3IgcGFnZS4gRGVmYXVsdHMgdG8gXCJTYXZlXCIuXG4gICAgICovXG4gICAgY29uZmlybUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgZGVsZXRlLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZyBvciBwYWdlLiBEZWZhdWx0cyB0byBcIkRlbGV0ZVwiLlxuICAgICAqL1xuICAgIGRlbGV0ZUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cgb3IgcGFnZS4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZGVsZXRpb24gb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBkZWxldGVSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBlZGl0aW5nIG9mIGFuIGVudHJ5IHNob3VsZCByZXF1aXJlIGEgY29uZmlybSBkaWFsb2cuXG4gICAgICovXG4gICAgZWRpdFJlcXVpcmVzQ29uZmlybURpYWxvZz86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSBkZWxldGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRWRpdERpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YSxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb2YgdGhlIGFjdGlvbnMgYnV0dG9uLlxuICAgICAqL1xuICAgIGFjdGlvbnNMYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBBbGwgYWN0aW9ucyBvZiB0aGUgZWRpdCBwYWdlL2RpYWxvZy5cbiAgICAgKi9cbiAgICBhY3Rpb25zPzogRWRpdEFjdGlvbjxFbnRpdHlUeXBlPltdXG59XG5cbi8qKlxuICogQWxsIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgcmVxdWlyZWQgdG8gZGlzcGxheSBhIG5neC1tYXQtZW50aXR5LXRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBkYXRhIGZvciB0aGUgdGFibGUtY29tcG9uZW50LlxuICAgICAqIEluY2x1ZGVzIHN0dWZmIGxpa2UgdGhlIHRpdGxlIGZvciB0aGUgdGFibGUsIHdoYXQgdG8gZGlzcGxheSBpbnNpZGUgdGhlIHJvd3MgZXRjLlxuICAgICAqL1xuICAgIGJhc2VEYXRhOiBCYXNlRGF0YTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKiBDYW4gYmUgb21pdHRlZCB3aGVuIHNwZWNpZnlpbmcgYSBjdXN0b20gXCJjcmVhdGVcIiBtZXRob2QgaW5zaWRlIHRoZSBiYXNlRGF0YS5cbiAgICAgKi9cbiAgICBjcmVhdGVEYXRhPzogQ3JlYXRlRGF0YSxcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICogQ2FuIGJlIG9taXR0ZWQgd2hlbiBzcGVjaWZ5aW5nIGEgY3VzdG9tIFwiZWRpdFwiIG1ldGhvZCBpbnNpZGUgdGhlIGJhc2VEYXRhLlxuICAgICAqL1xuICAgIGVkaXREYXRhPzogRWRpdERhdGE8RW50aXR5VHlwZT5cbn0iXX0=
|
|
@@ -15,6 +15,7 @@ import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
|
15
15
|
import { Router } from '@angular/router';
|
|
16
16
|
import { Subject, firstValueFrom, takeUntil } from 'rxjs';
|
|
17
17
|
import { NGX_INTERNAL_GLOBAL_DEFAULT_VALUES } from '../../default-global-configuration-values';
|
|
18
|
+
import { DynamicStyleClassDirective } from '../../directives/dynamic-style-class.directive';
|
|
18
19
|
import { EntityUtilities } from '../../utilities/entity.utilities';
|
|
19
20
|
import { SelectionUtilities } from '../../utilities/selection.utilities';
|
|
20
21
|
import { ConfirmDialogDataBuilder } from '../confirm-dialog/confirm-dialog-data.builder';
|
|
@@ -348,7 +349,7 @@ export class NgxMatEntityTableComponent {
|
|
|
348
349
|
this.dataSource.filter = filterValue.trim().toLowerCase();
|
|
349
350
|
}
|
|
350
351
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityTableComponent, deps: [{ token: i1.MatDialog }, { token: i0.EnvironmentInjector }, { token: i2.Router }, { token: NGX_INTERNAL_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
|
|
351
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: NgxMatEntityTableComponent, isStandalone: true, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true, static: true }], ngImport: i0, template: "<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.tableActions.length\"\n [class.col-lg-2]=\"allowCreate\"\n [class.col-lg-4]=\"!allowCreate\"\n [class.col-md-3]=\"allowCreate\"\n [class.col-md-6]=\"!allowCreate\"\n [class.col-sm-6]=\"allowCreate\"\n [class.col-sm-12]=\"!allowCreate\"\n >\n <button type=\"button\" class=\"actions-button\" mat-raised-button [matMenuTriggerFor]=\"menu\">\n {{data.baseData.tableActionsLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(importAction)\" (click)=\"runTableAction(importAction)\">\n {{importAction.displayName}}\n </button>\n <button *ngFor=\"let action of data.baseData.tableActions\" type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(action)\" (click)=\"runTableAction(action)\">\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"allowCreate\"\n [class.col-lg-2]=\"data.baseData.tableActions.length\"\n [class.col-lg-4]=\"!data.baseData.tableActions.length\"\n [class.col-md-3]=\"data.baseData.tableActions.length\"\n [class.col-md-6]=\"!data.baseData.tableActions.length\"\n [class.col-sm-6]=\"data.baseData.tableActions.length\"\n [class.col-sm-12]=\"!data.baseData.tableActions.length\"\n >\n <button type=\"button\" class=\"create-button\" mat-raised-button (click)=\"createEntity()\">\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table matSort [dataSource]=\"dataSource\">\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"\n (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\" class=\"entity\">\n <mat-checkbox [checked]=\"selection.isSelected(entity)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(entity) : null\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\" class=\"entity\"\n [class.enabled]=\"!dCol.disableClick && (allowUpdate(entity) || allowRead(entity))\"\n (click)=\"editEntity(entity, dCol)\"\n >\n <ng-container *ngIf=\"dCol.Component\">\n <display-column-value [entity]=\"entity\" [ComponentClass]=\"dCol.Component\"></display-column-value>\n </ng-container>\n <ng-container *ngIf=\"!dCol.Component\">\n {{getDisplayColumnValue(entity, dCol)}}\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}mat-spinner{margin:10px auto}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: DisplayColumnValueComponent, selector: "display-column-value", inputs: ["entity", "ComponentClass"] }] });
|
|
352
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: NgxMatEntityTableComponent, isStandalone: true, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true, static: true }], ngImport: i0, template: "<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.tableActions.length\"\n [class.col-lg-2]=\"allowCreate\"\n [class.col-lg-4]=\"!allowCreate\"\n [class.col-md-3]=\"allowCreate\"\n [class.col-md-6]=\"!allowCreate\"\n [class.col-sm-6]=\"allowCreate\"\n [class.col-sm-12]=\"!allowCreate\"\n >\n <button type=\"button\" class=\"actions-button\" mat-raised-button [matMenuTriggerFor]=\"menu\">\n {{data.baseData.tableActionsLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(importAction)\" (click)=\"runTableAction(importAction)\">\n {{importAction.displayName}}\n </button>\n <button *ngFor=\"let action of data.baseData.tableActions\" type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(action)\" (click)=\"runTableAction(action)\">\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"allowCreate\"\n [class.col-lg-2]=\"data.baseData.tableActions.length\"\n [class.col-lg-4]=\"!data.baseData.tableActions.length\"\n [class.col-md-3]=\"data.baseData.tableActions.length\"\n [class.col-md-6]=\"!data.baseData.tableActions.length\"\n [class.col-sm-6]=\"data.baseData.tableActions.length\"\n [class.col-sm-12]=\"!data.baseData.tableActions.length\"\n >\n <button type=\"button\" class=\"create-button\" mat-raised-button (click)=\"createEntity()\">\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table matSort [dataSource]=\"dataSource\">\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"\n (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\" class=\"entity\" [dynamicStyleClasses]=\"data.baseData.dynamicRowStyleClasses\" [entity]=\"entity\">\n <mat-checkbox [checked]=\"selection.isSelected(entity)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(entity) : null\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\" class=\"entity\"\n [class.enabled]=\"!dCol.disableClick && (allowUpdate(entity) || allowRead(entity))\"\n [dynamicStyleClasses]=\"data.baseData.dynamicRowStyleClasses\" [entity]=\"entity\"\n (click)=\"editEntity(entity, dCol)\"\n >\n <ng-container *ngIf=\"dCol.Component\">\n <display-column-value [entity]=\"entity\" [ComponentClass]=\"dCol.Component\"></display-column-value>\n </ng-container>\n <ng-container *ngIf=\"!dCol.Component\">\n {{getDisplayColumnValue(entity, dCol)}}\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}mat-spinner{margin:10px auto}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: DisplayColumnValueComponent, selector: "display-column-value", inputs: ["entity", "ComponentClass"] }, { kind: "directive", type: DynamicStyleClassDirective, selector: "[dynamicStyleClasses]", inputs: ["dynamicStyleClasses", "entity"] }] });
|
|
352
353
|
}
|
|
353
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityTableComponent, decorators: [{
|
|
354
355
|
type: Component,
|
|
@@ -368,8 +369,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
368
369
|
MatProgressSpinnerModule,
|
|
369
370
|
NgxMatEntityCreateDialogComponent,
|
|
370
371
|
NgxMatEntityEditDialogComponent,
|
|
371
|
-
DisplayColumnValueComponent
|
|
372
|
-
|
|
372
|
+
DisplayColumnValueComponent,
|
|
373
|
+
DynamicStyleClassDirective
|
|
374
|
+
], template: "<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.tableActions.length\"\n [class.col-lg-2]=\"allowCreate\"\n [class.col-lg-4]=\"!allowCreate\"\n [class.col-md-3]=\"allowCreate\"\n [class.col-md-6]=\"!allowCreate\"\n [class.col-sm-6]=\"allowCreate\"\n [class.col-sm-12]=\"!allowCreate\"\n >\n <button type=\"button\" class=\"actions-button\" mat-raised-button [matMenuTriggerFor]=\"menu\">\n {{data.baseData.tableActionsLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(importAction)\" (click)=\"runTableAction(importAction)\">\n {{importAction.displayName}}\n </button>\n <button *ngFor=\"let action of data.baseData.tableActions\" type=\"button\" mat-menu-item [disabled]=\"tableActionDisabled(action)\" (click)=\"runTableAction(action)\">\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"allowCreate\"\n [class.col-lg-2]=\"data.baseData.tableActions.length\"\n [class.col-lg-4]=\"!data.baseData.tableActions.length\"\n [class.col-md-3]=\"data.baseData.tableActions.length\"\n [class.col-md-6]=\"!data.baseData.tableActions.length\"\n [class.col-sm-6]=\"data.baseData.tableActions.length\"\n [class.col-sm-12]=\"!data.baseData.tableActions.length\"\n >\n <button type=\"button\" class=\"create-button\" mat-raised-button (click)=\"createEntity()\">\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table matSort [dataSource]=\"dataSource\">\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\"\n [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"\n (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\" class=\"entity\" [dynamicStyleClasses]=\"data.baseData.dynamicRowStyleClasses\" [entity]=\"entity\">\n <mat-checkbox [checked]=\"selection.isSelected(entity)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(entity) : null\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell *matCellDef=\"let entity\" class=\"entity\"\n [class.enabled]=\"!dCol.disableClick && (allowUpdate(entity) || allowRead(entity))\"\n [dynamicStyleClasses]=\"data.baseData.dynamicRowStyleClasses\" [entity]=\"entity\"\n (click)=\"editEntity(entity, dCol)\"\n >\n <ng-container *ngIf=\"dCol.Component\">\n <display-column-value [entity]=\"entity\" [ComponentClass]=\"dCol.Component\"></display-column-value>\n </ng-container>\n <ng-container *ngIf=\"!dCol.Component\">\n {{getDisplayColumnValue(entity, dCol)}}\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}mat-spinner{margin:10px auto}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"] }]
|
|
373
375
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i0.EnvironmentInjector }, { type: i2.Router }, { type: undefined, decorators: [{
|
|
374
376
|
type: Inject,
|
|
375
377
|
args: [NGX_INTERNAL_GLOBAL_DEFAULT_VALUES]
|
|
@@ -385,4 +387,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
385
387
|
type: ViewChild,
|
|
386
388
|
args: ['filter', { static: true }]
|
|
387
389
|
}] } });
|
|
388
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxP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TUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5qZWN0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHkgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3NlbGVjdGlvbi51dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3JlYXRlRW50aXR5RGF0YUludGVybmFsLCBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhQnVpbGRlciB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29sdW1uVmFsdWVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXktY29sdW1uLXZhbHVlL2Rpc3BsYXktY29sdW1uLXZhbHVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YSB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRFbnRpdHlEYXRhQnVpbGRlciwgRWRpdEVudGl0eURhdGFJbnRlcm5hbCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHkuYnVpbGRlcic7XG5pbXBvcnQgeyBEaXNwbGF5Q29sdW1uLCBUYWJsZURhdGEgfSBmcm9tICcuL3RhYmxlLWRhdGEnO1xuaW1wb3J0IHsgQmFzZVRhYmxlQWN0aW9uSW50ZXJuYWwsIFRhYmxlQWN0aW9uSW50ZXJuYWwsIFRhYmxlRGF0YUJ1aWxkZXIsIFRhYmxlRGF0YUludGVybmFsIH0gZnJvbSAnLi90YWJsZS1kYXRhLmJ1aWxkZXInO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGZ1bGx5IGZ1bmN0aW9uYWwgdGFibGUgZm9yIGRpc3BsYXlpbmcsIGNyZWF0aW5nLCB1cGRhdGluZyBhbmQgZGVsZXRpbmcgZW50aXRpZXNcbiAqIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHBhc3NlZCBpbiB0aGUgQElucHV0IFwidGFibGVEYXRhXCIuXG4gKlxuICogSXQgb2ZmZXJzIGEgbG90IG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucyB3aGljaCBjYW4gYmUgZm91bmQgaW4gXCJUYWJsZURhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgICAgICBNYXRTb3J0TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpc3BsYXlDb2x1bW5WYWx1ZUNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5VGFibGVDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eT4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0YWJsZURhdGEhOiBUYWJsZURhdGE8RW50aXR5VHlwZT47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLlxuICAgICAqL1xuICAgIGRhdGEhOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB0YWJsZSBjb250ZW50IGlzIGN1cnJlbnRseSBsb2FkaW5nLlxuICAgICAqL1xuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBlbnRyaWVzIGZvciB0aGUgdGFibGUuXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGUhOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlITogRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogVGhlIHBhZ2luYXRvciBmcm9tIHRoZSBodG1sLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgICAvKipcbiAgICAgKiBUaGUgc29ydCBmcm9tIHRoZSBodG1sLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBzb3J0ITogTWF0U29ydDtcbiAgICAvKipcbiAgICAgKiBUaGUgZmlsdGVyIChzZWFyY2gpIGZyb20gdGhlIGh0bWwuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBmaWx0ZXIhOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbHVtbnMgb2YgdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGRpc3BsYXllZENvbHVtbnMhOiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGUgZGF0YVNvdXJjZS5cbiAgICAgKi9cbiAgICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RW50aXR5VHlwZT4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG4gICAgLyoqXG4gICAgICogVGhlIHNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPih0cnVlLCBbXSk7XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGFyb3VuZCBtYXRlcmlhbCBzZWxlY3Rpb25zIGluc2lkZSBvZiB0YWJsZXMuXG4gICAgICovXG4gICAgU2VsZWN0aW9uVXRpbGl0aWVzOiB0eXBlb2YgU2VsZWN0aW9uVXRpbGl0aWVzID0gU2VsZWN0aW9uVXRpbGl0aWVzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGludGVybmFsIEJhc2VUYWJsZUFjdGlvbi4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKi9cbiAgICBpbXBvcnRBY3Rpb24hOiBCYXNlVGFibGVBY3Rpb25JbnRlcm5hbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBASW5qZWN0KE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YWJsZSBhbmQgdGhlIEVudGl0eVNlcnZpY2UuXG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBUYWJsZURhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLnRhYmxlRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbG93Q3JlYXRlID0gdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW1wb3J0QWN0aW9uID0gbmV3IEJhc2VUYWJsZUFjdGlvbkludGVybmFsKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLnN0YXJ0SW1wb3J0SnNvbigpXG4gICAgICAgIH0sIHRoaXMuZ2xvYmFsQ29uZmlnKTtcblxuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbnRpdHlTZXJ2aWNlID0gaW5qZWN0PEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4+KHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBnaXZlbkRpc3BsYXlDb2x1bW5zOiBzdHJpbmdbXSA9IHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5tYXAoKHYpID0+IHYuZGlzcGxheU5hbWUpO1xuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5maWx0ZXIodEEgPT4gdEEudHlwZSA9PT0gJ211bHRpLXNlbGVjdCcpLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBnaXZlbkRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZW50aXR5OiBFbnRpdHlUeXBlLCBoZWFkZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5maW5kKChkcCkgPT4gZHAuZGlzcGxheU5hbWUgPT09IGhlYWRlcik/LnZhbHVlKGVudGl0eSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyUHJlZGljYXRlID0gKGVudGl0eTogRW50aXR5VHlwZSwgZmlsdGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFN0cjogc3RyaW5nID0gdGhpcy5kYXRhLmJhc2VEYXRhLnNlYXJjaFN0cmluZyhlbnRpdHkpO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkU2VhcmNoU3RyaW5nOiBzdHJpbmcgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEZpbHRlclN0cmluZzogc3RyaW5nID0gZmlsdGVyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkU2VhcmNoU3RyaW5nLmluY2x1ZGVzKGZvcm1hdHRlZEZpbHRlclN0cmluZyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSB0aGlzLmZpbHRlcjtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuXG4gICAgICAgIHRoaXMuZW50aXR5U2VydmljZS5lbnRpdGllc1N1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGVudGl0aWVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGVudGl0aWVzO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLnJlYWQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGNvbHVtbi5cbiAgICAgKiBSdW5zIGluIGVudmlyb25tZW50IGNvbnRleHQgdG8gZW5hYmxlIGluamVjdGlvbi5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0byBnZXQgdGhlIHZhbHVlIGZyb20uXG4gICAgICogQHBhcmFtIGRpc3BsYXlDb2x1bW4gLSBUaGUgZGlzcGxheSBjb2x1bW4gdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgZGlzcGxheSBjb2x1bW4uXG4gICAgICovXG4gICAgZ2V0RGlzcGxheUNvbHVtblZhbHVlKGVudGl0eTogRW50aXR5VHlwZSwgZGlzcGxheUNvbHVtbjogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPik6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Q29sdW1uLnZhbHVlKGVudGl0eSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRJbXBvcnRKc29uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0LnR5cGUgPSAnZmlsZSc7XG4gICAgICAgIGlucHV0LmFjY2VwdCA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICAgICAgaW5wdXQub25jaGFuZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltcG9ydEpzb24oaW5wdXQuZmlsZXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1wb3J0SnNvbihmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmltcG9ydEFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLmNvbmZpcm1EaWFsb2dEYXRhLnRleHQpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgdGhpcy5pbXBvcnRBY3Rpb24uZGlzcGxheU5hbWUpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmVudGl0eVNlcnZpY2UuaW1wb3J0KGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFZGl0cyBhbiBlbnRpdHkuIFRoaXMgZWl0aGVyIGNhbGxzIHRoZSBlZGl0LU1ldGhvZCBwcm92aWRlZCBieSB0aGUgdXNlciBvciB1c2VzIGEgZGVmYXVsdCBlZGl0LWRpYWxvZy5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqIEBwYXJhbSBkQ29sIC0gVGhlIGRpc3BsYXkgY29sdW1uLiBJcyBuZWVkZWQgaWYgYSBjdXN0b20gY29tcG9uZW50IHdhcyB1c2VkIHRoYXQgaGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgZGlmZmVyZW50bHkuXG4gICAgICogQHRocm93cyBXaGVuIG5vIEVudGl0eUNsYXNzIHdhcyBwcm92aWRlZCwgYXMgYSBuZXcgY2FsbCBpcyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBtZXRhZGF0YS5cbiAgICAgKi9cbiAgICBlZGl0RW50aXR5KGVudGl0eTogRW50aXR5VHlwZSwgZENvbDogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoZENvbC5kaXNhYmxlQ2xpY2sgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHRoaXMuYWxsb3dVcGRhdGUoZW50aXR5KSB8fCB0aGlzLmFsbG93UmVhZChlbnRpdHkpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5lZGl0KG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0RWRpdCA9PSAncGFnZScpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdERlZmF1bHRQYWdlKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVkaXREZWZhdWx0RGlhbG9nKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1cGRhdGluZyB0aGUgcHJvdmlkZWQgZW50aXR5IGlzIGFsbG93ZWQuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdGhhdCB0aGUgdXNlciB3YW50cyB0byBlZGl0LlxuICAgICAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgcHJvdmlkZWQgZW50aXR5IGFuZCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgYWxsb3dVcGRhdGUoZW50aXR5OiBFbnRpdHlUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZShlbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHZpZXdpbmcgdGhlIHByb3ZpZGVkIGVudGl0eSBpcyBhbGxvd2VkLlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZW50aXR5IHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gdmlldy5cbiAgICAgKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHVzZXIgY2FuIHZpZXcgdGhlIHByb3ZpZGVkIGVudGl0eSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGFsbG93UmVhZChlbnRpdHk6IEVudGl0eVR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVkaXREZWZhdWx0UGFnZShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJycsIHRoaXMuZW50aXR5U2VydmljZS5lZGl0QmFzZVJvdXRlLCBlbnRpdHkuaWRdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGVkaXREZWZhdWx0RGlhbG9nKGVudGl0eTogRW50aXR5VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dERpYWxvZ0RhdGE6IEVkaXRFbnRpdHlEYXRhPEVudGl0eVR5cGU+ID0ge1xuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICBhbGxvd1VwZGF0ZTogdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlLFxuICAgICAgICAgICAgYWxsb3dEZWxldGU6IHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSxcbiAgICAgICAgICAgIGVkaXREYXRhOiB0aGlzLmRhdGEuZWRpdERhdGFcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogRWRpdEVudGl0eURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBFZGl0RW50aXR5RGF0YUJ1aWxkZXIoaW5wdXREaWFsb2dEYXRhLCB0aGlzLmdsb2JhbENvbmZpZykuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IHJlczogbnVtYmVyID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIC8vIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgKSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChyZXMgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGE6IEVudGl0eVR5cGVbXSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xuICAgICAgICAgICAgZGF0YVt0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgoKGUpID0+IGVbdGhpcy5lbnRpdHlTZXJ2aWNlLmlkS2V5XSA9PT0gZW50aXR5W3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0pXSA9IGVudGl0eTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEVudGl0eS4gVGhpcyBlaXRoZXIgY2FsbHMgdGhlIGNyZWF0ZS1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKiBAdGhyb3dzIFdoZW4gbm8gRW50aXR5Q2xhc3Mgd2FzIHByb3ZpZGVkLCBhcyBhIG5ldyBjYWxsIGlzIG5lZWRlZCB0byBpbml0aWFsaXplIG1ldGFkYXRhLlxuICAgICAqL1xuICAgIGNyZWF0ZUVudGl0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dDcmVhdGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBcIkVudGl0eUNsYXNzXCIgc3BlY2lmaWVkIGZvciB0aGlzIHRhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbnRpdHk6IEVudGl0eVR5cGUgPSBuZXcgdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKCk7XG4gICAgICAgICAgICBFbnRpdHlVdGlsaXRpZXMuc2V0RGVmYXVsdFZhbHVlcyhlbnRpdHkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5jcmVhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuYmFzZURhdGEuY3JlYXRlKGVudGl0eSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0Q3JlYXRlID09ICdwYWdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdFBhZ2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHREaWFsb2coZW50aXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmVudGl0eVNlcnZpY2UuY3JlYXRlQmFzZVJvdXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZURlZmF1bHREaWFsb2coZW50aXR5OiBFbnRpdHlUeXBlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENyZWF0ZUVudGl0eURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhQnVpbGRlcihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICAgICAgY3JlYXRlRGF0YTogdGhpcy5kYXRhLmNyZWF0ZURhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmdsb2JhbENvbmZpZ1xuICAgICAgICApLmdldFJlc3VsdCgpO1xuICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJ1bnMgdGhlIFRhYmxlQWN0aW9uIGZvciBhbGwgc2VsZWN0ZWQgZW50cmllcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgY29uZmlybWF0aW9uIHdpdGggYW4gYWRkaXRpb25hbCBkaWFsb2cgaWYgY29uZmlndXJlZC5cbiAgICAgKiBAcGFyYW0gYWN0aW9uIC0gVGhlIFRhYmxlQWN0aW9uIHRvIHJ1bi5cbiAgICAgKi9cbiAgICBydW5UYWJsZUFjdGlvbihhY3Rpb246IFRhYmxlQWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZUNvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVxdWlyZUNvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1blRhYmxlQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1blRhYmxlQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1blRhYmxlQWN0aW9uKGFjdGlvbjogVGFibGVBY3Rpb25JbnRlcm5hbDxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICB2b2lkIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBhY3Rpb24uYWN0aW9uKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIFRhYmxlQWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2Ugbm8gZW50cmllcyBoYXZlIGJlZW4gc2VsZWN0ZWQpLlxuICAgICAqIEBwYXJhbSBhY3Rpb24gLSBUaGUgVGFibGVBY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIEFjdGlvbiBjYW4gYmUgdXNlZC5cbiAgICAgKi9cbiAgICB0YWJsZUFjdGlvbkRpc2FibGVkKGFjdGlvbjogVGFibGVBY3Rpb25JbnRlcm5hbDxFbnRpdHlUeXBlPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhYWN0aW9uLmVuYWJsZWQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgdGhlIHNlYXJjaCBpbnB1dCB0byBmaWx0ZXIgdGhlIHRhYmxlIGVudHJpZXMuXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGtleXVwLWV2ZW50IHdoaWNoIGNvbnRhaW5zIHRoZSBzZWFyY2gtc3RyaW5nIG9mIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIGFwcGx5RmlsdGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuXG59IiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL2N5Y2xvbWF0aWMtY29tcGxleGl0eSAtLT5cbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48aDEgY2xhc3M9XCJ0aXRsZVwiPnt7ZGF0YS5iYXNlRGF0YS50aXRsZX19PC9oMT5cblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC02IGNvbC1zbS0xMlwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7ZGF0YS5iYXNlRGF0YS5zZWFyY2hMYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCAoa2V5dXApPVwiYXBwbHlGaWx0ZXIoJGV2ZW50KVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctMl09XCJhbGxvd0NyZWF0ZVwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctNF09XCIhYWxsb3dDcmVhdGVcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiYWxsb3dDcmVhdGVcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTZdPVwiIWFsbG93Q3JlYXRlXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS02XT1cImFsbG93Q3JlYXRlXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhYWxsb3dDcmVhdGVcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhY3Rpb25zLWJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgICB7e2RhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmJhc2VEYXRhLmFsbG93SnNvbkltcG9ydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCJ0YWJsZUFjdGlvbkRpc2FibGVkKGltcG9ydEFjdGlvbilcIiAoY2xpY2spPVwicnVuVGFibGVBY3Rpb24oaW1wb3J0QWN0aW9uKVwiPlxuICAgICAgICAgICAge3tpbXBvcnRBY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cInRhYmxlQWN0aW9uRGlzYWJsZWQoYWN0aW9uKVwiIChjbGljayk9XCJydW5UYWJsZUFjdGlvbihhY3Rpb24pXCI+XG4gICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYWxsb3dDcmVhdGVcIlxuICAgICAgICBbY2xhc3MuY29sLWxnLTJdPVwiZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy00XT1cIiFkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC02XT1cIiFkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLXNtLTZdPVwiZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3JlYXRlLWJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjcmVhdGVFbnRpdHkoKVwiPlxuICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLmNyZWF0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejhcIj5cbiAgICA8bWF0LXRhYmxlIG1hdFNvcnQgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiPlxuICAgICAgICA8IS0tIHNlbGVjdCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG4gICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgU2VsZWN0aW9uVXRpbGl0aWVzLmlzQWxsU2VsZWN0ZWQoc2VsZWN0aW9uLCBkYXRhU291cmNlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFTZWxlY3Rpb25VdGlsaXRpZXMuaXNBbGxTZWxlY3RlZChzZWxlY3Rpb24sIGRhdGFTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBTZWxlY3Rpb25VdGlsaXRpZXMubWFzdGVyVG9nZ2xlKHNlbGVjdGlvbiwgZGF0YVNvdXJjZSkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbnRpdHlcIiBjbGFzcz1cImVudGl0eVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoZW50aXR5KVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUoZW50aXR5KSA6IG51bGxcIj5cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRDb2wgb2YgZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiZENvbC5kaXNwbGF5TmFtZVwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAge3tkQ29sLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVudGl0eVwiIGNsYXNzPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZW5hYmxlZF09XCIhZENvbC5kaXNhYmxlQ2xpY2sgJiYgKGFsbG93VXBkYXRlKGVudGl0eSkgfHwgYWxsb3dSZWFkKGVudGl0eSkpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEVudGl0eShlbnRpdHksIGRDb2wpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZENvbC5Db21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpc3BsYXktY29sdW1uLXZhbHVlIFtlbnRpdHldPVwiZW50aXR5XCIgW0NvbXBvbmVudENsYXNzXT1cImRDb2wuQ29tcG9uZW50XCI+PC9kaXNwbGF5LWNvbHVtbi12YWx1ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRDb2wuQ29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0RGlzcGxheUNvbHVtblZhbHVlKGVudGl0eSwgZENvbCl9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gICAgPC9tYXQtdGFibGU+XG5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgZGF0YS5iYXNlRGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXJcIj5cbiAgICA8L21hdC1zcGlubmVyPlxuXG4gICAgPG1hdC1wYWdpbmF0b3IgW2xlbmd0aF09XCJkYXRhU291cmNlLmZpbHRlcmVkRGF0YS5sZW5ndGhcIiBbcGFnZUluZGV4XT1cIjBcIiBbcGFnZVNpemVdPVwiMTBcIiBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjUsIDUwXVwiPjwvbWF0LXBhZ2luYXRvcj5cbjwvZGl2PiJdfQ==
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxP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QUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFNcEMsTUFBTTtzQkFETCxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0U29ydCwgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgTkdYX0lOVEVSTkFMX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUyB9IGZyb20gJy4uLy4uL2RlZmF1bHQtZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IER5bmFtaWNTdHlsZUNsYXNzRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLXN0eWxlLWNsYXNzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25VdGlsaXRpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvc2VsZWN0aW9uLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIsIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVFbnRpdHlEYXRhSW50ZXJuYWwsIENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyIH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb2x1bW5WYWx1ZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS1jb2x1bW4tdmFsdWUvZGlzcGxheS1jb2x1bW4tdmFsdWUuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRFbnRpdHlEYXRhIH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kYXRhJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGFCdWlsZGVyLCBFZGl0RW50aXR5RGF0YUludGVybmFsIH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS5idWlsZGVyJztcbmltcG9ydCB7IERpc3BsYXlDb2x1bW4sIFRhYmxlRGF0YSB9IGZyb20gJy4vdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBCYXNlVGFibGVBY3Rpb25JbnRlcm5hbCwgVGFibGVBY3Rpb25JbnRlcm5hbCwgVGFibGVEYXRhQnVpbGRlciwgVGFibGVEYXRhSW50ZXJuYWwgfSBmcm9tICcuL3RhYmxlLWRhdGEuYnVpbGRlcic7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZnVsbHkgZnVuY3Rpb25hbCB0YWJsZSBmb3IgZGlzcGxheWluZywgY3JlYXRpbmcsIHVwZGF0aW5nIGFuZCBkZWxldGluZyBlbnRpdGllc1xuICogYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gcGFzc2VkIGluIHRoZSBASW5wdXQgXCJ0YWJsZURhdGFcIi5cbiAqXG4gKiBJdCBvZmZlcnMgYSBsb3Qgb2YgY3VzdG9taXphdGlvbiBvcHRpb25zIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiBcIlRhYmxlRGF0YVwiLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tYXQtZW50aXR5LXRhYmxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgICAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXG4gICAgICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgRGlzcGxheUNvbHVtblZhbHVlQ29tcG9uZW50LFxuICAgICAgICBEeW5hbWljU3R5bGVDbGFzc0RpcmVjdGl2ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5VGFibGVDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eT4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0YWJsZURhdGEhOiBUYWJsZURhdGE8RW50aXR5VHlwZT47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLlxuICAgICAqL1xuICAgIGRhdGEhOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB0YWJsZSBjb250ZW50IGlzIGN1cnJlbnRseSBsb2FkaW5nLlxuICAgICAqL1xuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBlbnRyaWVzIGZvciB0aGUgdGFibGUuXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGUhOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlITogRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogVGhlIHBhZ2luYXRvciBmcm9tIHRoZSBodG1sLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgICAvKipcbiAgICAgKiBUaGUgc29ydCBmcm9tIHRoZSBodG1sLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBzb3J0ITogTWF0U29ydDtcbiAgICAvKipcbiAgICAgKiBUaGUgZmlsdGVyIChzZWFyY2gpIGZyb20gdGhlIGh0bWwuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBmaWx0ZXIhOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbHVtbnMgb2YgdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGRpc3BsYXllZENvbHVtbnMhOiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGUgZGF0YVNvdXJjZS5cbiAgICAgKi9cbiAgICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RW50aXR5VHlwZT4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG4gICAgLyoqXG4gICAgICogVGhlIHNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPih0cnVlLCBbXSk7XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGFyb3VuZCBtYXRlcmlhbCBzZWxlY3Rpb25zIGluc2lkZSBvZiB0YWJsZXMuXG4gICAgICovXG4gICAgU2VsZWN0aW9uVXRpbGl0aWVzOiB0eXBlb2YgU2VsZWN0aW9uVXRpbGl0aWVzID0gU2VsZWN0aW9uVXRpbGl0aWVzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGludGVybmFsIEJhc2VUYWJsZUFjdGlvbi4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKi9cbiAgICBpbXBvcnRBY3Rpb24hOiBCYXNlVGFibGVBY3Rpb25JbnRlcm5hbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBASW5qZWN0KE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YWJsZSBhbmQgdGhlIEVudGl0eVNlcnZpY2UuXG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBUYWJsZURhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLnRhYmxlRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbG93Q3JlYXRlID0gdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW1wb3J0QWN0aW9uID0gbmV3IEJhc2VUYWJsZUFjdGlvbkludGVybmFsKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLnN0YXJ0SW1wb3J0SnNvbigpXG4gICAgICAgIH0sIHRoaXMuZ2xvYmFsQ29uZmlnKTtcblxuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbnRpdHlTZXJ2aWNlID0gaW5qZWN0PEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4+KHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBnaXZlbkRpc3BsYXlDb2x1bW5zOiBzdHJpbmdbXSA9IHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5tYXAoKHYpID0+IHYuZGlzcGxheU5hbWUpO1xuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5maWx0ZXIodEEgPT4gdEEudHlwZSA9PT0gJ211bHRpLXNlbGVjdCcpLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBnaXZlbkRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZW50aXR5OiBFbnRpdHlUeXBlLCBoZWFkZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5maW5kKChkcCkgPT4gZHAuZGlzcGxheU5hbWUgPT09IGhlYWRlcik/LnZhbHVlKGVudGl0eSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyUHJlZGljYXRlID0gKGVudGl0eTogRW50aXR5VHlwZSwgZmlsdGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFN0cjogc3RyaW5nID0gdGhpcy5kYXRhLmJhc2VEYXRhLnNlYXJjaFN0cmluZyhlbnRpdHkpO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkU2VhcmNoU3RyaW5nOiBzdHJpbmcgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEZpbHRlclN0cmluZzogc3RyaW5nID0gZmlsdGVyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkU2VhcmNoU3RyaW5nLmluY2x1ZGVzKGZvcm1hdHRlZEZpbHRlclN0cmluZyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSB0aGlzLmZpbHRlcjtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuXG4gICAgICAgIHRoaXMuZW50aXR5U2VydmljZS5lbnRpdGllc1N1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGVudGl0aWVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGVudGl0aWVzO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLnJlYWQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGNvbHVtbi5cbiAgICAgKiBSdW5zIGluIGVudmlyb25tZW50IGNvbnRleHQgdG8gZW5hYmxlIGluamVjdGlvbi5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0byBnZXQgdGhlIHZhbHVlIGZyb20uXG4gICAgICogQHBhcmFtIGRpc3BsYXlDb2x1bW4gLSBUaGUgZGlzcGxheSBjb2x1bW4gdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgZGlzcGxheSBjb2x1bW4uXG4gICAgICovXG4gICAgZ2V0RGlzcGxheUNvbHVtblZhbHVlKGVudGl0eTogRW50aXR5VHlwZSwgZGlzcGxheUNvbHVtbjogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPik6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Q29sdW1uLnZhbHVlKGVudGl0eSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRJbXBvcnRKc29uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0LnR5cGUgPSAnZmlsZSc7XG4gICAgICAgIGlucHV0LmFjY2VwdCA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICAgICAgaW5wdXQub25jaGFuZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltcG9ydEpzb24oaW5wdXQuZmlsZXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1wb3J0SnNvbihmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmltcG9ydEFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLmNvbmZpcm1EaWFsb2dEYXRhLnRleHQpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgdGhpcy5pbXBvcnRBY3Rpb24uZGlzcGxheU5hbWUpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmVudGl0eVNlcnZpY2UuaW1wb3J0KGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFZGl0cyBhbiBlbnRpdHkuIFRoaXMgZWl0aGVyIGNhbGxzIHRoZSBlZGl0LU1ldGhvZCBwcm92aWRlZCBieSB0aGUgdXNlciBvciB1c2VzIGEgZGVmYXVsdCBlZGl0LWRpYWxvZy5cbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqIEBwYXJhbSBkQ29sIC0gVGhlIGRpc3BsYXkgY29sdW1uLiBJcyBuZWVkZWQgaWYgYSBjdXN0b20gY29tcG9uZW50IHdhcyB1c2VkIHRoYXQgaGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgZGlmZmVyZW50bHkuXG4gICAgICogQHRocm93cyBXaGVuIG5vIEVudGl0eUNsYXNzIHdhcyBwcm92aWRlZCwgYXMgYSBuZXcgY2FsbCBpcyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBtZXRhZGF0YS5cbiAgICAgKi9cbiAgICBlZGl0RW50aXR5KGVudGl0eTogRW50aXR5VHlwZSwgZENvbDogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoZENvbC5kaXNhYmxlQ2xpY2sgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHRoaXMuYWxsb3dVcGRhdGUoZW50aXR5KSB8fCB0aGlzLmFsbG93UmVhZChlbnRpdHkpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5lZGl0KG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0RWRpdCA9PSAncGFnZScpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdERlZmF1bHRQYWdlKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVkaXREZWZhdWx0RGlhbG9nKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1cGRhdGluZyB0aGUgcHJvdmlkZWQgZW50aXR5IGlzIGFsbG93ZWQuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdGhhdCB0aGUgdXNlciB3YW50cyB0byBlZGl0LlxuICAgICAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgcHJvdmlkZWQgZW50aXR5IGFuZCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgYWxsb3dVcGRhdGUoZW50aXR5OiBFbnRpdHlUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZShlbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHZpZXdpbmcgdGhlIHByb3ZpZGVkIGVudGl0eSBpcyBhbGxvd2VkLlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZW50aXR5IHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gdmlldy5cbiAgICAgKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHVzZXIgY2FuIHZpZXcgdGhlIHByb3ZpZGVkIGVudGl0eSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGFsbG93UmVhZChlbnRpdHk6IEVudGl0eVR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVkaXREZWZhdWx0UGFnZShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJycsIHRoaXMuZW50aXR5U2VydmljZS5lZGl0QmFzZVJvdXRlLCBlbnRpdHkuaWRdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGVkaXREZWZhdWx0RGlhbG9nKGVudGl0eTogRW50aXR5VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dERpYWxvZ0RhdGE6IEVkaXRFbnRpdHlEYXRhPEVudGl0eVR5cGU+ID0ge1xuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICBhbGxvd1VwZGF0ZTogdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlLFxuICAgICAgICAgICAgYWxsb3dEZWxldGU6IHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSxcbiAgICAgICAgICAgIGVkaXREYXRhOiB0aGlzLmRhdGEuZWRpdERhdGFcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogRWRpdEVudGl0eURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBFZGl0RW50aXR5RGF0YUJ1aWxkZXIoaW5wdXREaWFsb2dEYXRhLCB0aGlzLmdsb2JhbENvbmZpZykuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IHJlczogbnVtYmVyID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIC8vIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgKSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChyZXMgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGE6IEVudGl0eVR5cGVbXSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xuICAgICAgICAgICAgZGF0YVt0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgoKGUpID0+IGVbdGhpcy5lbnRpdHlTZXJ2aWNlLmlkS2V5XSA9PT0gZW50aXR5W3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0pXSA9IGVudGl0eTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEVudGl0eS4gVGhpcyBlaXRoZXIgY2FsbHMgdGhlIGNyZWF0ZS1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKiBAdGhyb3dzIFdoZW4gbm8gRW50aXR5Q2xhc3Mgd2FzIHByb3ZpZGVkLCBhcyBhIG5ldyBjYWxsIGlzIG5lZWRlZCB0byBpbml0aWFsaXplIG1ldGFkYXRhLlxuICAgICAqL1xuICAgIGNyZWF0ZUVudGl0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dDcmVhdGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBcIkVudGl0eUNsYXNzXCIgc3BlY2lmaWVkIGZvciB0aGlzIHRhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbnRpdHk6IEVudGl0eVR5cGUgPSBuZXcgdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKCk7XG4gICAgICAgICAgICBFbnRpdHlVdGlsaXRpZXMuc2V0RGVmYXVsdFZhbHVlcyhlbnRpdHkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5jcmVhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuYmFzZURhdGEuY3JlYXRlKGVudGl0eSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0Q3JlYXRlID09ICdwYWdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdFBhZ2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHREaWFsb2coZW50aXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmVudGl0eVNlcnZpY2UuY3JlYXRlQmFzZVJvdXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZURlZmF1bHREaWFsb2coZW50aXR5OiBFbnRpdHlUeXBlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENyZWF0ZUVudGl0eURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhQnVpbGRlcihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICAgICAgY3JlYXRlRGF0YTogdGhpcy5kYXRhLmNyZWF0ZURhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmdsb2JhbENvbmZpZ1xuICAgICAgICApLmdldFJlc3VsdCgpO1xuICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJ1bnMgdGhlIFRhYmxlQWN0aW9uIGZvciBhbGwgc2VsZWN0ZWQgZW50cmllcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgY29uZmlybWF0aW9uIHdpdGggYW4gYWRkaXRpb25hbCBkaWFsb2cgaWYgY29uZmlndXJlZC5cbiAgICAgKiBAcGFyYW0gYWN0aW9uIC0gVGhlIFRhYmxlQWN0aW9uIHRvIHJ1bi5cbiAgICAgKi9cbiAgICBydW5UYWJsZUFjdGlvbihhY3Rpb246IFRhYmxlQWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZUNvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVxdWlyZUNvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1blRhYmxlQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1blRhYmxlQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1blRhYmxlQWN0aW9uKGFjdGlvbjogVGFibGVBY3Rpb25JbnRlcm5hbDxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICB2b2lkIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBhY3Rpb24uYWN0aW9uKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIFRhYmxlQWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2Ugbm8gZW50cmllcyBoYXZlIGJlZW4gc2VsZWN0ZWQpLlxuICAgICAqIEBwYXJhbSBhY3Rpb24gLSBUaGUgVGFibGVBY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIEFjdGlvbiBjYW4gYmUgdXNlZC5cbiAgICAgKi9cbiAgICB0YWJsZUFjdGlvbkRpc2FibGVkKGFjdGlvbjogVGFibGVBY3Rpb25JbnRlcm5hbDxFbnRpdHlUeXBlPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhYWN0aW9uLmVuYWJsZWQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgdGhlIHNlYXJjaCBpbnB1dCB0byBmaWx0ZXIgdGhlIHRhYmxlIGVudHJpZXMuXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGtleXVwLWV2ZW50IHdoaWNoIGNvbnRhaW5zIHRoZSBzZWFyY2gtc3RyaW5nIG9mIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIGFwcGx5RmlsdGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuXG59IiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL2N5Y2xvbWF0aWMtY29tcGxleGl0eSAtLT5cbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48aDEgY2xhc3M9XCJ0aXRsZVwiPnt7ZGF0YS5iYXNlRGF0YS50aXRsZX19PC9oMT5cblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNvbC1sZy04IGNvbC1tZC02IGNvbC1zbS0xMlwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7ZGF0YS5iYXNlRGF0YS5zZWFyY2hMYWJlbH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCAoa2V5dXApPVwiYXBwbHlGaWx0ZXIoJGV2ZW50KVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctMl09XCJhbGxvd0NyZWF0ZVwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctNF09XCIhYWxsb3dDcmVhdGVcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiYWxsb3dDcmVhdGVcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTZdPVwiIWFsbG93Q3JlYXRlXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS02XT1cImFsbG93Q3JlYXRlXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhYWxsb3dDcmVhdGVcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhY3Rpb25zLWJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgICB7e2RhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmJhc2VEYXRhLmFsbG93SnNvbkltcG9ydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCJ0YWJsZUFjdGlvbkRpc2FibGVkKGltcG9ydEFjdGlvbilcIiAoY2xpY2spPVwicnVuVGFibGVBY3Rpb24oaW1wb3J0QWN0aW9uKVwiPlxuICAgICAgICAgICAge3tpbXBvcnRBY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGRhdGEuYmFzZURhdGEudGFibGVBY3Rpb25zXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cInRhYmxlQWN0aW9uRGlzYWJsZWQoYWN0aW9uKVwiIChjbGljayk9XCJydW5UYWJsZUFjdGlvbihhY3Rpb24pXCI+XG4gICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYWxsb3dDcmVhdGVcIlxuICAgICAgICBbY2xhc3MuY29sLWxnLTJdPVwiZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy00XT1cIiFkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC02XT1cIiFkYXRhLmJhc2VEYXRhLnRhYmxlQWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLXNtLTZdPVwiZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhZGF0YS5iYXNlRGF0YS50YWJsZUFjdGlvbnMubGVuZ3RoXCJcbiAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3JlYXRlLWJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjcmVhdGVFbnRpdHkoKVwiPlxuICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLmNyZWF0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejhcIj5cbiAgICA8bWF0LXRhYmxlIG1hdFNvcnQgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiPlxuICAgICAgICA8IS0tIHNlbGVjdCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG4gICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgU2VsZWN0aW9uVXRpbGl0aWVzLmlzQWxsU2VsZWN0ZWQoc2VsZWN0aW9uLCBkYXRhU291cmNlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFTZWxlY3Rpb25VdGlsaXRpZXMuaXNBbGxTZWxlY3RlZChzZWxlY3Rpb24sIGRhdGFTb3VyY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBTZWxlY3Rpb25VdGlsaXRpZXMubWFzdGVyVG9nZ2xlKHNlbGVjdGlvbiwgZGF0YVNvdXJjZSkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbnRpdHlcIiBjbGFzcz1cImVudGl0eVwiIFtkeW5hbWljU3R5bGVDbGFzc2VzXT1cImRhdGEuYmFzZURhdGEuZHluYW1pY1Jvd1N0eWxlQ2xhc3Nlc1wiIFtlbnRpdHldPVwiZW50aXR5XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChlbnRpdHkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShlbnRpdHkpIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZENvbCBvZiBkYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zXCIgW21hdENvbHVtbkRlZl09XCJkQ29sLmRpc3BsYXlOYW1lXCI+XG4gICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICAgICAgICB7e2RDb2wuZGlzcGxheU5hbWV9fVxuICAgICAgICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCIgY2xhc3M9XCJlbnRpdHlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5lbmFibGVkXT1cIiFkQ29sLmRpc2FibGVDbGljayAmJiAoYWxsb3dVcGRhdGUoZW50aXR5KSB8fCBhbGxvd1JlYWQoZW50aXR5KSlcIlxuICAgICAgICAgICAgICAgIFtkeW5hbWljU3R5bGVDbGFzc2VzXT1cImRhdGEuYmFzZURhdGEuZHluYW1pY1Jvd1N0eWxlQ2xhc3Nlc1wiIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEVudGl0eShlbnRpdHksIGRDb2wpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZENvbC5Db21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpc3BsYXktY29sdW1uLXZhbHVlIFtlbnRpdHldPVwiZW50aXR5XCIgW0NvbXBvbmVudENsYXNzXT1cImRDb2wuQ29tcG9uZW50XCI+PC9kaXNwbGF5LWNvbHVtbi12YWx1ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRDb2wuQ29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0RGlzcGxheUNvbHVtblZhbHVlKGVudGl0eSwgZENvbCl9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gICAgPC9tYXQtdGFibGU+XG5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgZGF0YS5iYXNlRGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXJcIj5cbiAgICA8L21hdC1zcGlubmVyPlxuXG4gICAgPG1hdC1wYWdpbmF0b3IgW2xlbmd0aF09XCJkYXRhU291cmNlLmZpbHRlcmVkRGF0YS5sZW5ndGhcIiBbcGFnZUluZGV4XT1cIjBcIiBbcGFnZVNpemVdPVwiMTBcIiBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjUsIDUwXVwiPjwvbWF0LXBhZ2luYXRvcj5cbjwvZGl2PiJdfQ==
|