@mtna/web-form-angular 1.0.6-SNAPSHOT.22 → 1.0.6-SNAPSHOT.23
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/bundles/mtna-web-form-angular.umd.js +1466 -644
- package/bundles/mtna-web-form-angular.umd.js.map +1 -1
- package/esm2015/lib/components/form-item-impl/date/date.component.js +6 -29
- package/esm2015/lib/components/form-item-impl/date/date.module.js +2 -5
- package/esm2015/lib/components/form-item-impl/year-quarter/year-quarter.component.js +1 -1
- package/esm2015/lib/components/form-item-injector/form-item-injector.component.js +43 -2
- package/esm2015/lib/components/template-item-impl/date/year-quarter-item/year-quarter-item.component.js +105 -12
- package/esm2015/lib/components/template-item-impl/date/year-quarter-range-item/year-quarter-range-item.component.js +11 -2
- package/esm2015/lib/components/template-item-impl/date-item/date-item.component.js +3 -27
- package/esm2015/lib/components/template-item-impl/date-item/date-item.module.js +2 -5
- package/esm2015/lib/components/template-item-impl/decimal-answer-item/decimal-answer-item.component.js +4 -4
- package/esm2015/lib/components/template-item-impl/decimal-answer-item/decimal-answer-item.module.js +15 -8
- package/esm2015/lib/components/template-item-impl/template-display-viewer/template-display-viewer.component.js +25 -4
- package/esm2015/lib/components/template-item-impl/template-item/template-item.component.js +7 -3
- package/esm2015/lib/components/template-item-impl/template-item-injector/template-item-injector.component.js +49 -4
- package/esm2015/lib/components/template-item-impl/template-section/template-section.component.js +1 -1
- package/esm2015/lib/models/design/design-constants/index.js +2 -0
- package/esm2015/lib/models/design/design-constants/template-design-constants.model.js +54 -0
- package/esm2015/lib/models/design/design-mapper/bulleted-list-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/date-item-template-mapper.js +10 -18
- package/esm2015/lib/models/design/design-mapper/dropdown-item-template-mapper.js +1 -12
- package/esm2015/lib/models/design/design-mapper/file-upload-item-template-mapper.js +4 -8
- package/esm2015/lib/models/design/design-mapper/i18n-text-response-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/mapper-classes.model.js +35 -26
- package/esm2015/lib/models/design/design-mapper/mapping-logic-core.js +23 -5
- package/esm2015/lib/models/design/design-mapper/multiple-choice-item-template-mapper.js +1 -11
- package/esm2015/lib/models/design/design-mapper/numbered-list-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/numeric-response-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/offset-date-range-template-mapper.js +11 -9
- package/esm2015/lib/models/design/design-mapper/option-group-item-mapper.js +27 -10
- package/esm2015/lib/models/design/design-mapper/option-item-mapper.js +4 -3
- package/esm2015/lib/models/design/design-mapper/option-selector-mapper.js +17 -5
- package/esm2015/lib/models/design/design-mapper/repeatable-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/template-item-group-mapper.js +48 -13
- package/esm2015/lib/models/design/design-mapper/template-item-mapper.js +47 -33
- package/esm2015/lib/models/design/design-mapper/template-mapper.js +7 -5
- package/esm2015/lib/models/design/design-mapper/template-section-mapper.js +14 -12
- package/esm2015/lib/models/design/design-mapper/text-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/text-response-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/time-item-template-mapper.js +2 -2
- package/esm2015/lib/models/design/design-mapper/title-item-template-mapper.js +18 -9
- package/esm2015/lib/models/design/design-mapper/year-quarter-range-template-mapper.js +27 -7
- package/esm2015/lib/models/design/design-properties/engagement-property-type.model.js +2 -0
- package/esm2015/lib/models/design/design-properties/enumeration-value-functions/date-format.js +29 -0
- package/esm2015/lib/models/design/design-properties/enumeration-value-functions/index.js +4 -0
- package/esm2015/lib/models/design/design-properties/enumeration-value-functions/layout.js +14 -0
- package/esm2015/lib/models/design/design-properties/enumeration-value-functions/quarter-range.js +20 -0
- package/esm2015/lib/models/design/design-properties/enumerations/date-display-format-enumeration.model.js +38 -0
- package/esm2015/lib/models/design/design-properties/enumerations/index.js +4 -0
- package/esm2015/lib/models/design/design-properties/enumerations/layout-enumeration.model.js +11 -0
- package/esm2015/lib/models/design/design-properties/enumerations/quarter-range-enumeration.model.js +24 -0
- package/esm2015/lib/models/design/design-properties/properties/date-format.model.js +14 -0
- package/esm2015/lib/models/design/design-properties/properties/index.js +4 -0
- package/esm2015/lib/models/design/design-properties/properties/layout.model.js +14 -0
- package/esm2015/lib/models/design/design-properties/properties/quarter-range.model.js +23 -0
- package/esm2015/lib/models/design/index.js +4 -3
- package/esm2015/lib/models/design/potential-designs.model.js +24 -2
- package/esm2015/lib/models/design/unavailable-template-item-name-map.model.js +27 -0
- package/esm2015/lib/models/i18n-constants.model.js +58 -12
- package/esm2015/lib/pipes/get-form-control-error.pipe.js +1 -1
- package/esm2015/lib/pipes/get-i18n-string-value-from-locale.pipe.js +2 -2
- package/esm2015/lib/pipes/instance-of-template-item.pipe.js +3 -3
- package/esm2015/lib/services/api.service.js +58 -28
- package/esm2015/lib/services/ui.service.js +2 -2
- package/esm2015/lib/state/design/template-design.facade.js +124 -45
- package/esm2015/lib/state/form/template-form.effects.js +30 -18
- package/esm2015/lib/utilities/enum-property-handlers-util.js +14 -0
- package/esm2015/lib/utilities/form-option-design-util.js +5 -5
- package/esm2015/lib/utilities/get-design-properties.util.js +8 -0
- package/esm2015/lib/utilities/index.js +7 -1
- package/esm2015/lib/utilities/is-template-util.js +68 -0
- package/esm2015/lib/utilities/item-to-design-base.util.js +25 -0
- package/esm2015/lib/utilities/merge-template-util.js +1 -2
- package/esm2015/lib/utilities/model-map-util.js +27 -0
- package/esm2015/lib/utilities/new-base-designs.util.js +5 -4
- package/esm2015/lib/utilities/serializer-util.js +2 -50
- package/esm2015/lib/utilities/template-design-core-util.js +8 -7
- package/esm2015/lib/utilities/template-design-util.js +7 -74
- package/esm2015/lib/utilities/to-design-util.js +24 -0
- package/esm2015/lib/utilities/validator-functions-util.js +59 -0
- package/fesm2015/mtna-web-form-angular.js +1169 -476
- package/fesm2015/mtna-web-form-angular.js.map +1 -1
- package/lib/components/form-item-impl/date/date.component.d.ts +2 -8
- package/lib/components/form-item-injector/form-item-injector.component.d.ts +1 -0
- package/lib/components/template-item-impl/date/year-quarter-item/year-quarter-item.component.d.ts +20 -2
- package/lib/components/template-item-impl/date/year-quarter-range-item/year-quarter-range-item.component.d.ts +4 -0
- package/lib/components/template-item-impl/date-item/date-item.component.d.ts +1 -8
- package/lib/components/template-item-impl/decimal-answer-item/decimal-answer-item.module.d.ts +7 -5
- package/lib/components/template-item-impl/template-display-viewer/template-display-viewer.component.d.ts +4 -2
- package/lib/components/template-item-impl/template-item/template-item.component.d.ts +1 -0
- package/lib/components/template-item-impl/template-item-injector/template-item-injector.component.d.ts +1 -0
- package/lib/components/template-item-impl/template-section/template-section.component.d.ts +1 -1
- package/lib/models/design/design-constants/index.d.ts +1 -0
- package/lib/models/design/{template-design-constants.model.d.ts → design-constants/template-design-constants.model.d.ts} +8 -2
- package/lib/models/design/design-mapper/dropdown-item-template-mapper.d.ts +0 -1
- package/lib/models/design/design-mapper/mapping-logic-core.d.ts +23 -4
- package/lib/models/design/design-mapper/option-selector-mapper.d.ts +1 -0
- package/lib/models/design/design-mapper/template-item-group-mapper.d.ts +1 -0
- package/lib/models/design/design-mapper/template-item-mapper.d.ts +2 -2
- package/lib/models/design/design-mapper/title-item-template-mapper.d.ts +1 -0
- package/lib/models/design/design-properties/engagement-property-type.model.d.ts +14 -0
- package/lib/models/design/design-properties/enumeration-value-functions/date-format.d.ts +2 -0
- package/lib/models/design/design-properties/enumeration-value-functions/index.d.ts +3 -0
- package/lib/models/design/design-properties/enumeration-value-functions/layout.d.ts +3 -0
- package/lib/models/design/design-properties/enumeration-value-functions/quarter-range.d.ts +2 -0
- package/lib/models/design/{enumerations/date-enumeration.model.d.ts → design-properties/enumerations/date-display-format-enumeration.model.d.ts} +2 -1
- package/lib/models/design/design-properties/enumerations/index.d.ts +3 -0
- package/lib/models/design/design-properties/enumerations/layout-enumeration.model.d.ts +4 -0
- package/lib/models/design/design-properties/enumerations/quarter-range-enumeration.model.d.ts +6 -0
- package/lib/models/design/design-properties/properties/date-format.model.d.ts +2 -0
- package/lib/models/design/design-properties/properties/index.d.ts +3 -0
- package/lib/models/design/design-properties/properties/layout.model.d.ts +2 -0
- package/lib/models/design/design-properties/properties/quarter-range.model.d.ts +3 -0
- package/lib/models/design/index.d.ts +3 -2
- package/lib/models/design/unavailable-template-item-name-map.model.d.ts +1 -0
- package/lib/models/i18n-constants.model.d.ts +56 -10
- package/lib/pipes/get-form-control-error.pipe.d.ts +2 -2
- package/lib/pipes/get-i18n-string-value-from-locale.pipe.d.ts +1 -1
- package/lib/services/api.service.d.ts +52 -18
- package/lib/services/ui.service.d.ts +2 -2
- package/lib/state/design/template-design.facade.d.ts +26 -0
- package/lib/state/form/template-form.effects.d.ts +0 -6
- package/lib/utilities/enum-property-handlers-util.d.ts +4 -0
- package/lib/utilities/form-option-design-util.d.ts +2 -2
- package/lib/utilities/get-design-properties.util.d.ts +3 -0
- package/lib/utilities/index.d.ts +6 -0
- package/lib/utilities/is-template-util.d.ts +5 -0
- package/lib/utilities/item-to-design-base.util.d.ts +5 -0
- package/lib/utilities/model-map-util.d.ts +2 -0
- package/lib/utilities/template-design-core-util.d.ts +4 -4
- package/lib/utilities/template-design-util.d.ts +4 -7
- package/lib/utilities/to-design-util.d.ts +4 -0
- package/lib/utilities/validator-functions-util.d.ts +12 -0
- package/package.json +2 -2
- package/esm2015/lib/models/design/enumerations/date-enumeration.model.js +0 -33
- package/esm2015/lib/models/design/enumerations/index.js +0 -2
- package/esm2015/lib/models/design/template-design-constants.model.js +0 -48
- package/lib/models/design/enumerations/index.d.ts +0 -1
|
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
29
29
|
exports: [MtnaWfGetFormControlErrorPipe],
|
|
30
30
|
}]
|
|
31
31
|
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZvcm0tY29udHJvbC1lcnJvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2ViLWZvcm0tYW5ndWxhci9zcmMvbGliL3BpcGVzL2dldC1mb3JtLWNvbnRyb2wtZXJyb3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVE5RCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLFlBQW9CLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO0lBQUcsQ0FBQztJQUNsRCxTQUFTLENBQUMsS0FBc0MsRUFBRSxJQUErQztRQUMvRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNqRSxDQUFDOzsySEFKVSw2QkFBNkI7eUhBQTdCLDZCQUE2Qjs0RkFBN0IsNkJBQTZCO2tCQUh6QyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSx1QkFBdUI7aUJBQzlCOztBQVlELE1BQU0sT0FBTyxtQ0FBbUM7O2lJQUFuQyxtQ0FBbUM7a0lBQW5DLG1DQUFtQyxpQkFYbkMsNkJBQTZCLGFBQTdCLDZCQUE2QjtrSUFXN0IsbUNBQW1DOzRGQUFuQyxtQ0FBbUM7a0JBSi9DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzdDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtSXRlbUltcGwsIFRlbXBsYXRlSXRlbUltcGwgfSBmcm9tICdAbXRuYS93ZWItZm9ybS10cyc7XG5cbmltcG9ydCB7IE10bmFXZlVJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdtdG5hV2ZHZXRDb250cm9sRXJyb3InLFxufSlcbmV4cG9ydCBjbGFzcyBNdG5hV2ZHZXRGb3JtQ29udHJvbEVycm9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVpU2VydmljZTogTXRuYVdmVUlTZXJ2aWNlKSB7fVxuICB0cmFuc2Zvcm0oZXJyb3I6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0sIGl0ZW0/OiBGb3JtSXRlbUltcGw8dW5rbm93bj4gfCBUZW1wbGF0ZUl0ZW1JbXBsKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMudWlTZXJ2aWNlLmdldEVycm9yKGVycm9yLmtleSwgaXRlbSkgfHwgZXJyb3IudmFsdWU7XG4gIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTXRuYVdmR2V0Rm9ybUNvbnRyb2xFcnJvclBpcGVdLFxuICBleHBvcnRzOiBbTXRuYVdmR2V0Rm9ybUNvbnRyb2xFcnJvclBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBNdG5hV2ZHZXRGb3JtQ29udHJvbEVycm9yUGlwZU1vZHVsZSB7fVxuIl19
|
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export class GetI18nStringValueFromLocalePipe {
|
|
5
5
|
transform(displayLocale, i18nStrings) {
|
|
6
6
|
let stringValue = '';
|
|
7
|
-
if (i18nStrings.length > 0 && isPresent(displayLocale)) {
|
|
7
|
+
if (isPresent(i18nStrings) && i18nStrings.length > 0 && isPresent(displayLocale)) {
|
|
8
8
|
const i18nString = i18nStrings.find((i18nSt) => i18nSt.facetId === displayLocale);
|
|
9
9
|
if (i18nString) {
|
|
10
10
|
stringValue = i18nString.value ? i18nString.value : '';
|
|
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
33
33
|
exports: [GetI18nStringValueFromLocalePipe],
|
|
34
34
|
}]
|
|
35
35
|
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWkxOG4tc3RyaW5nLXZhbHVlLWZyb20tbG9jYWxlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ZWItZm9ybS1hbmd1bGFyL3NyYy9saWIvcGlwZXMvZ2V0LWkxOG4tc3RyaW5nLXZhbHVlLWZyb20tbG9jYWxlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzFDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0MsU0FBUyxDQUFDLGFBQW9ELEVBQUUsV0FBeUQ7UUFDdkgsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQ2xGLElBQUksVUFBVSxFQUFFO2dCQUNkLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDeEQ7U0FDRjtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7OzhIQVZVLGdDQUFnQzs0SEFBaEMsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0M7a0JBSDVDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLDhCQUE4QjtpQkFDckM7O0FBa0JELE1BQU0sT0FBTyxzQ0FBc0M7O29JQUF0QyxzQ0FBc0M7cUlBQXRDLHNDQUFzQyxpQkFqQnRDLGdDQUFnQyxhQUFoQyxnQ0FBZ0M7cUlBaUJoQyxzQ0FBc0M7NEZBQXRDLHNDQUFzQztrQkFKbEQsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE10bmFMb2NhbGVJZHMgfSBmcm9tICdAbXRuYS9jb3JlLWkxOG4tYW5ndWxhcic7XG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXplZFN0cmluZyB9IGZyb20gJ0BtdG5hL2NvcmUtaTE4bi10cyc7XG5pbXBvcnQgeyBpc1ByZXNlbnQgfSBmcm9tICdAbXRuYS9jb3JlLXRzJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZ2V0STE4blN0cmluZ1ZhbHVlRnJvbUxvY2FsZScsXG59KVxuZXhwb3J0IGNsYXNzIEdldEkxOG5TdHJpbmdWYWx1ZUZyb21Mb2NhbGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShkaXNwbGF5TG9jYWxlOiB0eXBlb2YgTXRuYUxvY2FsZUlkcy50eXBlIHwgdW5kZWZpbmVkLCBpMThuU3RyaW5nczogSW50ZXJuYXRpb25hbGl6ZWRTdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGxldCBzdHJpbmdWYWx1ZSA9ICcnO1xuICAgIGlmIChpc1ByZXNlbnQoaTE4blN0cmluZ3MpICYmIGkxOG5TdHJpbmdzLmxlbmd0aCA+IDAgJiYgaXNQcmVzZW50KGRpc3BsYXlMb2NhbGUpKSB7XG4gICAgICBjb25zdCBpMThuU3RyaW5nID0gaTE4blN0cmluZ3MuZmluZCgoaTE4blN0KSA9PiBpMThuU3QuZmFjZXRJZCA9PT0gZGlzcGxheUxvY2FsZSk7XG4gICAgICBpZiAoaTE4blN0cmluZykge1xuICAgICAgICBzdHJpbmdWYWx1ZSA9IGkxOG5TdHJpbmcudmFsdWUgPyBpMThuU3RyaW5nLnZhbHVlIDogJyc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdWYWx1ZTtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtHZXRJMThuU3RyaW5nVmFsdWVGcm9tTG9jYWxlUGlwZV0sXG4gIGV4cG9ydHM6IFtHZXRJMThuU3RyaW5nVmFsdWVGcm9tTG9jYWxlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEdldEkxOG5TdHJpbmdWYWx1ZUZyb21Mb2NhbGVQaXBlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NgModule, Pipe } from '@angular/core';
|
|
2
|
-
import
|
|
2
|
+
import * as IsTemplateUtil from '../utilities/is-template-util';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class MtnaWfInstanceOfTemplateItemPipe {
|
|
5
5
|
transform(something) {
|
|
6
|
-
return
|
|
6
|
+
return IsTemplateUtil.isTemplateItem(something) ? something : undefined;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
MtnaWfInstanceOfTemplateItemPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MtnaWfInstanceOfTemplateItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
26
26
|
exports: [MtnaWfInstanceOfTemplateItemPipe],
|
|
27
27
|
}]
|
|
28
28
|
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2Utb2YtdGVtcGxhdGUtaXRlbS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2ViLWZvcm0tYW5ndWxhci9zcmMvbGliL3BpcGVzL2luc3RhbmNlLW9mLXRlbXBsYXRlLWl0ZW0ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxLQUFLLGNBQWMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxTQUFTLENBQUMsU0FBa0I7UUFDMUIsT0FBTyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMxRSxDQUFDOzs4SEFIVSxnQ0FBZ0M7NEhBQWhDLGdDQUFnQzs0RkFBaEMsZ0NBQWdDO2tCQUg1QyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSx3QkFBd0I7aUJBQy9COztBQVdELE1BQU0sT0FBTyxzQ0FBc0M7O29JQUF0QyxzQ0FBc0M7cUlBQXRDLHNDQUFzQyxpQkFWdEMsZ0NBQWdDLGFBQWhDLGdDQUFnQztxSUFVaEMsc0NBQXNDOzRGQUF0QyxzQ0FBc0M7a0JBSmxELFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsZ0NBQWdDLENBQUM7b0JBQ2hELE9BQU8sRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2lCQUM1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBJc1RlbXBsYXRlVXRpbCBmcm9tICcuLi91dGlsaXRpZXMvaXMtdGVtcGxhdGUtdXRpbCc7XG5pbXBvcnQgeyBUZW1wbGF0ZUl0ZW0gfSBmcm9tICdAbXRuYS93ZWItZm9ybS10cyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2luc3RhbmNlT2ZUZW1wbGF0ZUl0ZW0nLFxufSlcbmV4cG9ydCBjbGFzcyBNdG5hV2ZJbnN0YW5jZU9mVGVtcGxhdGVJdGVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oc29tZXRoaW5nOiB1bmtub3duKTogVGVtcGxhdGVJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gSXNUZW1wbGF0ZVV0aWwuaXNUZW1wbGF0ZUl0ZW0oc29tZXRoaW5nKSA/IHNvbWV0aGluZyA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNdG5hV2ZJbnN0YW5jZU9mVGVtcGxhdGVJdGVtUGlwZV0sXG4gIGV4cG9ydHM6IFtNdG5hV2ZJbnN0YW5jZU9mVGVtcGxhdGVJdGVtUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIE10bmFXZkluc3RhbmNlT2ZUZW1wbGF0ZUl0ZW1QaXBlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -12,13 +12,6 @@ export class MtnaWfApiService extends BaseUrlService {
|
|
|
12
12
|
this.API_URL = `${this.BASE_URL}`;
|
|
13
13
|
this.FORM_URL = `${this.API_URL}/form`;
|
|
14
14
|
this.TEMPLATE_URL = `${this.API_URL}/template`;
|
|
15
|
-
this.NEW_TEMPLATE_URL = `${this.TEMPLATE_URL}/new`;
|
|
16
|
-
this.NEW_SECTION_URL = `${this.TEMPLATE_URL}/section`;
|
|
17
|
-
this.ITEMS_URL = `${this.TEMPLATE_URL}/items`;
|
|
18
|
-
this.ITEM_INSTANCE_URL = `${this.TEMPLATE_URL}/item`;
|
|
19
|
-
this.TEMPLATE_SAVE_URL = `${this.TEMPLATE_URL}/save`;
|
|
20
|
-
this.TEMPLATE_DELETE_URL = `${this.TEMPLATE_URL}/delete`;
|
|
21
|
-
this.ALL_TEMPLATES_URL = `${this.API_URL}/templates`;
|
|
22
15
|
}
|
|
23
16
|
/**
|
|
24
17
|
* Download a web form
|
|
@@ -36,32 +29,69 @@ export class MtnaWfApiService extends BaseUrlService {
|
|
|
36
29
|
getRepeatableItem(templateId, itemTemplateId) {
|
|
37
30
|
return this.http.get(`${this.FORM_URL}/${templateId}/item/${itemTemplateId}`);
|
|
38
31
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return this.http.get(this.NEW_SECTION_URL);
|
|
32
|
+
/**
|
|
33
|
+
* Get all of the user's currently defined {@link Template}s.
|
|
34
|
+
*
|
|
35
|
+
* @return the {@link Template}s that the user has access to.
|
|
36
|
+
*/
|
|
37
|
+
getTemplates() {
|
|
38
|
+
return this.http.get(`${this.TEMPLATE_URL}/list`);
|
|
47
39
|
}
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new Template
|
|
42
|
+
*
|
|
43
|
+
* @return the newly created template
|
|
44
|
+
*/
|
|
45
|
+
createTemplate() {
|
|
46
|
+
return this.http.post(`${this.TEMPLATE_URL}`, undefined);
|
|
50
47
|
}
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Get the specified {@link Template}.
|
|
50
|
+
*
|
|
51
|
+
* @param id the ID of the {@link Template} to retrieve
|
|
52
|
+
* @return the specified template.
|
|
53
|
+
*/
|
|
54
|
+
getTemplate(id) {
|
|
55
|
+
return this.http.get(`${this.TEMPLATE_URL}/${id}`);
|
|
53
56
|
}
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Updates the specified {@link Template} with the values provided in the
|
|
59
|
+
* {@link Template} POJO. This will not update child items, only the properties
|
|
60
|
+
* at the template level.
|
|
61
|
+
*
|
|
62
|
+
* @param id the ID of the {@link Template} to update
|
|
63
|
+
* @param template the {@link Template} POJO to use to update the persisted
|
|
64
|
+
* resource
|
|
65
|
+
* @return the updated {@link Template}
|
|
66
|
+
*/
|
|
67
|
+
updateTemplate(id, template) {
|
|
68
|
+
return this.http.post(`${this.TEMPLATE_URL}/${id}`, template);
|
|
56
69
|
}
|
|
57
|
-
|
|
58
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Deletes the specified {@link Template}
|
|
72
|
+
*
|
|
73
|
+
* @param id the ID of the {@link Template} to delete
|
|
74
|
+
*/
|
|
75
|
+
deleteTemplate(id) {
|
|
76
|
+
return this.http.delete(`${this.TEMPLATE_URL}/${id}`);
|
|
59
77
|
}
|
|
60
|
-
|
|
61
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Creates a new {@link Template} by copying an existing {@link Template}.
|
|
80
|
+
*
|
|
81
|
+
* @param id the ID of the {@link Template} to clone
|
|
82
|
+
* @return the newly cloned {@link Template}
|
|
83
|
+
*/
|
|
84
|
+
copyTemplate(id) {
|
|
85
|
+
return this.http.post(`${this.TEMPLATE_URL}/${id}/copy`, undefined);
|
|
62
86
|
}
|
|
63
|
-
|
|
64
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Gets a {@link Form} instance of the specified {@link Template}.
|
|
89
|
+
*
|
|
90
|
+
* @param id the ID of the {@link Template} to preview
|
|
91
|
+
* @return a form created from the template
|
|
92
|
+
*/
|
|
93
|
+
previewTemplate(id) {
|
|
94
|
+
return this.http.get(`${this.TEMPLATE_URL}/${id}/preview`);
|
|
65
95
|
}
|
|
66
96
|
}
|
|
67
97
|
MtnaWfApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MtnaWfApiService, deps: [{ token: MTNA_API_CONFIG }, { token: i1.HttpClient }, { token: i2.MtnaLogger }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -73,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
73
103
|
type: Inject,
|
|
74
104
|
args: [MTNA_API_CONFIG]
|
|
75
105
|
}] }, { type: i1.HttpClient }, { type: i2.MtnaLogger }]; } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ZWItZm9ybS1hbmd1bGFyL3NyYy9saWIvc2VydmljZXMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQTZCLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFHaEcsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGNBQWM7SUFNbEQsWUFBK0MsU0FBd0IsRUFBWSxJQUFnQixFQUFZLE1BQWtCO1FBQy9ILEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRGMsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUFZLFNBQUksR0FBSixJQUFJLENBQVk7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBTGpJLFlBQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QixhQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxPQUFPLENBQUM7UUFDbEMsaUJBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLFdBQVcsQ0FBQztJQUkxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxJQUFVO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLFVBQWtCLEVBQUUsY0FBc0I7UUFDMUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBd0IsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLFVBQVUsU0FBUyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxFQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILGNBQWMsQ0FBQyxFQUFVLEVBQUUsUUFBa0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxFQUFVO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxFQUFVO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7OEdBakdVLGdCQUFnQixrQkFNUCxlQUFlO2tIQU54QixnQkFBZ0IsY0FESCxNQUFNOzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFPbkIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtLCBGb3JtSXRlbUltcGwsIFRlbXBsYXRlIH0gZnJvbSAnQG10bmEvd2ViLWZvcm0tdHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCYXNlVXJsU2VydmljZSwgTVROQV9BUElfQ09ORklHLCBNdG5hQXBpQ29uZmlnLCBNdG5hTG9nZ2VyIH0gZnJvbSAnQG10bmEvY29yZS1hbmd1bGFyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNdG5hV2ZBcGlTZXJ2aWNlIGV4dGVuZHMgQmFzZVVybFNlcnZpY2Uge1xuICBBUElfVVJMID0gYCR7dGhpcy5CQVNFX1VSTH1gO1xuXG4gIEZPUk1fVVJMID0gYCR7dGhpcy5BUElfVVJMfS9mb3JtYDtcbiAgVEVNUExBVEVfVVJMID0gYCR7dGhpcy5BUElfVVJMfS90ZW1wbGF0ZWA7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChNVE5BX0FQSV9DT05GSUcpIHByb3RlY3RlZCBhcGlDb25maWc6IE10bmFBcGlDb25maWcsIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LCBwcm90ZWN0ZWQgbG9nZ2VyOiBNdG5hTG9nZ2VyKSB7XG4gICAgc3VwZXIoYXBpQ29uZmlnLCBodHRwLCBsb2dnZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkIGEgd2ViIGZvcm1cbiAgICogQHBhcmFtIGZvcm0gdGhlIHdlYiBmb3JtIHBvam8gdG8gZG93bmxvYWRcbiAgICogQHJldHVybnMgRnVsbCBIdHRsUmVwb25zZSB3aXRoIHRoZSBCbG9iIGFzIHRoZSBib2R5XG4gICAqL1xuICBkb3dubG9hZEZvcm0oZm9ybTogRm9ybSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuRk9STV9VUkx9L2Rvd25sb2FkYCwgZm9ybSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdibG9iJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IHJlcGVhdGFibGUgRm9ybUl0ZW1cbiAgICogQHBhcmFtIGZvcm1JbnN0YW5jZUlkIHRlbXBsYXRlIElEIG9mIHRoZSBtdG5hIGZvcm1cbiAgICogQHBhcmFtIGl0ZW1JZCByZXBlYXRhYmxlVGVtcGxhdGVJZCBvZiB0aGUgcmVxdWVzdGluZyBSZXBlYXRhYmxlSXRlbVxuICAgKi9cbiAgZ2V0UmVwZWF0YWJsZUl0ZW0odGVtcGxhdGVJZDogc3RyaW5nLCBpdGVtVGVtcGxhdGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGb3JtSXRlbUltcGw8dW5rbm93bj4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxGb3JtSXRlbUltcGw8dW5rbm93bj4+KGAke3RoaXMuRk9STV9VUkx9LyR7dGVtcGxhdGVJZH0vaXRlbS8ke2l0ZW1UZW1wbGF0ZUlkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgb2YgdGhlIHVzZXIncyBjdXJyZW50bHkgZGVmaW5lZCB7QGxpbmsgVGVtcGxhdGV9cy5cbiAgICpcbiAgICogQHJldHVybiB0aGUge0BsaW5rIFRlbXBsYXRlfXMgdGhhdCB0aGUgdXNlciBoYXMgYWNjZXNzIHRvLlxuICAgKi9cbiAgZ2V0VGVtcGxhdGVzKCk6IE9ic2VydmFibGU8VGVtcGxhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFRlbXBsYXRlW10+KGAke3RoaXMuVEVNUExBVEVfVVJMfS9saXN0YCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBUZW1wbGF0ZVxuICAgKlxuICAgKiBAcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIHRlbXBsYXRlXG4gICAqL1xuICBjcmVhdGVUZW1wbGF0ZSgpOiBPYnNlcnZhYmxlPFRlbXBsYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFRlbXBsYXRlPihgJHt0aGlzLlRFTVBMQVRFX1VSTH1gLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3BlY2lmaWVkIHtAbGluayBUZW1wbGF0ZX0uXG4gICAqXG4gICAqIEBwYXJhbSBpZCB0aGUgSUQgb2YgdGhlIHtAbGluayBUZW1wbGF0ZX0gdG8gcmV0cmlldmVcbiAgICogQHJldHVybiB0aGUgc3BlY2lmaWVkIHRlbXBsYXRlLlxuICAgKi9cbiAgZ2V0VGVtcGxhdGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VGVtcGxhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUZW1wbGF0ZT4oYCR7dGhpcy5URU1QTEFURV9VUkx9LyR7aWR9YCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3BlY2lmaWVkIHtAbGluayBUZW1wbGF0ZX0gd2l0aCB0aGUgdmFsdWVzIHByb3ZpZGVkIGluIHRoZVxuICAgKiB7QGxpbmsgVGVtcGxhdGV9IFBPSk8uIFRoaXMgd2lsbCBub3QgdXBkYXRlIGNoaWxkIGl0ZW1zLCBvbmx5IHRoZSBwcm9wZXJ0aWVzXG4gICAqIGF0IHRoZSB0ZW1wbGF0ZSBsZXZlbC5cbiAgICpcbiAgICogQHBhcmFtIGlkICAgICAgIHRoZSBJRCBvZiB0aGUge0BsaW5rIFRlbXBsYXRlfSB0byB1cGRhdGVcbiAgICogQHBhcmFtIHRlbXBsYXRlIHRoZSB7QGxpbmsgVGVtcGxhdGV9IFBPSk8gdG8gdXNlIHRvIHVwZGF0ZSB0aGUgcGVyc2lzdGVkXG4gICAqICAgICAgICAgICAgICAgICByZXNvdXJjZVxuICAgKiBAcmV0dXJuIHRoZSB1cGRhdGVkIHtAbGluayBUZW1wbGF0ZX1cbiAgICovXG4gIHVwZGF0ZVRlbXBsYXRlKGlkOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZSk6IE9ic2VydmFibGU8VGVtcGxhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VGVtcGxhdGU+KGAke3RoaXMuVEVNUExBVEVfVVJMfS8ke2lkfWAsIHRlbXBsYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSBzcGVjaWZpZWQge0BsaW5rIFRlbXBsYXRlfVxuICAgKlxuICAgKiBAcGFyYW0gaWQgdGhlIElEIG9mIHRoZSB7QGxpbmsgVGVtcGxhdGV9IHRvIGRlbGV0ZVxuICAgKi9cbiAgZGVsZXRlVGVtcGxhdGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuVEVNUExBVEVfVVJMfS8ke2lkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFRlbXBsYXRlfSBieSBjb3B5aW5nIGFuIGV4aXN0aW5nIHtAbGluayBUZW1wbGF0ZX0uXG4gICAqXG4gICAqIEBwYXJhbSBpZCB0aGUgSUQgb2YgdGhlIHtAbGluayBUZW1wbGF0ZX0gdG8gY2xvbmVcbiAgICogQHJldHVybiB0aGUgbmV3bHkgY2xvbmVkIHtAbGluayBUZW1wbGF0ZX1cbiAgICovXG4gIGNvcHlUZW1wbGF0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUZW1wbGF0ZT4oYCR7dGhpcy5URU1QTEFURV9VUkx9LyR7aWR9L2NvcHlgLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSB7QGxpbmsgRm9ybX0gaW5zdGFuY2Ugb2YgdGhlIHNwZWNpZmllZCB7QGxpbmsgVGVtcGxhdGV9LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgdGhlIElEIG9mIHRoZSB7QGxpbmsgVGVtcGxhdGV9IHRvIHByZXZpZXdcbiAgICogQHJldHVybiBhIGZvcm0gY3JlYXRlZCBmcm9tIHRoZSB0ZW1wbGF0ZVxuICAgKi9cbiAgcHJldmlld1RlbXBsYXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZvcm0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxGb3JtPihgJHt0aGlzLlRFTVBMQVRFX1VSTH0vJHtpZH0vcHJldmlld2ApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { isPresent, isType } from '@mtna/core-ts';
|
|
4
|
-
import { isConditionalItem, isOptionGroupItemImpl, isOptionItemImpl } from '@mtna/web-form-ts';
|
|
4
|
+
import { isConditionalItem, isOptionGroupItemImpl, isOptionItemImpl, } from '@mtna/web-form-ts';
|
|
5
5
|
import { BehaviorSubject } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/material/dialog";
|
|
@@ -334,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
334
334
|
type: Inject,
|
|
335
335
|
args: [WEB_FORM_CUSTOM_ERRORS]
|
|
336
336
|
}] }]; } });
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dlYi1mb3JtLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy91aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQTJDLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBbUJ2QyxnREFBZ0Q7QUFDaEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCO0lBQ3RELEtBQUssRUFBRSxTQUFTLENBQUEsK0NBQStDO0lBQy9ELEdBQUcsRUFBRSxDQUFDLElBQW9FLEVBQUUsRUFBRSxDQUM1RSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxTQUFTLENBQUEsa0NBQWtDO1FBQzdDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFFBQVEsQ0FBQztZQUMzQixDQUFDLENBQUMsU0FBUyxDQUFBLGNBQWMsSUFBSSxDQUFDLFFBQVEsS0FBSztZQUMzQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQSxjQUFjLElBQUksQ0FBQyxRQUFRLEVBQUU7SUFDakQsU0FBUyxFQUFFLFNBQVMsQ0FBQSw4Q0FBOEM7SUFDbEUsV0FBVyxFQUFFLElBQUk7SUFDakIsR0FBRyxFQUFFLENBQUMsSUFBb0UsRUFBRSxFQUFFLENBQzVFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLENBQUM7UUFDNUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQSxxQ0FBcUM7UUFDaEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQSxjQUFjLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFFBQVEsQ0FBQztZQUNwRSxDQUFDLENBQUMsU0FBUyxDQUFBLGlCQUFpQixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNDLENBQUMsQ0FBQyxFQUFFO0lBQ1IsU0FBUyxFQUFFLFNBQVMsQ0FBQSw4Q0FBOEM7SUFDbEUsV0FBVyxFQUFFLElBQUk7SUFDakIsUUFBUSxFQUFFLFNBQVMsQ0FBQSxxQ0FBcUM7SUFDeEQsT0FBTyxFQUFFLFNBQVMsQ0FBQSx3REFBd0Q7SUFDMUUsUUFBUSxFQUFFLFNBQVMsQ0FBQSx3Q0FBd0M7SUFDM0QsUUFBUSxFQUFFLFNBQVMsQ0FBQSx5QkFBeUI7SUFDNUMsWUFBWSxFQUFFLDZDQUE2QztJQUMzRCxXQUFXLEVBQUUsU0FBUyxDQUFBLHNDQUFzQztJQUM1RCxrQkFBa0IsRUFBRSxTQUFTLENBQUEsK0NBQStDO0NBQzdFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBZSw2QkFBNkIsQ0FBQyxDQUFDO0FBR3RHLE1BQU0sT0FBTyxlQUFlO0lBVzFCLDhEQUE4RDtJQUM5RCxZQUFvQixNQUFpQixFQUE4QyxNQUFZO1FBQTNFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFYckMseURBQXlEO1FBQ2pELGdCQUFXLEdBQXFELEVBQUUsQ0FBQztRQUMzRSx3Q0FBd0M7UUFDaEMsZUFBVSxHQUFzRCxFQUFFLENBQUM7UUFDM0Usb0RBQW9EO1FBQzVDLGtCQUFhLEdBQXNDLEVBQUUsQ0FBQztRQUM5RCxxRUFBcUU7UUFDN0QscUJBQWdCLEdBQXFFLEVBQUUsQ0FBQztRQUs5Riw4SEFBOEg7UUFDOUgsaUhBQWlIO1FBQ2pILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBc0IsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YseUJBQVksSUFBSSxDQUFDLGFBQWEsRUFBRztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsT0FBZSxFQUFFLElBQTRCO1FBQ3BELHdDQUF3QztRQUN4QyxJQUFJLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDM0IsOENBQThDO1lBQzlDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7Z0JBQy9GLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUMsc0NBQXNDO2FBQ3ZDO2lCQUFNLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7Z0JBQzlGLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzQztTQUNGO1FBQ0QsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzNELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtQkFBbUIsQ0FBQyxHQUF5QjtRQUMzQyxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRTtZQUNwQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFnQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDcEU7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3BDO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsU0FBa0M7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN2RCxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7YUFDM0Y7WUFDRCxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN4RjtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGVBQWUsQ0FBQyxjQUE2QixFQUFFLGVBQThCLEVBQUUsT0FBZ0IsRUFBRSxRQUFnQixFQUFFLEtBQUssR0FBRyxLQUFLO1FBQzlILElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hHLE9BQU87U0FDUjtRQUNELE1BQU0sTUFBTSxHQUFHLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQy9DLEtBQUssTUFBTSxFQUFFLElBQUksT0FBTyxFQUFFO2dCQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0Qyx3Q0FBd0M7Z0JBQ3hDLElBQUksU0FBUyxFQUFFO29CQUNiLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQzVCLE1BQU0sbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNsSCw0REFBNEQ7b0JBQzVELElBQUksbUJBQW1CLEVBQUU7d0JBQ3ZCLElBQUksS0FBSyxFQUFFOzRCQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO3lCQUMvQzt3QkFDRCxvRUFBb0U7d0JBQ3BFLHdEQUF3RDt3QkFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7NEJBQ3RFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUM5RTt3QkFDRCwyQkFBMkI7d0JBQzNCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUM5RDt5QkFBTTt3QkFDTCx3QkFBd0I7d0JBQ3hCLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7cUJBQzNEO2lCQUNGO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0RBQW9ELEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztpQkFDNUY7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHdCQUF3QixDQUFDLFdBQTRCOztRQUMzRCxNQUFNLFFBQVEsR0FBbUMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLENBQUEsTUFBQSxXQUFXLENBQUMsU0FBUywwQ0FBRSxPQUFPLEtBQUksRUFBRSxDQUFDO1FBRXBELEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDaEUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ2pFO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyw4REFBOEQsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNuRjtTQUNGO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQjtRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssb0JBQW9CLENBQUMsVUFBbUMsRUFBRSxTQUFpQjs7UUFDakYsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUM3QixpRkFBaUY7UUFDakYsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsVUFBVSxDQUFDLE9BQU8sMENBQUUsS0FBSyxDQUFBLENBQUM7U0FDNUU7YUFBTSxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQUEsTUFBQSxVQUFVLENBQUMsT0FBTywwQ0FBRSxLQUFLLG1DQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QiwrRUFBK0U7Z0JBQy9FLGdFQUFnRTtnQkFDaEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9ILE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlDO2lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BELDhGQUE4RjtnQkFDOUYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQzthQUN6RztTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyx1QkFBdUIsQ0FBQyxTQUFrQyxFQUFFLE9BQWdCLEVBQUUsUUFBZ0I7O1FBQ3BHLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDNUIsTUFBTSxRQUFRLHFCQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUUsQ0FBQztRQUMvRCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxPQUFPLEVBQUU7WUFDWCxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQzlCLFNBQVM7Z0JBQ1AsaUJBQWlCLENBQUMsSUFBSSxDQUFDO29CQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7b0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pGO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUksTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxXQUFXLENBQUEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxRztRQUNELHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3hDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDM0Q7UUFDRCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxTQUFrQyxFQUFFLE9BQWdCOztRQUM5RSxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUEsTUFBQSxTQUFTLENBQUMsT0FBTywwQ0FBRSxPQUFPLENBQUEsRUFBRTtZQUMxQyx5Q0FBeUM7WUFDekMsSUFBSSxTQUFTLENBQUMsT0FBTyxZQUFZLFNBQVMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLE1BQUEsU0FBUyxDQUFDLE9BQU8sMENBQUUsTUFBTSxFQUFFLENBQUM7YUFDN0I7U0FDRjthQUFNLElBQUksQ0FBQyxPQUFPLEtBQUksTUFBQSxTQUFTLENBQUMsT0FBTywwQ0FBRSxPQUFPLENBQUEsRUFBRTtZQUNqRCwwQ0FBMEM7WUFDMUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssOEJBQThCLENBQUMsU0FBa0MsRUFBRSxPQUFnQjtRQUN6RixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyRSxTQUFTLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHlCQUF5QixDQUFDLElBQTZCO1FBQzdELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFvQixDQUFDO1FBRXhDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxNQUFNLFFBQVEsSUFBSSxHQUFHLEVBQUU7Z0JBQzFCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRTtvQkFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDM0M7aUJBQ0Y7YUFDRjtTQUNGO2FBQU0sSUFBSSxNQUFNLENBQXFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25HLCtCQUErQjtZQUMvQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQzNDO2FBQ0Y7U0FDRjtRQUNELEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssV0FBVyxDQUFDLElBQWdDO1FBQ2xELE1BQU0sdUJBQXVCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzVCLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUN4RDthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7OzZHQXBTVSxlQUFlLDJDQVlpQyxzQkFBc0I7aUhBWnRFLGVBQWUsY0FERixNQUFNOzRGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBYVEsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGlzUHJlc2VudCwgaXNUeXBlIH0gZnJvbSAnQG10bmEvY29yZS10cyc7XG5pbXBvcnQgeyBBbm5vdGF0YWJsZU51bWJlck1hcCB9IGZyb20gJ0BtdG5hL3Bvam8tc29jaWFsLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxJdGVtLCBGb3JtSXRlbSwgRm9ybUl0ZW1JbXBsLCBpc0NvbmRpdGlvbmFsSXRlbSwgaXNPcHRpb25Hcm91cEl0ZW1JbXBsLCBpc09wdGlvbkl0ZW1JbXBsIH0gZnJvbSAnQG10bmEvd2ViLWZvcm0tdHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE10bmFXZkZvcm1JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtLWl0ZW0vZm9ybS1pdGVtLmNvbXBvbmVudCc7XG5cbi8qKiBSZWdpc3RyeSBvZiBjdXN0b20gZXJyb3IgbWVzc2FnZXMgZm9yIGEgc3BlY2lmaWMgZm9ybSBpdGVtLiBBIGN1c3RvbSBlcnJvciBjYW4gYWxzb1xuICogYmUgYSBmdW5jdGlvbiByZXR1cm5pbmcgYSBzdHJpbmcuIFRoZSBGb3JtSXRlbSBvYmplY3QgaXMgcGFzc2VkIHRvIGFueSBWYWxpZGF0aW9uRXJyb3JzXG4gKiB0aGF0IGFyZSBmdW5jdGlvbnMsIHNvIGl0ZW0gc3BlY2lmaWMgaW5mb3JtYXRpb24gY2FuIGJlIHByb3ZpZGVkLlxuICogQGV4YW1wbGUge1xuICogbWF4OiBgVGhpcyBmaWVsZCdzIHZhbHVlIG11c3QgYmUgbGVzcy5gLFxuICogbWluOiAoaXRlbTogRm9ybUl0ZW1JbXBsPGFueT4pID0+IGluc3RhbmNlb2ZXaG9sZU51bWJlckl0ZW0oaXRlbSlcbiAqID8gYFRoaXMgZmllbGQncyB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAke2l0ZW0ubWluVmFsdWV9LmBcbiAqIDogYFRoaXMgZmllbGQncyB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIuYFxuICogfVxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6aW50ZXJmYWNlLW92ZXItdHlwZS1saXRlcmFsXG5leHBvcnQgdHlwZSBDdXN0b21FcnJvcnMgPSB7XG4gIFtpZDogc3RyaW5nXTogVmFsaWRhdGlvbkVycm9ycztcbn07XG5cbi8qKiBMaXN0IG9mIGRlZmF1bHQgZXJyb3IgbWVzc2FnZXMgdG8gZGlzcGxheSAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTUVTU0FHRVM6IFZhbGlkYXRpb25FcnJvcnMgPSB7XG4gIGVtYWlsOiAkbG9jYWxpemVgVGhpcyBmaWVsZCBtdXN0IGluY2x1ZGUgYSB2YWxpZCBlbWFpbCBmb3JtYXQuYCxcbiAgbWF4OiAoaXRlbT86IEZvcm1JdGVtSW1wbDxudW1iZXI+ICYgeyBtYXhWYWx1ZTogbnVtYmVyOyBtaW5WYWx1ZTogbnVtYmVyIH0pID0+XG4gICAgIWlzUHJlc2VudChpdGVtKSB8fCAhaXNQcmVzZW50KGl0ZW0/Lm1heFZhbHVlKVxuICAgICAgPyAkbG9jYWxpemVgVGhpcyBmaWVsZCdzIHZhbHVlIG11c3QgYmUgbGVzcy5gXG4gICAgICA6IGlzUHJlc2VudChpdGVtPy5taW5WYWx1ZSlcbiAgICAgID8gJGxvY2FsaXplYE1pbiB2YWx1ZTogJHtpdGVtLm1pblZhbHVlfSAtIGBcbiAgICAgIDogJycgKyAkbG9jYWxpemVgTWF4IHZhbHVlOiAke2l0ZW0ubWF4VmFsdWV9YCxcbiAgbWF4bGVuZ3RoOiAkbG9jYWxpemVgVGhpcyBmaWVsZCBoYXMgZXhjZWVkZWQgdGhlIGFsbG93ZWQgbWF4aW11bS5gLFxuICBtYXhTZWxlY3RlZDogbnVsbCxcbiAgbWluOiAoaXRlbT86IEZvcm1JdGVtSW1wbDxudW1iZXI+ICYgeyBtYXhWYWx1ZTogbnVtYmVyOyBtaW5WYWx1ZTogbnVtYmVyIH0pID0+XG4gICAgIWlzUHJlc2VudChpdGVtKSB8fCAhaXNQcmVzZW50KGl0ZW0/Lm1pblZhbHVlKVxuICAgICAgPyAkbG9jYWxpemVgVGhpcyBmaWVsZCdzIHZhbHVlIG11c3QgYmUgZ3JlYXRlci5gXG4gICAgICA6ICRsb2NhbGl6ZWBNaW4gVmFsdWU6ICR7aXRlbS5taW5WYWx1ZX1gICsgaXNQcmVzZW50KGl0ZW0/Lm1heFZhbHVlKVxuICAgICAgPyAkbG9jYWxpemVgIC0gTWF4IFZhbHVlOiAke2l0ZW0ubWF4VmFsdWV9YFxuICAgICAgOiAnJyxcbiAgbWlubGVuZ3RoOiAkbG9jYWxpemVgVGhpcyBmaWVsZCBoYXMgbm90IG1ldCB0aGUgcmVxdWlyZWQgbWluaW11bS5gLFxuICBtaW5TZWxlY3RlZDogbnVsbCxcbiAgbm9uRGlnaXQ6ICRsb2NhbGl6ZWBUaGlzIGZpZWxkJ3MgdmFsdWUgbXVzdCBiZSBudW1lcmljLmAsXG4gIHBhdHRlcm46ICRsb2NhbGl6ZWBUaGlzIGZpZWxkJ3MgaW5wdXQgZG9lcyBub3QgbWVldCB0aGUgYWNjZXB0ZWQgcGF0dGVybi5gLFxuICBwb3NpdGl2ZTogJGxvY2FsaXplYFRoaXMgZmllbGQncyB2YWx1ZSBjYW5ub3QgYmUgbmVnYXRpdmUuYCxcbiAgcmVxdWlyZWQ6ICRsb2NhbGl6ZWBUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLmAsXG4gIHJlcXVpcmVkVHJ1ZTogYCRsb2NhbGl6ZVRoaXMgZmllbGQncyB2YWx1ZSBtdXN0IGJlICd0cnVlJy5gLFxuICB3aG9sZU51bWJlcjogJGxvY2FsaXplYFRoaXMgZmllbGQgY2Fubm90IGNvbnRhaW4gYSBkZWNpbWFsLmAsXG4gIG1hdERhdGVwaWNrZXJQYXJzZTogJGxvY2FsaXplYFRoaXMgZmllbGQncyB2YWx1ZSBpcyBub3QgYW4gYWNjZXB0ZWQgZm9ybWF0LmAsXG59O1xuXG5leHBvcnQgY29uc3QgV0VCX0ZPUk1fQ1VTVE9NX0VSUk9SUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvcnM+KCdtdG5hV2ViRm9ybUN1c3RvbUZvcm1FcnJvcnMnKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNdG5hV2ZVSVNlcnZpY2Uge1xuICAvKiogTWFwIG9mIGFubm90YXRpb24gY291bnRzIGZvciBlYWNoIGFubm90YXRhYmxlIGl0ZW0gKi9cbiAgcHJpdmF0ZSBhbm5vdGF0aW9uczogeyBbaWQ6IHN0cmluZ106IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPiB9ID0ge307XG4gIC8qKiBNYXAgb2YgY29tcG9uZW50cyBpbiB0aGUgTXRuYUZvcm0gKi9cbiAgcHJpdmF0ZSBjb21wb25lbnRzOiB7IFtpbnN0YW5jZUlkOiBzdHJpbmddOiBNdG5hV2ZGb3JtSXRlbUNvbXBvbmVudCB9ID0ge307XG4gIC8qKiBNYXAgb2YgaXRlbS5kaXNhYmxlZCB2YWx1ZXMgdGhhdCBoYXZlIGNoYW5nZWQgKi9cbiAgcHJpdmF0ZSBkaXNhYmxlZFN0YXRlOiB7IFtpbnN0YW5jZUlkOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgLyoqIE1hcCBvZiB0b2dnbGVyIElEJ3MgZm9yIGNvbXBvbmVudHMgdGhhdCBoYXZlIG11bHRpcGxlIHRvZ2dsZXJzICovXG4gIHByaXZhdGUgbXVsdGlwbGVFbmFibGVyczogeyBbaW5zdGFuY2VJZDogc3RyaW5nXTogeyBbdG9nZ2xlcklkOiBzdHJpbmddOiBzdHJpbmcgfSB8IG51bGwgfSA9IHt9O1xuICBwcml2YXRlIGVycm9yczogQ3VzdG9tRXJyb3JzO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csIEBPcHRpb25hbCgpIEBJbmplY3QoV0VCX0ZPUk1fQ1VTVE9NX0VSUk9SUykgZXJyb3JzPzogYW55KSB7XG4gICAgLy8gV29ya2Fyb3VuZCBmb3I6IE1ldGFkYXRhIGNvbGxlY3RlZCBjb250YWlucyBhbiBlcnJvciB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgYXQgcnVudGltZTogQ291bGQgbm90IHJlc29sdmUgdHlwZSBDdXN0b21FcnJvcnMuXG4gICAgLy8gc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5NTEzMzU5L2NvdWxkLW5vdC1yZXNvbHZlLXR5cGUtZG9jdW1lbnQtaW4tYW5ndWxhcjUvNTM3MTU2NDIjNTM3MTU2NDJcbiAgICB0aGlzLmVycm9ycyA9IGVycm9ycyBhcyBDdXN0b21FcnJvcnM7XG4gIH1cblxuICBnZXREaXNhYmxlZFN0YXRlcygpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLmRpc2FibGVkU3RhdGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGVycm9yIGlkXG4gICAqIEBwYXJhbSBlcnJvcklkIElkIG9mIHRoZSBlcnJvciwgdG8gZmluZCB0aGUgYXNzb2NpYXRlZCBlcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSBpdGVtIEZvcm1JdGVtIHRvIHBhc3MgdG8gVmFsaWRhdGlvbkVycm9ycyB0aGF0IGFyZSBmdW5jdGlvbnMuIEZvciBpbnN0YW5jZSxcbiAgICogdGhpcyBpcyB1c2VmdWwgZm9yICdtaW4nICYgJ21heCcgdmFsdWUgbGltaXRzIHRvIGRpc3BsYXkgbW9yZSBoZWxwZnVsIG1lc3NhZ2VzXG4gICAqL1xuICBnZXRFcnJvcihlcnJvcklkOiBzdHJpbmcsIGl0ZW0/OiBGb3JtSXRlbUltcGw8dW5rbm93bj4pOiBzdHJpbmcge1xuICAgIC8vIGRlZmF1bHQgd2hlbiBubyBjdXN0b20gbWVzc2FnZSBleGlzdHNcbiAgICBsZXQgZXJyb3IgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTW2Vycm9ySWRdO1xuICAgIGlmICghIXRoaXMuZXJyb3JzICYmICEhaXRlbSkge1xuICAgICAgLy8gY2hlY2sgZm9yIGluc3RhbmNlIHNwZWNpZmljLCB2aWEgaW5zdGFuY2VJZFxuICAgICAgaWYgKGlzUHJlc2VudCh0aGlzLmVycm9yc1tpdGVtLmluc3RhbmNlSWRdKSAmJiBpc1ByZXNlbnQodGhpcy5lcnJvcnNbaXRlbS5pbnN0YW5jZUlkXVtlcnJvcklkXSkpIHtcbiAgICAgICAgZXJyb3IgPSB0aGlzLmVycm9yc1tpdGVtLmluc3RhbmNlSWRdW2Vycm9ySWRdO1xuICAgICAgICAvLyBjaGVjayBmb3IgaXRlbSBzcGVjaWZpYywgdmlhIGl0ZW1JZFxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQodGhpcy5lcnJvcnNbaXRlbS5pdGVtSWRdKSAmJiBpc1ByZXNlbnQodGhpcy5lcnJvcnNbaXRlbS5pdGVtSWRdW2Vycm9ySWRdKSkge1xuICAgICAgICBlcnJvciA9IHRoaXMuZXJyb3JzW2l0ZW0uaXRlbUlkXVtlcnJvcklkXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gJ2Z1bmN0aW9uJyA/IGVycm9yKGl0ZW0pIDogZXJyb3I7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcmVnaXN0ZXJlZCBjb21wb25lbnQgYnkgaW50YW5jZSBpZC5cbiAgICogQHBhcmFtIGlkIHRoZSBpbnN0YW5jZUlkXG4gICAqIEByZXR1cm5zIHRoZSB7QGxpbmsgRm9ybUl0ZW1Db21wb25lbnR9IHRoYXQgcmVwcmVzZW50cyB0aGF0IElEIG9yIHVuZGVmaW5lZCBpZiBub3QgcmVnaXN0ZXJlZC5cbiAgICovXG4gIGdldEl0ZW0oaWQ6IHN0cmluZyk6IE10bmFXZkZvcm1JdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRzW2lkXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbml0aWFsIG1hcCBvZiBhbm5vdGF0aW9uIGNvdW50cywgYW5kL29yIHB1c2hlcyB0aGUgbmV3IGNvdW50IG9udG8gdGhlIGNvbXBvbmVudCBvYnNlcnZhYmxlIHN0cmVhbVxuICAgKiBAcGFyYW0gbWFwIEFubm90YXRhYmxlTnVtYmVyTWFwIG9mIGNvdW50cyBtYXBwZWQgdG8gdGhlaXIgYW5ub3RhdGFibGVJZHNcbiAgICovXG4gIHJlZ2lzdGVyQW5ub3RhdGlvbnMobWFwOiBBbm5vdGF0YWJsZU51bWJlck1hcCkge1xuICAgIGZvciAoY29uc3QgaWQgaW4gbWFwKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwgaWQpKSB7XG4gICAgICAgIGlmICghdGhpcy5hbm5vdGF0aW9uc1tpZF0pIHtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25zW2lkXSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obWFwW2lkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hbm5vdGF0aW9uc1tpZF0ubmV4dChtYXBbaWRdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgY29tcG9uZW50IHRvIGl0cyBpdGVtcyBpbnN0YW5jZUlkLlxuICAgKiBAcGFyYW0gY29tcG9uZW50IGNvbXBvbmVudCBjYWxsaW5nIHRoaXMgbWV0aG9kLCBpLmUuICd0aGlzJ1xuICAgKi9cbiAgcmVnaXN0ZXJTZWxmKGNvbXBvbmVudDogTXRuYVdmRm9ybUl0ZW1Db21wb25lbnQpIHtcbiAgICB0aGlzLmNvbXBvbmVudHNbY29tcG9uZW50Lml0ZW0uaW5zdGFuY2VJZF0gPSBjb21wb25lbnQ7XG4gICAgaWYgKCEhY29tcG9uZW50Lml0ZW0uYW5ub3RhdGFibGVJZCAmJiBjb21wb25lbnQuaXRlbS5hbm5vdGF0aW9uRW5hYmxlZCkge1xuICAgICAgaWYgKCF0aGlzLmFubm90YXRpb25zW2NvbXBvbmVudC5pdGVtLmFubm90YXRhYmxlSWRdKSB7XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbnNbY29tcG9uZW50Lml0ZW0uYW5ub3RhdGFibGVJZF0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICAgICAgfVxuICAgICAgY29tcG9uZW50LmFubm90YXRpb25zJCA9IHRoaXMuYW5ub3RhdGlvbnNbY29tcG9uZW50Lml0ZW0uYW5ub3RhdGFibGVJZF0uYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYSBGb3JtSXRlbSdzIHZpc2libGl0eSBhbmQgZW5hYmxlL2Rpc2FibGUgc3RhdGVcbiAgICpcbiAgICogQHBhcmFtIGVuYWJsZWRJdGVtSWRzIGFycmF5IG9mIGNvbXBvbmVudCBJRHMgZm9yIGVuYWJsZWQgaXRlbXMuXG4gICAqIEBwYXJhbSBkaXNhYmxlZEl0ZW1JZHMgYXJyYXkgb2YgY29tcG9uZW50IElEcyBmb3IgZGlzYWJsZWQgaXRlbXMuXG4gICAqIEBwYXJhbSBlbmFibGVkIFdoZXRoZXIgdGhlIGVuYWJsZWRJdGVtSWRzIGFyZSBlbmFibGVkLlxuICAgKiBAcGFyYW0gY2FsbGVySWQgaW5zdGFuY2VJZCBvZiB0aGUgaXRlbSBpbnZva2luZyB0aGlzIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSByZXNldCBXaGV0aGVyIHRvIHJlc2V0IHRoZSBtdWx0aXBsZSBlbmFibGVyIG1hcCBvZiB0aGUgdG9nZ2xlZCBpdGVtXG4gICAqL1xuICB0b2dnbGVGb3JtSXRlbXMoZW5hYmxlZEl0ZW1JZHM6IEFycmF5PHN0cmluZz4sIGRpc2FibGVkSXRlbUlkczogQXJyYXk8c3RyaW5nPiwgZW5hYmxlZDogYm9vbGVhbiwgY2FsbGVySWQ6IHN0cmluZywgcmVzZXQgPSBmYWxzZSkge1xuICAgIGlmICgoIWVuYWJsZWRJdGVtSWRzIHx8ICFlbmFibGVkSXRlbUlkcy5sZW5ndGgpICYmICghZGlzYWJsZWRJdGVtSWRzIHx8ICFkaXNhYmxlZEl0ZW1JZHMubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhbGxJZHMgPSBbZW5hYmxlZEl0ZW1JZHMsIGRpc2FibGVkSXRlbUlkc107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGl0ZW1JZHMgPSBhbGxJZHNbaV07XG4gICAgICBjb25zdCBpc0VuYWJsZWQgPSBpID09PSAwID8gZW5hYmxlZCA6ICFlbmFibGVkO1xuICAgICAgZm9yIChjb25zdCBpZCBvZiBpdGVtSWRzKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50c1tpZF07XG4gICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyByZWdpc3RlcmVkLCB0b2dnbGUgaXRcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBjb21wb25lbnQuaXRlbTtcbiAgICAgICAgICBjb25zdCBoYXNNdWx0aXBsZUVuYWJsZXJzID0gaXNDb25kaXRpb25hbEl0ZW0oaXRlbSkgJiYgaXRlbS5jb25kaXRpb24gPyBpdGVtLmNvbmRpdGlvbi5pdGVtSWRzLmxlbmd0aCA+IDEgOiBmYWxzZTtcbiAgICAgICAgICAvLyBJZiBpdGVtIGhhcyBtb3JlIHRoYW4gMSBlbmFibGVyLCBoYW5kbGUgbXVsdGlwbGUgZW5hYmxlcnNcbiAgICAgICAgICBpZiAoaGFzTXVsdGlwbGVFbmFibGVycykge1xuICAgICAgICAgICAgaWYgKHJlc2V0KSB7XG4gICAgICAgICAgICAgIHRoaXMubXVsdGlwbGVFbmFibGVyc1tpdGVtLmluc3RhbmNlSWRdID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIGEgbWFwIGhhcyBub3QgYmVlbiByZWdpc3RlcmVkLCB0aGVuIGJ1aWxkIHVwIGEgbWFwIHRvIHJlZ2lzdGVyXG4gICAgICAgICAgICAvLyBTaG91bGQgb25seSBoYXBwZW4gdGhlIGZpcnN0IHRpbWUgYW4gaXRlbSBpcyB0b2dnbGVkLlxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlRW5hYmxlcnNbaXRlbS5pbnN0YW5jZUlkXSAmJiBpc0NvbmRpdGlvbmFsSXRlbShpdGVtKSkge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpcGxlRW5hYmxlcnNbaXRlbS5pbnN0YW5jZUlkXSA9IHRoaXMuX3JlZ2lzdGVyQ3VycmVudEVuYWJsZXJzKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIE11bHRpcGxlIEVuYWJsZXJzXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVNdWx0aXBsZUVuYWJsZXJzKGNvbXBvbmVudCwgaXNFbmFibGVkLCBjYWxsZXJJZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vdCBtdWx0aXBsZSBlbmFibGVyc1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzYWJsZWRTdGF0ZUFuZENvbnRyb2woY29tcG9uZW50LCBpc0VuYWJsZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdG9nZ2xlRm9ybUl0ZW1zXSBjb21wb25lbnQgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZCcsIGlkLCBlbmFibGVkLCBjYWxsZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIG1hcCBvZiBhbGwgSURzIGN1cnJlbnRseSBpbmZsdWVuY2luZyBhbiBpdGVtLlxuICAgKiBAcGFyYW0gdG9nZ2xlZEl0ZW0gaXRlbSBiZWluZyB0b2dnbGVkXG4gICAqL1xuICBwcml2YXRlIF9yZWdpc3RlckN1cnJlbnRFbmFibGVycyh0b2dnbGVkSXRlbTogQ29uZGl0aW9uYWxJdGVtKTogeyBbY2FsbGVySWQ6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICBjb25zdCBlbmFibGVyczogeyBbY2FsbGVySWQ6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgY29uc3QgYWxsSWRzID0gdG9nZ2xlZEl0ZW0uY29uZGl0aW9uPy5pdGVtSWRzIHx8IFtdO1xuXG4gICAgZm9yIChjb25zdCBpZCBvZiBhbGxJZHMpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50c1tpZF07XG4gICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0N1cnJlbnRseVRvZ2dsaW5nKGNvbXBvbmVudCwgdG9nZ2xlZEl0ZW0uaW5zdGFuY2VJZCkpIHtcbiAgICAgICAgICBlbmFibGVyc1tjb21wb25lbnQuaXRlbS5pbnN0YW5jZUlkXSA9IGNvbXBvbmVudC5pdGVtLmluc3RhbmNlSWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tyZWdpc3RlckN1cnJlbnRFbmFibGVyc10gY29tcG9uZW50IGhhcyBub3QgYmVlbiByZWdpc3RlcmVkLicsIGlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW5hYmxlcnM7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBtYXAgb2YgY29tcG9uZW50cy4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBmb3JtIHdoZW5cbiAgICogaXQgaXMgZGVzdHJveWVkLlxuICAgKi9cbiAgcmVzZXRDb21wb25lbnRNYXAoKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucyA9IHt9O1xuICAgIHRoaXMuY29tcG9uZW50cyA9IHt9O1xuICAgIHRoaXMuZGlzYWJsZWRTdGF0ZSA9IHt9O1xuICAgIHRoaXMubXVsdGlwbGVFbmFibGVycyA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYW4gaW5mbHVlbmNlciBpcyBjdXJyZW50bHkgdG9nZ2xpbmcgdGhlIHNwZWNpZmllZCB0b2dnbGVkSXRlbUlkLlxuICAgKiBAcGFyYW0gaW5mbHVlbmNlciBJdGVtIHRvIGNoZWNrIHdoZXRoZXIgaXQncyBjdXJyZW50bHkgaW5mbHVlbmNpbmcgdGhlIHRvZ2dsZWRJdGVtSWRcbiAgICogQHBhcmFtIHRvZ2dsZWRJZCBJbnN0YW5jZUlkIG9mIHRoZSBpdGVtIGJlaW5nIHRvZ2dsZWRcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgaW5mbHVlbmNlciBpcyBjdXJyZW50bHkgdG9nZ2xpbmcgdGhlIHRvZ2dsZWQgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBfaXNDdXJyZW50bHlUb2dnbGluZyhpbmZsdWVuY2VyOiBNdG5hV2ZGb3JtSXRlbUNvbXBvbmVudCwgdG9nZ2xlZElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBpdGVtID0gaW5mbHVlbmNlci5pdGVtO1xuICAgIC8vIEl0ZW0gaGFzIHNpbmdsZSBvcHRpb24gcHJvcGVydHksIHNvIGNoZWNrIGlmIHNlbGVjdGVkLCBvciBpdGVtLnZhbHVlIGlzICd0cnVlJ1xuICAgIGlmIChpc09wdGlvbkl0ZW1JbXBsKGl0ZW0pKSB7XG4gICAgICByZXR1cm4gaXRlbS5vcHRpb24uc2VsZWN0ZWQgfHwgISFpdGVtLnZhbHVlIHx8ICEhaW5mbHVlbmNlci5jb250cm9sPy52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlzT3B0aW9uR3JvdXBJdGVtSW1wbChpdGVtKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBpbmZsdWVuY2VyLmNvbnRyb2w/LnZhbHVlID8/IGl0ZW0udmFsdWU7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gZmluZCB0aGUgaW5kZXggb2Ygb3B0aW9ucyB0aGF0IGNvbnRhaW4gdGhlICd0b2dnbGVkSWQnIGluIHRoZWlyIGVuYWJsZWRJdGVtc1xuICAgICAgICAvLyAmIGNoZWNrIGlmIGF0IGxlYXN0IDEgaXMgc2VsZWN0ZWQsIG9yIGl0cyAndHJ1ZScgaW4gdGhlIHZhbHVlXG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ZXMgPSBpdGVtLm9wdGlvbnMubWFwKChvLCBpKSA9PiAoby5lbmFibGVkSXRlbXMuc29tZSgoaWQpID0+IGlkID09PSB0b2dnbGVkSWQpID8gaSA6IG51bGwpKS5maWx0ZXIoaXNQcmVzZW50KTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbkluZGV4ZXMuc29tZSgoaSkgPT4gISF2YWx1ZVtpXSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIHNpbmdsZSB2YWx1ZSwgZ2V0IHRoZSBlbmFibGluZyBvcHRpb24gaWRzIGFuZCBjaGVjayBmb3IgdGhlIHZhbHVlIGluIHRoZW1cbiAgICAgICAgcmV0dXJuIGl0ZW0ub3B0aW9ucy5zb21lKChvKSA9PiBvLm9wdGlvbi5pZCA9PT0gdmFsdWUgJiYgby5lbmFibGVkSXRlbXMuc29tZSgoaWQpID0+IGlkID09PSB0b2dnbGVkSWQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY29tcG9uZW50IHZpc2liaWxpdHkgZm9yIGEgRm9ybUl0ZW0gd2l0aCBtdWx0aXBsZSBlbmFibGVycyBpbiBpdHMgY29uZGl0aW9uXG4gICAqIEBwYXJhbSBjb21wb25lbnQgRm9ybUl0ZW1Db21wb25lbnQgYmVpbmcgdG9nZ2xlZFxuICAgKiBAcGFyYW0gZW5hYmxlZCBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZW5hYmxlZFxuICAgKiBAcGFyYW0gY2FsbGVySWQgSUQgb2YgdGhlIGNhbGxlciB0b2dnbGluZyB0aGlzIGNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlTXVsdGlwbGVFbmFibGVycyhjb21wb25lbnQ6IE10bmFXZkZvcm1JdGVtQ29tcG9uZW50LCBlbmFibGVkOiBib29sZWFuLCBjYWxsZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaXRlbSA9IGNvbXBvbmVudC5pdGVtO1xuICAgIGNvbnN0IGVuYWJsZXJzID0geyAuLi50aGlzLm11bHRpcGxlRW5hYmxlcnNbaXRlbS5pbnN0YW5jZUlkXSB9O1xuICAgIGxldCBpc0VuYWJsZWQ6IGJvb2xlYW47XG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIGVuYWJsZXJzW2NhbGxlcklkXSA9IGNhbGxlcklkO1xuICAgICAgaXNFbmFibGVkID1cbiAgICAgICAgaXNDb25kaXRpb25hbEl0ZW0oaXRlbSkgJiZcbiAgICAgICAgISFpdGVtLmNvbmRpdGlvbiAmJlxuICAgICAgICAoIWl0ZW0uY29uZGl0aW9uLmFsbFJlcXVpcmVkIHx8IGl0ZW0uY29uZGl0aW9uLml0ZW1JZHMuZXZlcnkoKGlkKSA9PiAhIWVuYWJsZXJzW2lkXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgZW5hYmxlcnNbY2FsbGVySWRdO1xuICAgICAgaXNFbmFibGVkID0gISgoaXNDb25kaXRpb25hbEl0ZW0oaXRlbSkgJiYgaXRlbS5jb25kaXRpb24/LmFsbFJlcXVpcmVkKSB8fCAhT2JqZWN0LmtleXMoZW5hYmxlcnMpLmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIElmIGVuYWJsZWQgPT09IGRpc2FibGVkLCB0aGVuIHRoZSBzdGF0ZSBoYXMgY2hhbmdlZFxuICAgIGlmICh0aGlzLl9pc0Rpc2FibGVkKGl0ZW0pID09PSBpc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3RvZ2dsZURpc2FibGVkU3RhdGVBbmRDb250cm9sKGNvbXBvbmVudCwgaXNFbmFibGVkKTtcbiAgICB9XG4gICAgLy8gc2V0IHRoZSBuZXcgZW5hYmxlciBtYXBcbiAgICB0aGlzLm11bHRpcGxlRW5hYmxlcnNbaXRlbS5pbnN0YW5jZUlkXSA9IGVuYWJsZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGNvbnRyb2wgb24gYSBGb3JtSXRlbUNvbXBvbmVudFxuICAgKiBAcGFyYW0gY29tcG9uZW50IEZvcm1JdGVtQ29tcG9uZW50IHRvIGVuYWJsZSBvciBkaXNhYmxlIGl0cyBjb250cm9sXG4gICAqIEBwYXJhbSBlbmFibGVkIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIF90b2dnbGVDb250cm9sU3RhdGUoY29tcG9uZW50OiBNdG5hV2ZGb3JtSXRlbUNvbXBvbmVudCwgZW5hYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChlbmFibGVkICYmICFjb21wb25lbnQuY29udHJvbD8uZW5hYmxlZCkge1xuICAgICAgLy8gRW5hYmxlIHRoZSBjb250cm9sIGlmIGl0IGlzbid0IGFscmVhZHlcbiAgICAgIGlmIChjb21wb25lbnQuY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICB0aGlzLl9lbmFibGVJbmRpdmlkdWFsQ29udHJvbHMoY29tcG9uZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC5jb250cm9sPy5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFlbmFibGVkICYmIGNvbXBvbmVudC5jb250cm9sPy5lbmFibGVkKSB7XG4gICAgICAvLyBEaXNhYmxlIHRoZSBjb250cm9sIGlmIGl0IGlzbid0IGFscmVhZHlcbiAgICAgIGNvbXBvbmVudC5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBib3RoIHRoZSBjb21wb25lbnQgdmlzaWJsaXR5IGFuZCB0aGUgY29udHJvbCdzIGVuYWJsZS9kaXNhYmxlIHN0YXR1c1xuICAgKiBAcGFyYW0gY29tcG9uZW50IEZvcm1JdGVtQ29tcG9uZW50IHRvIHNob3cgb3IgaGlkZSBhbmQgZW5hYmxlIG9yIGRpc2FibGVcbiAgICogQHBhcmFtIGVuYWJsZWQgd2hldGhlciB0byBzaG93IHRoZSBjb21wb25lbnQgYW5kIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBjb21wb25lbnRcbiAgICovXG4gIHByaXZhdGUgX3RvZ2dsZURpc2FibGVkU3RhdGVBbmRDb250cm9sKGNvbXBvbmVudDogTXRuYVdmRm9ybUl0ZW1Db21wb25lbnQsIGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkU3RhdGVbY29tcG9uZW50Lml0ZW0uaW5zdGFuY2VJZF0gPSAhZW5hYmxlZDtcbiAgICB0aGlzLl90b2dnbGVDb250cm9sU3RhdGUoY29tcG9uZW50LCBlbmFibGVkKTtcbiAgICBpZiAoaXNDb25kaXRpb25hbEl0ZW0oY29tcG9uZW50Lml0ZW0pICYmIGNvbXBvbmVudC5pdGVtLmhpZGVPbkRpc2FibGUpIHtcbiAgICAgIGNvbXBvbmVudC52aXNpYmxlID0gZW5hYmxlZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBjb250cm9scyBpbmRpdmlkdWFsbHkgdXNpbmcgcmVjdXJzaW9uLlxuICAgKiBGb3JtR3JvdXBzIHNob3VsZCBvbmx5IGV4aXN0IGZvciBpdGVtcyB3aXRoICdpdGVtcycgYXJyYXlzLCBvclxuICAgKiBpZiB0aGUgY29tcG9uZW50IGlzIGEgQmFzZVBhcmVudEl0ZW1Db250cm9sXG4gICAqIEBwYXJhbSBjb21wIEZvcm1JdGVtQ29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIF9lbmFibGVJbmRpdmlkdWFsQ29udHJvbHMoY29tcDogTXRuYVdmRm9ybUl0ZW1Db21wb25lbnQpIHtcbiAgICBjb25zdCBncm91cCA9IGNvbXAuY29udHJvbCBhcyBGb3JtR3JvdXA7XG5cbiAgICBpZiAoaXNPcHRpb25JdGVtSW1wbChjb21wLml0ZW0pIHx8IGlzT3B0aW9uR3JvdXBJdGVtSW1wbChjb21wLml0ZW0pKSB7XG4gICAgICBjb25zdCBtYXAgPSBjb21wLml0ZW0ub3B0aW9uSXRlbU1hcDtcbiAgICAgIGNvbnN0IHNlbGYgPSBncm91cC5nZXQoY29tcC5pdGVtLmluc3RhbmNlSWQpO1xuICAgICAgc2VsZj8uZW5hYmxlKCk7XG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbklkIGluIG1hcCkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwgb3B0aW9uSWQpKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGRDb21wID0gdGhpcy5jb21wb25lbnRzW21hcFtvcHRpb25JZF0uaW5zdGFuY2VJZF07XG4gICAgICAgICAgaWYgKCF0aGlzLl9pc0Rpc2FibGVkKGNoaWxkQ29tcC5pdGVtKSkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlQ29udHJvbFN0YXRlKGNoaWxkQ29tcCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1R5cGU8eyBpdGVtczogRm9ybUl0ZW1JbXBsPHVua25vd24+W10gfT4oY29tcC5pdGVtLCAnaXRlbXMnKSAmJiBjb21wLml0ZW0uaXRlbXMubGVuZ3RoKSB7XG4gICAgICAvLyBJdGVtIG11c3QgaGF2ZSAnaXRlbXMnIGFycmF5XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29tcC5pdGVtLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkQ29tcCA9IHRoaXMuY29tcG9uZW50c1tpdGVtLmluc3RhbmNlSWRdO1xuICAgICAgICBpZiAoIXRoaXMuX2lzRGlzYWJsZWQoaXRlbSkpIHtcbiAgICAgICAgICB0aGlzLl90b2dnbGVDb250cm9sU3RhdGUoY2hpbGRDb21wLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gUHJpb3JpdGl6ZXMgdGhlIGRpc2FibGVkU3RhdGUgdmFsdWUsXG4gICAqIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHJldHVybnMgdGhlIGl0ZW0ncyBwcmV2aW91cyBkaXNhYmxlZCB2YWx1ZVxuICAgKiBAcGFyYW0gaXRlbSBpdGVtIHRvIGNoZWNrIGZvciBpdHMgZGlzYWJsZWQgc3RhdGVcbiAgICovXG4gIHByaXZhdGUgX2lzRGlzYWJsZWQoaXRlbTogQ29uZGl0aW9uYWxJdGVtIHwgRm9ybUl0ZW0pOiBib29sZWFuIHtcbiAgICBjb25zdCBleGlzdHNJbkRpc2FibGVkU3RhdE1hcCA9IGlzUHJlc2VudCh0aGlzLmRpc2FibGVkU3RhdGVbaXRlbS5pbnN0YW5jZUlkXSk7XG4gICAgaWYgKCFleGlzdHNJbkRpc2FibGVkU3RhdE1hcCkge1xuICAgICAgcmV0dXJuIGlzQ29uZGl0aW9uYWxJdGVtKGl0ZW0pID8gaXRlbS5kaXNhYmxlZCA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFN0YXRlW2l0ZW0uaW5zdGFuY2VJZF07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dlYi1mb3JtLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy91aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FFakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFtQnZDLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUI7SUFDdEQsS0FBSyxFQUFFLFNBQVMsQ0FBQSwrQ0FBK0M7SUFDL0QsR0FBRyxFQUFFLENBQUMsSUFBb0UsRUFBRSxFQUFFLENBQzVFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLENBQUM7UUFDNUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQSxrQ0FBa0M7UUFDN0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxTQUFTLENBQUEsY0FBYyxJQUFJLENBQUMsUUFBUSxLQUFLO1lBQzNDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFBLGNBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRTtJQUNqRCxTQUFTLEVBQUUsU0FBUyxDQUFBLDhDQUE4QztJ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SyxDQUFDO1NBQ3hEO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzs7NkdBcFNVLGVBQWUsMkNBWWlDLHNCQUFzQjtpSEFadEUsZUFBZSxjQURGLE1BQU07NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFhUSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgaXNQcmVzZW50LCBpc1R5cGUgfSBmcm9tICdAbXRuYS9jb3JlLXRzJztcbmltcG9ydCB7IEFubm90YXRhYmxlTnVtYmVyTWFwIH0gZnJvbSAnQG10bmEvcG9qby1zb2NpYWwtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDb25kaXRpb25hbEl0ZW0sXG4gIEZvcm1JdGVtLFxuICBGb3JtSXRlbUltcGwsXG4gIGlzQ29uZGl0aW9uYWxJdGVtLFxuICBpc09wdGlvbkdyb3VwSXRlbUltcGwsXG4gIGlzT3B0aW9uSXRlbUltcGwsXG4gIFRlbXBsYXRlSXRlbUltcGwsXG59IGZyb20gJ0BtdG5hL3dlYi1mb3JtLXRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNdG5hV2ZGb3JtSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybS1pdGVtL2Zvcm0taXRlbS5jb21wb25lbnQnO1xuXG4vKiogUmVnaXN0cnkgb2YgY3VzdG9tIGVycm9yIG1lc3NhZ2VzIGZvciBhIHNwZWNpZmljIGZvcm0gaXRlbS4gQSBjdXN0b20gZXJyb3IgY2FuIGFsc29cbiAqIGJlIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGEgc3RyaW5nLiBUaGUgRm9ybUl0ZW0gb2JqZWN0IGlzIHBhc3NlZCB0byBhbnkgVmFsaWRhdGlvbkVycm9yc1xuICogdGhhdCBhcmUgZnVuY3Rpb25zLCBzbyBpdGVtIHNwZWNpZmljIGluZm9ybWF0aW9uIGNhbiBiZSBwcm92aWRlZC5cbiAqIEBleGFtcGxlIHtcbiAqIG1heDogYFRoaXMgZmllbGQncyB2YWx1ZSBtdXN0IGJlIGxlc3MuYCxcbiAqIG1pbjogKGl0ZW06IEZvcm1JdGVtSW1wbDxhbnk+KSA9PiBpbnN0YW5jZW9mV2hvbGVOdW1iZXJJdGVtKGl0ZW0pXG4gKiA/IGBUaGlzIGZpZWxkJ3MgdmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJHtpdGVtLm1pblZhbHVlfS5gXG4gKiA6IGBUaGlzIGZpZWxkJ3MgdmFsdWUgbXVzdCBiZSBncmVhdGVyLmBcbiAqIH1cbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmludGVyZmFjZS1vdmVyLXR5cGUtbGl0ZXJhbFxuZXhwb3J0IHR5cGUgQ3VzdG9tRXJyb3JzID0ge1xuICBbaWQ6IHN0cmluZ106IFZhbGlkYXRpb25FcnJvcnM7XG59O1xuXG4vKiogTGlzdCBvZiBkZWZhdWx0IGVycm9yIG1lc3NhZ2VzIHRvIGRpc3BsYXkgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VSUk9SX01FU1NBR0VTOiBWYWxpZGF0aW9uRXJyb3JzID0ge1xuICBlbWFpbDogJGxvY2FsaXplYFRoaXMgZmllbGQgbXVzdCBpbmNsdWRlIGEgdmFsaWQgZW1haWwgZm9ybWF0LmAsXG4gIG1heDogKGl0ZW0/OiBGb3JtSXRlbUltcGw8bnVtYmVyPiAmIHsgbWF4VmFsdWU6IG51bWJlcjsgbWluVmFsdWU6IG51bWJlciB9KSA9PlxuICAgICFpc1ByZXNlbnQoaXRlbSkgfHwgIWlzUHJlc2VudChpdGVtPy5tYXhWYWx1ZSlcbiAgICAgID8gJGxvY2FsaXplYFRoaXMgZmllbGQncyB2YWx1ZSBtdXN0IGJlIGxlc3MuYFxuICAgICAgOiBpc1ByZXNlbnQoaXRlbT8ubWluVmFsdWUpXG4gICAgICA/ICRsb2NhbGl6ZWBNaW4gdmFsdWU6ICR7aXRlbS5taW5WYWx1ZX0gLSBgXG4gICAgICA6ICcnICsgJGxvY2FsaXplYE1heCB2YWx1ZTogJHtpdGVtLm1heFZhbHVlfWAsXG4gIG1heGxlbmd0aDogJGxvY2FsaXplYFRoaXMgZmllbGQgaGFzIGV4Y2VlZGVkIHRoZSBhbGxvd2VkIG1heGltdW0uYCxcbiAgbWF4U2VsZWN0ZWQ6IG51bGwsXG4gIG1pbjogKGl0ZW0/OiBGb3JtSXRlbUltcGw8bnVtYmVyPiAmIHsgbWF4VmFsdWU6IG51bWJlcjsgbWluVmFsdWU6IG51bWJlciB9KSA9PlxuICAgICFpc1ByZXNlbnQoaXRlbSkgfHwgIWlzUHJlc2VudChpdGVtPy5taW5WYWx1ZSlcbiAgICAgID8gJGxvY2FsaXplYFRoaXMgZmllbGQncyB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIuYFxuICAgICAgOiAkbG9jYWxpemVgTWluIFZhbHVlOiAke2l0ZW0ubWluVmFsdWV9YCArIGlzUHJlc2VudChpdGVtPy5tYXhWYWx1ZSlcbiAgICAgID8gJGxvY2FsaXplYCAtIE1heCBWYWx1ZTogJHtpdGVtLm1heFZhbHVlfWBcbiAgICAgIDogJycsXG4gIG1pbmxlbmd0aDogJGxvY2FsaXplYFRoaXMgZmllbGQgaGFzIG5vdCBtZXQgdGhlIHJlcXVpcmVkIG1pbmltdW0uYCxcbiAgbWluU2VsZWN0ZWQ6IG51bGwsXG4gIG5vbkRpZ2l0OiAkbG9jYWxpemVgVGhpcyBmaWVsZCdzIHZhbHVlIG11c3QgYmUgbnVtZXJpYy5gLFxuICBwYXR0ZXJuOiAkbG9jYWxpemVgVGhpcyBmaWVsZCdzIGlucHV0IGRvZXMgbm90IG1lZXQgdGhlIGFjY2VwdGVkIHBhdHRlcm4uYCxcbiAgcG9zaXRpdmU6ICRsb2NhbGl6ZWBUaGlzIGZpZWxkJ3MgdmFsdWUgY2Fubm90IGJlIG5lZ2F0aXZlLmAsXG4gIHJlcXVpcmVkOiAkbG9jYWxpemVgVGhpcyBmaWVsZCBpcyByZXF1aXJlZC5gLFxuICByZXF1aXJlZFRydWU6IGAkbG9jYWxpemVUaGlzIGZpZWxkJ3MgdmFsdWUgbXVzdCBiZSAndHJ1ZScuYCxcbiAgd2hvbGVOdW1iZXI6ICRsb2NhbGl6ZWBUaGlzIGZpZWxkIGNhbm5vdCBjb250YWluIGEgZGVjaW1hbC5gLFxuICBtYXREYXRlcGlja2VyUGFyc2U6ICRsb2NhbGl6ZWBUaGlzIGZpZWxkJ3MgdmFsdWUgaXMgbm90IGFuIGFjY2VwdGVkIGZvcm1hdC5gLFxufTtcblxuZXhwb3J0IGNvbnN0IFdFQl9GT1JNX0NVU1RPTV9FUlJPUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q3VzdG9tRXJyb3JzPignbXRuYVdlYkZvcm1DdXN0b21Gb3JtRXJyb3JzJyk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTXRuYVdmVUlTZXJ2aWNlIHtcbiAgLyoqIE1hcCBvZiBhbm5vdGF0aW9uIGNvdW50cyBmb3IgZWFjaCBhbm5vdGF0YWJsZSBpdGVtICovXG4gIHByaXZhdGUgYW5ub3RhdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4gfSA9IHt9O1xuICAvKiogTWFwIG9mIGNvbXBvbmVudHMgaW4gdGhlIE10bmFGb3JtICovXG4gIHByaXZhdGUgY29tcG9uZW50czogeyBbaW5zdGFuY2VJZDogc3RyaW5nXTogTXRuYVdmRm9ybUl0ZW1Db21wb25lbnQgfSA9IHt9O1xuICAvKiogTWFwIG9mIGl0ZW0uZGlzYWJsZWQgdmFsdWVzIHRoYXQgaGF2ZSBjaGFuZ2VkICovXG4gIHByaXZhdGUgZGlzYWJsZWRTdGF0ZTogeyBbaW5zdGFuY2VJZDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gIC8qKiBNYXAgb2YgdG9nZ2xlciBJRCdzIGZvciBjb21wb25lbnRzIHRoYXQgaGF2ZSBtdWx0aXBsZSB0b2dnbGVycyAqL1xuICBwcml2YXRlIG11bHRpcGxlRW5hYmxlcnM6IHsgW2luc3RhbmNlSWQ6IHN0cmluZ106IHsgW3RvZ2dsZXJJZDogc3RyaW5nXTogc3RyaW5nIH0gfCBudWxsIH0gPSB7fTtcbiAgcHJpdmF0ZSBlcnJvcnM6IEN1c3RvbUVycm9ycztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLCBAT3B0aW9uYWwoKSBASW5qZWN0KFdFQl9GT1JNX0NVU1RPTV9FUlJPUlMpIGVycm9ycz86IGFueSkge1xuICAgIC8vIFdvcmthcm91bmQgZm9yOiBNZXRhZGF0YSBjb2xsZWN0ZWQgY29udGFpbnMgYW4gZXJyb3IgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGF0IHJ1bnRpbWU6IENvdWxkIG5vdCByZXNvbHZlIHR5cGUgQ3VzdG9tRXJyb3JzLlxuICAgIC8vIHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTUxMzM1OS9jb3VsZC1ub3QtcmVzb2x2ZS10eXBlLWRvY3VtZW50LWluLWFuZ3VsYXI1LzUzNzE1NjQyIzUzNzE1NjQyXG4gICAgdGhpcy5lcnJvcnMgPSBlcnJvcnMgYXMgQ3VzdG9tRXJyb3JzO1xuICB9XG5cbiAgZ2V0RGlzYWJsZWRTdGF0ZXMoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5kaXNhYmxlZFN0YXRlIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIG1hdGNoaW5nIHRoZSBlcnJvciBpZFxuICAgKiBAcGFyYW0gZXJyb3JJZCBJZCBvZiB0aGUgZXJyb3IsIHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQgZXJyb3IgbWVzc2FnZVxuICAgKiBAcGFyYW0gaXRlbSBGb3JtSXRlbSB0byBwYXNzIHRvIFZhbGlkYXRpb25FcnJvcnMgdGhhdCBhcmUgZnVuY3Rpb25zLiBGb3IgaW5zdGFuY2UsXG4gICAqIHRoaXMgaXMgdXNlZnVsIGZvciAnbWluJyAmICdtYXgnIHZhbHVlIGxpbWl0cyB0byBkaXNwbGF5IG1vcmUgaGVscGZ1bCBtZXNzYWdlc1xuICAgKi9cbiAgZ2V0RXJyb3IoZXJyb3JJZDogc3RyaW5nLCBpdGVtPzogRm9ybUl0ZW1JbXBsPHVua25vd24+IHwgVGVtcGxhdGVJdGVtSW1wbCk6IHN0cmluZyB7XG4gICAgLy8gZGVmYXVsdCB3aGVuIG5vIGN1c3RvbSBtZXNzYWdlIGV4aXN0c1xuICAgIGxldCBlcnJvciA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVNbZXJyb3JJZF07XG4gICAgaWYgKCEhdGhpcy5lcnJvcnMgJiYgISFpdGVtKSB7XG4gICAgICAvLyBjaGVjayBmb3IgaW5zdGFuY2Ugc3BlY2lmaWMsIHZpYSBpbnN0YW5jZUlkXG4gICAgICBpZiAoaXNQcmVzZW50KHRoaXMuZXJyb3JzW2l0ZW0uaW5zdGFuY2VJZF0pICYmIGlzUHJlc2VudCh0aGlzLmVycm9yc1tpdGVtLmluc3RhbmNlSWRdW2Vycm9ySWRdKSkge1xuICAgICAgICBlcnJvciA9IHRoaXMuZXJyb3JzW2l0ZW0uaW5zdGFuY2VJZF1bZXJyb3JJZF07XG4gICAgICAgIC8vIGNoZWNrIGZvciBpdGVtIHNwZWNpZmljLCB2aWEgaXRlbUlkXG4gICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudCh0aGlzLmVycm9yc1tpdGVtLml0ZW1JZF0pICYmIGlzUHJlc2VudCh0aGlzLmVycm9yc1tpdGVtLml0ZW1JZF1bZXJyb3JJZF0pKSB7XG4gICAgICAgIGVycm9yID0gdGhpcy5lcnJvcnNbaXRlbS5pdGVtSWRdW2Vycm9ySWRdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGVycm9yID09PSAnZnVuY3Rpb24nID8gZXJyb3IoaXRlbSkgOiBlcnJvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWdpc3RlcmVkIGNvbXBvbmVudCBieSBpbnRhbmNlIGlkLlxuICAgKiBAcGFyYW0gaWQgdGhlIGluc3RhbmNlSWRcbiAgICogQHJldHVybnMgdGhlIHtAbGluayBGb3JtSXRlbUNvbXBvbmVudH0gdGhhdCByZXByZXNlbnRzIHRoYXQgSUQgb3IgdW5kZWZpbmVkIGlmIG5vdCByZWdpc3RlcmVkLlxuICAgKi9cbiAgZ2V0SXRlbShpZDogc3RyaW5nKTogTXRuYVdmRm9ybUl0ZW1Db21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHNbaWRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWwgbWFwIG9mIGFubm90YXRpb24gY291bnRzLCBhbmQvb3IgcHVzaGVzIHRoZSBuZXcgY291bnQgb250byB0aGUgY29tcG9uZW50IG9ic2VydmFibGUgc3RyZWFtXG4gICAqIEBwYXJhbSBtYXAgQW5ub3RhdGFibGVOdW1iZXJNYXAgb2YgY291bnRzIG1hcHBlZCB0byB0aGVpciBhbm5vdGF0YWJsZUlkc1xuICAgKi9cbiAgcmVnaXN0ZXJBbm5vdGF0aW9ucyhtYXA6IEFubm90YXRhYmxlTnVtYmVyTWFwKSB7XG4gICAgZm9yIChjb25zdCBpZCBpbiBtYXApIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobWFwLCBpZCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFubm90YXRpb25zW2lkXSkge1xuICAgICAgICAgIHRoaXMuYW5ub3RhdGlvbnNbaWRdID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihtYXBbaWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25zW2lkXS5uZXh0KG1hcFtpZF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYSBjb21wb25lbnQgdG8gaXRzIGl0ZW1zIGluc3RhbmNlSWQuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgY29tcG9uZW50IGNhbGxpbmcgdGhpcyBtZXRob2QsIGkuZS4gJ3RoaXMnXG4gICAqL1xuICByZWdpc3RlclNlbGYoY29tcG9uZW50OiBNdG5hV2ZGb3JtSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuY29tcG9uZW50c1tjb21wb25lbnQuaXRlbS5pbnN0YW5jZUlkXSA9IGNvbXBvbmVudDtcbiAgICBpZiAoISFjb21wb25lbnQuaXRlbS5hbm5vdGF0YWJsZUlkICYmIGNvbXBvbmVudC5pdGVtLmFubm90YXRpb25FbmFibGVkKSB7XG4gICAgICBpZiAoIXRoaXMuYW5ub3RhdGlvbnNbY29tcG9uZW50Lml0ZW0uYW5ub3RhdGFibGVJZF0pIHtcbiAgICAgICAgdGhpcy5hbm5vdGF0aW9uc1tjb21wb25lbnQuaXRlbS5hbm5vdGF0YWJsZUlkXSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gICAgICB9XG4gICAgICBjb21wb25lbnQuYW5ub3RhdGlvbnMkID0gdGhpcy5hbm5vdGF0aW9uc1tjb21wb25lbnQuaXRlbS5hbm5vdGF0YWJsZUlkXS5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBhIEZvcm1JdGVtJ3MgdmlzaWJsaXR5IGFuZCBlbmFibGUvZGlzYWJsZSBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0gZW5hYmxlZEl0ZW1JZHMgYXJyYXkgb2YgY29tcG9uZW50IElEcyBmb3IgZW5hYmxlZCBpdGVtcy5cbiAgICogQHBhcmFtIGRpc2FibGVkSXRlbUlkcyBhcnJheSBvZiBjb21wb25lbnQgSURzIGZvciBkaXNhYmxlZCBpdGVtcy5cbiAgICogQHBhcmFtIGVuYWJsZWQgV2hldGhlciB0aGUgZW5hYmxlZEl0ZW1JZHMgYXJlIGVuYWJsZWQuXG4gICAqIEBwYXJhbSBjYWxsZXJJZCBpbnN0YW5jZUlkIG9mIHRoZSBpdGVtIGludm9raW5nIHRoaXMgZnVuY3Rpb25cbiAgICogQHBhcmFtIHJlc2V0IFdoZXRoZXIgdG8gcmVzZXQgdGhlIG11bHRpcGxlIGVuYWJsZXIgbWFwIG9mIHRoZSB0b2dnbGVkIGl0ZW1cbiAgICovXG4gIHRvZ2dsZUZvcm1JdGVtcyhlbmFibGVkSXRlbUlkczogQXJyYXk8c3RyaW5nPiwgZGlzYWJsZWRJdGVtSWRzOiBBcnJheTxzdHJpbmc+LCBlbmFibGVkOiBib29sZWFuLCBjYWxsZXJJZDogc3RyaW5nLCByZXNldCA9IGZhbHNlKSB7XG4gICAgaWYgKCghZW5hYmxlZEl0ZW1JZHMgfHwgIWVuYWJsZWRJdGVtSWRzLmxlbmd0aCkgJiYgKCFkaXNhYmxlZEl0ZW1JZHMgfHwgIWRpc2FibGVkSXRlbUlkcy5sZW5ndGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFsbElkcyA9IFtlbmFibGVkSXRlbUlkcywgZGlzYWJsZWRJdGVtSWRzXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbElkcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbUlkcyA9IGFsbElkc1tpXTtcbiAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IGkgPT09IDAgPyBlbmFibGVkIDogIWVuYWJsZWQ7XG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIGl0ZW1JZHMpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRzW2lkXTtcbiAgICAgICAgLy8gSWYgY29tcG9uZW50IGlzIHJlZ2lzdGVyZWQsIHRvZ2dsZSBpdFxuICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IGNvbXBvbmVudC5pdGVtO1xuICAgICAgICAgIGNvbnN0IGhhc011bHRpcGxlRW5hYmxlcnMgPSBpc0NvbmRpdGlvbmFsSXRlbShpdGVtKSAmJiBpdGVtLmNvbmRpdGlvbiA/IGl0ZW0uY29uZGl0aW9uLml0ZW1JZHMubGVuZ3RoID4gMSA6IGZhbHNlO1xuICAgICAgICAgIC8vIElmIGl0ZW0gaGFzIG1vcmUgdGhhbiAxIGVuYWJsZXIsIGhhbmRsZSBtdWx0aXBsZSBlbmFibGVyc1xuICAgICAgICAgIGlmIChoYXNNdWx0aXBsZUVuYWJsZXJzKSB7XG4gICAgICAgICAgICBpZiAocmVzZXQpIHtcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZUVuYWJsZXJzW2l0ZW0uaW5zdGFuY2VJZF0gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgYSBtYXAgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQsIHRoZW4gYnVpbGQgdXAgYSBtYXAgdG8gcmVnaXN0ZXJcbiAgICAgICAgICAgIC8vIFNob3VsZCBvbmx5IGhhcHBlbiB0aGUgZmlyc3QgdGltZSBhbiBpdGVtIGlzIHRvZ2dsZWQuXG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGVFbmFibGVyc1tpdGVtLmluc3RhbmNlSWRdICYmIGlzQ29uZGl0aW9uYWxJdGVtKGl0ZW0pKSB7XG4gICAgICAgICAgICAgIHRoaXMubXVsdGlwbGVFbmFibGVyc1tpdGVtLmluc3RhbmNlSWRdID0gdGhpcy5fcmVnaXN0ZXJDdXJyZW50RW5hYmxlcnMoaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBoYW5kbGUgTXVsdGlwbGUgRW5hYmxlcnNcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZU11bHRpcGxlRW5hYmxlcnMoY29tcG9uZW50LCBpc0VuYWJsZWQsIGNhbGxlcklkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTm90IG11bHRpcGxlIGVuYWJsZXJzXG4gICAgICAgICAgICB0aGlzLl90b2dnbGVEaXNhYmxlZFN0YXRlQW5kQ29udHJvbChjb21wb25lbnQsIGlzRW5hYmxlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t0b2dnbGVGb3JtSXRlbXNdIGNvbXBvbmVudCBoYXMgbm90IGJlZW4gcmVnaXN0ZXJkJywgaWQsIGVuYWJsZWQsIGNhbGxlcklkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgbWFwIG9mIGFsbCBJRHMgY3VycmVudGx5IGluZmx1ZW5jaW5nIGFuIGl0ZW0uXG4gICAqIEBwYXJhbSB0b2dnbGVkSXRlbSBpdGVtIGJlaW5nIHRvZ2dsZWRcbiAgICovXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ3VycmVudEVuYWJsZXJzKHRvZ2dsZWRJdGVtOiBDb25kaXRpb25hbEl0ZW0pOiB7IFtjYWxsZXJJZDogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IGVuYWJsZXJzOiB7IFtjYWxsZXJJZDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBhbGxJZHMgPSB0b2dnbGVkSXRlbS5jb25kaXRpb24/Lml0ZW1JZHMgfHwgW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGFsbElkcykge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRzW2lkXTtcbiAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ3VycmVudGx5VG9nZ2xpbmcoY29tcG9uZW50LCB0b2dnbGVkSXRlbS5pbnN0YW5jZUlkKSkge1xuICAgICAgICAgIGVuYWJsZXJzW2NvbXBvbmVudC5pdGVtLmluc3RhbmNlSWRdID0gY29tcG9uZW50Lml0ZW0uaW5zdGFuY2VJZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW3JlZ2lzdGVyQ3VycmVudEVuYWJsZXJzXSBjb21wb25lbnQgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQuJywgaWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbmFibGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIG1hcCBvZiBjb21wb25lbnRzLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGZvcm0gd2hlblxuICAgKiBpdCBpcyBkZXN0cm95ZWQuXG4gICAqL1xuICByZXNldENvbXBvbmVudE1hcCgpIHtcbiAgICB0aGlzLmFubm90YXRpb25zID0ge307XG4gICAgdGhpcy5jb21wb25lbnRzID0ge307XG4gICAgdGhpcy5kaXNhYmxlZFN0YXRlID0ge307XG4gICAgdGhpcy5tdWx0aXBsZUVuYWJsZXJzID0ge307XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhbiBpbmZsdWVuY2VyIGlzIGN1cnJlbnRseSB0b2dnbGluZyB0aGUgc3BlY2lmaWVkIHRvZ2dsZWRJdGVtSWQuXG4gICAqIEBwYXJhbSBpbmZsdWVuY2VyIEl0ZW0gdG8gY2hlY2sgd2hldGhlciBpdCdzIGN1cnJlbnRseSBpbmZsdWVuY2luZyB0aGUgdG9nZ2xlZEl0ZW1JZFxuICAgKiBAcGFyYW0gdG9nZ2xlZElkIEluc3RhbmNlSWQgb2YgdGhlIGl0ZW0gYmVpbmcgdG9nZ2xlZFxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbmZsdWVuY2VyIGlzIGN1cnJlbnRseSB0b2dnbGluZyB0aGUgdG9nZ2xlZCBpdGVtXG4gICAqL1xuICBwcml2YXRlIF9pc0N1cnJlbnRseVRvZ2dsaW5nKGluZmx1ZW5jZXI6IE10bmFXZkZvcm1JdGVtQ29tcG9uZW50LCB0b2dnbGVkSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGl0ZW0gPSBpbmZsdWVuY2VyLml0ZW07XG4gICAgLy8gSXRlbSBoYXMgc2luZ2xlIG9wdGlvbiBwcm9wZXJ0eSwgc28gY2hlY2sgaWYgc2VsZWN0ZWQsIG9yIGl0ZW0udmFsdWUgaXMgJ3RydWUnXG4gICAgaWYgKGlzT3B0aW9uSXRlbUltcGwoaXRlbSkpIHtcbiAgICAgIHJldHVybiBpdGVtLm9wdGlvbi5zZWxlY3RlZCB8fCAhIWl0ZW0udmFsdWUgfHwgISFpbmZsdWVuY2VyLmNvbnRyb2w/LnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoaXNPcHRpb25Hcm91cEl0ZW1JbXBsKGl0ZW0pKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGluZmx1ZW5jZXIuY29udHJvbD8udmFsdWUgPz8gaXRlbS52YWx1ZTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAvLyBmaW5kIHRoZSBpbmRleCBvZiBvcHRpb25zIHRoYXQgY29udGFpbiB0aGUgJ3RvZ2dsZWRJZCcgaW4gdGhlaXIgZW5hYmxlZEl0ZW1zXG4gICAgICAgIC8vICYgY2hlY2sgaWYgYXQgbGVhc3QgMSBpcyBzZWxlY3RlZCwgb3IgaXRzICd0cnVlJyBpbiB0aGUgdmFsdWVcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXhlcyA9IGl0ZW0ub3B0aW9ucy5tYXAoKG8sIGkpID0+IChvLmVuYWJsZWRJdGVtcy5zb21lKChpZCkgPT4gaWQgPT09IHRvZ2dsZWRJZCkgPyBpIDogbnVsbCkpLmZpbHRlcihpc1ByZXNlbnQpO1xuICAgICAgICByZXR1cm4gb3B0aW9uSW5kZXhlcy5zb21lKChpKSA9PiAhIXZhbHVlW2ldKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIGEgc2luZ2xlIHZhbHVlLCBnZXQgdGhlIGVuYWJsaW5nIG9wdGlvbiBpZHMgYW5kIGNoZWNrIGZvciB0aGUgdmFsdWUgaW4gdGhlbVxuICAgICAgICByZXR1cm4gaXRlbS5vcHRpb25zLnNvbWUoKG8pID0+IG8ub3B0aW9uLmlkID09PSB2YWx1ZSAmJiBvLmVuYWJsZWRJdGVtcy5zb21lKChpZCkgPT4gaWQgPT09IHRvZ2dsZWRJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjb21wb25lbnQgdmlzaWJpbGl0eSBmb3IgYSBGb3JtSXRlbSB3aXRoIG11bHRpcGxlIGVuYWJsZXJzIGluIGl0cyBjb25kaXRpb25cbiAgICogQHBhcmFtIGNvbXBvbmVudCBGb3JtSXRlbUNvbXBvbmVudCBiZWluZyB0b2dnbGVkXG4gICAqIEBwYXJhbSBlbmFibGVkIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBiZWluZyBlbmFibGVkXG4gICAqIEBwYXJhbSBjYWxsZXJJZCBJRCBvZiB0aGUgY2FsbGVyIHRvZ2dsaW5nIHRoaXMgY29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIF9oYW5kbGVNdWx0aXBsZUVuYWJsZXJzKGNvbXBvbmVudDogTXRuYVdmRm9ybUl0ZW1Db21wb25lbnQsIGVuYWJsZWQ6IGJvb2xlYW4sIGNhbGxlcklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gY29tcG9uZW50Lml0ZW07XG4gICAgY29uc3QgZW5hYmxlcnMgPSB7IC4uLnRoaXMubXVsdGlwbGVFbmFibGVyc1tpdGVtLmluc3RhbmNlSWRdIH07XG4gICAgbGV0IGlzRW5hYmxlZDogYm9vbGVhbjtcbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgZW5hYmxlcnNbY2FsbGVySWRdID0gY2FsbGVySWQ7XG4gICAgICBpc0VuYWJsZWQgPVxuICAgICAgICBpc0NvbmRpdGlvbmFsSXRlbShpdGVtKSAmJlxuICAgICAgICAhIWl0ZW0uY29uZGl0aW9uICYmXG4gICAgICAgICghaXRlbS5jb25kaXRpb24uYWxsUmVxdWlyZWQgfHwgaXRlbS5jb25kaXRpb24uaXRlbUlkcy5ldmVyeSgoaWQpID0+ICEhZW5hYmxlcnNbaWRdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSBlbmFibGVyc1tjYWxsZXJJZF07XG4gICAgICBpc0VuYWJsZWQgPSAhKChpc0NvbmRpdGlvbmFsSXRlbShpdGVtKSAmJiBpdGVtLmNvbmRpdGlvbj8uYWxsUmVxdWlyZWQpIHx8ICFPYmplY3Qua2V5cyhlbmFibGVycykubGVuZ3RoKTtcbiAgICB9XG4gICAgLy8gSWYgZW5hYmxlZCA9PT0gZGlzYWJsZWQsIHRoZW4gdGhlIHN0YXRlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKHRoaXMuX2lzRGlzYWJsZWQoaXRlbSkgPT09IGlzRW5hYmxlZCkge1xuICAgICAgdGhpcy5fdG9nZ2xlRGlzYWJsZWRTdGF0ZUFuZENvbnRyb2woY29tcG9uZW50LCBpc0VuYWJsZWQpO1xuICAgIH1cbiAgICAvLyBzZXQgdGhlIG5ldyBlbmFibGVyIG1hcFxuICAgIHRoaXMubXVsdGlwbGVFbmFibGVyc1tpdGVtLmluc3RhbmNlSWRdID0gZW5hYmxlcnM7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgY29udHJvbCBvbiBhIEZvcm1JdGVtQ29tcG9uZW50XG4gICAqIEBwYXJhbSBjb21wb25lbnQgRm9ybUl0ZW1Db21wb25lbnQgdG8gZW5hYmxlIG9yIGRpc2FibGUgaXRzIGNvbnRyb2xcbiAgICogQHBhcmFtIGVuYWJsZWQgd2hldGhlciB0byBlbmFibGUgdGhlIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgX3RvZ2dsZUNvbnRyb2xTdGF0ZShjb21wb25lbnQ6IE10bmFXZkZvcm1JdGVtQ29tcG9uZW50LCBlbmFibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKGVuYWJsZWQgJiYgIWNvbXBvbmVudC5jb250cm9sPy5lbmFibGVkKSB7XG4gICAgICAvLyBFbmFibGUgdGhlIGNvbnRyb2wgaWYgaXQgaXNuJ3QgYWxyZWFkeVxuICAgICAgaWYgKGNvbXBvbmVudC5jb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZUluZGl2aWR1YWxDb250cm9scyhjb21wb25lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LmNvbnRyb2w/LmVuYWJsZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWVuYWJsZWQgJiYgY29tcG9uZW50LmNvbnRyb2w/LmVuYWJsZWQpIHtcbiAgICAgIC8vIERpc2FibGUgdGhlIGNvbnRyb2wgaWYgaXQgaXNuJ3QgYWxyZWFkeVxuICAgICAgY29tcG9uZW50LmNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGJvdGggdGhlIGNvbXBvbmVudCB2aXNpYmxpdHkgYW5kIHRoZSBjb250cm9sJ3MgZW5hYmxlL2Rpc2FibGUgc3RhdHVzXG4gICAqIEBwYXJhbSBjb21wb25lbnQgRm9ybUl0ZW1Db21wb25lbnQgdG8gc2hvdyBvciBoaWRlIGFuZCBlbmFibGUgb3IgZGlzYWJsZVxuICAgKiBAcGFyYW0gZW5hYmxlZCB3aGV0aGVyIHRvIHNob3cgdGhlIGNvbXBvbmVudCBhbmQgd2hldGhlciB0byBlbmFibGUgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfdG9nZ2xlRGlzYWJsZWRTdGF0ZUFuZENvbnRyb2woY29tcG9uZW50OiBNdG5hV2ZGb3JtSXRlbUNvbXBvbmVudCwgZW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWRTdGF0ZVtjb21wb25lbnQuaXRlbS5pbnN0YW5jZUlkXSA9ICFlbmFibGVkO1xuICAgIHRoaXMuX3RvZ2dsZUNvbnRyb2xTdGF0ZShjb21wb25lbnQsIGVuYWJsZWQpO1xuICAgIGlmIChpc0NvbmRpdGlvbmFsSXRlbShjb21wb25lbnQuaXRlbSkgJiYgY29tcG9uZW50Lml0ZW0uaGlkZU9uRGlzYWJsZSkge1xuICAgICAgY29tcG9uZW50LnZpc2libGUgPSBlbmFibGVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGNvbnRyb2xzIGluZGl2aWR1YWxseSB1c2luZyByZWN1cnNpb24uXG4gICAqIEZvcm1Hcm91cHMgc2hvdWxkIG9ubHkgZXhpc3QgZm9yIGl0ZW1zIHdpdGggJ2l0ZW1zJyBhcnJheXMsIG9yXG4gICAqIGlmIHRoZSBjb21wb25lbnQgaXMgYSBCYXNlUGFyZW50SXRlbUNvbnRyb2xcbiAgICogQHBhcmFtIGNvbXAgRm9ybUl0ZW1Db21wb25lbnRcbiAgICovXG4gIHByaXZhdGUgX2VuYWJsZUluZGl2aWR1YWxDb250cm9scyhjb21wOiBNdG5hV2ZGb3JtSXRlbUNvbXBvbmVudCkge1xuICAgIGNvbnN0IGdyb3VwID0gY29tcC5jb250cm9sIGFzIEZvcm1Hcm91cDtcblxuICAgIGlmIChpc09wdGlvbkl0ZW1JbXBsKGNvbXAuaXRlbSkgfHwgaXNPcHRpb25Hcm91cEl0ZW1JbXBsKGNvbXAuaXRlbSkpIHtcbiAgICAgIGNvbnN0IG1hcCA9IGNvbXAuaXRlbS5vcHRpb25JdGVtTWFwO1xuICAgICAgY29uc3Qgc2VsZiA9IGdyb3VwLmdldChjb21wLml0ZW0uaW5zdGFuY2VJZCk7XG4gICAgICBzZWxmPy5lbmFibGUoKTtcbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uSWQgaW4gbWFwKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobWFwLCBvcHRpb25JZCkpIHtcbiAgICAgICAgICBjb25zdCBjaGlsZENvbXAgPSB0aGlzLmNvbXBvbmVudHNbbWFwW29wdGlvbklkXS5pbnN0YW5jZUlkXTtcbiAgICAgICAgICBpZiAoIXRoaXMuX2lzRGlzYWJsZWQoY2hpbGRDb21wLml0ZW0pKSB7XG4gICAgICAgICAgICB0aGlzLl90b2dnbGVDb250cm9sU3RhdGUoY2hpbGRDb21wLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVHlwZTx7IGl0ZW1zOiBGb3JtSXRlbUltcGw8dW5rbm93bj5bXSB9Pihjb21wLml0ZW0sICdpdGVtcycpICYmIGNvbXAuaXRlbS5pdGVtcy5sZW5ndGgpIHtcbiAgICAgIC8vIEl0ZW0gbXVzdCBoYXZlICdpdGVtcycgYXJyYXlcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb21wLml0ZW0uaXRlbXMpIHtcbiAgICAgICAgY29uc3QgY2hpbGRDb21wID0gdGhpcy5jb21wb25lbnRzW2l0ZW0uaW5zdGFuY2VJZF07XG4gICAgICAgIGlmICghdGhpcy5faXNEaXNhYmxlZChpdGVtKSkge1xuICAgICAgICAgIHRoaXMuX3RvZ2dsZUNvbnRyb2xTdGF0ZShjaGlsZENvbXAsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgY29tcG9uZW50IGlzIGRpc2FibGVkLiBQcmlvcml0aXplcyB0aGUgZGlzYWJsZWRTdGF0ZSB2YWx1ZSxcbiAgICogaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgcmV0dXJucyB0aGUgaXRlbSdzIHByZXZpb3VzIGRpc2FibGVkIHZhbHVlXG4gICAqIEBwYXJhbSBpdGVtIGl0ZW0gdG8gY2hlY2sgZm9yIGl0cyBkaXNhYmxlZCBzdGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfaXNEaXNhYmxlZChpdGVtOiBDb25kaXRpb25hbEl0ZW0gfCBGb3JtSXRlbSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4aXN0c0luRGlzYWJsZWRTdGF0TWFwID0gaXNQcmVzZW50KHRoaXMuZGlzYWJsZWRTdGF0ZVtpdGVtLmluc3RhbmNlSWRdKTtcbiAgICBpZiAoIWV4aXN0c0luRGlzYWJsZWRTdGF0TWFwKSB7XG4gICAgICByZXR1cm4gaXNDb25kaXRpb25hbEl0ZW0oaXRlbSkgPyBpdGVtLmRpc2FibGVkIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkU3RhdGVbaXRlbS5pbnN0YW5jZUlkXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|