nuxeo-development-framework 5.3.6 → 5.3.7
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/nuxeo-development-framework.umd.js +575 -202
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +1 -2
- package/esm2015/lib/components/ndf-filters/base/base-aggregation-field.component.js +91 -0
- package/esm2015/lib/components/ndf-filters/base/base-checkbox-radio.component.js +66 -0
- package/esm2015/lib/components/ndf-filters/base/base-custom-field.component.js +46 -0
- package/esm2015/lib/components/ndf-filters/base/base-predicate-field.component.js +43 -0
- package/esm2015/lib/components/ndf-filters/base/base-value-accessor.component.js +34 -0
- package/esm2015/lib/components/ndf-filters/base/index.js +6 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/field-header.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.js +97 -0
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +43 -0
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-collapse-control/filter-collapse-control.component.js +44 -0
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-date-range/filter-date-range.component.js +89 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-empty-message.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-option-text/filter-option-text.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-options-sort/filter-options-sort.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-search-input/filter-search-input.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/html-dialog/html-dialog.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/components/__parts/index.js +10 -0
- package/esm2015/lib/components/ndf-filters/components/aggregation-autocomplete/aggregation-autocomplete.component.js +109 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-checkbox/aggregation-checkbox.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-custom/aggregation-custom.component.js +66 -0
- package/esm2015/lib/components/ndf-filters/components/aggregation-date-list/aggregation-date-list.component.js +219 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-radio/aggregation-radio.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-select/aggregation-select.component.js +83 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-switch/aggregation-switch.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/index.js +11 -0
- package/esm2015/lib/components/ndf-filters/components/predicate-date-input/predicate-date-input.component.js +146 -0
- package/esm2015/lib/components/ndf-filters/components/predicate-text-input/predicate-text-input.component.js +144 -0
- package/esm2015/lib/components/ndf-filters/constants/common.js +4 -0
- package/esm2015/lib/components/ndf-filters/constants/field.js +6 -0
- package/esm2015/lib/components/ndf-filters/constants/index.js +5 -0
- package/esm2015/lib/components/ndf-filters/constants/operators.js +18 -0
- package/esm2015/lib/components/ndf-filters/constants/sort.js +23 -0
- package/esm2015/lib/components/ndf-filters/constants/type.js +26 -0
- package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +78 -0
- package/esm2015/lib/components/ndf-filters/containers/base-field.js +62 -0
- package/esm2015/lib/components/ndf-filters/containers/custom-field/custom-field.component.js +73 -0
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/base-filters-panel.js +55 -0
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +127 -0
- package/esm2015/lib/components/ndf-filters/containers/index.js +5 -0
- package/esm2015/lib/components/ndf-filters/containers/predicate-field/predicate-field.component.js +71 -0
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user-switch.component.js +55 -0
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user.service.js +17 -0
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/user-types.js +2 -0
- package/esm2015/lib/components/ndf-filters/custom-components/index.js +2 -0
- package/esm2015/lib/components/ndf-filters/directives/autocomplete-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/checkbox-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/custom-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/date-template.directive.js +28 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/dropdown-label-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/dropdown-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/index.js +9 -0
- package/esm2015/lib/components/ndf-filters/directives/radio-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/switch-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/index.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/aggregation-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/aggregation-response.model.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/base-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/common.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/custom-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-config.model.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/autocomplete-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/checkbox-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/common-utils.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/custom-fields-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/custom-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/date-list-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/date-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/dropdown-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/index.js +12 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/input-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/radio-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/switch-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/filter-option.model.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/form-query-request.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/index.js +14 -0
- package/esm2015/lib/components/ndf-filters/models/operator-value-object.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/predicate-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/types-helper.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/value-object.model.js +12 -0
- package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +207 -0
- package/esm2015/lib/components/ndf-filters/pipes/autocomplete-filter.pipe.js +27 -0
- package/esm2015/lib/components/ndf-filters/pipes/check-condition.pipe.js +32 -0
- package/esm2015/lib/components/ndf-filters/pipes/filter.pipe.js +27 -0
- package/esm2015/lib/components/ndf-filters/pipes/hash-translate.pipe.js +52 -0
- package/esm2015/lib/components/ndf-filters/pipes/index.js +10 -0
- package/esm2015/lib/components/ndf-filters/pipes/localized-label.pipe.js +28 -0
- package/esm2015/lib/components/ndf-filters/pipes/roles-filters.pipe.js +31 -0
- package/esm2015/lib/components/ndf-filters/pipes/sanitizer.pipe.js +34 -0
- package/esm2015/lib/components/ndf-filters/pipes/sort.pipe.js +40 -0
- package/esm2015/lib/components/ndf-filters/pipes/tooltip.pipe.js +69 -0
- package/esm2015/lib/components/ndf-filters/public-api.js +12 -0
- package/esm2015/lib/components/ndf-filters/services/aggregation-field.service.js +105 -0
- package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +59 -0
- package/esm2015/lib/components/ndf-filters/services/filters-mapper.service.js +60 -0
- package/esm2015/lib/components/ndf-filters/services/filters-query.service.js +117 -0
- package/esm2015/lib/components/ndf-filters/services/index.js +5 -0
- package/esm2015/lib/components/ndf-filters/utility/index.js +4 -0
- package/esm2015/lib/components/ndf-filters/utility/nxql-query.js +53 -0
- package/esm2015/lib/components/ndf-filters/utility/nxql.js +47 -0
- package/esm2015/lib/components/ndf-filters/utility/object.js +42 -0
- package/esm2015/lib/components/ndf-tabs/tab.type.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +3 -3
- package/esm2015/lib/components/reports/ndf-reports/models/common.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +6 -5
- package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +1 -1
- package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/components/text-search/text-search.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +26 -25
- package/esm2015/lib/components/tables/ndf-table/models/payload-types.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/search.config.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-mode.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-options.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/types.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +5 -5
- package/esm2015/lib/components/tables/ndf-table/public-api.js +1 -2
- package/esm2015/lib/components/tables/ndf-table/services/index.js +1 -2
- package/esm2015/lib/shared/evaluator/evaluator.js +332 -0
- package/esm2015/lib/shared/evaluator/index.js +2 -0
- package/esm2015/lib/shared/evaluator/types.js +2 -0
- package/esm2015/lib/shared/models/index.js +2 -1
- package/esm2015/lib/shared/models/type-helpers.js +2 -0
- package/esm2015/public-api.js +2 -1
- package/fesm2015/nuxeo-development-framework.js +532 -169
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-aggregation-field.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-value-accessor.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-autocomplete-input/filter-autocomplete.service.d.ts +3 -2
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-date-range/filter-date-range.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/html-dialog/html-dialog.component.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/filters-panel/base-filters-panel.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/filters-panel/filters-panel.component.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/active-user-switch/active-user.service.d.ts +1 -1
- package/lib/components/ndf-filters/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/aggregation-field-config.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/base-field-config.d.ts +3 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/custom-field-config.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/autocomplete-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/checkbox-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/common-utils.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/custom-fields-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/date-list-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/date-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/dropdown-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/input-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/radio-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/switch-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/filter-option.model.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/index.d.ts +1 -0
- package/lib/components/ndf-filters/models/operator-value-object.d.ts +6 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/predicate-field-config.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/types-helper.d.ts +0 -11
- package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts +66 -0
- package/lib/components/ndf-filters/pipes/check-condition.pipe.d.ts +12 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/roles-filters.pipe.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel/index.d.ts → ndf-filters/public-api.d.ts} +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/aggregation-field.service.d.ts +1 -1
- package/lib/components/{tables/ndf-table → ndf-filters}/services/filters-mapper.service.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/utility/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/utils → ndf-filters/utility}/nxql-query.d.ts +4 -3
- package/lib/components/ndf-tabs/tab.type.d.ts +1 -1
- package/lib/components/reports/ndf-reports/base/base-report.d.ts +3 -3
- package/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.d.ts +1 -1
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +3 -2
- package/lib/components/reports/ndf-reports/models/common.d.ts +2 -2
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +1 -1
- package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +2 -2
- package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +1 -1
- package/lib/components/tables/ndf-table/components/text-search/text-search.component.d.ts +1 -1
- package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +3 -2
- package/lib/components/tables/ndf-table/models/payload-types.d.ts +0 -6
- package/lib/components/tables/ndf-table/models/search.config.d.ts +1 -1
- package/lib/components/tables/ndf-table/models/table-mode.d.ts +1 -1
- package/lib/components/tables/ndf-table/models/table-options.d.ts +1 -1
- package/lib/components/tables/ndf-table/models/types.d.ts +1 -1
- package/lib/components/tables/ndf-table/ndf-table.module.d.ts +2 -2
- package/lib/components/tables/ndf-table/public-api.d.ts +0 -1
- package/lib/components/tables/ndf-table/services/index.d.ts +0 -1
- package/lib/shared/evaluator/evaluator.d.ts +79 -0
- package/lib/shared/evaluator/index.d.ts +1 -0
- package/lib/shared/evaluator/types.d.ts +14 -0
- package/lib/shared/models/index.d.ts +1 -0
- package/lib/shared/models/type-helpers.d.ts +11 -0
- package/package.json +3 -2
- package/public-api.d.ts +1 -0
- package/src/docs/ndf-table.doc.md +287 -217
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-aggregation-field.component.js +0 -91
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-checkbox-radio.component.js +0 -66
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-custom-field.component.js +0 -46
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-predicate-field.component.js +0 -43
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-value-accessor.component.js +0 -34
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/index.js +0 -6
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.js +0 -97
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +0 -43
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-collapse-control/filter-collapse-control.component.js +0 -44
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-date-range/filter-date-range.component.js +0 -89
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/index.js +0 -10
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-autocomplete/aggregation-autocomplete.component.js +0 -109
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-custom/aggregation-custom.component.js +0 -66
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-date-list/aggregation-date-list.component.js +0 -219
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-select/aggregation-select.component.js +0 -83
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/index.js +0 -11
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/predicate-date-input/predicate-date-input.component.js +0 -146
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/predicate-text-input/predicate-text-input.component.js +0 -144
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/common.js +0 -4
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/field.js +0 -6
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/index.js +0 -5
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/operators.js +0 -18
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/sort.js +0 -23
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/type.js +0 -26
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/aggregation-field/aggregation-field.component.js +0 -78
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/base-field.js +0 -62
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/custom-field/custom-field.component.js +0 -73
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/base-filters-panel.js +0 -55
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/filters-panel.component.js +0 -122
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/index.js +0 -5
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/predicate-field/predicate-field.component.js +0 -71
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user-switch.component.js +0 -55
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user.service.js +0 -17
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/user-types.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/index.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/autocomplete-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/checkbox-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/custom-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/date-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/dropdown-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/index.js +0 -9
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/radio-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/switch-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/filters-panel.module.js +0 -205
- package/esm2015/lib/components/tables/ndf-table/filters-panel/index.js +0 -11
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/aggregation-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/aggregation-response.model.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/base-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/common.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/custom-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-config.model.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/autocomplete-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/checkbox-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/common-utils.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-fields-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/date-list-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/date-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/dropdown-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/index.js +0 -12
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/input-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/radio-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/switch-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/filter-option.model.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/form-query-request.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/index.js +0 -13
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/predicate-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/types-helper.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/value-object.model.js +0 -12
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/autocomplete-filter.pipe.js +0 -27
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/filter.pipe.js +0 -27
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/hash-translate.pipe.js +0 -52
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/index.js +0 -9
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/localized-label.pipe.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/roles-filters.pipe.js +0 -31
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/sanitizer.pipe.js +0 -34
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/sort.pipe.js +0 -40
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/tooltip.pipe.js +0 -69
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/aggregation-field.service.js +0 -105
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/dynamic-component-loader.service.js +0 -59
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/filters-query.service.js +0 -117
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/index.js +0 -4
- package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/index.js +0 -3
- package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/nxql.js +0 -47
- package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/object.js +0 -42
- package/esm2015/lib/components/tables/ndf-table/services/filters-mapper.service.js +0 -60
- package/esm2015/lib/components/tables/ndf-table/utils/index.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/utils/nxql-query.js +0 -52
- package/lib/components/tables/ndf-table/filters-panel/filters-panel.module.d.ts +0 -65
- package/lib/components/tables/ndf-table/utils/index.d.ts +0 -1
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-checkbox-radio.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-custom-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-predicate-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/field-header.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-collapse-control/filter-collapse-control.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-empty-message.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-option-text/filter-option-text.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-options-sort/filter-options-sort.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-search-input/filter-search-input.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-autocomplete/aggregation-autocomplete.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-checkbox/aggregation-checkbox.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-custom/aggregation-custom.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-date-list/aggregation-date-list.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-radio/aggregation-radio.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-select/aggregation-select.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-switch/aggregation-switch.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/predicate-date-input/predicate-date-input.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/predicate-text-input/predicate-text-input.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/common.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/field.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/operators.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/sort.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/type.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/aggregation-field/aggregation-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/base-field.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/custom-field/custom-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/predicate-field/predicate-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/active-user-switch/active-user-switch.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/active-user-switch/user-types.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/autocomplete-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/checkbox-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/custom-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/date-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/dropdown-label-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/dropdown-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/radio-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/switch-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/aggregation-response.model.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/common.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-config.model.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/custom-options.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/form-query-request.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/value-object.model.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/autocomplete-filter.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/filter.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/hash-translate.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/localized-label.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/sanitizer.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/sort.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/tooltip.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/dynamic-component-loader.service.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/filters-query.service.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/utility/nxql.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/utility/object.d.ts +0 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import _, { get, keys, set, trim, values } from 'lodash';
|
|
2
|
+
import stringHash from 'string-hash';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a secure context for function evaluation that prevents access to the window object.
|
|
5
|
+
* @returns {Record<string, any>} A secure context object with safe properties.
|
|
6
|
+
*/
|
|
7
|
+
function createSecureContext() {
|
|
8
|
+
// Create a secure context with only safe properties
|
|
9
|
+
const secureContext = {
|
|
10
|
+
// Add any safe globals here that should be accessible
|
|
11
|
+
console: {
|
|
12
|
+
log: console.log,
|
|
13
|
+
warn: console.warn,
|
|
14
|
+
error: console.error
|
|
15
|
+
},
|
|
16
|
+
// Add other safe objects/functions as needed
|
|
17
|
+
Math,
|
|
18
|
+
Date,
|
|
19
|
+
Number,
|
|
20
|
+
String,
|
|
21
|
+
Boolean,
|
|
22
|
+
Array,
|
|
23
|
+
Object,
|
|
24
|
+
JSON,
|
|
25
|
+
// Prevent access to window
|
|
26
|
+
window: undefined,
|
|
27
|
+
self: undefined,
|
|
28
|
+
globalThis: undefined
|
|
29
|
+
};
|
|
30
|
+
return secureContext;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A utility class for evaluating expressions, interpolating strings, and working with templates.
|
|
34
|
+
* This class provides static methods for dynamic evaluation of code, string interpolation,
|
|
35
|
+
* and template processing with caching capabilities.
|
|
36
|
+
*/
|
|
37
|
+
export class Evaluator {
|
|
38
|
+
/**
|
|
39
|
+
* Creates a function from a string or returns the function if already provided.
|
|
40
|
+
* Uses a secure context to prevent access to the window object by default.
|
|
41
|
+
* @param {string|Function} func - The function or string to convert to a function.
|
|
42
|
+
* @param {...any} params - The parameters to pass to the function.
|
|
43
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the evaluation.
|
|
44
|
+
* @returns {Function} - The resulting function.
|
|
45
|
+
*/
|
|
46
|
+
static evaluator(func, ...params) {
|
|
47
|
+
// Extract options if the last parameter is an options object
|
|
48
|
+
let options = {};
|
|
49
|
+
if (params.length > 0 &&
|
|
50
|
+
params[params.length - 1] &&
|
|
51
|
+
typeof params[params.length - 1] === 'object' &&
|
|
52
|
+
'securityMode' in params[params.length - 1]) {
|
|
53
|
+
options = params.pop();
|
|
54
|
+
}
|
|
55
|
+
if (typeof func === 'function') {
|
|
56
|
+
return func;
|
|
57
|
+
}
|
|
58
|
+
if (typeof params[0] === 'object') {
|
|
59
|
+
params = keys(params[0]);
|
|
60
|
+
}
|
|
61
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
62
|
+
const securityMode = options.securityMode || 'secure';
|
|
63
|
+
if (securityMode === 'unsafe') {
|
|
64
|
+
// In unsafe mode, create a function with access to all globals
|
|
65
|
+
return new Function(...params, func);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// In secure mode, create a function that runs in a restricted context
|
|
69
|
+
const secureFunction = new Function(...params, `
|
|
70
|
+
// Create a secure context with limited access
|
|
71
|
+
const secureContext = (${createSecureContext.toString()})();
|
|
72
|
+
|
|
73
|
+
// Prevent access to global objects
|
|
74
|
+
const window = undefined;
|
|
75
|
+
const self = undefined;
|
|
76
|
+
const globalThis = undefined;
|
|
77
|
+
|
|
78
|
+
// Run the function in the secure context
|
|
79
|
+
with (secureContext) {
|
|
80
|
+
${func}
|
|
81
|
+
}
|
|
82
|
+
`);
|
|
83
|
+
return secureFunction;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Replaces template expressions in a string with values from data.
|
|
88
|
+
* Supports function calls within templates and fallback values using || syntax.
|
|
89
|
+
* By default, ensures evaluation happens in a secure context to prevent access to window object.
|
|
90
|
+
* @param {string} rawTemplate - The template string containing expressions to interpolate.
|
|
91
|
+
* @param {Record<string, any>} data - The data object containing values to use for interpolation.
|
|
92
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the interpolation process.
|
|
93
|
+
* @returns {string} - The interpolated string with all expressions replaced with actual values.
|
|
94
|
+
*/
|
|
95
|
+
static interpolateString(rawTemplate, data, options = {}) {
|
|
96
|
+
if (!rawTemplate) {
|
|
97
|
+
return '';
|
|
98
|
+
}
|
|
99
|
+
if (typeof rawTemplate !== 'string') {
|
|
100
|
+
return rawTemplate.toString();
|
|
101
|
+
}
|
|
102
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
103
|
+
const securityMode = options.securityMode || 'secure';
|
|
104
|
+
// Create a secure data object if needed
|
|
105
|
+
const secureData = securityMode === 'unsafe'
|
|
106
|
+
? data
|
|
107
|
+
: Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), {
|
|
108
|
+
// Ensure these remain undefined
|
|
109
|
+
window: undefined, self: undefined, globalThis: undefined });
|
|
110
|
+
return rawTemplate.replace(/({{\s*(.*?)\s*}})/g, (match, $1, $2) => {
|
|
111
|
+
if ($2.indexOf('(') !== -1) {
|
|
112
|
+
return $2.replace(/([^(]+)\(([^)]+)\s*\);?/, (evalMatch, funcName, args) => {
|
|
113
|
+
funcName = trim(funcName);
|
|
114
|
+
const func = get(secureData, funcName);
|
|
115
|
+
if (func) {
|
|
116
|
+
if (args) {
|
|
117
|
+
const argsArray = args.split(',').map((arg) => {
|
|
118
|
+
arg = trim(arg);
|
|
119
|
+
if (arg.indexOf('"') === 0 || arg.indexOf("'") === 0) {
|
|
120
|
+
return arg.substring(1, arg.length - 1);
|
|
121
|
+
}
|
|
122
|
+
return get(secureData, arg);
|
|
123
|
+
});
|
|
124
|
+
return Evaluator.evaluate(func, argsArray, '', false, secureData, options);
|
|
125
|
+
}
|
|
126
|
+
return Evaluator.evaluate(func, [], '', false, secureData, options);
|
|
127
|
+
}
|
|
128
|
+
return '';
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
let dataPath = $2;
|
|
133
|
+
if ($2.indexOf('?') !== -1) {
|
|
134
|
+
dataPath = $2.replace(/\?\./g, '.');
|
|
135
|
+
}
|
|
136
|
+
const parts = dataPath.split('||').map((item) => item.trim());
|
|
137
|
+
let value = '';
|
|
138
|
+
let path = '';
|
|
139
|
+
for (let i = 0; i < parts.length; i++) {
|
|
140
|
+
path = parts[i];
|
|
141
|
+
value = get(secureData, path);
|
|
142
|
+
if (value) {
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (options.data) {
|
|
147
|
+
set(options.data, path, value);
|
|
148
|
+
}
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Performs an evaluation using the evaluation context of this component.
|
|
155
|
+
* By default, ensures evaluation happens in a secure context to prevent access to window object.
|
|
156
|
+
* @param {string|Function|object} func - The function or string to evaluate.
|
|
157
|
+
* @param {object} args - The arguments to pass to the evaluation.
|
|
158
|
+
* @param {string} ret - The name of the variable within the evaluation context to return.
|
|
159
|
+
* @param {boolean} interpolate - Determines if it should replace all {{ }} token references with actual data.
|
|
160
|
+
* @param {object} context - - The evaluation context.
|
|
161
|
+
* @param {EvaluatorOptions } options - The options to pass to the evaluation.
|
|
162
|
+
* @returns {*} - The result of the evaluation.
|
|
163
|
+
*/
|
|
164
|
+
static evaluate(func, args = {}, ret = 'show', interpolate = false, context = {}, options = {}) {
|
|
165
|
+
let returnVal = null;
|
|
166
|
+
const field = args.field ? args.field : { key: 'unknown' };
|
|
167
|
+
const fieldKey = field.key;
|
|
168
|
+
if (typeof func === 'string') {
|
|
169
|
+
if (ret) {
|
|
170
|
+
func = `var ${ret};${func};return ${ret}`;
|
|
171
|
+
}
|
|
172
|
+
if (interpolate) {
|
|
173
|
+
func = Evaluator.interpolate(func, args, options);
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
// Pass the security mode option to the evaluator
|
|
177
|
+
const evaluatorOptions = { securityMode: options.securityMode || 'secure' };
|
|
178
|
+
func = Evaluator.evaluator(func, args, context, evaluatorOptions);
|
|
179
|
+
args = Array.isArray(args) ? args : values(args);
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
console.warn(`An error occured within the custom function for ${fieldKey}`, err);
|
|
183
|
+
returnVal = null;
|
|
184
|
+
func = false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (typeof func === 'function') {
|
|
188
|
+
try {
|
|
189
|
+
returnVal = Evaluator.execute(func, args, context, options);
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
returnVal = null;
|
|
193
|
+
console.warn(`An error occured within custom function for ${fieldKey}`, err);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else if (func) {
|
|
197
|
+
console.warn(`Unknown function type for ${fieldKey}`);
|
|
198
|
+
}
|
|
199
|
+
return returnVal;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Executes a function with provided arguments and context.
|
|
203
|
+
* By default, ensures execution happens in a secure context to prevent access to window object.
|
|
204
|
+
* @param {Function} func - The function to execute.
|
|
205
|
+
* @param {any[]|Record<string, any>} args - The arguments to pass to the function, either as an array or object.
|
|
206
|
+
* @param {Record<string, any>} [context={}] - The context (this) to use when executing the function.
|
|
207
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the execution.
|
|
208
|
+
* @returns {any} - The result of the function execution.
|
|
209
|
+
*/
|
|
210
|
+
static execute(func, args, context = {}, options = {}) {
|
|
211
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
212
|
+
const securityMode = options.securityMode || 'secure';
|
|
213
|
+
if (securityMode === 'unsafe') {
|
|
214
|
+
// In unsafe mode, execute with the original context
|
|
215
|
+
return Array.isArray(args) ? func.apply(context, args) : func.call(context, args);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
// In secure mode, create a secure context by merging the provided context with our secure context
|
|
219
|
+
const secureContext = Object.assign(Object.assign(Object.assign({}, createSecureContext()), context), {
|
|
220
|
+
// Ensure these remain undefined even if they were in the provided context
|
|
221
|
+
window: undefined, self: undefined, globalThis: undefined });
|
|
222
|
+
// Execute the function with the secure context
|
|
223
|
+
return Array.isArray(args) ? func.apply(secureContext, args) : func.call(secureContext, args);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Creates a template function from a string with caching for performance.
|
|
228
|
+
* By default, ensures the template function executes in a secure context.
|
|
229
|
+
* @param {string} template - The template string to compile into a function.
|
|
230
|
+
* @param {string} [hash] - Optional hash to use as cache key. If not provided, a hash will be generated from the template.
|
|
231
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the template.
|
|
232
|
+
* @returns {Function|undefined} - The compiled template function, or undefined if compilation fails.
|
|
233
|
+
*/
|
|
234
|
+
static template(template, hash, options = {}) {
|
|
235
|
+
hash = hash || stringHash(template).toString();
|
|
236
|
+
// If hash contains options object, extract it
|
|
237
|
+
if (typeof hash === 'object' && 'securityMode' in hash) {
|
|
238
|
+
options = hash;
|
|
239
|
+
hash = stringHash(template).toString();
|
|
240
|
+
}
|
|
241
|
+
// Check if we have a cached version
|
|
242
|
+
const cacheKey = hash + (options.securityMode || 'secure');
|
|
243
|
+
if (Evaluator.cache[cacheKey]) {
|
|
244
|
+
return Evaluator.cache[cacheKey];
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
template = template.replace(/ctx\./g, '');
|
|
248
|
+
// Create the template function using lodash
|
|
249
|
+
const templateFunc = _.template(template, Evaluator.templateSettings);
|
|
250
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
251
|
+
const securityMode = options.securityMode || 'secure';
|
|
252
|
+
if (securityMode === 'unsafe') {
|
|
253
|
+
// In unsafe mode, return the original template function
|
|
254
|
+
return (Evaluator.cache[cacheKey] = templateFunc);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
// In secure mode, wrap the template function to ensure it runs in a secure context
|
|
258
|
+
const secureTemplateFunc = (data) => {
|
|
259
|
+
// Create a secure context for the template
|
|
260
|
+
const secureData = Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), {
|
|
261
|
+
// Ensure these remain undefined
|
|
262
|
+
window: undefined, self: undefined, globalThis: undefined });
|
|
263
|
+
return templateFunc(secureData);
|
|
264
|
+
};
|
|
265
|
+
// Cache and return the secure template function
|
|
266
|
+
return (Evaluator.cache[cacheKey] = secureTemplateFunc);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
console.warn('Error while processing template', err, template);
|
|
271
|
+
return undefined;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Interpolates a template with data, handling both function templates and string templates.
|
|
276
|
+
* By default, ensures interpolation happens in a secure context to prevent access to window object.
|
|
277
|
+
* @param {string|Function} rawTemplate - The template to interpolate, either as a string or a function.
|
|
278
|
+
* @param {Record<string, any>} data - The data object to use for interpolation.
|
|
279
|
+
* @param {EvaluatorOptions} options - Options for the interpolation process.
|
|
280
|
+
* @returns {string|any} - The result of the interpolation, typically a string but could be any type depending on the template.
|
|
281
|
+
*/
|
|
282
|
+
static interpolate(rawTemplate, data, options = {}) {
|
|
283
|
+
if (typeof rawTemplate === 'function') {
|
|
284
|
+
try {
|
|
285
|
+
// If the template is a function, execute it with the data
|
|
286
|
+
// We can't directly secure a provided function, but we can use execute
|
|
287
|
+
// to run it in a secure context if needed
|
|
288
|
+
if (options.securityMode !== 'unsafe') {
|
|
289
|
+
const secureData = Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), { window: undefined, self: undefined, globalThis: undefined });
|
|
290
|
+
return rawTemplate(secureData);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
return rawTemplate(data);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
console.warn('Error interpolating template', err, data);
|
|
298
|
+
return err.message;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
rawTemplate = String(rawTemplate);
|
|
302
|
+
// Pass the security mode option to the template method
|
|
303
|
+
const template = Evaluator.template(rawTemplate, undefined, options);
|
|
304
|
+
if (typeof template === 'function') {
|
|
305
|
+
try {
|
|
306
|
+
return template(data);
|
|
307
|
+
}
|
|
308
|
+
catch (err) {
|
|
309
|
+
console.warn('Error interpolating template', err, rawTemplate, data);
|
|
310
|
+
return err.message;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return template;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Cache for storing compiled template functions to improve performance.
|
|
318
|
+
* Keys are string hashes of the template, values are the compiled functions.
|
|
319
|
+
*/
|
|
320
|
+
Evaluator.cache = {};
|
|
321
|
+
/**
|
|
322
|
+
* Settings for template processing, defining regex patterns for different template operations.
|
|
323
|
+
* - interpolate: Pattern for variable interpolation ({{ variable }})
|
|
324
|
+
* - evaluate: Pattern for code evaluation ({% code %})
|
|
325
|
+
* - escape: Pattern for HTML escaping ({{{ variable }}})
|
|
326
|
+
*/
|
|
327
|
+
Evaluator.templateSettings = {
|
|
328
|
+
interpolate: /{{([\s\S]+?)}}/g,
|
|
329
|
+
evaluate: /\{%([\s\S]+?)%\}/g,
|
|
330
|
+
escape: /\{\{\{([\s\S]+?)\}\}\}/g
|
|
331
|
+
};
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL2V2YWx1YXRvci9ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3pELE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUlyQzs7O0dBR0c7QUFDSCxTQUFTLG1CQUFtQjtJQUMzQixvREFBb0Q7SUFDcEQsTUFBTSxhQUFhLEdBQXdCO1FBQzFDLHNEQUFzRDtRQUN0RCxPQUFPLEVBQUU7WUFDUixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDaEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNwQjtRQUNELDZDQUE2QztRQUM3QyxJQUFJO1FBQ0osSUFBSTtRQUNKLE1BQU07UUFDTixNQUFNO1FBQ04sT0FBTztRQUNQLEtBQUs7UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLFVBQVUsRUFBRSxTQUFTO0tBQ3JCLENBQUM7SUFFRixPQUFPLGFBQWEsQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBbUJyQjs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUF1QixFQUFFLEdBQUcsTUFBYTtRQUN6RCw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNuQyxJQUNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNqQixNQUFNLENBQUMsTUFB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LEVBQUUsQ0FBQztBQUU1Qzs7Ozs7R0FLRztBQUNJLDBCQUFnQixHQUFxQjtJQUMzQyxXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLFFBQVEsRUFBRSxtQkFBbUI7SUFDN0IsTUFBTSxFQUFFLHlCQUF5QjtDQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8sIHsgZ2V0LCBrZXlzLCBzZXQsIHRyaW0sIHZhbHVlcyB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCBzdHJpbmdIYXNoIGZyb20gJ3N0cmluZy1oYXNoJztcclxuXHJcbmltcG9ydCB7IEV2YWx1YXRvck9wdGlvbnMsIFRlbXBsYXRlU2V0dGluZ3MgfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgc2VjdXJlIGNvbnRleHQgZm9yIGZ1bmN0aW9uIGV2YWx1YXRpb24gdGhhdCBwcmV2ZW50cyBhY2Nlc3MgdG8gdGhlIHdpbmRvdyBvYmplY3QuXHJcbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBBIHNlY3VyZSBjb250ZXh0IG9iamVjdCB3aXRoIHNhZmUgcHJvcGVydGllcy5cclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVNlY3VyZUNvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblx0Ly8gQ3JlYXRlIGEgc2VjdXJlIGNvbnRleHQgd2l0aCBvbmx5IHNhZmUgcHJvcGVydGllc1xyXG5cdGNvbnN0IHNlY3VyZUNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcblx0XHQvLyBBZGQgYW55IHNhZmUgZ2xvYmFscyBoZXJlIHRoYXQgc2hvdWxkIGJlIGFjY2Vzc2libGVcclxuXHRcdGNvbnNvbGU6IHtcclxuXHRcdFx0bG9nOiBjb25zb2xlLmxvZyxcclxuXHRcdFx0d2FybjogY29uc29sZS53YXJuLFxyXG5cdFx0XHRlcnJvcjogY29uc29sZS5lcnJvclxyXG5cdFx0fSxcclxuXHRcdC8vIEFkZCBvdGhlciBzYWZlIG9iamVjdHMvZnVuY3Rpb25zIGFzIG5lZWRlZFxyXG5cdFx0TWF0aCxcclxuXHRcdERhdGUsXHJcblx0XHROdW1iZXIsXHJcblx0XHRTdHJpbmcsXHJcblx0XHRCb29sZWFuLFxyXG5cdFx0QXJyYXksXHJcblx0XHRPYmplY3QsXHJcblx0XHRKU09OLFxyXG5cdFx0Ly8gUHJldmVudCBhY2Nlc3MgdG8gd2luZG93XHJcblx0XHR3aW5kb3c6IHVuZGVmaW5lZCxcclxuXHRcdHNlbGY6IHVuZGVmaW5lZCxcclxuXHRcdGdsb2JhbFRoaXM6IHVuZGVmaW5lZFxyXG5cdH07XHJcblxyXG5cdHJldHVybiBzZWN1cmVDb250ZXh0O1xyXG59XHJcblxyXG4vKipcclxuICogQSB1dGlsaXR5IGNsYXNzIGZvciBldmFsdWF0aW5nIGV4cHJlc3Npb25zLCBpbnRlcnBvbGF0aW5nIHN0cmluZ3MsIGFuZCB3b3JraW5nIHdpdGggdGVtcGxhdGVzLlxyXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIHN0YXRpYyBtZXRob2RzIGZvciBkeW5hbWljIGV2YWx1YXRpb24gb2YgY29kZSwgc3RyaW5nIGludGVycG9sYXRpb24sXHJcbiAqIGFuZCB0ZW1wbGF0ZSBwcm9jZXNzaW5nIHdpdGggY2FjaGluZyBjYXBhYmlsaXRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXZhbHVhdG9yIHtcclxuXHQvKipcclxuXHQgKiBDYWNoZSBmb3Igc3RvcmluZyBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbnMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS5cclxuXHQgKiBLZXlzIGFyZSBzdHJpbmcgaGFzaGVzIG9mIHRoZSB0ZW1wbGF0ZSwgdmFsdWVzIGFyZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25zLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBjYWNoZTogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHRpbmdzIGZvciB0ZW1wbGF0ZSBwcm9jZXNzaW5nLCBkZWZpbmluZyByZWdleCBwYXR0ZXJucyBmb3IgZGlmZmVyZW50IHRlbXBsYXRlIG9wZXJhdGlvbnMuXHJcblx0ICogLSBpbnRlcnBvbGF0ZTogUGF0dGVybiBmb3IgdmFyaWFibGUgaW50ZXJwb2xhdGlvbiAoe3sgdmFyaWFibGUgfX0pXHJcblx0ICogLSBldmFsdWF0ZTogUGF0dGVybiBmb3IgY29kZSBldmFsdWF0aW9uICh7JSBjb2RlICV9KVxyXG5cdCAqIC0gZXNjYXBlOiBQYXR0ZXJuIGZvciBIVE1MIGVzY2FwaW5nICh7e3sgdmFyaWFibGUgfX19KVxyXG5cdCAqL1xyXG5cdHN0YXRpYyB0ZW1wbGF0ZVNldHRpbmdzOiBUZW1wbGF0ZVNldHRpbmdzID0ge1xyXG5cdFx0aW50ZXJwb2xhdGU6IC97eyhbXFxzXFxTXSs/KX19L2csXHJcblx0XHRldmFsdWF0ZTogL1xceyUoW1xcc1xcU10rPyklXFx9L2csXHJcblx0XHRlc2NhcGU6IC9cXHtcXHtcXHsoW1xcc1xcU10rPylcXH1cXH1cXH0vZ1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmcm9tIGEgc3RyaW5nIG9yIHJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGFscmVhZHkgcHJvdmlkZWQuXHJcblx0ICogVXNlcyBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHRoZSB3aW5kb3cgb2JqZWN0IGJ5IGRlZmF1bHQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IGZ1bmMgLSBUaGUgZnVuY3Rpb24gb3Igc3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBmdW5jdGlvbi5cclxuXHQgKiBAcGFyYW0gey4uLmFueX0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IC0gVGhlIHJlc3VsdGluZyBmdW5jdGlvbi5cclxuXHQgKi9cclxuXHRzdGF0aWMgZXZhbHVhdG9yKGZ1bmM6IHN0cmluZyB8IEZ1bmN0aW9uLCAuLi5wYXJhbXM6IGFueVtdKTogRnVuY3Rpb24ge1xyXG5cdFx0Ly8gRXh0cmFjdCBvcHRpb25zIGlmIHRoZSBsYXN0IHBhcmFtZXRlciBpcyBhbiBvcHRpb25zIG9iamVjdFxyXG5cdFx0bGV0IG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fTtcclxuXHRcdGlmIChcclxuXHRcdFx0cGFyYW1zLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0cGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSAmJlxyXG5cdFx0XHR0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ29iamVjdCcgJiZcclxuXHRcdFx0J3NlY3VyaXR5TW9kZScgaW4gcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXVxyXG5cdFx0KSB7XHJcblx0XHRcdG9wdGlvbnMgPSBwYXJhbXMucG9wKCkgYXMgRXZhbHVhdG9yT3B0aW9ucztcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0cmV0dXJuIGZ1bmM7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBwYXJhbXNbMF0gPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdHBhcmFtcyA9IGtleXMocGFyYW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIHNlY3VyZSBtb2RlIChkZWZhdWx0KSBvciB1bnNhZmUgbW9kZVxyXG5cdFx0Y29uc3Qgc2VjdXJpdHlNb2RlID0gb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZSc7XHJcblxyXG5cdFx0aWYgKHNlY3VyaXR5TW9kZSA9PT0gJ3Vuc2FmZScpIHtcclxuXHRcdFx0Ly8gSW4gdW5zYWZlIG1vZGUsIGNyZWF0ZSBhIGZ1bmN0aW9uIHdpdGggYWNjZXNzIHRvIGFsbCBnbG9iYWxzXHJcblx0XHRcdHJldHVybiBuZXcgRnVuY3Rpb24oLi4ucGFyYW1zLCBmdW5jIGFzIHN0cmluZyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBJbiBzZWN1cmUgbW9kZSwgY3JlYXRlIGEgZnVuY3Rpb24gdGhhdCBydW5zIGluIGEgcmVzdHJpY3RlZCBjb250ZXh0XHJcblx0XHRcdGNvbnN0IHNlY3VyZUZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdC4uLnBhcmFtcyxcclxuXHRcdFx0XHRgXHJcblx0XHRcdFx0Ly8gQ3JlYXRlIGEgc2VjdXJlIGNvbnRleHQgd2l0aCBsaW1pdGVkIGFjY2Vzc1xyXG5cdFx0XHRcdGNvbnN0IHNlY3VyZUNvbnRleHQgPSAoJHtjcmVhdGVTZWN1cmVDb250ZXh0LnRvU3RyaW5nKCl9KSgpO1xyXG5cclxuXHRcdFx0XHQvLyBQcmV2ZW50IGFjY2VzcyB0byBnbG9iYWwgb2JqZWN0c1xyXG5cdFx0XHRcdGNvbnN0IHdpbmRvdyA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRjb25zdCBzZWxmID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdGNvbnN0IGdsb2JhbFRoaXMgPSB1bmRlZmluZWQ7XHJcblxyXG5cdFx0XHRcdC8vIFJ1biB0aGUgZnVuY3Rpb24gaW4gdGhlIHNlY3VyZSBjb250ZXh0XHJcblx0XHRcdFx0d2l0aCAoc2VjdXJlQ29udGV4dCkge1xyXG5cdFx0XHRcdFx0JHtmdW5jIGFzIHN0cmluZ31cclxuXHRcdFx0XHR9XHJcblx0XHRcdGBcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdHJldHVybiBzZWN1cmVGdW5jdGlvbjtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcGxhY2VzIHRlbXBsYXRlIGV4cHJlc3Npb25zIGluIGEgc3RyaW5nIHdpdGggdmFsdWVzIGZyb20gZGF0YS5cclxuXHQgKiBTdXBwb3J0cyBmdW5jdGlvbiBjYWxscyB3aXRoaW4gdGVtcGxhdGVzIGFuZCBmYWxsYmFjayB2YWx1ZXMgdXNpbmcgfHwgc3ludGF4LlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgZXZhbHVhdGlvbiBoYXBwZW5zIGluIGEgc2VjdXJlIGNvbnRleHQgdG8gcHJldmVudCBhY2Nlc3MgdG8gd2luZG93IG9iamVjdC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcmF3VGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgc3RyaW5nIGNvbnRhaW5pbmcgZXhwcmVzc2lvbnMgdG8gaW50ZXJwb2xhdGUuXHJcblx0ICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGNvbnRhaW5pbmcgdmFsdWVzIHRvIHVzZSBmb3IgaW50ZXJwb2xhdGlvbi5cclxuXHQgKiBAcGFyYW0ge0V2YWx1YXRvck9wdGlvbnN9IFtvcHRpb25zPXt9XSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnRlcnBvbGF0aW9uIHByb2Nlc3MuXHJcblx0ICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgaW50ZXJwb2xhdGVkIHN0cmluZyB3aXRoIGFsbCBleHByZXNzaW9ucyByZXBsYWNlZCB3aXRoIGFjdHVhbCB2YWx1ZXMuXHJcblx0ICovXHJcblx0c3RhdGljIGludGVycG9sYXRlU3RyaW5nKHJhd1RlbXBsYXRlOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXJhd1RlbXBsYXRlKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHRcdGlmICh0eXBlb2YgcmF3VGVtcGxhdGUgIT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybiAocmF3VGVtcGxhdGUgYXMgYW55KS50b1N0cmluZygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGlmIHdlIHNob3VsZCB1c2Ugc2VjdXJlIG1vZGUgKGRlZmF1bHQpIG9yIHVuc2FmZSBtb2RlXHJcblx0XHRjb25zdCBzZWN1cml0eU1vZGUgPSBvcHRpb25zLnNlY3VyaXR5TW9kZSB8fCAnc2VjdXJlJztcclxuXHJcblx0XHQvLyBDcmVhdGUgYSBzZWN1cmUgZGF0YSBvYmplY3QgaWYgbmVlZGVkXHJcblx0XHRjb25zdCBzZWN1cmVEYXRhID1cclxuXHRcdFx0c2VjdXJpdHlNb2RlID09PSAndW5zYWZlJ1xyXG5cdFx0XHRcdD8gZGF0YVxyXG5cdFx0XHRcdDoge1xyXG5cdFx0XHRcdFx0XHQuLi5jcmVhdGVTZWN1cmVDb250ZXh0KCksXHJcblx0XHRcdFx0XHRcdC4uLmRhdGEsXHJcblx0XHRcdFx0XHRcdC8vIEVuc3VyZSB0aGVzZSByZW1haW4gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHRcdHdpbmRvdzogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdGdsb2JhbFRoaXM6IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0fTtcclxuXHJcblx0XHRyZXR1cm4gcmF3VGVtcGxhdGUucmVwbGFjZSgvKHt7XFxzKiguKj8pXFxzKn19KS9nLCAobWF0Y2g6IHN0cmluZywgJDE6IHN0cmluZywgJDI6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRpZiAoJDIuaW5kZXhPZignKCcpICE9PSAtMSkge1xyXG5cdFx0XHRcdHJldHVybiAkMi5yZXBsYWNlKC8oW14oXSspXFwoKFteKV0rKVxccypcXCk7Py8sIChldmFsTWF0Y2g6IHN0cmluZywgZnVuY05hbWU6IHN0cmluZywgYXJnczogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRmdW5jTmFtZSA9IHRyaW0oZnVuY05hbWUpO1xyXG5cdFx0XHRcdFx0Y29uc3QgZnVuYyA9IGdldChzZWN1cmVEYXRhLCBmdW5jTmFtZSk7XHJcblx0XHRcdFx0XHRpZiAoZnVuYykge1xyXG5cdFx0XHRcdFx0XHRpZiAoYXJncykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGFyZ3NBcnJheSA9IGFyZ3Muc3BsaXQoJywnKS5tYXAoKGFyZzogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRhcmcgPSB0cmltKGFyZyk7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXJnLmluZGV4T2YoJ1wiJykgPT09IDAgfHwgYXJnLmluZGV4T2YoXCInXCIpID09PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmcuc3Vic3RyaW5nKDEsIGFyZy5sZW5ndGggLSAxKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBnZXQoc2VjdXJlRGF0YSwgYXJnKTtcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gRXZhbHVhdG9yLmV2YWx1YXRlKGZ1bmMsIGFyZ3NBcnJheSwgJycsIGZhbHNlLCBzZWN1cmVEYXRhLCBvcHRpb25zKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gRXZhbHVhdG9yLmV2YWx1YXRlKGZ1bmMsIFtdLCAnJywgZmFsc2UsIHNlY3VyZURhdGEsIG9wdGlvbnMpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGxldCBkYXRhUGF0aCA9ICQyO1xyXG5cdFx0XHRcdGlmICgkMi5pbmRleE9mKCc/JykgIT09IC0xKSB7XHJcblx0XHRcdFx0XHRkYXRhUGF0aCA9ICQyLnJlcGxhY2UoL1xcP1xcLi9nLCAnLicpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBwYXJ0cyA9IGRhdGFQYXRoLnNwbGl0KCd8fCcpLm1hcCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtLnRyaW0oKSk7XHJcblx0XHRcdFx0bGV0IHZhbHVlID0gJyc7XHJcblx0XHRcdFx0bGV0IHBhdGggPSAnJztcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRwYXRoID0gcGFydHNbaV07XHJcblx0XHRcdFx0XHR2YWx1ZSA9IGdldChzZWN1cmVEYXRhLCBwYXRoKTtcclxuXHRcdFx0XHRcdGlmICh2YWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuZGF0YSkge1xyXG5cdFx0XHRcdFx0c2V0KG9wdGlvbnMuZGF0YSwgcGF0aCwgdmFsdWUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGVyZm9ybXMgYW4gZXZhbHVhdGlvbiB1c2luZyB0aGUgZXZhbHVhdGlvbiBjb250ZXh0IG9mIHRoaXMgY29tcG9uZW50LlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgZXZhbHVhdGlvbiBoYXBwZW5zIGluIGEgc2VjdXJlIGNvbnRleHQgdG8gcHJldmVudCBhY2Nlc3MgdG8gd2luZG93IG9iamVjdC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbnxvYmplY3R9IGZ1bmMgLSBUaGUgZnVuY3Rpb24gb3Igc3RyaW5nIHRvIGV2YWx1YXRlLlxyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBldmFsdWF0aW9uLlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSByZXQgLSBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgd2l0aGluIHRoZSBldmFsdWF0aW9uIGNvbnRleHQgdG8gcmV0dXJuLlxyXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gaW50ZXJwb2xhdGUgLSBEZXRlcm1pbmVzIGlmIGl0IHNob3VsZCByZXBsYWNlIGFsbCB7eyB9fSB0b2tlbiByZWZlcmVuY2VzIHdpdGggYWN0dWFsIGRhdGEuXHJcblx0ICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQgLSAgIC0gVGhlIGV2YWx1YXRpb24gY29udGV4dC5cclxuXHQgKiBAcGFyYW0ge0V2YWx1YXRvck9wdGlvbnMgfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKiBAcmV0dXJucyB7Kn0gLSBUaGUgcmVzdWx0IG9mIHRoZSBldmFsdWF0aW9uLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBldmFsdWF0ZShcclxuXHRcdGZ1bmM6IGFueSxcclxuXHRcdGFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcclxuXHRcdHJldDogc3RyaW5nID0gJ3Nob3cnLFxyXG5cdFx0aW50ZXJwb2xhdGU6IGJvb2xlYW4gPSBmYWxzZSxcclxuXHRcdGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcclxuXHRcdG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fVxyXG5cdCk6IGFueSB7XHJcblx0XHRsZXQgcmV0dXJuVmFsID0gbnVsbDtcclxuXHJcblx0XHRjb25zdCBmaWVsZCA9IGFyZ3MuZmllbGQgPyBhcmdzLmZpZWxkIDogeyBrZXk6ICd1bmtub3duJyB9O1xyXG5cdFx0Y29uc3QgZmllbGRLZXkgPSBmaWVsZC5rZXk7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBmdW5jID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRpZiAocmV0KSB7XHJcblx0XHRcdFx0ZnVuYyA9IGB2YXIgJHtyZXR9OyR7ZnVuY307cmV0dXJuICR7cmV0fWA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChpbnRlcnBvbGF0ZSkge1xyXG5cdFx0XHRcdGZ1bmMgPSBFdmFsdWF0b3IuaW50ZXJwb2xhdGUoZnVuYywgYXJncywgb3B0aW9ucyk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Ly8gUGFzcyB0aGUgc2VjdXJpdHkgbW9kZSBvcHRpb24gdG8gdGhlIGV2YWx1YXRvclxyXG5cdFx0XHRcdGNvbnN0IGV2YWx1YXRvck9wdGlvbnMgPSB7IHNlY3VyaXR5TW9kZTogb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZScgfTtcclxuXHRcdFx0XHRmdW5jID0gRXZhbHVhdG9yLmV2YWx1YXRvcihmdW5jLCBhcmdzLCBjb250ZXh0LCBldmFsdWF0b3JPcHRpb25zKTtcclxuXHRcdFx0XHRhcmdzID0gQXJyYXkuaXNBcnJheShhcmdzKSA/IGFyZ3MgOiB2YWx1ZXMoYXJncyk7XHJcblx0XHRcdH0gY2F0Y2ggKGVycikge1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybihgQW4gZXJyb3Igb2NjdXJlZCB3aXRoaW4gdGhlIGN1c3RvbSBmdW5jdGlvbiBmb3IgJHtmaWVsZEtleX1gLCBlcnIpO1xyXG5cdFx0XHRcdHJldHVyblZhbCA9IG51bGw7XHJcblx0XHRcdFx0ZnVuYyA9IGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0cmV0dXJuVmFsID0gRXZhbHVhdG9yLmV4ZWN1dGUoZnVuYywgYXJncywgY29udGV4dCwgb3B0aW9ucyk7XHJcblx0XHRcdH0gY2F0Y2ggKGVycikge1xyXG5cdFx0XHRcdHJldHVyblZhbCA9IG51bGw7XHJcblx0XHRcdFx0Y29uc29sZS53YXJuKGBBbiBlcnJvciBvY2N1cmVkIHdpdGhpbiBjdXN0b20gZnVuY3Rpb24gZm9yICR7ZmllbGRLZXl9YCwgZXJyKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChmdW5jKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybihgVW5rbm93biBmdW5jdGlvbiB0eXBlIGZvciAke2ZpZWxkS2V5fWApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJldHVyblZhbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2l0aCBwcm92aWRlZCBhcmd1bWVudHMgYW5kIGNvbnRleHQuXHJcblx0ICogQnkgZGVmYXVsdCwgZW5zdXJlcyBleGVjdXRpb24gaGFwcGVucyBpbiBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHdpbmRvdyBvYmplY3QuXHJcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyAtIFRoZSBmdW5jdGlvbiB0byBleGVjdXRlLlxyXG5cdCAqIEBwYXJhbSB7YW55W118UmVjb3JkPHN0cmluZywgYW55Pn0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24sIGVpdGhlciBhcyBhbiBhcnJheSBvciBvYmplY3QuXHJcblx0ICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbY29udGV4dD17fV0gLSBUaGUgY29udGV4dCAodGhpcykgdG8gdXNlIHdoZW4gZXhlY3V0aW5nIHRoZSBmdW5jdGlvbi5cclxuXHQgKiBAcGFyYW0ge0V2YWx1YXRvck9wdGlvbnN9IFtvcHRpb25zPXt9XSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBleGVjdXRpb24uXHJcblx0ICogQHJldHVybnMge2FueX0gLSBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBleGVjdXRpb24uXHJcblx0ICovXHJcblx0c3RhdGljIGV4ZWN1dGUoXHJcblx0XHRmdW5jOiBGdW5jdGlvbixcclxuXHRcdGFyZ3M6IGFueVtdIHwgUmVjb3JkPHN0cmluZywgYW55PixcclxuXHRcdGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcclxuXHRcdG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fVxyXG5cdCk6IGFueSB7XHJcblx0XHQvLyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIHNlY3VyZSBtb2RlIChkZWZhdWx0KSBvciB1bnNhZmUgbW9kZVxyXG5cdFx0Y29uc3Qgc2VjdXJpdHlNb2RlID0gb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZSc7XHJcblxyXG5cdFx0aWYgKHNlY3VyaXR5TW9kZSA9PT0gJ3Vuc2FmZScpIHtcclxuXHRcdFx0Ly8gSW4gdW5zYWZlIG1vZGUsIGV4ZWN1dGUgd2l0aCB0aGUgb3JpZ2luYWwgY29udGV4dFxyXG5cdFx0XHRyZXR1cm4gQXJyYXkuaXNBcnJheShhcmdzKSA/IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncykgOiBmdW5jLmNhbGwoY29udGV4dCwgYXJncyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBJbiBzZWN1cmUgbW9kZSwgY3JlYXRlIGEgc2VjdXJlIGNvbnRleHQgYnkgbWVyZ2luZyB0aGUgcHJvdmlkZWQgY29udGV4dCB3aXRoIG91ciBzZWN1cmUgY29udGV4dFxyXG5cdFx0XHRjb25zdCBzZWN1cmVDb250ZXh0ID0ge1xyXG5cdFx0XHRcdC4uLmNyZWF0ZVNlY3VyZUNvbnRleHQoKSxcclxuXHRcdFx0XHQuLi5jb250ZXh0LFxyXG5cdFx0XHRcdC8vIEVuc3VyZSB0aGVzZSByZW1haW4gdW5kZWZpbmVkIGV2ZW4gaWYgdGhleSB3ZXJlIGluIHRoZSBwcm92aWRlZCBjb250ZXh0XHJcblx0XHRcdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRcdFx0c2VsZjogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdGdsb2JhbFRoaXM6IHVuZGVmaW5lZFxyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0Ly8gRXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc2VjdXJlIGNvbnRleHRcclxuXHRcdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJncykgPyBmdW5jLmFwcGx5KHNlY3VyZUNvbnRleHQsIGFyZ3MpIDogZnVuYy5jYWxsKHNlY3VyZUNvbnRleHQsIGFyZ3MpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIHRlbXBsYXRlIGZ1bmN0aW9uIGZyb20gYSBzdHJpbmcgd2l0aCBjYWNoaW5nIGZvciBwZXJmb3JtYW5jZS5cclxuXHQgKiBCeSBkZWZhdWx0LCBlbnN1cmVzIHRoZSB0ZW1wbGF0ZSBmdW5jdGlvbiBleGVjdXRlcyBpbiBhIHNlY3VyZSBjb250ZXh0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZW1wbGF0ZSAtIFRoZSB0ZW1wbGF0ZSBzdHJpbmcgdG8gY29tcGlsZSBpbnRvIGEgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtoYXNoXSAtIE9wdGlvbmFsIGhhc2ggdG8gdXNlIGFzIGNhY2hlIGtleS4gSWYgbm90IHByb3ZpZGVkLCBhIGhhc2ggd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbSB0aGUgdGVtcGxhdGUuXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgdGVtcGxhdGUuXHJcblx0ICogQHJldHVybnMge0Z1bmN0aW9ufHVuZGVmaW5lZH0gLSBUaGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24sIG9yIHVuZGVmaW5lZCBpZiBjb21waWxhdGlvbiBmYWlscy5cclxuXHQgKi9cclxuXHRzdGF0aWMgdGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZywgaGFzaD86IHN0cmluZywgb3B0aW9uczogRXZhbHVhdG9yT3B0aW9ucyA9IHt9KTogRnVuY3Rpb24gfCB1bmRlZmluZWQge1xyXG5cdFx0aGFzaCA9IGhhc2ggfHwgc3RyaW5nSGFzaCh0ZW1wbGF0ZSkudG9TdHJpbmcoKTtcclxuXHJcblx0XHQvLyBJZiBoYXNoIGNvbnRhaW5zIG9wdGlvbnMgb2JqZWN0LCBleHRyYWN0IGl0XHJcblx0XHRpZiAodHlwZW9mIGhhc2ggPT09ICdvYmplY3QnICYmICdzZWN1cml0eU1vZGUnIGluIGhhc2gpIHtcclxuXHRcdFx0b3B0aW9ucyA9IGhhc2ggYXMgdW5rbm93biBhcyBFdmFsdWF0b3JPcHRpb25zO1xyXG5cdFx0XHRoYXNoID0gc3RyaW5nSGFzaCh0ZW1wbGF0ZSkudG9TdHJpbmcoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY2FjaGVkIHZlcnNpb25cclxuXHRcdGNvbnN0IGNhY2hlS2V5ID0gaGFzaCArIChvcHRpb25zLnNlY3VyaXR5TW9kZSB8fCAnc2VjdXJlJyk7XHJcblx0XHRpZiAoRXZhbHVhdG9yLmNhY2hlW2NhY2hlS2V5XSkge1xyXG5cdFx0XHRyZXR1cm4gRXZhbHVhdG9yLmNhY2hlW2NhY2hlS2V5XTtcclxuXHRcdH1cclxuXHJcblx0XHR0cnkge1xyXG5cdFx0XHR0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoL2N0eFxcLi9nLCAnJyk7XHJcblxyXG5cdFx0XHQvLyBDcmVhdGUgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIHVzaW5nIGxvZGFzaFxyXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZUZ1bmMgPSBfLnRlbXBsYXRlKHRlbXBsYXRlLCBFdmFsdWF0b3IudGVtcGxhdGVTZXR0aW5ncyk7XHJcblxyXG5cdFx0XHQvLyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIHNlY3VyZSBtb2RlIChkZWZhdWx0KSBvciB1bnNhZmUgbW9kZVxyXG5cdFx0XHRjb25zdCBzZWN1cml0eU1vZGUgPSBvcHRpb25zLnNlY3VyaXR5TW9kZSB8fCAnc2VjdXJlJztcclxuXHJcblx0XHRcdGlmIChzZWN1cml0eU1vZGUgPT09ICd1bnNhZmUnKSB7XHJcblx0XHRcdFx0Ly8gSW4gdW5zYWZlIG1vZGUsIHJldHVybiB0aGUgb3JpZ2luYWwgdGVtcGxhdGUgZnVuY3Rpb25cclxuXHRcdFx0XHRyZXR1cm4gKEV2YWx1YXRvci5jYWNoZVtjYWNoZUtleV0gPSB0ZW1wbGF0ZUZ1bmMpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vIEluIHNlY3VyZSBtb2RlLCB3cmFwIHRoZSB0ZW1wbGF0ZSBmdW5jdGlvbiB0byBlbnN1cmUgaXQgcnVucyBpbiBhIHNlY3VyZSBjb250ZXh0XHJcblx0XHRcdFx0Y29uc3Qgc2VjdXJlVGVtcGxhdGVGdW5jID0gKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgc2VjdXJlIGNvbnRleHQgZm9yIHRoZSB0ZW1wbGF0ZVxyXG5cdFx0XHRcdFx0Y29uc3Qgc2VjdXJlRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0Li4uY3JlYXRlU2VjdXJlQ29udGV4dCgpLFxyXG5cdFx0XHRcdFx0XHQuLi5kYXRhLFxyXG5cdFx0XHRcdFx0XHQvLyBFbnN1cmUgdGhlc2UgcmVtYWluIHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0XHR3aW5kb3c6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRcdFx0c2VsZjogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWRcclxuXHRcdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdFx0cmV0dXJuIHRlbXBsYXRlRnVuYyhzZWN1cmVEYXRhKTtcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvLyBDYWNoZSBhbmQgcmV0dXJuIHRoZSBzZWN1cmUgdGVtcGxhdGUgZnVuY3Rpb25cclxuXHRcdFx0XHRyZXR1cm4gKEV2YWx1YXRvci5jYWNoZVtjYWNoZUtleV0gPSBzZWN1cmVUZW1wbGF0ZUZ1bmMpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdFcnJvciB3aGlsZSBwcm9jZXNzaW5nIHRlbXBsYXRlJywgZXJyLCB0ZW1wbGF0ZSk7XHJcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbnRlcnBvbGF0ZXMgYSB0ZW1wbGF0ZSB3aXRoIGRhdGEsIGhhbmRsaW5nIGJvdGggZnVuY3Rpb24gdGVtcGxhdGVzIGFuZCBzdHJpbmcgdGVtcGxhdGVzLlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgaW50ZXJwb2xhdGlvbiBoYXBwZW5zIGluIGEgc2VjdXJlIGNvbnRleHQgdG8gcHJldmVudCBhY2Nlc3MgdG8gd2luZG93IG9iamVjdC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbn0gcmF3VGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgdG8gaW50ZXJwb2xhdGUsIGVpdGhlciBhcyBhIHN0cmluZyBvciBhIGZ1bmN0aW9uLlxyXG5cdCAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCB0byB1c2UgZm9yIGludGVycG9sYXRpb24uXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIGludGVycG9sYXRpb24gcHJvY2Vzcy5cclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfGFueX0gLSBUaGUgcmVzdWx0IG9mIHRoZSBpbnRlcnBvbGF0aW9uLCB0eXBpY2FsbHkgYSBzdHJpbmcgYnV0IGNvdWxkIGJlIGFueSB0eXBlIGRlcGVuZGluZyBvbiB0aGUgdGVtcGxhdGUuXHJcblx0ICovXHJcblx0c3RhdGljIGludGVycG9sYXRlKFxyXG5cdFx0cmF3VGVtcGxhdGU6IHN0cmluZyB8IEZ1bmN0aW9uLFxyXG5cdFx0ZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcclxuXHRcdG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fVxyXG5cdCk6IHN0cmluZyB8IGFueSB7XHJcblx0XHRpZiAodHlwZW9mIHJhd1RlbXBsYXRlID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Ly8gSWYgdGhlIHRlbXBsYXRlIGlzIGEgZnVuY3Rpb24sIGV4ZWN1dGUgaXQgd2l0aCB0aGUgZGF0YVxyXG5cdFx0XHRcdC8vIFdlIGNhbid0IGRpcmVjdGx5IHNlY3VyZSBhIHByb3ZpZGVkIGZ1bmN0aW9uLCBidXQgd2UgY2FuIHVzZSBleGVjdXRlXHJcblx0XHRcdFx0Ly8gdG8gcnVuIGl0IGluIGEgc2VjdXJlIGNvbnRleHQgaWYgbmVlZGVkXHJcblx0XHRcdFx0aWYgKG9wdGlvbnMuc2VjdXJpdHlNb2RlICE9PSAndW5zYWZlJykge1xyXG5cdFx0XHRcdFx0Y29uc3Qgc2VjdXJlRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0Li4uY3JlYXRlU2VjdXJlQ29udGV4dCgpLFxyXG5cdFx0XHRcdFx0XHQuLi5kYXRhLFxyXG5cdFx0XHRcdFx0XHR3aW5kb3c6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRcdFx0c2VsZjogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWRcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRyZXR1cm4gcmF3VGVtcGxhdGUoc2VjdXJlRGF0YSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiByYXdUZW1wbGF0ZShkYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gY2F0Y2ggKGVycikge1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybignRXJyb3IgaW50ZXJwb2xhdGluZyB0ZW1wbGF0ZScsIGVyciwgZGF0YSk7XHJcblx0XHRcdFx0cmV0dXJuIChlcnIgYXMgRXJyb3IpLm1lc3NhZ2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyYXdUZW1wbGF0ZSA9IFN0cmluZyhyYXdUZW1wbGF0ZSk7XHJcblx0XHQvLyBQYXNzIHRoZSBzZWN1cml0eSBtb2RlIG9wdGlvbiB0byB0aGUgdGVtcGxhdGUgbWV0aG9kXHJcblx0XHRjb25zdCB0ZW1wbGF0ZSA9IEV2YWx1YXRvci50ZW1wbGF0ZShyYXdUZW1wbGF0ZSwgdW5kZWZpbmVkLCBvcHRpb25zKTtcclxuXHJcblx0XHRpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0cmV0dXJuIHRlbXBsYXRlKGRhdGEpO1xyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zb2xlLndhcm4oJ0Vycm9yIGludGVycG9sYXRpbmcgdGVtcGxhdGUnLCBlcnIsIHJhd1RlbXBsYXRlLCBkYXRhKTtcclxuXHRcdFx0XHRyZXR1cm4gKGVyciBhcyBFcnJvcikubWVzc2FnZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0ZW1wbGF0ZTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './evaluator';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ldmFsdWF0b3InO1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG4gIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG4gICAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuICAgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuICAgKi9cclxuICBzZWN1cml0eU1vZGU/OiAnc2VjdXJlJyB8ICd1bnNhZmUnO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgVGVtcGxhdGVTZXR0aW5ncyA9IHtcclxuXHRpbnRlcnBvbGF0ZTogUmVnRXhwO1xyXG5cdGV2YWx1YXRlOiBSZWdFeHA7XHJcblx0ZXNjYXBlOiBSZWdFeHA7XHJcbn07XHJcbiJdfQ==
|
|
@@ -2,4 +2,5 @@ export * from './mapper/index';
|
|
|
2
2
|
export * from './nuxeo-response.model';
|
|
3
3
|
export * from './task.model';
|
|
4
4
|
export * from './ndf-request.model';
|
|
5
|
-
|
|
5
|
+
export * from './type-helpers';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21hcHBlci9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbnV4ZW8tcmVzcG9uc2UubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Rhc2subW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL25kZi1yZXF1ZXN0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi90eXBlLWhlbHBlcnMnXHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL21vZGVscy90eXBlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gQmFzaWMgVXRpbGl0eSBUeXBlc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmV4cG9ydCB0eXBlIFN0cmluZ09yTnVtYmVyID0gc3RyaW5nIHwgbnVtYmVyO1xyXG5leHBvcnQgdHlwZSBTdHJpY3RPbWl0PEssIFQgZXh0ZW5kcyBrZXlvZiBLPiA9IE9taXQ8SywgVD47XHJcbmV4cG9ydCB0eXBlIExvY2FsaXplZFZhbHVlID0geyBhcjogc3RyaW5nOyBlbjogc3RyaW5nIH07XHJcbmV4cG9ydCB0eXBlIFByZXR0aWZ5PFQ+ID0ge1xyXG4gIFtrIGluIGtleW9mIFRdOiBUW2tdO1xyXG59ICYge307XHJcblxyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gU3BlY2lhbCBTdHJpbmcgVHlwZXNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5leHBvcnQgdHlwZSBFdmFsdWF0ZWRTdHJpbmcgPSBgJHtzdHJpbmd9e3ske3N0cmluZ319fSR7c3RyaW5nfWA7XHJcbmV4cG9ydCB0eXBlIFRyYW5zbGF0ZUtleSA9IHN0cmluZztcclxuIl19
|
package/esm2015/public-api.js
CHANGED
|
@@ -251,4 +251,5 @@ export * from './lib/components/reports/ndf-reports';
|
|
|
251
251
|
export * from './lib/components/skeleton';
|
|
252
252
|
export * from './lib/components/tables';
|
|
253
253
|
export * from './lib/components/ndf-config-editor';
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLHdCQUF3QjtBQUN4QixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywrR0FBK0csQ0FBQztBQUU5SCxjQUFjLHVJQUF1SSxDQUFDO0FBQ3RKLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyx5RUFBeUUsQ0FBQztBQUN4RixjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMs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LENBQUM7QUFDbEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELDBCQUEwQjtBQUMxQixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsT0FBTztBQUNQLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9tb2RlbHMvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvc2VydmljZXMvaW5kZXgnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBjb21wb25lbnRzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29tbWVudHMvY29tbWVudHMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb21tZW50cy9jb21wb25lbnRzL2NvbW1lbnRzLWRhc2hsZXQvY29tbWVudHMtZGFzaGxldC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbW1lbnRzL2NvbXBvbmVudHMvZWRpdC1kZWxldGUtbW9kYWwvZWRpdC1kZWxldGUtbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtLWNhbGxlci9jb25maXJtLWNhbGxlci5kaWFsb2cnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm0tY2FsbGVyL2NvbmZpcm0tY2FsbGVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybS1jYWxsZXIvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vY29ycmVzcG9uZGVuY2UtcmVsYXRpb24uY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi1jcmVhdGUtZm9ybS9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi1jcmVhdGUtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL2NvbXBvbmVudHMvdmVyc2lvbnMvdmVyc2lvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL3NlcnZpY2VzL2NvcnJlc3BvbmRlbmNlLXJlYWxhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9zZXJ2aWNlcy92aWV3ZXItZmlsZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3JlYXRlLWVudGl0eS9jcmVhdGUtZW50aXR5Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3JlYXRlLWVudGl0eS9jcmVhdGUtZW50aXR5L2NyZWF0ZS1lbnRpdHkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdHMtdGFncy9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXRhZ3MvY29ycmVzcG9uZGVuY2UtdGFncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N0cy10YWdzL2N0cy10YWdzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3RzLXRhZ3Mvc2VydmljZXMvdGFncy1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3VzdG9tLXRvYXN0ci9jdXN0b20tdG9hc3RyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2F0dGFjaG1lbnRzLWxpc3QvYXR0YWNobWVudHMtbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2F0dGFjaG1lbnRzLXBhZ2UtcHJvdmlkZXIvYXR0YWNobWVudHMtcGFnZS1wcm92aWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LWxpc3QvZG9jdW1lbnRzLWxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1zY2FuL2RvY3VtZW50LXNjYW4uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1zY2FuL2RvY3VtZW50LXNjYW4uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvZG9jdW1lbnQtdXBsb2FkL2RvY3VtZW50LXVwbG9hZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50cy9kb2N1bWVudHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29uc3RhbnRzL2RvY3VtZW50LXRlbXBsYXRlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbnN0YW50cy9kb2N1bWVudHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9kb2N1bWVudHMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvc2VydmljZXMvZG9jdW1lbnQtdGVtcGxhdGVzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9zZXJ2aWNlcy9kb2N1bWVudHMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0L2R5bmFtaWMtY2hhcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWNoYXJ0L3NlcnZpY2VzL2NoYXJ0LWRhdGEuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2RlcGFydG1lbnQtZm9ybS9kZXBhcnRtZW50LWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tYm9vbGl0ZW0vZHluYW1pYy1mb3JtLWJvb2xpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWJ1aWxkZXIvZHluYW1pYy1mb3JtLWJ1aWxkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tY2hlY2tib3gtaXRlbS9keW5hbWljLWZvcm0tY2hlY2tib3gtaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1kYXRlaXRlbS9keW5hbWljLWZvcm0tZGF0ZWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tZGVwYXJ0bWVudC9keW5hbWljLWZvcm0tZGVwYXJ0bWVudC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50L3NlcnZpY2VzL2RlcGFydG1lbnQtYXBpLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0taGlqcmktZGF0ZWl0ZW0vZHluYW1pYy1mb3JtLWhpanJpLWRhdGVpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLW1hcGl0ZW0vZHluYW1pYy1mb3JtLW1hcGl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tb3B0aW9ucy9keW5hbWljLWZvcm0tb3B0aW9ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdGFnL2R5bmFtaWMtZm9ybS1zZWxlY3QtdGFnLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2VyLWZpbHRlci9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXItZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXJzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0vZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbS9keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS10ZXh0YXJlYS9keW5hbWljLWZvcm0tdGV4dGFyZWEuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdGV4dGl0ZW0vZHluYW1pYy1mb3JtLXRleHRpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdC9kcm9wZG93bi10cmVldmlldy1zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdmlld2VyL2R5bmFtaWMtZm9ybS12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtL2R5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2Zvcm0tYnVpbGRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1zZWFyY2gvZHluYW1pYy1zZWFyY2gubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9ib29sZWFuLXZpZXdlci9ib29sZWFuLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9jdXN0b20tZG9jdW1lbnQtdmlld2VyL2N1c3RvbS1kb2N1bWVudC12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvY3VzdG9tLXBwLXZpZXdlci9jdXN0b20tcHAtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2N1dG9tZS12b2Mtdmlld2VyL2N1dG9tZS12b2Mtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2RhdGEtdmlld2VyL2RhdGEtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2RhdGUtdmlld2VyL2RhdGUtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2RlcGFydG1lbnQtdmlld2VyL2RlcGFydG1lbnQtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2Ryb3Bkb3duLXZpZXdlci9kcm9wZG93bi12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZHluYW1pYy12aWV3Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2xpc3Qtdmlld2VyL2xpc3Qtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9hZGQtdG8tY29sbGVjdGlvbi9hZGQtdG8tY29sbGVjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY2xpcGJvYXJkL2NsaXBib2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY29weS9jb3B5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGUtZGlyZWN0b3J5L2NyZWF0ZS1kaXJlY3RvcnkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2NyZWF0ZS1tb2RhbC9jcmVhdGUtbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2NyZWF0aW9uLXR5cGUvY3JlYXRpb24tdHlwZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvZGVsZXRlL2RlbGV0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvZm9sZGVyLW1vZGFsL2ZvbGRlci1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvbG9hbi1yZXF1ZXN0L2xvYW4tcmVxdWVzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvbW92ZS9tb3ZlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9wdWJsaXNoLWRpYWxvZy9wdWJsaXNoLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvcmVuYW1lL3JlbmFtZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2Nhbi1tb2RhbC9zY2FuLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaGFyZS1kaWFsb2cvc2hhcmUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaWRlcGFuZWwvc2lkZXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy90ZW1wbGF0ZS1tb2RhbC90ZW1wbGF0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvdHJhbnNmZXItZG9jL3RyYW5zZmVyLWRvYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvdXBkYXRlLW1vZGFsL3VwZGF0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2RpcmVjdGl2ZXMvZmlsZS1ncmlkLWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2ZpbGUtbWFuYWdlci5hYnN0cmFjdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvZmlsZS1tYW5nZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZGF0ZXBpY2tlci9oaWpyaS1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9uZ3gtaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9zZXJ2aWNlcy9kYXRlLWZvcm1hdHRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9zZXJ2aWNlcy9kYXRlLWhlbHBlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvY29tcG9uZW50cy9hY3Rpdml0eS1saW5lL2FjdGl2aXR5LWxpbmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvbGF0ZXN0LWFjdGl2aXR5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF0ZXN0LWFjdGl2aXR5L2NvbXBvbmVudHMvc2luZ2xlLWFjdGl2aXR5L3NpbmdsZS1hY3Rpdml0eS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xhdGVzdC1hY3Rpdml0eS9sYXRlc3QtYWN0aXZpdHkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZi10cm9uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9wZGZ0cm9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9wZGZ0cm9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vc2lsZW50LXBkZnRyb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlcnMtY2FyZC91c2Vycy1jYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlcnMtY2FyZC91c2Vycy1jYXJkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmlld2VyLWxvZy9jb21wb25lbnRzL3ZpZXdlci1sb2cvdmlld2VyLWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZpZXdlci1sb2cvdmlld2VyLWxvZy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvaW50ZXJmYWNlcy9vcC10eXBlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9jYWJ1bGFyeS9zZXJ2aWNlcy92b2NhYnVsYXJ5LWFwaS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2NhYnVsYXJ5L3RyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3QvdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvdm9jYWJ1bGFyeS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvdm9jYWJ1bGFyeS92b2NhYnVsYXJ5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvY29yZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLmFkYXB0ZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGlzcGxheS1zdWl0YWJsZS1pY29uL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9kaXNwbGF5LXN1aXRhYmxlLWljb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uL2ljb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0dGFjaG1lbnQtaXRlbS9hdHRhY2htZW50LWl0ZW0ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdHRhY2htZW50LWl0ZW0vYXR0YWNobWVudC1pdGVtL2F0dGFjaG1lbnQtaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50L3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnQvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnRzL2RlcGFydG1lbnQtbWFuYWdlbWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudC9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudHMvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnRzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3BlbGwtY2hlY2tlci1maWVsZC9zcGVsbC1jaGVja2VyLWZpZWxkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3BlbGwtY2hlY2tlci1maWVsZC9zcGVsbC1jaGVja2VyLXRleHQtZmllbGQvc3BlbGwtY2hlY2tlci10ZXh0LWZpZWxkLmNvbXBvbmVudCc7XHJcblxyXG4vLyBzZXJ2aWNlcyBmcm9tIGZpbGUgbWFuZ2VyXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9kaWFsb2ctbWFuZ21lbnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9maWxlLW1hbmFnZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9nbG9iYWwtcGRmdHJvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL21haW5mb2xkZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9wdWJsaXNoaW5nLWRvY3VtZW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvcmVjZW50bHktdmlld2VkLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvc2hhcmVkLWRvY3Muc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy91cGxvYWQtZmlsZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3VwbG9hZC1tYW5hZ21lbnQuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjdGl2aXRpZXMtbG9nL2FjdGl2aXRpZXMtbG9nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWN0aXZpdGllcy1sb2cvYWN0aXZpdGllcy1sb2cvYWN0aXZpdGllcy1sb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXRhYnMvZHluYW1pYy10YWJzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy10YWJzL2R5bmFtaWMtdGFicy9keW5hbWljLXRhYnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tdXRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIvbXVsdGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlci9tdWx0aXBsZS1keW5hbWljLWZvcm0tdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbXV0aXBsZS1keW5hbWljLWZvcm0tdmlld2VyL211dGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMtdGVtcGxhdGUvcGVybWlzc2lvbnMtdGVtcGxhdGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlci91c2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlci91c2VyL3VzZXIuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXR0YWNobWVudC1tb2RhbC9hdHRhY2htZW50LW1vZGFsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXR0YWNobWVudC1tb2RhbC9hdHRhY2htZW50cy9hdHRhY2htZW50cy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaWFncmFtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9hc3RzJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1maWVsZHMtcmVuZGVyZXIvZHluYW1pYy1maWVsZHMtcmVuZGVyZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZpZWxkcy1yZW5kZXJlci9keW5hbWljLWZpZWxkcy1yZW5kZXJlci9keW5hbWljLWZpZWxkcy1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBmcm9tIHNoYXJlZCBtb2R1bGVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9pdGVtLWxpc3QvaXRlbS1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL25vLWRhdGEvbm8tZGF0YS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9yZWFkLW1vcmUvcmVhZC1tb3JlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL3NlYXJjaC1hdXRvY29tcGxldGUvc2VhcmNoLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvdXNlci1jYXJkL3VzZXItY2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvbGlicmFyeVNoYXJlZC5tb2R1bGUnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBmcm9tIHNoYXJlZCBzZXJ2aWNlcyBtb2R1bGVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2dsb2JhbC1hZG1pbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3NoYXJlZC1zZXJ2aWNlcy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2FwaXMtZXJyb3JzLW1lc3NhZ2VzLnNlcnZpY2UnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBmcm9tIGNvcmUgbW9kdWxlXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9lbnVtcy9sYW5ndWFnZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9lbnYvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9hY3Rpb24uZXh0ZW5zaW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2NvbXBvbmVudC1yZWdpc3Rlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9leHRlbnNpb24vZXh0ZW5pb24tdXRpbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9leHRlbnNpb24tZWxlbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2V4dGVuc2lvbi1sb2FkZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2V4dGVuc2lvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9pbml0aWFsaXphdGlvbi9pbml0aWFsaXphdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9sb2NhbFN0b3JhZy9sb2NhbC1zdG9yYWcuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvcm9sZXMvcm9sZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxvYWRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdXRpbGl0aWVzL21vbWVudC1kYXRlLWFkYXB0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3V0aWxpdGllcy91dGlsaXR5LnNlcnZpY2UnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBwaXBlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9maWxlLXNpemUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2hpanJpLWRhdGUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2xvY2FsaXplZC1kYXRlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9tdWx0aS12YWx1ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGlwZXMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvc2VjdXJlLWh0bWwucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3NlY3VyZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvdGltZS1hZ28ucGlwZSc7XHJcblxyXG4vL2V4cG9ydCBhbGwgZGlyZWN0aXZlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvYXBwLWhhcy1yb2xlL2FwcC1oYXMtcm9sZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvY2xpY2tPdXRTaWRlL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL2RpcmVjdGl2ZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvZHJhZy1hbmQtZHJvcC9kcmFnLWFuZC1kcm9wLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvcnRsL3NldC1kaXItcnRsLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9ydGwvc2V0LXJ0bC5kaXJlY3RpdmUnO1xyXG5cclxuLy9leHBvcnQgYWxsIGNvbmZpZ3VyYXRpb25cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWd1cmF0aW9uL2hlbHBlcnMvYXBwLWluaXRpYWxpemVyJztcclxuXHJcbi8vIEV2YWxcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL3Blcm1pc3Npb25zL2V2YWx1YXRvcnMuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbW1lbnRzL3NlcnZpY2VzL2NvbW1lbnQtYXBpLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2RpcmVjdGl2ZXMnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdG9rZW5zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uZGYtZGF0ZXBpY2tlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmRmLXBhbmVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uZGYtdGFicyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm8tZGF0YS1mb3VuZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVwb3J0cy9jaGFydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NrZWxldG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yJztcclxuIl19
|
|
254
|
+
export * from './lib/components/ndf-filters';
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLHdCQUF3QjtBQUN4QixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywrR0FBK0csQ0FBQztBQUU5SCxjQUFjLHVJQUF1SSxDQUFDO0FBQ3RKLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyx5RUFBeUUsQ0FBQztBQUN4RixjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMs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LENBQUM7QUFDbEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELDBCQUEwQjtBQUMxQixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsT0FBTztBQUNQLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw4QkFBOEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBudXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmtcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL21vZGVscy9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9zZXJ2aWNlcy9pbmRleCc7XHJcblxyXG4vLyBleHBvcnQgYWxsIGNvbXBvbmVudHNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJkL2NhcmQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb21tZW50cy9jb21tZW50cy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbW1lbnRzL2NvbXBvbmVudHMvY29tbWVudHMtZGFzaGxldC9jb21tZW50cy1kYXNobGV0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29tbWVudHMvY29tcG9uZW50cy9lZGl0LWRlbGV0ZS1tb2RhbC9lZGl0LWRlbGV0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm0tY2FsbGVyL2NvbmZpcm0tY2FsbGVyLmRpYWxvZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybS1jYWxsZXIvY29uZmlybS1jYWxsZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtLWNhbGxlci9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uLWNyZWF0ZS1mb3JtL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uLWNyZWF0ZS1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vY29tcG9uZW50cy92ZXJzaW9ucy92ZXJzaW9ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vc2VydmljZXMvY29ycmVzcG9uZGVuY2UtcmVhbGF0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL3NlcnZpY2VzL3ZpZXdlci1maWxlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcmVhdGUtZW50aXR5L2NyZWF0ZS1lbnRpdHkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcmVhdGUtZW50aXR5L2NyZWF0ZS1lbnRpdHkvY3JlYXRlLWVudGl0eS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N0cy10YWdzL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtdGFncy9jb3JyZXNwb25kZW5jZS10YWdzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3RzLXRhZ3MvY3RzLXRhZ3MubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdHMtdGFncy9zZXJ2aWNlcy90YWdzLWFwaS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdXN0b20tdG9hc3RyL2N1c3RvbS10b2FzdHIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvYXR0YWNobWVudHMtbGlzdC9hdHRhY2htZW50cy1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvYXR0YWNobWVudHMtcGFnZS1wcm92aWRlci9hdHRhY2htZW50cy1wYWdlLXByb3ZpZGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvZG9jdW1lbnQtbGlzdC9kb2N1bWVudHMtbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LXNjYW4vZG9jdW1lbnQtc2Nhbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LXNjYW4vZG9jdW1lbnQtc2Nhbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC11cGxvYWQvZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvZG9jdW1lbnRzL2RvY3VtZW50cy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb25zdGFudHMvZG9jdW1lbnQtdGVtcGxhdGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29uc3RhbnRzL2RvY3VtZW50cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2RvY3VtZW50cy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9zZXJ2aWNlcy9kb2N1bWVudC10ZW1wbGF0ZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL3NlcnZpY2VzL2RvY3VtZW50cy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWNoYXJ0L2R5bmFtaWMtY2hhcnQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWNoYXJ0L2R5bmFtaWMtY2hhcnQvZHluYW1pYy1jaGFydC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtY2hhcnQvc2VydmljZXMvY2hhcnQtZGF0YS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZGVwYXJ0bWVudC1mb3JtL2RlcGFydG1lbnQtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1ib29saXRlbS9keW5hbWljLWZvcm0tYm9vbGl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tYnVpbGRlci9keW5hbWljLWZvcm0tYnVpbGRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1jaGVja2JveC1pdGVtL2R5bmFtaWMtZm9ybS1jaGVja2JveC1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWRhdGVpdGVtL2R5bmFtaWMtZm9ybS1kYXRlaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50L2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWRlcGFydG1lbnQvc2VydmljZXMvZGVwYXJ0bWVudC1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWZpZWxkL2R5bmFtaWMtZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbS9keW5hbWljLWZvcm0taGlqcmktZGF0ZWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tbWFwaXRlbS9keW5hbWljLWZvcm0tbWFwaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1vcHRpb25zL2R5bmFtaWMtZm9ybS1vcHRpb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdC10YWcvZHluYW1pYy1mb3JtLXNlbGVjdC10YWcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXItZmlsdGVyL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlci1maWx0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXJzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tc2VsZWN0aXRlbS9keW5hbWljLWZvcm0tc2VsZWN0aXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtL2R5bmFtaWMtZm9ybS1zbGlkZS10b2dnbGVpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXRleHRhcmVhL2R5bmFtaWMtZm9ybS10ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS10ZXh0aXRlbS9keW5hbWljLWZvcm0tdGV4dGl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdHJlZXZpZXctc2VsZWN0L2Ryb3Bkb3duLXRyZWV2aWV3LXNlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS12aWV3ZXIvZHluYW1pYy1mb3JtLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0vZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0vZm9ybS1idWlsZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2Jvb2xlYW4tdmlld2VyL2Jvb2xlYW4tdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2N1c3RvbS1kb2N1bWVudC12aWV3ZXIvY3VzdG9tLWRvY3VtZW50LXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9jdXN0b20tcHAtdmlld2VyL2N1c3RvbS1wcC12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvY3V0b21lLXZvYy12aWV3ZXIvY3V0b21lLXZvYy12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZGF0YS12aWV3ZXIvZGF0YS12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZGF0ZS12aWV3ZXIvZGF0ZS12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZGVwYXJ0bWVudC12aWV3ZXIvZGVwYXJ0bWVudC12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZHJvcGRvd24tdmlld2VyL2Ryb3Bkb3duLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9keW5hbWljLXZpZXcubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvbGlzdC12aWV3ZXIvbGlzdC12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2FkZC10by1jb2xsZWN0aW9uL2FkZC10by1jb2xsZWN0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jb3B5L2NvcHkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2NyZWF0ZS1kaXJlY3RvcnkvY3JlYXRlLWRpcmVjdG9yeS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY3JlYXRlLW1vZGFsL2NyZWF0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY3JlYXRpb24tdHlwZS9jcmVhdGlvbi10eXBlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9kZWxldGUvZGVsZXRlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9mb2xkZXItbW9kYWwvZm9sZGVyLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9sb2FuLXJlcXVlc3QvbG9hbi1yZXF1ZXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9tb3ZlL21vdmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3B1Ymxpc2gtZGlhbG9nL3B1Ymxpc2gtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9yZW5hbWUvcmVuYW1lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zY2FuLW1vZGFsL3NjYW4tbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3NoYXJlLWRpYWxvZy9zaGFyZS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3NpZGVwYW5lbC9zaWRlcGFuZWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3RlbXBsYXRlLW1vZGFsL3RlbXBsYXRlLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy90cmFuc2Zlci1kb2MvdHJhbnNmZXItZG9jLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy91cGRhdGUtbW9kYWwvdXBkYXRlLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvZGlyZWN0aXZlcy9maWxlLWdyaWQtaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvZmlsZS1tYW5hZ2VyLmFic3RyYWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9maWxlLW1hbmdlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvZ3JlZ29yaWFuLWRhdGVwaWNrZXIvZ3JlZ29yaWFuLWRhdGVwaWNrZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9oaWpyaS1kYXRlcGlja2VyL2hpanJpLWRhdGVwaWNrZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL25neC1oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL3NlcnZpY2VzL2RhdGUtZm9ybWF0dGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL3NlcnZpY2VzL2RhdGUtaGVscGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xhdGVzdC1hY3Rpdml0eS9jb21wb25lbnRzL2FjdGl2aXR5LWxpbmUvYWN0aXZpdHktbGluZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xhdGVzdC1hY3Rpdml0eS9jb21wb25lbnRzL2xhdGVzdC1hY3Rpdml0eS9sYXRlc3QtYWN0aXZpdHkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvY29tcG9uZW50cy9zaW5nbGUtYWN0aXZpdHkvc2luZ2xlLWFjdGl2aXR5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF0ZXN0LWFjdGl2aXR5L2xhdGVzdC1hY3Rpdml0eS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmLXRyb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZGYtdHJvbi9wZGZ0cm9uL3BkZnRyb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZGYtdHJvbi9wZGZ0cm9uL3BkZnRyb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9zaWxlbnQtcGRmdHJvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy91c2Vycy1jYXJkL3VzZXJzLWNhcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy91c2Vycy1jYXJkL3VzZXJzLWNhcmQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92aWV3ZXItbG9nL2NvbXBvbmVudHMvdmlld2VyLWxvZy92aWV3ZXItbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmlld2VyLWxvZy92aWV3ZXItbG9nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9jYWJ1bGFyeS9pbnRlcmZhY2VzL29wLXR5cGUuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2NhYnVsYXJ5L3NlcnZpY2VzL3ZvY2FidWxhcnktYXBpLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdC90cmFuc2xhdGVkLXZvY2FidWxhcnktc2VsZWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9jYWJ1bGFyeS92b2NhYnVsYXJ5Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9jYWJ1bGFyeS92b2NhYnVsYXJ5L3ZvY2FidWxhcnkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9jb3JlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9maWxlLW1hbmFnZXIuYWRhcHRlcic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9kaXNwbGF5LXN1aXRhYmxlLWljb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uL2Rpc3BsYXktc3VpdGFibGUtaWNvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9kaXNwbGF5LXN1aXRhYmxlLWljb24vaWNvbi5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXR0YWNobWVudC1pdGVtL2F0dGFjaG1lbnQtaXRlbS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0dGFjaG1lbnQtaXRlbS9hdHRhY2htZW50LWl0ZW0vYXR0YWNobWVudC1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnQvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudC9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudHMvZGVwYXJ0bWVudC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50L3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50cy9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zcGVsbC1jaGVja2VyLWZpZWxkL3NwZWxsLWNoZWNrZXItZmllbGQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zcGVsbC1jaGVja2VyLWZpZWxkL3NwZWxsLWNoZWNrZXItdGV4dC1maWVsZC9zcGVsbC1jaGVja2VyLXRleHQtZmllbGQuY29tcG9uZW50JztcclxuXHJcbi8vIHNlcnZpY2VzIGZyb20gZmlsZSBtYW5nZXJcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2RpYWxvZy1tYW5nbWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2dsb2JhbC1wZGZ0cm9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvbWFpbmZvbGRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3B1Ymxpc2hpbmctZG9jdW1lbnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9yZWNlbnRseS12aWV3ZWQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9zaGFyZWQtZG9jcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3VwbG9hZC1maWxlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvdXBsb2FkLW1hbmFnbWVudC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWN0aXZpdGllcy1sb2cvYWN0aXZpdGllcy1sb2cubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hY3Rpdml0aWVzLWxvZy9hY3Rpdml0aWVzLWxvZy9hY3Rpdml0aWVzLWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFicy9keW5hbWljLXRhYnMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXRhYnMvZHluYW1pYy10YWJzL2R5bmFtaWMtdGFicy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL211dGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlci9tdWx0aXBsZS1keW5hbWljLWZvcm0tdmlld2VyL211bHRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tdXRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIvbXV0aXBsZS1keW5hbWljLWZvcm0tdmlld2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbnMvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy9hZGQtcGVybWlzc2lvbnMtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy10ZW1wbGF0ZS9wZXJtaXNzaW9ucy10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy91c2VyL3VzZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy91c2VyL3VzZXIvdXNlci5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdHRhY2htZW50LW1vZGFsL2F0dGFjaG1lbnQtbW9kYWwubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdHRhY2htZW50LW1vZGFsL2F0dGFjaG1lbnRzL2F0dGFjaG1lbnRzLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ub3RpZmljYXRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b2FzdHMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZpZWxkcy1yZW5kZXJlci9keW5hbWljLWZpZWxkcy1yZW5kZXJlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZmllbGRzLXJlbmRlcmVyL2R5bmFtaWMtZmllbGRzLXJlbmRlcmVyL2R5bmFtaWMtZmllbGRzLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcblxyXG4vLyBleHBvcnQgYWxsIGZyb20gc2hhcmVkIG1vZHVsZVxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL2l0ZW0tbGlzdC9pdGVtLWxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvbm8tZGF0YS9uby1kYXRhLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL3JlYWQtbW9yZS9yZWFkLW1vcmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2VhcmNoLWF1dG9jb21wbGV0ZS9zZWFyY2gtYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy91c2VyLWNhcmQvdXNlci1jYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9saWJyYXJ5U2hhcmVkLm1vZHVsZSc7XHJcblxyXG4vLyBleHBvcnQgYWxsIGZyb20gc2hhcmVkIHNlcnZpY2VzIG1vZHVsZVxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvZ2xvYmFsLWFkbWluLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvc2hhcmVkLXNlcnZpY2VzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvYXBpcy1lcnJvcnMtbWVzc2FnZXMuc2VydmljZSc7XHJcblxyXG4vLyBleHBvcnQgYWxsIGZyb20gY29yZSBtb2R1bGVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9hZGFwdGVycy9hZGFwdGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2VudW1zL2xhbmd1YWdlLmVudW0nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2Vudi9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvbW9kZWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy8nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2NhbGxBcGkvY2FsbC1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2FjdGlvbi5leHRlbnNpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9leHRlbnNpb24vY29tcG9uZW50LXJlZ2lzdGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9leHRlbmlvbi11dGlscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2V4dGVuc2lvbi1lbGVtZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9leHRlbnNpb24vZXh0ZW5zaW9uLWxvYWRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9leHRlbnNpb24vZXh0ZW5zaW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2luaXRpYWxpemF0aW9uL2luaXRpYWxpemF0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2xvY2FsU3RvcmFnL2xvY2FsLXN0b3JhZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9yb2xlcy9yb2xlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGUtbG9hZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL3VzZXIvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS91dGlsaXRpZXMvbW9tZW50LWRhdGUtYWRhcHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdXRpbGl0aWVzL3V0aWxpdHkuc2VydmljZSc7XHJcblxyXG4vLyBleHBvcnQgYWxsIHBpcGVzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvaGlqcmktZGF0ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvbG9jYWxpemVkLWRhdGUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL211bHRpLXZhbHVlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9waXBlcy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9zZWN1cmUtaHRtbC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvc2VjdXJlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy90aW1lLWFnby5waXBlJztcclxuXHJcbi8vZXhwb3J0IGFsbCBkaXJlY3RpdmVzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9hcHAtaGFzLXJvbGUvYXBwLWhhcy1yb2xlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9jbGlja091dFNpZGUvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvZGlyZWN0aXZlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9kcmFnLWFuZC1kcm9wL2RyYWctYW5kLWRyb3AuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9ydGwvc2V0LWRpci1ydGwuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL3J0bC9zZXQtcnRsLmRpcmVjdGl2ZSc7XHJcblxyXG4vL2V4cG9ydCBhbGwgY29uZmlndXJhdGlvblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWd1cmF0aW9uL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZ3VyYXRpb24vaGVscGVycy9hcHAtaW5pdGlhbGl6ZXInO1xyXG5cclxuLy8gRXZhbFxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvcGVybWlzc2lvbnMvZXZhbHVhdG9ycy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29tbWVudHMvc2VydmljZXMvY29tbWVudC1hcGkuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvZGlyZWN0aXZlcydcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS90b2tlbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25kZi1kYXRlcGlja2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uZGYtcGFuZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25kZi10YWJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uby1kYXRhLWZvdW5kJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yZXBvcnRzL2NoYXJ0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2tlbGV0b24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhYmxlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25kZi1maWx0ZXJzJ1xyXG4iXX0=
|