@provoly/dashboard 0.22.5 → 0.22.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/README.md +0 -2
- package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +2 -2
- package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +8 -4
- package/admin/components/admin-classes/store/admin-class.effects.d.ts +2 -2
- package/admin/components/admin-fields/store/fields.effects.d.ts +2 -2
- package/admin/store/admin.effects.d.ts +3 -3
- package/components/metadata-editor/store/metadata.effects.d.ts +6 -6
- package/esm2022/admin/admin-routing.module.mjs +5 -5
- package/esm2022/admin/admin.module.mjs +6 -6
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +11 -10
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +47 -33
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +5 -5
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +5 -5
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +5 -5
- package/esm2022/admin/components/admin-links/store/links.effects.mjs +5 -5
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +6 -6
- package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +5 -5
- package/esm2022/admin/components/admin-title/admin-title.component.mjs +5 -5
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +5 -5
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +5 -5
- package/esm2022/admin/components/admin.component.mjs +5 -5
- package/esm2022/admin/components/association/association.component.mjs +4 -4
- package/esm2022/admin/store/admin.effects.mjs +5 -5
- package/esm2022/admin/store/admin.reducer.mjs +1 -1
- package/esm2022/admin/store/admin.selectors.mjs +1 -1
- package/esm2022/admin/store/admin.service.mjs +5 -5
- package/esm2022/components/card/card.component.mjs +20 -20
- package/esm2022/components/card/card.module.mjs +5 -5
- package/esm2022/components/checkbox/checkbox.component.mjs +5 -5
- package/esm2022/components/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/components/color-picker/color-picker.component.mjs +5 -5
- package/esm2022/components/color-picker/color-picker.module.mjs +5 -5
- package/esm2022/components/expand-panel/expand-panel.component.mjs +7 -7
- package/esm2022/components/expand-panel/expand-panel.module.mjs +5 -5
- package/esm2022/components/filter/filter.module.mjs +5 -5
- package/esm2022/components/filter/filter.pipe.mjs +4 -4
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +5 -5
- package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -5
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +5 -5
- package/esm2022/components/metadata-editor/store/metadata.service.mjs +5 -5
- package/esm2022/components/metadata-editor/style/css.component.mjs +4 -4
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +5 -5
- package/esm2022/components/scheme-picker/scheme-picker.module.mjs +5 -5
- package/esm2022/components/scheme-picker/scheme.service.mjs +5 -5
- package/esm2022/components/sinceDate/sinceDate.module.mjs +5 -5
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +5 -5
- package/esm2022/components/stepper/step/step.component.mjs +4 -4
- package/esm2022/components/stepper/step-title.directive.mjs +5 -5
- package/esm2022/components/stepper/stepper.component.mjs +4 -4
- package/esm2022/components/stepper/stepper.module.mjs +5 -5
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +5 -5
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +5 -5
- package/esm2022/dataset/components/dataset.component.mjs +5 -5
- package/esm2022/dataset/dataset.module.mjs +6 -6
- package/esm2022/dataset/style/css.component.mjs +4 -4
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +5 -5
- package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/filters/autocomplete/style/css.component.mjs +4 -4
- package/esm2022/filters/date/date-filter.component.mjs +5 -5
- package/esm2022/filters/date/date-filter.module.mjs +5 -5
- package/esm2022/filters/list/list-filter.component.mjs +5 -5
- package/esm2022/filters/list/list-filter.module.mjs +5 -5
- package/esm2022/filters/list/style/css.component.mjs +4 -4
- package/esm2022/filters/number/number-filter.component.mjs +5 -5
- package/esm2022/filters/number/number-filter.module.mjs +5 -5
- package/esm2022/filters/text/text-filter.component.mjs +5 -5
- package/esm2022/filters/text/text-filter.module.mjs +5 -5
- package/esm2022/import/components/import.component.mjs +5 -5
- package/esm2022/import/import-routing.module.mjs +5 -5
- package/esm2022/import/import.module.mjs +6 -6
- package/esm2022/import/store/import.effects.mjs +5 -5
- package/esm2022/import/store/import.service.mjs +5 -5
- package/esm2022/import/style/css.component.mjs +4 -4
- package/esm2022/lib/core/access/access.directive.mjs +6 -6
- package/esm2022/lib/core/access/access.guard.mjs +4 -4
- package/esm2022/lib/core/access/access.service.mjs +5 -5
- package/esm2022/lib/core/access/access.utils.mjs +1 -1
- package/esm2022/lib/core/auth/geoAuth.service.mjs +5 -5
- package/esm2022/lib/core/components/about/about.component.mjs +6 -6
- package/esm2022/lib/core/components/about/pry-about.module.mjs +5 -5
- package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +5 -5
- package/esm2022/lib/core/components/accordion/accordion.component.mjs +5 -5
- package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +5 -5
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +6 -6
- package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +4 -4
- package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +5 -5
- package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +5 -5
- package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +5 -5
- package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +5 -5
- package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +4 -4
- package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +5 -5
- package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +5 -5
- package/esm2022/lib/core/components/ellipsis.directive.mjs +5 -5
- package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +5 -5
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +5 -5
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +5 -5
- package/esm2022/lib/core/components/icon/icon.component.mjs +5 -5
- package/esm2022/lib/core/components/icon/icon.module.mjs +5 -5
- package/esm2022/lib/core/components/modal/modal.component.mjs +4 -4
- package/esm2022/lib/core/components/modal/pry-modal.module.mjs +5 -5
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +5 -5
- package/esm2022/lib/core/components/modal-status/modal-status.module.mjs +6 -6
- package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +5 -5
- package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +6 -6
- package/esm2022/lib/core/components/overlay/dialog-ref.mjs +1 -1
- package/esm2022/lib/core/components/overlay/dialog.service.mjs +5 -5
- package/esm2022/lib/core/components/overlay/overlay.directive.mjs +5 -5
- package/esm2022/lib/core/components/overlay/overlay.module.mjs +5 -5
- package/esm2022/lib/core/components/range/range.component.mjs +5 -5
- package/esm2022/lib/core/components/range/range.module.mjs +5 -5
- package/esm2022/lib/core/components/select/select-a11y.service.mjs +1 -1
- package/esm2022/lib/core/components/select/select.component.mjs +9 -8
- package/esm2022/lib/core/components/select/select.module.mjs +7 -6
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +6 -6
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +5 -5
- package/esm2022/lib/core/components/share/share.component.mjs +5 -5
- package/esm2022/lib/core/components/share/share.module.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +5 -5
- package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +5 -5
- package/esm2022/lib/core/components/sort/sort-header.directive.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-table.directive.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort.module.mjs +5 -5
- package/esm2022/lib/core/components/tabs/tab-group.component.mjs +5 -5
- package/esm2022/lib/core/components/tabs/tab.component.mjs +5 -5
- package/esm2022/lib/core/components/toggle/toggle.component.mjs +5 -5
- package/esm2022/lib/core/components/toggle/toggle.module.mjs +5 -5
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +5 -5
- package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +5 -5
- package/esm2022/lib/core/components/upload/upload.component.mjs +5 -5
- package/esm2022/lib/core/core.module.mjs +6 -6
- package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +5 -5
- package/esm2022/lib/core/i18n/deep-merge.function.mjs +1 -1
- package/esm2022/lib/core/i18n/fr.translations.mjs +2 -2
- package/esm2022/lib/core/i18n/i18n.module.mjs +5 -5
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +5 -5
- package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
- package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
- package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +5 -5
- package/esm2022/lib/core/store/aggregation/base-aggregation.service.mjs +4 -4
- package/esm2022/lib/core/store/aggregation/frontend-aggregation/aggregation-utils.class.mjs +1 -2
- package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +5 -5
- package/esm2022/lib/core/store/category/category.effects.mjs +5 -5
- package/esm2022/lib/core/store/category/category.service.mjs +5 -5
- package/esm2022/lib/core/store/class/class.effects.mjs +5 -5
- package/esm2022/lib/core/store/class/class.selectors.mjs +1 -1
- package/esm2022/lib/core/store/class/class.service.mjs +5 -5
- package/esm2022/lib/core/store/config/config.effects.mjs +5 -5
- package/esm2022/lib/core/store/config/config.selectors.mjs +1 -1
- package/esm2022/lib/core/store/config/config.service.mjs +5 -5
- package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +5 -5
- package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +5 -5
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +5 -5
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +1 -1
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +5 -5
- package/esm2022/lib/core/store/field/field.effects.mjs +5 -5
- package/esm2022/lib/core/store/field/field.selectors.mjs +1 -1
- package/esm2022/lib/core/store/field/field.service.mjs +5 -5
- package/esm2022/lib/core/store/image/image.effects.mjs +5 -5
- package/esm2022/lib/core/store/image/image.selectors.mjs +1 -1
- package/esm2022/lib/core/store/image/image.service.mjs +5 -5
- package/esm2022/lib/core/store/item/item.effects.mjs +5 -5
- package/esm2022/lib/core/store/item/item.service.mjs +5 -5
- package/esm2022/lib/core/store/raw/raw.service.mjs +5 -5
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +5 -5
- package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +5 -5
- package/esm2022/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.mjs +1 -1
- package/esm2022/lib/core/store/search/search.effects.mjs +5 -5
- package/esm2022/lib/core/store/search/search.service.mjs +5 -5
- package/esm2022/lib/core/symbol/symbol.service.mjs +5 -5
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +5 -5
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +5 -5
- package/esm2022/lib/core/ws/websocket.service.mjs +5 -5
- package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +5 -5
- package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +5 -5
- package/esm2022/lib/dashboard/base-widget.module.mjs +5 -5
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +1 -1
- package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +4 -4
- package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -6
- package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +21 -6
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +1 -1
- package/esm2022/lib/dashboard/dashboard.module.mjs +6 -6
- package/esm2022/lib/dashboard/filter/base-filter.component.mjs +5 -5
- package/esm2022/lib/dashboard/filter/base-filter.module.mjs +5 -5
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +6 -6
- package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +5 -5
- package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +6 -6
- package/esm2022/lib/dashboard/filter/filter-loader.function.mjs +1 -1
- package/esm2022/lib/dashboard/filter/style/css.component.mjs +4 -4
- package/esm2022/lib/dashboard/item-utils.mjs +2 -2
- package/esm2022/lib/dashboard/resultset-utils.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +6 -6
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +6 -6
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +1 -4
- package/esm2022/lib/dashboard/store/manifest.service.mjs +5 -5
- package/esm2022/lib/dashboard/store/refresh.service.mjs +16 -11
- package/esm2022/lib/dashboard/store/title.service.mjs +5 -5
- package/esm2022/lib/dashboard/store/wms.service.mjs +5 -5
- package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +4 -4
- package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +5 -5
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +4 -4
- package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +6 -6
- package/esm2022/lib/dashboard/tooltip/tooltip-loader.function.mjs +1 -1
- package/esm2022/lib/dashboard/widget-loader.function.mjs +1 -1
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +5 -5
- package/esm2022/notification/components/notification/notification.component.mjs +5 -5
- package/esm2022/notification/notification.module.mjs +6 -6
- package/esm2022/notification/store/notification.effects.mjs +5 -5
- package/esm2022/notification/store/notification.service.mjs +5 -5
- package/esm2022/notification/style/css.component.mjs +4 -4
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +1 -1
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +4 -4
- package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +5 -5
- package/esm2022/pipeline/node-class/base-node.class.mjs +1 -1
- package/esm2022/pipeline/pipeline.module.mjs +6 -6
- package/esm2022/pipeline/store/pipeline.effects.mjs +5 -5
- package/esm2022/pipeline/store/pipeline.service.mjs +5 -5
- package/esm2022/pipeline/style/css.component.mjs +4 -4
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +5 -5
- package/esm2022/pipeline-components/filter/filter.module.mjs +6 -6
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +5 -5
- package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +6 -6
- package/esm2022/pipeline-components/noop/component/noop.component.mjs +5 -5
- package/esm2022/pipeline-components/noop/noop.module.mjs +6 -6
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +5 -5
- package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +6 -6
- package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +5 -5
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-node.class.mjs +1 -1
- package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +6 -6
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +6 -6
- package/esm2022/presentation/components/presentation.component.mjs +6 -6
- package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +5 -5
- package/esm2022/presentation/presentation.module.mjs +6 -6
- package/esm2022/presentation/style/css.component.mjs +5 -5
- package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +6 -6
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +5 -5
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +5 -5
- package/esm2022/restitution/restitution.module.mjs +6 -6
- package/esm2022/restitution/style/css.component.mjs +5 -5
- package/esm2022/search/components/choose-widget/choose-widget.component.mjs +5 -5
- package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +5 -5
- package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +5 -5
- package/esm2022/search/components/save-query/save-query.component.mjs +6 -6
- package/esm2022/search/components/save-query-button/save-query-button.component.mjs +5 -5
- package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +5 -5
- package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +5 -5
- package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +4 -4
- package/esm2022/search/search-home/search-home.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +5 -5
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +5 -5
- package/esm2022/search/search-mono-class/store/search-mono-class.selectors.mjs +1 -1
- package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +4 -4
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +5 -5
- package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +5 -5
- package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +5 -5
- package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +5 -5
- package/esm2022/search/search-multi-class/store/search-multi-class.reducer.mjs +1 -1
- package/esm2022/search/search-multi-class/store/search-multi-class.selectors.mjs +1 -1
- package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
- package/esm2022/search/search-tools/search-tools.component.mjs +5 -5
- package/esm2022/search/search.module.mjs +6 -6
- package/esm2022/search/style/css.component.mjs +5 -5
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +13 -10
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +5 -5
- package/esm2022/toolbox/components/delete/delete.component.mjs +5 -5
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +5 -5
- package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +5 -5
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +5 -5
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +5 -5
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +5 -5
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +20 -18
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +5 -5
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +5 -5
- package/esm2022/toolbox/components/share/share.component.mjs +5 -5
- package/esm2022/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.mjs +5 -5
- package/esm2022/toolbox/components/toolbox-action/toolbox-action.component.mjs +5 -5
- package/esm2022/toolbox/components/toolbox-action-instanciator/toolbox-action-instanciator.component.mjs +5 -5
- package/esm2022/toolbox/components/toolbox.component.mjs +12 -9
- package/esm2022/toolbox/style/css.component.mjs +5 -5
- package/esm2022/toolbox/toolbox.module.mjs +5 -5
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +5 -5
- package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -5
- package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +4 -4
- package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +5 -5
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +6 -6
- package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +5 -5
- package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +6 -6
- package/esm2022/widgets/widget-chart/component/vega-error.handler.mjs +1 -1
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +6 -6
- package/esm2022/widgets/widget-chart/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-chart/widget-chart.module.mjs +6 -6
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
- package/esm2022/widgets/widget-detail/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-detail/widget-detail.module.mjs +6 -6
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +7 -8
- package/esm2022/widgets/widget-graph/layout/simple.function.mjs +1 -1
- package/esm2022/widgets/widget-graph/style/css.component.mjs +5 -5
- package/esm2022/widgets/widget-graph/widget-graph.module.mjs +6 -6
- package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +5 -5
- package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +4 -4
- package/esm2022/widgets/widget-iframe/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +6 -6
- package/esm2022/widgets/widget-image/component/widget-image.component.mjs +5 -5
- package/esm2022/widgets/widget-image/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-image/widget-image.module.mjs +5 -5
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -4
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +7 -7
- package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +1 -1
- package/esm2022/widgets/widget-map/interaction/layer-slider.class.mjs +1 -1
- package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +1 -1
- package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +5 -5
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +5 -5
- package/esm2022/widgets/widget-map/style/css.component.mjs +5 -5
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +1 -1
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +1 -1
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +1 -1
- package/esm2022/widgets/widget-map/widget-map.module.mjs +6 -6
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +5 -5
- package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +5 -5
- package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -4
- package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +5 -5
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +5 -5
- package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +4 -4
- package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +6 -6
- package/esm2022/widgets/widget-table/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-table/widget-table.module.mjs +6 -6
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +5 -5
- package/esm2022/widgets/widget-template/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-template/widget-template.module.mjs +6 -6
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +5 -5
- package/esm2022/widgets/widget-tile/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-tile/widget-tile.module.mjs +6 -6
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +6 -6
- package/esm2022/widgets/widget-vega/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-vega/widget-vega.module.mjs +6 -6
- package/fesm2022/provoly-dashboard-admin.mjs +380 -365
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-card.mjs +23 -23
- package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-checkbox.mjs +8 -8
- package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-color-picker.mjs +8 -8
- package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs +10 -10
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-filter.mjs +7 -7
- package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +19 -19
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +12 -12
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +8 -8
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-stepper.mjs +14 -14
- package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +20 -20
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +11 -11
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-date.mjs +8 -8
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +11 -11
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +8 -8
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +8 -8
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +24 -24
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +24 -24
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +35 -35
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +23 -23
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +26 -26
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +95 -95
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +98 -90
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +8 -8
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +7 -7
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +14 -14
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +13 -13
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +12 -12
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +15 -16
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +15 -15
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +11 -11
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +26 -26
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +35 -35
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +12 -12
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +12 -12
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +13 -13
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +558 -542
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/select/select.module.d.ts +2 -1
- package/lib/core/store/image/image.effects.d.ts +3 -3
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +1 -1
- package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +8 -1
- package/lib/dashboard/store/dashboard.effects.d.ts +7 -7
- package/lib/dashboard/store/dashboard.selectors.d.ts +0 -13
- package/lib/dashboard/store/refresh.service.d.ts +3 -1
- package/package.json +40 -40
- package/presentation/style/_o-pry-presentation.scss +0 -3
- package/schematics/ng-add/index.js.map +1 -1
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +3 -3
- package/styles/components/_a-chip.scss +6 -0
- package/styles/components/_a-pry-select.scss +13 -0
- package/styles/components/_a-range-slider.scss +4 -5
- package/styles/components/_m-nav-links.scss +2 -7
- package/styles/components/_o-widget.scss +6 -0
- package/styles-theme/abstracts-theme/variables/_variables-colors.scss +4 -3
- package/styles-theme/base-theme/_typography.theme.scss +5 -2
- package/styles-theme/components-theme/_a-btn.theme.scss +3 -7
- package/styles-theme/components-theme/_a-label.theme.scss +1 -0
- package/styles-theme/components-theme/_a-pry-select.theme.scss +4 -6
- package/styles-theme/components-theme/_a-range-slider.theme.scss +16 -16
- package/styles-theme/components-theme/_a-table.theme.scss +2 -2
- package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +3 -3
- package/styles-theme/components-theme/_m-nav-links.theme.scss +18 -0
- package/styles-theme/components-theme/_o-pry-presentation.theme.scss +9 -0
- package/styles-theme/components-theme/_o-tabs.theme.scss +1 -1
- package/styles-theme/layout-theme/_o-base-layout.theme.scss +1 -0
- package/styles-theme/main-theme.scss +1 -0
- package/toolbox/components/automate-refresh/automate-refresh.component.d.ts +3 -1
- package/toolbox/components/refresh-datasets/refresh-datasets.component.d.ts +3 -2
- package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +3 -0
- package/widgets/widget-graph/component/widget-graph.component.d.ts +0 -1
- package/widgets/widget-graph/style/_o-widget-graph.scss +14 -0
- package/schematics/ng-add/index.spec.d.ts +0 -1
- package/schematics/ng-add/index.spec.js +0 -87
- package/schematics/ng-add/index.spec.js.map +0 -1
- package/schematics/ng-update/version-0-13/index.spec.d.ts +0 -1
- package/schematics/ng-update/version-0-13/index.spec.js +0 -184
- package/schematics/ng-update/version-0-13/index.spec.js.map +0 -1
- package/schematics/ng-update/version-0-14/index.spec.d.ts +0 -1
- package/schematics/ng-update/version-0-14/index.spec.js +0 -51
- package/schematics/ng-update/version-0-14/index.spec.js.map +0 -1
- package/schematics/ng-update/version-0-15/index.spec.d.ts +0 -1
- package/schematics/ng-update/version-0-15/index.spec.js +0 -51
- package/schematics/ng-update/version-0-15/index.spec.js.map +0 -1
|
@@ -55,7 +55,7 @@ export class WidgetGraphComponent extends DataWidgetComponent {
|
|
|
55
55
|
this.options = options;
|
|
56
56
|
this.optionsCopy = { ...JSON.parse(JSON.stringify(options)) };
|
|
57
57
|
}));
|
|
58
|
-
this.viewSize$ = combineLatest([this.widgetSize$, this.displayHeader$]).pipe(delay(10), map(([size, header]) => [size.width, size.height - (header ? WIDGET_HEADER_HEIGHT : 0)]), tap((size) => {
|
|
58
|
+
this.viewSize$ = combineLatest([this.widgetSize$, this.displayHeader$]).pipe(delay(10), map(([size, header]) => [size.width, size.height - (header ? WIDGET_HEADER_HEIGHT : 0) - 10]), tap((size) => {
|
|
59
59
|
if (this.canvas) {
|
|
60
60
|
this.canvas.nativeElement.width = size[0];
|
|
61
61
|
this.canvas.nativeElement.height = size[1];
|
|
@@ -126,7 +126,6 @@ export class WidgetGraphComponent extends DataWidgetComponent {
|
|
|
126
126
|
});
|
|
127
127
|
}));
|
|
128
128
|
this.move$.pipe(auditTime(30)).subscribe(($event) => this.moveCallback($event));
|
|
129
|
-
this.bottomLeft$ = combineLatest([this.widgetSize$, this.displayHeader$]).pipe(map(([size, displayHeader]) => `translate(10px ,calc(13px - ${displayHeader ? WIDGET_HEADER_HEIGHT + 'px' : '0px'}))`), delay(10));
|
|
130
129
|
}
|
|
131
130
|
initSimulation(options, size) {
|
|
132
131
|
switch (options.layout) {
|
|
@@ -433,17 +432,17 @@ export class WidgetGraphComponent extends DataWidgetComponent {
|
|
|
433
432
|
resolve(this.canvas.nativeElement.toDataURL('image/png'));
|
|
434
433
|
});
|
|
435
434
|
}
|
|
436
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
437
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
435
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetGraphComponent, deps: [{ token: i1.Store }, { token: i2.TooltipFactoryService }, { token: i2.PryI18nService }, { token: i2.SymbolService }, { token: i3.DomSanitizer }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
436
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: WidgetGraphComponent, selector: "pry-widget-graph", viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<pry-widget-force-graph-css></pry-widget-force-graph-css>\n<div class=\"o-widget o-widget--graph\" [class.-has-header]=\"displayHeader$ | async\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"graph_layout\">{{ '@pry.widget.graph.layout' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayout($event)\"\n [items]=\"layouts\"\n [ngModel]=\"optionsCopy!.layout\"\n bindLabel=\"key\"\n bindValue=\"key\"\n id=\"graph_layout\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-range\n [ngModel]=\"optionsCopy!.nodeRadius\"\n (ngModelChange)=\"changeNodeRadius($event)\"\n labelTranslate=\"@pry.widget.graph.nodeRadius\"\n min=\"10\"\n max=\"200\"\n ></pry-range>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"no-result\" *ngIf=\"(allItemsWithImages$ | async)?.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.graph.empty' | i18n }}</span>\n </div>\n <div class=\"m-btn-group -selection-choice\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--move\"\n (click)=\"changeMode('move')\"\n [class.-selected]=\"mode === 'move'\"\n [attr.data-tooltip]=\"'@pry.widget.graph.move' | i18n\"\n >\n <pry-icon iconSvg=\"move\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.graph.move' | i18n }}</span>\n </button>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--rectangle\"\n (click)=\"changeMode('rectangle')\"\n [class.-selected]=\"mode === 'rectangle'\"\n [attr.data-tooltip]=\"'@pry.widget.graph.rectangle' | i18n\"\n >\n <pry-icon iconSvg=\"rectangle\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.graph.rectangle' | i18n }}</span>\n </button>\n </div>\n\n <canvas\n #canvas\n class=\"o-widget--graph__canvas\"\n (mousemove)=\"onMouseMove($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseUp($event, true)\"\n (contextmenu)=\"contextMenu($event)\"\n ></canvas>\n\n <div class=\"selection-rectangle\" #selectionRectangle></div>\n\n <div\n class=\"m-tooltip m-tooltip--popup noevent\"\n [style.display]=\"(tooltip$ | async)?.display ? 'block' : 'none'\"\n [style.left.px]=\"((tooltip$ | async)?.x ?? 0) + 50\"\n [style.top.px]=\"((tooltip$ | async)?.y ?? 0) + 50\"\n >\n <div #tooltip></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: i6.PryWidgetForceGraphCssComponent, selector: "pry-widget-force-graph-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
438
437
|
}
|
|
439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
438
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetGraphComponent, decorators: [{
|
|
440
439
|
type: Component,
|
|
441
|
-
args: [{ selector: 'pry-widget-graph', changeDetection: ChangeDetectionStrategy.OnPush, template: "<pry-widget-force-graph-css></pry-widget-force-graph-css>\n<div class=\"o-widget o-widget--graph\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"graph_layout\">{{ '@pry.widget.graph.layout' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayout($event)\"\n [items]=\"layouts\"\n [ngModel]=\"optionsCopy!.layout\"\n bindLabel=\"key\"\n bindValue=\"key\"\n id=\"graph_layout\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-range\n [ngModel]=\"optionsCopy!.nodeRadius\"\n (ngModelChange)=\"changeNodeRadius($event)\"\n labelTranslate=\"@pry.widget.graph.nodeRadius\"\n min=\"10\"\n max=\"200\"\n ></pry-range>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"no-result\" *ngIf=\"(allItemsWithImages$ | async)?.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.graph.empty' | i18n }}</span>\n </div>\n <div class=\"m-btn-group -selection-choice\"
|
|
442
|
-
}], ctorParameters:
|
|
440
|
+
args: [{ selector: 'pry-widget-graph', changeDetection: ChangeDetectionStrategy.OnPush, template: "<pry-widget-force-graph-css></pry-widget-force-graph-css>\n<div class=\"o-widget o-widget--graph\" [class.-has-header]=\"displayHeader$ | async\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"graph_layout\">{{ '@pry.widget.graph.layout' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayout($event)\"\n [items]=\"layouts\"\n [ngModel]=\"optionsCopy!.layout\"\n bindLabel=\"key\"\n bindValue=\"key\"\n id=\"graph_layout\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-range\n [ngModel]=\"optionsCopy!.nodeRadius\"\n (ngModelChange)=\"changeNodeRadius($event)\"\n labelTranslate=\"@pry.widget.graph.nodeRadius\"\n min=\"10\"\n max=\"200\"\n ></pry-range>\n </div>\n </pry-settings>\n </pry-widget-header>\n <div class=\"no-result\" *ngIf=\"(allItemsWithImages$ | async)?.length === 0\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.table.empty' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.graph.empty' | i18n }}</span>\n </div>\n <div class=\"m-btn-group -selection-choice\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--move\"\n (click)=\"changeMode('move')\"\n [class.-selected]=\"mode === 'move'\"\n [attr.data-tooltip]=\"'@pry.widget.graph.move' | i18n\"\n >\n <pry-icon iconSvg=\"move\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.graph.move' | i18n }}</span>\n </button>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--rectangle\"\n (click)=\"changeMode('rectangle')\"\n [class.-selected]=\"mode === 'rectangle'\"\n [attr.data-tooltip]=\"'@pry.widget.graph.rectangle' | i18n\"\n >\n <pry-icon iconSvg=\"rectangle\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.graph.rectangle' | i18n }}</span>\n </button>\n </div>\n\n <canvas\n #canvas\n class=\"o-widget--graph__canvas\"\n (mousemove)=\"onMouseMove($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseUp($event, true)\"\n (contextmenu)=\"contextMenu($event)\"\n ></canvas>\n\n <div class=\"selection-rectangle\" #selectionRectangle></div>\n\n <div\n class=\"m-tooltip m-tooltip--popup noevent\"\n [style.display]=\"(tooltip$ | async)?.display ? 'block' : 'none'\"\n [style.left.px]=\"((tooltip$ | async)?.x ?? 0) + 50\"\n [style.top.px]=\"((tooltip$ | async)?.y ?? 0) + 50\"\n >\n <div #tooltip></div>\n </div>\n</div>\n" }]
|
|
441
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.TooltipFactoryService }, { type: i2.PryI18nService }, { type: i2.SymbolService }, { type: i3.DomSanitizer }, { type: i0.ElementRef }, { type: i0.Injector }], propDecorators: { canvas: [{
|
|
443
442
|
type: ViewChild,
|
|
444
443
|
args: ['canvas']
|
|
445
444
|
}], tooltip: [{
|
|
446
445
|
type: ViewChild,
|
|
447
446
|
args: ['tooltip', { read: ViewContainerRef }]
|
|
448
447
|
}] } });
|
|
449
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LWdyYXBoL2NvbXBvbmVudC93aWRnZXQtZ3JhcGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtZ3JhcGgvY29tcG9uZW50L3dpZGdldC1ncmFwaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFJVCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFFTCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBS25CLG9CQUFvQixFQUNwQixzQkFBc0IsRUFHdEIsb0JBQW9CLEVBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoSCxPQUFPLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixhQUFhLEVBQ2IsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILFFBQVEsRUFFUixPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBTzdELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFnQzNELFlBQ0UsS0FBaUIsRUFDVCxx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QU8xQixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQytCLE9BQU87c0JBQXhELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ29udGV4dE1lbnVBY3Rpb25zLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERhdGFXaWRnZXRDb21wb25lbnQsXG4gIEdyYXBoV2lkZ2V0T3B0aW9ucyxcbiAgSXRlbSxcbiAgUHJ5STE4blNlcnZpY2UsXG4gIFJlbGF0aW9uVHlwZSxcbiAgUmVsYXRpb25UeXBlc0FjdGlvbnMsXG4gIFJlbGF0aW9uVHlwZXNTZWxlY3RvcnMsXG4gIFN5bWJvbFNlcnZpY2UsXG4gIFRvb2x0aXBGYWN0b3J5U2VydmljZSxcbiAgV0lER0VUX0hFQURFUl9IRUlHSFRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGZvcmNlQ2VudGVyLCBmb3JjZUNvbGxpZGUsIGZvcmNlTGluaywgZm9yY2VNYW55Qm9keSwgZm9yY2VTaW11bGF0aW9uLCBmb3JjZVgsIGZvcmNlWSB9IGZyb20gJ2QzLWZvcmNlJztcbmltcG9ydCB7XG4gIGF1ZGl0VGltZSxcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWxheSxcbiAgZmlsdGVyLFxuICBmcm9tLFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJ5TGluaywgUHJ5Tm9kZSB9IGZyb20gJy4uL2xheW91dC9ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBzaW1wbGVTaW11bGF0aW9uIH0gZnJvbSAnLi4vbGF5b3V0L3NpbXBsZS5mdW5jdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS13aWRnZXQtZ3JhcGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWdyYXBoLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0R3JhcGhDb21wb25lbnQgZXh0ZW5kcyBEYXRhV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8R3JhcGhXaWRnZXRPcHRpb25zPjtcbiAgb3B0aW9ucyE6IEdyYXBoV2lkZ2V0T3B0aW9ucztcbiAgb3B0aW9uc0NvcHk/OiBHcmFwaFdpZGdldE9wdGlvbnM7XG4gIHNlbGVjdGVkSWRzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpIGNhbnZhcyE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0b29sdGlwJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHRvb2x0aXAhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBjbGFzc2VzJDogT2JzZXJ2YWJsZTxDbGFzc1tdPjtcbiAgdmlld1NpemUkOiBPYnNlcnZhYmxlPFtudW1iZXIsIG51bWJlcl0+O1xuICBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcbiAgc2ltdWxhdGlvbiE6IGFueTtcbiAgYWxsSXRlbXNXaXRoSW1hZ2VzJDogT2JzZXJ2YWJsZTx7IGl0ZW06IEl0ZW07IGltYWdlOiBIVE1MQ2FudmFzRWxlbWVudCB9W10+O1xuICBpdGVtc0FzTm9kZXM6IFByeU5vZGVbXSA9IFtdO1xuICByZWxhdGlvbnNBc0xpbmtzOiBQcnlMaW5rW10gPSBbXTtcbiAgZHJhZ2dlZE5vZGU/OiBQcnlOb2RlO1xuICB0b29sdGlwJCA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBpdGVtOiBudWxsIGFzIHVua25vd24gYXMgUHJ5Tm9kZSxcbiAgICBkaXNwbGF5OiBmYWxzZVxuICB9KTtcbiAgZHJhZ2dpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0UmVjdD86IHsgc3RhcnQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgZW5kOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfTtcbiAgcmVsYXRpb25UeXBlczogUmVsYXRpb25UeXBlW10gPSBbXTtcbiAgbW92ZSQgPSBuZXcgU3ViamVjdDxNb3VzZUV2ZW50PigpO1xuICBtb2RlOiAnbW92ZScgfCAncmVjdGFuZ2xlJyA9ICdtb3ZlJztcbiAgYm90dG9tTGVmdCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgb2Zmc2V0ID0gWzAsIDBdO1xuICBhZGRpdGlvbm5hbE9mZnNldDogW251bWJlciwgbnVtYmVyXSA9IFswLCAwXTtcbiAgbGF5b3V0cyA9IFt7IGtleTogJ3NpbXBsZScgfSwgeyBrZXk6ICdmb3JjZScgfV07XG4gIG1vdXNlRG93bjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgdG9vbHRpcEZhY3RvcnlTZXJ2aWNlOiBUb29sdGlwRmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHN5bWJvbFNlcnZpY2U6IFN5bWJvbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUsIGVsKTtcblxuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcbiAgICB0aGlzLnNlbGVjdGVkSWRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUmVsYXRpb25UeXBlc0FjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLm9wdGlvbnMkID0gdGhpcy5tYW5pZmVzdCQucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKG1hbmlmZXN0KSA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBsaW5rU3Ryb2tlQ29sb3I6ICcjOTk5JyxcbiAgICAgICAgICAgIGxpbmtTdHJva2VPcGFjaXR5OiAwLjYsXG4gICAgICAgICAgICBsaW5rU3Ryb2tlV2lkdGg6IDEuNSxcbiAgICAgICAgICAgIGxpbmtTdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICAgICAgICAgICAgbm9kZVN0cm9rZUNvbG9yOiAnI2ZmZicsXG4gICAgICAgICAgICBub2RlU3Ryb2tlV2lkdGg6IDEuNSxcbiAgICAgICAgICAgIG5vZGVTdHJva2VPcGFjaXR5OiAxLFxuICAgICAgICAgICAgbm9kZVJhZGl1czogMjUsXG4gICAgICAgICAgICBsYXlvdXQ6ICdzaW1wbGUnLFxuICAgICAgICAgICAgLi4ubWFuaWZlc3Qub3B0aW9uc1xuICAgICAgICAgIH0pIGFzIEdyYXBoV2lkZ2V0T3B0aW9uc1xuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5waXBlKGZpbHRlcigob3B0KSA9PiAhIW9wdCkpLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5ID0geyAuLi4oSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSkgYXMgR3JhcGhXaWRnZXRPcHRpb25zKSB9O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy52aWV3U2l6ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZGdldFNpemUkLCB0aGlzLmRpc3BsYXlIZWFkZXIkXSkucGlwZShcbiAgICAgIGRlbGF5KDEwKSxcbiAgICAgIG1hcCgoW3NpemUsIGhlYWRlcl0pID0+IFtzaXplLndpZHRoLCBzaXplLmhlaWdodCAtIChoZWFkZXIgPyBXSURHRVRfSEVBREVSX0hFSUdIVCA6IDApXSBhcyBbbnVtYmVyLCBudW1iZXJdKSxcbiAgICAgIHRhcCgoc2l6ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW52YXMpIHtcbiAgICAgICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoID0gc2l6ZVswXTtcbiAgICAgICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodCA9IHNpemVbMV07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYWxsSXRlbXNXaXRoSW1hZ2VzJCA9IHRoaXMuYWxsSXRlbXMkLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoaXRlbXMpID0+XG4gICAgICAgIGZyb20oXG4gICAgICAgICAgbmV3IFByb21pc2U8eyBpdGVtOiBJdGVtOyBpbWFnZTogSFRNTENhbnZhc0VsZW1lbnQgfVtdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBQcm9taXNlLmFsbChpdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuc3ltYm9sU2VydmljZS5nZXRTeW1ib2woaXRlbSkpKS50aGVuKChjYW52YXNlcykgPT5cbiAgICAgICAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICAgICAgICBpdGVtcy5tYXAoKGl0ZW0sIGlkeCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICBpbWFnZTogY2FudmFzZXNbaWR4XVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFsbEl0ZW1zV2l0aEltYWdlcyQsXG4gICAgICB0aGlzLnJlc3VsdFNldCQucGlwZShtYXAoKHJzKSA9PiBycy5yZWxhdGlvbnMpKSxcbiAgICAgIHRoaXMudmlld1NpemUkLFxuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KFJlbGF0aW9uVHlwZXNTZWxlY3RvcnMucmVsYXRpb25zVHlwZXMpLnBpcGUodGFwKChydCkgPT4gKHRoaXMucmVsYXRpb25UeXBlcyA9IHJ0KSkpLFxuICAgICAgdGhpcy5zZWxlY3RlZElkcyRcbiAgICBdKS5zdWJzY3JpYmUoKFtpdGVtcywgcmVsYXRpb25zLCBzaXplLCBvcHRpb25zLCByZWxhdGlvblR5cGVzLCBzZWxlY3RlZElkc10pID0+IHtcbiAgICAgIHRoaXMuaXRlbXNBc05vZGVzID0gaXRlbXMubWFwKChpdGVtV2l0aEltYWdlLCBpZHgpID0+ICh7XG4gICAgICAgIGluZGV4OiBpZHgsXG4gICAgICAgIGl0ZW06IGl0ZW1XaXRoSW1hZ2UuaXRlbSxcbiAgICAgICAgaWQ6IGl0ZW1XaXRoSW1hZ2UuaXRlbS5pZCxcbiAgICAgICAgaW1hZ2U6IGl0ZW1XaXRoSW1hZ2UuaW1hZ2UsXG4gICAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZElkcy5pbmRleE9mKGl0ZW1XaXRoSW1hZ2UuaXRlbS5pZCkgPiAtMVxuICAgICAgfSkpIGFzIFByeU5vZGVbXTtcblxuICAgICAgY29uc3QgdW5rbm93bkltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICB1bmtub3duSW1hZ2Uuc3JjID0gJy9hc3NldHMvc3Zncy9xdWVzdGlvbi1saW5lLnN2Zyc7XG5cbiAgICAgIC8vIENvbXBsZXRlIG1pc3Npbmcgbm9kZXNcbiAgICAgIHJlbGF0aW9ucy5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXNBc05vZGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHJlbGF0aW9uLnNvdXJjZSkpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zQXNOb2Rlcy5wdXNoKHtcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLml0ZW1zQXNOb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtOiB7IGlkOiByZWxhdGlvbi5zb3VyY2UsIG9DbGFzczogJ3Vua25vd24nLCBhdHRyaWJ1dGVzOiB7fSB9LFxuICAgICAgICAgICAgaWQ6IHJlbGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgIGltYWdlOiB1bmtub3duSW1hZ2UsXG4gICAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRJZHMuaW5kZXhPZihyZWxhdGlvbi5zb3VyY2UpID4gLTFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXRlbXNBc05vZGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHJlbGF0aW9uLmRlc3RpbmF0aW9uKSkge1xuICAgICAgICAgIHRoaXMuaXRlbXNBc05vZGVzLnB1c2goe1xuICAgICAgICAgICAgaW5kZXg6IHRoaXMuaXRlbXNBc05vZGVzLmxlbmd0aCxcbiAgICAgICAgICAgIGl0ZW06IHsgaWQ6IHJlbGF0aW9uLmRlc3RpbmF0aW9uLCBvQ2xhc3M6ICd1bmtub3duJywgYXR0cmlidXRlczoge30gfSxcbiAgICAgICAgICAgIGlkOiByZWxhdGlvbi5kZXN0aW5hdGlvbixcbiAgICAgICAgICAgIGltYWdlOiB1bmtub3duSW1hZ2UsXG4gICAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRJZHMuaW5kZXhPZihyZWxhdGlvbi5kZXN0aW5hdGlvbikgPiAtMVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxhdGlvbnNBc0xpbmtzID0gcmVsYXRpb25zLm1hcCgocmVsYXRpb24pID0+ICh7XG4gICAgICAgIHNvdXJjZTogdGhpcy5pdGVtc0FzTm9kZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcmVsYXRpb24uc291cmNlKT8uaW5kZXggPz8gLTEsXG4gICAgICAgIHRhcmdldDogdGhpcy5pdGVtc0FzTm9kZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcmVsYXRpb24uZGVzdGluYXRpb24pPy5pbmRleCA/PyAtMSxcbiAgICAgICAgcmVsYXRpb25cbiAgICAgIH0pKSBhcyBQcnlMaW5rW107XG5cbiAgICAgIGlmICh0aGlzLnNpbXVsYXRpb24pIHtcbiAgICAgICAgdGhpcy5zaW11bGF0aW9uLnN0b3AoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaW11bGF0aW9uID0gdGhpcy5pbml0U2ltdWxhdGlvbihvcHRpb25zLCBzaXplKS5vbigndGljaycsIHRoaXMuZHJhdyhzaXplLCBvcHRpb25zLCByZWxhdGlvblR5cGVzKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50b29sdGlwJC5waXBlKGZpbHRlcigodG9vbHRpcCkgPT4gISF0b29sdGlwICYmICEhdG9vbHRpcC5pdGVtKSkuc3Vic2NyaWJlKCh0b29sdGlwKSA9PiB7XG4gICAgICAgIGxldCB0eXBlID0gdG9vbHRpcC5pdGVtLml0ZW0ub0NsYXNzIGFzIHN0cmluZztcbiAgICAgICAgdGhpcy50b29sdGlwLmNsZWFyKCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCQgPSB0aGlzLnRvb2x0aXBGYWN0b3J5U2VydmljZS5nZW5lcmF0ZVRvb2x0aXAodHlwZSwgdGhpcy5faW5qZWN0b3IsIHRoaXMudG9vbHRpcCk7XG4gICAgICAgIGNvbXBvbmVudCQuc3Vic2NyaWJlKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb21wb25lbnQuaW5zdGFuY2UuZGF0YS5pdGVtID0gdG9vbHRpcC5pdGVtLml0ZW07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMubW92ZSQucGlwZShhdWRpdFRpbWUoMzApKS5zdWJzY3JpYmUoKCRldmVudCkgPT4gdGhpcy5tb3ZlQ2FsbGJhY2soJGV2ZW50KSk7XG5cbiAgICB0aGlzLmJvdHRvbUxlZnQkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWRnZXRTaXplJCwgdGhpcy5kaXNwbGF5SGVhZGVyJF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChbc2l6ZSwgZGlzcGxheUhlYWRlcl0pID0+XG4gICAgICAgICAgYHRyYW5zbGF0ZSgxMHB4ICxjYWxjKDEzcHggLSAke2Rpc3BsYXlIZWFkZXIgPyBXSURHRVRfSEVBREVSX0hFSUdIVCArICdweCcgOiAnMHB4J30pKWBcbiAgICAgICksXG4gICAgICBkZWxheSgxMClcbiAgICApO1xuICB9XG5cbiAgaW5pdFNpbXVsYXRpb24ob3B0aW9uczogR3JhcGhXaWRnZXRPcHRpb25zLCBzaXplOiBbbnVtYmVyLCBudW1iZXJdKSB7XG4gICAgc3dpdGNoIChvcHRpb25zLmxheW91dCkge1xuICAgICAgY2FzZSAnc2ltcGxlJzpcbiAgICAgICAgcmV0dXJuIHNpbXBsZVNpbXVsYXRpb24odGhpcy5pdGVtc0FzTm9kZXMsIHRoaXMucmVsYXRpb25zQXNMaW5rcywgb3B0aW9ucywgc2l6ZSk7XG4gICAgICBjYXNlICdmb3JjZSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZm9yY2VTaW11bGF0aW9uKHRoaXMuaXRlbXNBc05vZGVzKVxuICAgICAgICAgIC5mb3JjZSgnY2hhcmdlJywgZm9yY2VNYW55Qm9keSgpKVxuICAgICAgICAgIC5mb3JjZSgnbGluaycsIGZvcmNlTGluayh0aGlzLnJlbGF0aW9uc0FzTGlua3MpLmRpc3RhbmNlKDUwKS5zdHJlbmd0aCgwLjEpKVxuICAgICAgICAgIC5mb3JjZSgneCcsIGZvcmNlWCgpKVxuICAgICAgICAgIC5mb3JjZSgneScsIGZvcmNlWSgpKVxuICAgICAgICAgIC5mb3JjZSgnY29sbGlkZScsIGZvcmNlQ29sbGlkZShvcHRpb25zLm5vZGVSYWRpdXMgKiAzKSlcbiAgICAgICAgICAuZm9yY2UoJ2NlbnRlcicsIGZvcmNlQ2VudGVyKHNpemVbMF0gLyAyLCBzaXplWzFdIC8gMikpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7IC4uLnRoaXMubWFuaWZlc3QsIG9wdGlvbnM6IHRoaXMub3B0aW9uc0NvcHkgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmRyYXcoW3RoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0XSwgdGhpcy5vcHRpb25zLCB0aGlzLnJlbGF0aW9uVHlwZXMpKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAodGhpcy5zaW11bGF0aW9uKSB7XG4gICAgICB0aGlzLnNpbXVsYXRpb24uc3RvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZU1vZGUobW9kZTogJ21vdmUnIHwgJ3JlY3RhbmdsZScpIHtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICB9XG5cbiAgY2hhbmdlTGF5b3V0KCRldmVudDogYW55KSB7XG4gICAgdGhpcy5vcHRpb25zQ29weSEubGF5b3V0ID0gJGV2ZW50O1xuICB9XG5cbiAgY2hhbmdlTm9kZVJhZGl1cygkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub3B0aW9uc0NvcHkhLm5vZGVSYWRpdXMgPSAkZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogRHJhd2luZyB0aGluZ3NcbiAgICovXG5cbiAgZHJhdyhzaXplOiBbbnVtYmVyLCBudW1iZXJdLCBvcHRpb25zOiBHcmFwaFdpZGdldE9wdGlvbnMsIHJlbGF0aW9uVHlwZXM6IFJlbGF0aW9uVHlwZVtdKSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgICAgLy8gQ2xlYXIgY2FudmFzXG4gICAgICAgIHRoaXMuY29udGV4dC5jbGVhclJlY3QoMCwgMCwgc2l6ZVswXSwgc2l6ZVsxXSk7XG5cbiAgICAgICAgLy8gRHJhd2luZyBsaW5rc1xuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZSgpO1xuICAgICAgICB0aGlzLmRyYXdMaW5rcyhvcHRpb25zLCByZWxhdGlvblR5cGVzKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnJlc3RvcmUoKTtcblxuICAgICAgICAvLyBEcmF3aW5nIG5vZGVzXG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlKCk7XG4gICAgICAgIHRoaXMuZHJhd05vZGVzKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmNvbnRleHQucmVzdG9yZSgpO1xuXG4gICAgICAgIC8vIERyYXdpbmcgc2VsZWN0aW9uIHJlY3RhbmdsZSBpZiBuZWVkZWRcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0UmVjdCkge1xuICAgICAgICAgIHRoaXMuY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgdGhpcy5kcmF3U2VsZWN0aW9uUmVjdCgpO1xuICAgICAgICAgIHRoaXMuY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3U2VsZWN0aW9uUmVjdCgpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0ICYmIHRoaXMuc2VsZWN0UmVjdCAmJiB0aGlzLm1vZGUgPT09ICdyZWN0YW5nbGUnKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQWxwaGEgPSAwLjM7XG4gICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gJyNiY2RjZGEnO1xuXG4gICAgICBjb25zdCBtaW5YID0gTWF0aC5taW4odGhpcy5zZWxlY3RSZWN0LnN0YXJ0LngsIHRoaXMuc2VsZWN0UmVjdC5lbmQueCk7XG4gICAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4odGhpcy5zZWxlY3RSZWN0LnN0YXJ0LnksIHRoaXMuc2VsZWN0UmVjdC5lbmQueSk7XG4gICAgICBjb25zdCBkWCA9IE1hdGguYWJzKHRoaXMuc2VsZWN0UmVjdC5zdGFydC54IC0gdGhpcy5zZWxlY3RSZWN0LmVuZC54KTtcbiAgICAgIGNvbnN0IGRZID0gTWF0aC5hYnModGhpcy5zZWxlY3RSZWN0LnN0YXJ0LnkgLSB0aGlzLnNlbGVjdFJlY3QuZW5kLnkpO1xuXG4gICAgICB0aGlzLmNvbnRleHQucmVjdChtaW5YLCBtaW5ZLCBkWCwgZFkpO1xuICAgICAgdGhpcy5jb250ZXh0LmZpbGwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRyYXdOb2RlcyhvcHRpb25zOiBHcmFwaFdpZGdldE9wdGlvbnMpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQWxwaGEgPSBvcHRpb25zLm5vZGVTdHJva2VPcGFjaXR5O1xuICAgICAgZm9yIChjb25zdCBbaSwgbm9kZV0gb2YgdGhpcy5pdGVtc0FzTm9kZXMuZW50cmllcygpKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0Lm1vdmVUbygobm9kZS54ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0sIChub2RlLnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSk7XG4gICAgICAgIHRoaXMuY29udGV4dC5hcmMoXG4gICAgICAgICAgKG5vZGUueCA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLFxuICAgICAgICAgIChub2RlLnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSxcbiAgICAgICAgICBvcHRpb25zLm5vZGVSYWRpdXMgLyAyICsgOCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIDIgKiBNYXRoLlBJLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29udGV4dC5maWxsU3R5bGUgPSBub2RlLnNlbGVjdGVkID8gJyM1NjlhOWMnIDogbm9kZS5pdGVtLm9DbGFzcyA9PT0gJ3Vua25vd24nID8gJyNlMmE3YTcnIDogJyNlY2VkZjQnO1xuICAgICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBub2RlLnNlbGVjdGVkID8gJyM1NjlhOWMnIDogbm9kZS5pdGVtLm9DbGFzcyA9PT0gJ3Vua25vd24nID8gJyNlMmE3YTcnIDogJyNlY2VkZjQnO1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlsbCgpO1xuICAgICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICAgIHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgbm9kZS5pbWFnZSxcbiAgICAgICAgICAobm9kZS54ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0gLSBvcHRpb25zLm5vZGVSYWRpdXMgLyAyLFxuICAgICAgICAgIChub2RlLnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSAtIG9wdGlvbnMubm9kZVJhZGl1cyAvIDIsXG4gICAgICAgICAgb3B0aW9ucy5ub2RlUmFkaXVzLFxuICAgICAgICAgIG9wdGlvbnMubm9kZVJhZGl1c1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZHJhd0xpbmtzKG9wdGlvbnM6IEdyYXBoV2lkZ2V0T3B0aW9ucywgcmVsYXRpb25UeXBlczogUmVsYXRpb25UeXBlW10pIHtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQWxwaGEgPSBvcHRpb25zLmxpbmtTdHJva2VPcGFjaXR5O1xuICAgICAgZm9yIChjb25zdCBbaSwgbGlua10gb2YgdGhpcy5yZWxhdGlvbnNBc0xpbmtzLmVudHJpZXMoKSkge1xuICAgICAgICB0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSB0aGlzLml0ZW1zQXNOb2Rlcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBsaW5rLnJlbGF0aW9uLnNvdXJjZSk7XG4gICAgICAgIGxldCB0YXJnZXROb2RlID0gdGhpcy5pdGVtc0FzTm9kZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbGluay5yZWxhdGlvbi5kZXN0aW5hdGlvbik7XG4gICAgICAgIGlmIChsaW5rLnNvdXJjZSA9PT0gbGluay50YXJnZXQgJiYgdGFyZ2V0Tm9kZSkge1xuICAgICAgICAgIHRoaXMuY29udGV4dC5tb3ZlVG8oKHNvdXJjZU5vZGU/LnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSwgKHNvdXJjZU5vZGU/LnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSk7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LmJlemllckN1cnZlVG8oXG4gICAgICAgICAgICAoc291cmNlTm9kZT8ueCA/PyAwKSAtIDEwICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0sXG4gICAgICAgICAgICAoc291cmNlTm9kZT8ueSA/PyAwKSAtIDYwICsgdGhpcy5nbG9iYWxPZmZzZXRbMV0sXG4gICAgICAgICAgICAoc291cmNlTm9kZT8ueCA/PyAwKSArIDEyMCArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLFxuICAgICAgICAgICAgKHNvdXJjZU5vZGU/LnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSxcbiAgICAgICAgICAgIChzb3VyY2VOb2RlPy54ID8/IDApIC0gMTAgKyB0aGlzLmdsb2JhbE9mZnNldFswXSxcbiAgICAgICAgICAgIChzb3VyY2VOb2RlPy55ID8/IDApICsgMjAgKyB0aGlzLmdsb2JhbE9mZnNldFsxXVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgeyBtaWRkbGVYLCBtaWRkbGVZLCBhbmdsZSB9ID0gdGhpcy5kcmF3U2VsZlJlbGF0aW9uVGV4dExpbmsobGluaywgc291cmNlTm9kZSEsIHJlbGF0aW9uVHlwZXMsIG9wdGlvbnMpO1xuICAgICAgICAgIC8vIGFycm93XG4gICAgICAgICAgdGhpcy5kcmF3QXJyb3coXG4gICAgICAgICAgICAodGFyZ2V0Tm9kZT8ueCA/PyAwKSArIDEyMCArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLFxuICAgICAgICAgICAgKHRhcmdldE5vZGU/LnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSxcbiAgICAgICAgICAgIG1pZGRsZVgsXG4gICAgICAgICAgICBtaWRkbGVZICsgMyxcbiAgICAgICAgICAgIGFuZ2xlIC0gMTAwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbnRleHQubW92ZVRvKChzb3VyY2VOb2RlPy54ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0sIChzb3VyY2VOb2RlPy55ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMV0pO1xuICAgICAgICAgIHRoaXMuY29udGV4dC5saW5lVG8oKHRhcmdldE5vZGU/LnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSwgKHRhcmdldE5vZGU/LnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSk7XG4gICAgICAgICAgY29uc3QgeyBtaWRkbGVYLCBtaWRkbGVZLCBhbmdsZSB9ID0gdGhpcy5kcmF3VGV4dExpbmsobGluaywgc291cmNlTm9kZSEsIHRhcmdldE5vZGUhLCByZWxhdGlvblR5cGVzLCBvcHRpb25zKTtcbiAgICAgICAgICAvLyBhcnJvd1xuICAgICAgICAgIHRoaXMuZHJhd0Fycm93KFxuICAgICAgICAgICAgKHRhcmdldE5vZGU/LnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSxcbiAgICAgICAgICAgICh0YXJnZXROb2RlPy55ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMV0sXG4gICAgICAgICAgICBtaWRkbGVYLFxuICAgICAgICAgICAgbWlkZGxlWSxcbiAgICAgICAgICAgIGFuZ2xlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZHJhd1NlbGZSZWxhdGlvblRleHRMaW5rKFxuICAgIGxpbms6IFByeUxpbmssXG4gICAgc291cmNlTm9kZTogUHJ5Tm9kZSxcbiAgICByZWxhdGlvblR5cGVzOiBSZWxhdGlvblR5cGVbXSxcbiAgICBvcHRpb25zOiBHcmFwaFdpZGdldE9wdGlvbnNcbiAgKSB7XG4gICAgY29uc3QgbWlkZGxlWCA9IChzb3VyY2VOb2RlPy54ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0gKyA0NTtcbiAgICBjb25zdCBtaWRkbGVZID0gKHNvdXJjZU5vZGU/LnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSAtIDIwO1xuICAgIGxldCBhbmdsZSA9IE1hdGguYXRhbjIoc291cmNlTm9kZT8ueSA/PyAwLCBzb3VyY2VOb2RlPy54ID8/IDApO1xuICAgIGxldCBkcmF3QW5nbGUgPSBhbmdsZTtcblxuICAgIHJldHVybiB0aGlzLmRyYXdUZXh0KG1pZGRsZVgsIG1pZGRsZVksIGFuZ2xlLCByZWxhdGlvblR5cGVzLCBvcHRpb25zLCBsaW5rLCBkcmF3QW5nbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3VGV4dExpbmsoXG4gICAgbGluazogUHJ5TGluayxcbiAgICBzb3VyY2VOb2RlOiBQcnlOb2RlLFxuICAgIHRhcmdldE5vZGU6IFByeU5vZGUsXG4gICAgcmVsYXRpb25UeXBlczogUmVsYXRpb25UeXBlW10sXG4gICAgb3B0aW9uczogR3JhcGhXaWRnZXRPcHRpb25zXG4gICkge1xuICAgIGNvbnN0IG1pZGRsZVggPSAoKHNvdXJjZU5vZGU/LnggPz8gMCkgKyAodGFyZ2V0Tm9kZT8ueCA/PyAwKSkgLyAyICsgdGhpcy5nbG9iYWxPZmZzZXRbMF07XG4gICAgY29uc3QgbWlkZGxlWSA9ICgoc291cmNlTm9kZT8ueSA/PyAwKSArICh0YXJnZXROb2RlPy55ID8/IDApKSAvIDIgKyB0aGlzLmdsb2JhbE9mZnNldFsxXTtcbiAgICBsZXQgYW5nbGUgPSBNYXRoLmF0YW4yKCh0YXJnZXROb2RlPy55ID8/IDApIC0gKHNvdXJjZU5vZGU/LnkgPz8gMCksICh0YXJnZXROb2RlPy54ID8/IDApIC0gKHNvdXJjZU5vZGU/LnggPz8gMCkpO1xuICAgIGxldCBkcmF3QW5nbGUgPSBhbmdsZTtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICBpZiAoKHNvdXJjZU5vZGU/LnggPz8gMCkgPiAodGFyZ2V0Tm9kZT8ueCA/PyAwKSkge1xuICAgICAgICBkcmF3QW5nbGUgKz0gTWF0aC5QSTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kcmF3VGV4dChtaWRkbGVYLCBtaWRkbGVZLCBhbmdsZSwgcmVsYXRpb25UeXBlcywgb3B0aW9ucywgbGluaywgZHJhd0FuZ2xlKTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhd1RleHQoXG4gICAgbWlkZGxlWDogbnVtYmVyLFxuICAgIG1pZGRsZVk6IG51bWJlcixcbiAgICBhbmdsZTogbnVtYmVyLFxuICAgIHJlbGF0aW9uVHlwZXM6IGFueVtdLFxuICAgIG9wdGlvbnM6IEdyYXBoV2lkZ2V0T3B0aW9ucyxcbiAgICBsaW5rOiBQcnlMaW5rLFxuICAgIGRyYXdBbmdsZTogbnVtYmVyXG4gICkge1xuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dC5mb250ID0gJzEwcHggVWJ1bnR1JztcbiAgICAgIGNvbnN0IHJlbGF0aW9uVHlwZSA9IGxpbmsucmVsYXRpb24ucmVsYXRpb25UeXBlO1xuICAgICAgdGhpcy5jb250ZXh0LnNhdmUoKTtcbiAgICAgIHRoaXMuY29udGV4dC50cmFuc2xhdGUobWlkZGxlWCwgbWlkZGxlWSk7XG4gICAgICB0aGlzLmNvbnRleHQucm90YXRlKGRyYXdBbmdsZSk7XG4gICAgICB0aGlzLmNvbnRleHQudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICB0aGlzLmNvbnRleHQuZmlsbFRleHQocmVsYXRpb25UeXBlcy5maW5kKChyZWxUKSA9PiByZWxULmlkID09PSByZWxhdGlvblR5cGUpPy5uYW1lID8/IHJlbGF0aW9uVHlwZSwgMCwgLTcpO1xuICAgICAgdGhpcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gb3B0aW9ucy5saW5rU3Ryb2tlQ29sb3I7XG4gICAgICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gb3B0aW9ucy5saW5rU3Ryb2tlV2lkdGg7XG4gICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICB0aGlzLmNvbnRleHQucmVzdG9yZSgpO1xuICAgIH1cbiAgICByZXR1cm4geyBtaWRkbGVYLCBtaWRkbGVZLCBhbmdsZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3QXJyb3codGFyZ2V0WDogbnVtYmVyLCB0YXJnZXRZOiBudW1iZXIsIG1pZGRsZVg6IG51bWJlciwgbWlkZGxlWTogbnVtYmVyLCBhbmdsZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgY29uc3Qgd2lkdGggPSAxO1xuICAgICAgY29uc3QgaGVhZGxlbiA9IDEwO1xuXG4gICAgICAvLyBUaGlzIG1ha2VzIGl0IHNvIHRoZSBlbmQgb2YgdGhlIGFycm93IGhlYWQgaXMgbG9jYXRlZCBhdCB0b3gsIHRveSwgZG9uJ3QgYXNrIHdoZXJlIDEuMTUgY29tZXMgZnJvbVxuICAgICAgdGFyZ2V0WCAtPSBNYXRoLmNvcyhhbmdsZSkgKiAod2lkdGggKiAxLjE1KTtcbiAgICAgIHRhcmdldFkgLT0gTWF0aC5zaW4oYW5nbGUpICogKHdpZHRoICogMS4xNSk7XG5cbiAgICAgIC8vc3RhcnRpbmcgYSBuZXcgcGF0aCBmcm9tIHRoZSBoZWFkIG9mIHRoZSBhcnJvdyB0byBvbmUgb2YgdGhlIHNpZGVzIG9mIHRoZSBwb2ludFxuICAgICAgdGhpcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgdGhpcy5jb250ZXh0Lm1vdmVUbyhtaWRkbGVYLCBtaWRkbGVZKTtcbiAgICAgIHRoaXMuY29udGV4dC5saW5lVG8oXG4gICAgICAgIG1pZGRsZVggLSBoZWFkbGVuICogTWF0aC5jb3MoYW5nbGUgLSBNYXRoLlBJIC8gNyksXG4gICAgICAgIG1pZGRsZVkgLSBoZWFkbGVuICogTWF0aC5zaW4oYW5nbGUgLSBNYXRoLlBJIC8gNylcbiAgICAgICk7XG5cbiAgICAgIC8vcGF0aCBmcm9tIHRoZSBzaWRlIHBvaW50IG9mIHRoZSBhcnJvdywgdG8gdGhlIG90aGVyIHNpZGUgcG9pbnRcbiAgICAgIHRoaXMuY29udGV4dC5saW5lVG8oXG4gICAgICAgIG1pZGRsZVggLSBoZWFkbGVuICogTWF0aC5jb3MoYW5nbGUgKyBNYXRoLlBJIC8gNyksXG4gICAgICAgIG1pZGRsZVkgLSBoZWFkbGVuICogTWF0aC5zaW4oYW5nbGUgKyBNYXRoLlBJIC8gNylcbiAgICAgICk7XG5cbiAgICAgIC8vcGF0aCBmcm9tIHRoZSBzaWRlIHBvaW50IGJhY2sgdG8gdGhlIHRpcCBvZiB0aGUgYXJyb3csIGFuZCB0aGVuIGFnYWluIHRvIHRoZSBvcHBvc2l0ZSBzaWRlIHBvaW50XG4gICAgICB0aGlzLmNvbnRleHQubGluZVRvKG1pZGRsZVgsIG1pZGRsZVkpO1xuICAgICAgdGhpcy5jb250ZXh0LmxpbmVUbyhcbiAgICAgICAgbWlkZGxlWCAtIGhlYWRsZW4gKiBNYXRoLmNvcyhhbmdsZSAtIE1hdGguUEkgLyA3KSxcbiAgICAgICAgbWlkZGxlWSAtIGhlYWRsZW4gKiBNYXRoLnNpbihhbmdsZSAtIE1hdGguUEkgLyA3KVxuICAgICAgKTtcblxuICAgICAgLy9kcmF3cyB0aGUgcGF0aHMgY3JlYXRlZCBhYm92ZVxuICAgICAgdGhpcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdpZHRoO1xuICAgICAgdGhpcy5jb250ZXh0LnN0cm9rZSgpO1xuICAgICAgdGhpcy5jb250ZXh0LmZpbGwoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW91c2UgTWFuYWdlbWVudFxuICAgKi9cblxuICBvbk1vdXNlRG93bigkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBub2RlcyA9IHRoaXMuZmluZE5vZGVzKCRldmVudCk7XG4gICAgdGhpcy5kcmFnZ2VkTm9kZSA9IG5vZGVzWzBdO1xuICAgIGlmICh0aGlzLmRyYWdnZWROb2RlKSB7XG4gICAgICB0aGlzLnNpbXVsYXRpb24uYWxwaGFUYXJnZXQoMC4zKS5yZXN0YXJ0KCk7XG4gICAgICB0aGlzLmRyYWdnZWROb2RlLmZ4ID0gdGhpcy5kcmFnZ2VkTm9kZS54O1xuICAgICAgdGhpcy5kcmFnZ2VkTm9kZS5meSA9IHRoaXMuZHJhZ2dlZE5vZGUueTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RSZWN0ID0ge1xuICAgICAgICBzdGFydDogeyB4OiAkZXZlbnQub2Zmc2V0WCwgeTogJGV2ZW50Lm9mZnNldFkgfSxcbiAgICAgICAgZW5kOiB7IHg6ICRldmVudC5vZmZzZXRYLCB5OiAkZXZlbnQub2Zmc2V0WSB9XG4gICAgICB9O1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICAgIHRoaXMubW91c2VEb3duID0gdHJ1ZTtcbiAgfVxuXG4gIG9uTW91c2VNb3ZlKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMubW92ZSQubmV4dCgkZXZlbnQpO1xuICAgIGlmICh0aGlzLm1vdXNlRG93bikge1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbW92ZUNhbGxiYWNrKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRyYWdnZWROb2RlKSB7XG4gICAgICB0aGlzLmRyYWdnZWROb2RlLmZ4ID0gJGV2ZW50Lm9mZnNldFggLSB0aGlzLmdsb2JhbE9mZnNldFswXTtcbiAgICAgIHRoaXMuZHJhZ2dlZE5vZGUuZnkgPSAkZXZlbnQub2Zmc2V0WSAtIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RSZWN0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0UmVjdCEuZW5kID0geyB4OiAkZXZlbnQub2Zmc2V0WCwgeTogJGV2ZW50Lm9mZnNldFkgfTtcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ21vdmUnKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbm5hbE9mZnNldCA9IFtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UmVjdC5lbmQueCAtIHRoaXMuc2VsZWN0UmVjdC5zdGFydC54LFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RSZWN0LmVuZC55IC0gdGhpcy5zZWxlY3RSZWN0LnN0YXJ0LnlcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG5cbiAgICAvLyBkaXNwbGF5IHRvb2x0aXAgZm9yIG5vZGVzXG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmZpbmROb2RlcygkZXZlbnQpO1xuICAgIHRoaXMudG9vbHRpcCQubmV4dCh7IGl0ZW06IG5vZGVzWzBdLCBkaXNwbGF5OiBub2Rlcy5sZW5ndGggPiAwLCB4OiAkZXZlbnQub2Zmc2V0WCwgeTogJGV2ZW50Lm9mZnNldFkgfSk7XG4gIH1cblxuICBvbk1vdXNlVXAoJGV2ZW50OiBNb3VzZUV2ZW50LCBsZWF2ZSA9IGZhbHNlKSB7XG4gICAgaWYgKCRldmVudC5idXR0b24gIT09IDIpIHtcbiAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdnZWROb2RlKSB7XG4gICAgICAgICAgdGhpcy5zaW11bGF0aW9uLmFscGhhVGFyZ2V0KDApO1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5Py5sYXlvdXQgPT09ICdmb3JjZScpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dlZE5vZGUuZnggPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkTm9kZS5meSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdyZWN0YW5nbGUnKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmluZE5vZGVzSW5TaGFwZWQodGhpcy5zZWxlY3RSZWN0ISk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0TWFueSh7IGlkczogbm9kZXMubWFwKChub2RlKSA9PiBub2RlLml0ZW0uaWQpIH0pKTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCA9IFsuLi50aGlzLmdsb2JhbE9mZnNldF07XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9ubmFsT2Zmc2V0ID0gWzAsIDBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFsZWF2ZSkge1xuICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5maW5kTm9kZXMoJGV2ZW50KTtcbiAgICAgICAgICBpZiAobm9kZXNbMF0/Lml0ZW0/LmlkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0KHsgaWQ6IG5vZGVzWzBdPy5pdGVtPy5pZCwgY3VtdWxhdGl2ZTogJGV2ZW50LnNoaWZ0S2V5IH0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdCh7IGlkOiAnJywgY3VtdWxhdGl2ZTogJGV2ZW50LnNoaWZ0S2V5IH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tb2RlID0gJ21vdmUnO1xuICAgIHRoaXMuc2VsZWN0UmVjdCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRyYWdnZWROb2RlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGdsb2JhbE9mZnNldCgpIHtcbiAgICByZXR1cm4gW3RoaXMub2Zmc2V0WzBdICsgdGhpcy5hZGRpdGlvbm5hbE9mZnNldFswXSwgdGhpcy5vZmZzZXRbMV0gKyB0aGlzLmFkZGl0aW9ubmFsT2Zmc2V0WzFdXTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm1hbmlmZXN0LmNvbnRleHRNZW51ICE9PSBmYWxzZSkge1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmluZE5vZGVzKCRldmVudCk7XG4gICAgICBpZiAobm9kZXNbMF0gJiYgbm9kZXNbMF0uaXRlbSkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIENvbnRleHRNZW51QWN0aW9ucy5vcGVuKHtcbiAgICAgICAgICAgIGl0ZW1JZDogbm9kZXNbMF0uaXRlbS5pZCxcbiAgICAgICAgICAgIGNsaWVudFg6ICRldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgY2xpZW50WTogJGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgICByZXN1bHRTZXQ6IEFycmF5LmlzQXJyYXkodGhpcy5tYW5pZmVzdC5kYXRhc291cmNlKSA/IHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZVswXSA6IHRoaXMubWFuaWZlc3QuZGF0YXNvdXJjZSxcbiAgICAgICAgICAgIGZyb206ICdncmFwaCcsXG4gICAgICAgICAgICBhbGxvd09iamVjdENyZWF0aW9uOiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMub25Nb3VzZVVwKCRldmVudCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZGluZyBOb2Rlc1xuICAgKi9cblxuICBmaW5kTm9kZXMoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNBc05vZGVzLmZpbHRlcihcbiAgICAgIChpdGVtKSA9PlxuICAgICAgICBNYXRoLnBvdygoaXRlbS54ID8/IDApIC0gJGV2ZW50Lm9mZnNldFggKyB0aGlzLmdsb2JhbE9mZnNldFswXSwgMikgK1xuICAgICAgICAgIE1hdGgucG93KChpdGVtLnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSAtICRldmVudC5vZmZzZXRZLCAyKSA8XG4gICAgICAgIE1hdGgucG93KHRoaXMub3B0aW9ucy5ub2RlUmFkaXVzIC8gMiArIDgsIDIpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE5vZGVzSW5TaGFwZWQoc2hhcGU6IHsgc3RhcnQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgZW5kOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfSk6IFByeU5vZGVbXSB7XG4gICAgY29uc3QgbWluWCA9IE1hdGgubWluKHNoYXBlLnN0YXJ0LngsIHNoYXBlLmVuZC54KTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoc2hhcGUuc3RhcnQueCwgc2hhcGUuZW5kLngpO1xuICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbihzaGFwZS5zdGFydC55LCBzaGFwZS5lbmQueSk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KHNoYXBlLnN0YXJ0LnksIHNoYXBlLmVuZC55KTtcblxuICAgIHJldHVybiB0aGlzLml0ZW1zQXNOb2Rlcy5maWx0ZXIoXG4gICAgICAoaXRlbSkgPT5cbiAgICAgICAgKGl0ZW0ueCA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdID4gbWluWCAmJlxuICAgICAgICAoaXRlbS54ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0gPCBtYXhYICYmXG4gICAgICAgIChpdGVtLnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSA+IG1pblkgJiZcbiAgICAgICAgKGl0ZW0ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdIDwgbWF4WVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSB0b0ltYWdlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlc29sdmUodGhpcy5jYW52YXMubmF0aXZlRWxlbWVudC50b0RhdGFVUkwoJ2ltYWdlL3BuZycpKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHByeS13aWRnZXQtZm9yY2UtZ3JhcGgtY3NzPjwvcHJ5LXdpZGdldC1mb3JjZS1ncmFwaC1jc3M+XG48ZGl2IGNsYXNzPVwiby13aWRnZXQgby13aWRnZXQtLWdyYXBoXCI+XG4gIDxwcnktd2lkZ2V0LWhlYWRlclxuICAgIFtkYXRhc291cmNlSWRzXT1cIihkYXRhc291cmNlSWRzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgKm5nSWY9XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgIFttYW5pZmVzdF09XCJtYW5pZmVzdFwiXG4gICAgKG1hbmlmZXN0TW9kaWZpZWQpPVwibWFuaWZlc3RNb2RpZmllZC5lbWl0KCRldmVudClcIlxuICAgIFtoZWFkZXJPcHRpb25zXT1cIihkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSA/PyB7fVwiXG4gICAgI2hlYWRlclxuICA+XG4gICAgPHByeS1zZXR0aW5nc1xuICAgICAgKHNhdmVUcmlnZ2VyZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgICAgKGNoYW5nZVRpdGxlKT1cImNoYW5nZVdpZGdldFRpdGxlKCRldmVudClcIlxuICAgICAgW2hlYWRlclByZXNlbnRdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW2hlYWRlcl09XCJoZWFkZXJcIlxuICAgICAgW29wZW4kXT1cIm9wZW4kXCJcbiAgICAgIGNsYXNzPVwiby1zZXR0aW5nc1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZ3JhcGhfbGF5b3V0XCI+e3sgJ0Bwcnkud2lkZ2V0LmdyYXBoLmxheW91dCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VMYXlvdXQoJGV2ZW50KVwiXG4gICAgICAgICAgW2l0ZW1zXT1cImxheW91dHNcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5IS5sYXlvdXRcIlxuICAgICAgICAgIGJpbmRMYWJlbD1cImtleVwiXG4gICAgICAgICAgYmluZFZhbHVlPVwia2V5XCJcbiAgICAgICAgICBpZD1cImdyYXBoX2xheW91dFwiXG4gICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICA8cHJ5LXJhbmdlXG4gICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkhLm5vZGVSYWRpdXNcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZU5vZGVSYWRpdXMoJGV2ZW50KVwiXG4gICAgICAgICAgbGFiZWxUcmFuc2xhdGU9XCJAcHJ5LndpZGdldC5ncmFwaC5ub2RlUmFkaXVzXCJcbiAgICAgICAgICBtaW49XCIxMFwiXG4gICAgICAgICAgbWF4PVwiMjAwXCJcbiAgICAgICAgPjwvcHJ5LXJhbmdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9wcnktc2V0dGluZ3M+XG4gIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRcIiAqbmdJZj1cIihhbGxJdGVtc1dpdGhJbWFnZXMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDBcIj5cbiAgICA8aW1nXG4gICAgICBjbGFzcz1cIm5vLXJlc3VsdF9fc2VhcmNoXCJcbiAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICBhbHQ9XCJ7eyAnQHByeS53aWRnZXQudGFibGUuZW1wdHknIHwgaTE4biB9fVwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJuby1yZXN1bHRfX3RleHRcIj57eyAnQHByeS53aWRnZXQuZ3JhcGguZW1wdHknIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cCAtc2VsZWN0aW9uLWNob2ljZVwiIFtzdHlsZS50cmFuc2Zvcm1dPVwiYm90dG9tTGVmdCQgfCBhc3luY1wiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IGEtdG9vbHRpcCBhLXRvb2x0aXAtLW1vdmVcIlxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vZGUoJ21vdmUnKVwiXG4gICAgICBbY2xhc3MuLXNlbGVjdGVkXT1cIm1vZGUgPT09ICdtb3ZlJ1wiXG4gICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0Bwcnkud2lkZ2V0LmdyYXBoLm1vdmUnIHwgaTE4blwiXG4gICAgPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJtb3ZlXCI+PC9wcnktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS53aWRnZXQuZ3JhcGgubW92ZScgfCBpMThuIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgYS10b29sdGlwIGEtdG9vbHRpcC0tcmVjdGFuZ2xlXCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdyZWN0YW5nbGUnKVwiXG4gICAgICBbY2xhc3MuLXNlbGVjdGVkXT1cIm1vZGUgPT09ICdyZWN0YW5nbGUnXCJcbiAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS53aWRnZXQuZ3JhcGgucmVjdGFuZ2xlJyB8IGkxOG5cIlxuICAgID5cbiAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwicmVjdGFuZ2xlXCI+PC9wcnktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS53aWRnZXQuZ3JhcGgucmVjdGFuZ2xlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxjYW52YXNcbiAgICAjY2FudmFzXG4gICAgY2xhc3M9XCJvLXdpZGdldC0tZ3JhcGhfX2NhbnZhc1wiXG4gICAgKG1vdXNlbW92ZSk9XCJvbk1vdXNlTW92ZSgkZXZlbnQpXCJcbiAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgIChtb3VzZXVwKT1cIm9uTW91c2VVcCgkZXZlbnQpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlVXAoJGV2ZW50LCB0cnVlKVwiXG4gICAgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudClcIlxuICA+PC9jYW52YXM+XG5cbiAgPGRpdiBjbGFzcz1cInNlbGVjdGlvbi1yZWN0YW5nbGVcIiAjc2VsZWN0aW9uUmVjdGFuZ2xlPjwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm0tdG9vbHRpcCBtLXRvb2x0aXAtLXBvcHVwIG5vZXZlbnRcIlxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIih0b29sdGlwJCB8IGFzeW5jKT8uZGlzcGxheSA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cIigodG9vbHRpcCQgfCBhc3luYyk/LnggPz8gMCkgKyA1MFwiXG4gICAgW3N0eWxlLnRvcC5weF09XCIoKHRvb2x0aXAkIHwgYXN5bmMpPy55ID8/IDApICsgNTBcIlxuICA+XG4gICAgPGRpdiAjdG9vbHRpcD48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LWdyYXBoL2NvbXBvbmVudC93aWRnZXQtZ3JhcGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtZ3JhcGgvY29tcG9uZW50L3dpZGdldC1ncmFwaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFJVCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFFTCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBS25CLG9CQUFvQixFQUNwQixzQkFBc0IsRUFHdEIsb0JBQW9CLEVBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoSCxPQUFPLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixhQUFhLEVBQ2IsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILFFBQVEsRUFFUixPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBTzdELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUErQjNELFlBQ0UsS0FBaUIsRUFDVCxxQkFBNEMsRUFDNUMsZ0JBQWdDLEVBQ2hDLGFBQTRCLEVBQzVCLFNBQXVCLEVBQy9CLEVBQWMsRUFDTixTQUFtQjtRQUUzQixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBUFQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFFdkIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQTdCN0IsWUFBTyxHQUFvQyxJQUFJLENBQUM7UUFHaEQsaUJBQVksR0FBYyxFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQWMsRUFBRSxDQUFDO1FBRWpDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQztZQUM3QixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osSUFBSSxFQUFFLElBQTBCO1lBQ2hDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsVUFBSyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFDbEMsU0FBSSxHQUF5QixNQUFNLENBQUM7UUFDcEMsV0FBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLHNCQUFpQixHQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxZQUFPLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFhekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FDRCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ1gsQ0FBQztZQUNDLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLGlCQUFpQixFQUFFLEdBQUc7WUFDdEIsZUFBZSxFQUFFLEdBQUc7WUFDcEIsaUJBQWlCLEVBQUUsT0FBTztZQUMxQixlQUFlLEVBQUUsTUFBTTtZQUN2QixlQUFlLEVBQUUsR0FBRztZQUNwQixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsTUFBTSxFQUFFLFFBQVE7WUFDaEIsR0FBRyxRQUFRLENBQUMsT0FBTztTQUNHLENBQUEsQ0FDM0IsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUF3QixFQUFFLENBQUM7UUFDeEYsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFDVCxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQXFCLENBQUMsRUFDakgsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDNUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDakIsSUFBSSxDQUNGLElBQUksT0FBTyxDQUE2QyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyRixPQUFPLENBQ0wsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hCLElBQUk7Z0JBQ0osS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7YUFDckIsQ0FBQyxDQUFDLENBQ0osQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLENBQUM7UUFFRixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsbUJBQW1CO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRyxJQUFJLENBQUMsWUFBWTtTQUNsQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDN0UsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckQsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO2dCQUN4QixFQUFFLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN6QixLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFELENBQUMsQ0FBYyxDQUFDO1lBRWpCLE1BQU0sWUFBWSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDakMsWUFBWSxDQUFDLEdBQUcsR0FBRyxnQ0FBZ0MsQ0FBQztZQUVwRCx5QkFBeUI7WUFDekIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ25FLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO3dCQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO3dCQUMvQixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7d0JBQ2hFLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTTt3QkFDbkIsS0FBSyxFQUFFLFlBQVk7d0JBQ25CLFFBQVEsRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3BELENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDeEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07d0JBQy9CLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTt3QkFDckUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxXQUFXO3dCQUN4QixLQUFLLEVBQUUsWUFBWTt3QkFDbkIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDekQsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ2xGLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDdkYsUUFBUTthQUNULENBQUMsQ0FBYyxDQUFDO1lBRWpCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDM0csQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN6RixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFnQixDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNqQyxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDbkQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBMkIsRUFBRSxJQUFzQjtRQUNoRSxRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkYsS0FBSyxPQUFPLENBQUM7WUFDYjtnQkFDRSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO3FCQUN0QyxLQUFLLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDO3FCQUNoQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUMxRSxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FCQUNwQixLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FCQUNwQixLQUFLLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUN0RCxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtTQUMxRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztJQUNySCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFUSxXQUFXO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQTBCO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBVztRQUN0QixJQUFJLENBQUMsV0FBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVc7UUFDMUIsSUFBSSxDQUFDLFdBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUVILElBQUksQ0FBQyxJQUFzQixFQUFFLE9BQTJCLEVBQUUsYUFBNkI7UUFDckYsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsZUFBZTtnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFL0MsZ0JBQWdCO2dCQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFdkIsZ0JBQWdCO2dCQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUV2Qix3Q0FBd0M7Z0JBQ3hDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUVuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVyRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQTJCO1FBQzNDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUNyRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDZCxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDcEMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ3BDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFDMUIsQ0FBQyxFQUNELENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUNYLEtBQUssQ0FDTixDQUFDO2dCQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDNUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUM5RyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFDVixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsRUFDN0QsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQzdELE9BQU8sQ0FBQyxVQUFVLEVBQ2xCLE9BQU8sQ0FBQyxVQUFVLENBQ25CLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsT0FBMkIsRUFBRSxhQUE2QjtRQUMxRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7WUFDckQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN6RixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQ3hCLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDaEQsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNoRCxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2pELENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUMzQyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2hELENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDakQsQ0FBQztvQkFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVcsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzdHLFFBQVE7b0JBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FDWixDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2pELENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUMzQyxPQUFPLEVBQ1AsT0FBTyxHQUFHLENBQUMsRUFDWCxLQUFLLEdBQUcsR0FBRyxDQUNaLENBQUM7Z0JBQ0osQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlHLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVcsRUFBRSxVQUFXLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUM5RyxRQUFRO29CQUNSLElBQUksQ0FBQyxTQUFTLENBQ1osQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQzNDLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUMzQyxPQUFPLEVBQ1AsT0FBTyxFQUNQLEtBQUssQ0FDTixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyx3QkFBd0IsQ0FDOUIsSUFBYSxFQUNiLFVBQW1CLEVBQ25CLGFBQTZCLEVBQzdCLE9BQTJCO1FBRTNCLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVPLFlBQVksQ0FDbEIsSUFBYSxFQUNiLFVBQW1CLEVBQ25CLFVBQW1CLEVBQ25CLGFBQTZCLEVBQzdCLE9BQTJCO1FBRTNCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakgsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU8sUUFBUSxDQUNkLE9BQWUsRUFDZixPQUFlLEVBQ2YsS0FBYSxFQUNiLGFBQW9CLEVBQ3BCLE9BQTJCLEVBQzNCLElBQWEsRUFDYixTQUFpQjtRQUVqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7WUFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLEVBQUUsSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQWUsRUFBRSxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQWUsRUFBRSxLQUFhO1FBQ2pHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNoQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFFbkIscUdBQXFHO1lBQ3JHLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRTVDLGlGQUFpRjtZQUNqRixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDakIsT0FBTyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUNqRCxPQUFPLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ2xELENBQUM7WUFFRixnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLE9BQU8sR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDakQsT0FBTyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUNsRCxDQUFDO1lBRUYsa0dBQWtHO1lBQ2xHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDakIsT0FBTyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUNqRCxPQUFPLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ2xELENBQUM7WUFFRiwrQkFBK0I7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBRUgsV0FBVyxDQUFDLE1BQWtCO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxHQUFHO2dCQUNoQixLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDL0MsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUU7YUFDOUMsQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFrQjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFrQjtRQUM3QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxVQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUc7d0JBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDaEQsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBRUQsNEJBQTRCO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFrQixFQUFFLEtBQUssR0FBRyxLQUFLO1FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO3dCQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7d0JBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztvQkFDN0IsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO3dCQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVcsQ0FBQyxDQUFDO3dCQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNqQixDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUNyQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDckMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO3dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hHLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN4RixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWtCO1FBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsa0JBQWtCLENBQUMsSUFBSSxDQUFDO29CQUN0QixNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN4QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ3ZCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztvQkFDdkIsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtvQkFDM0csSUFBSSxFQUFFLE9BQU87b0JBQ2IsbUJBQW1CLEVBQUUsS0FBSztpQkFDM0IsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUVILFNBQVMsQ0FBQyxNQUFrQjtRQUMxQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUM3QixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUF5RTtRQUNqRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDN0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7WUFDM0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtZQUMzQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO1lBQzNDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFUSxPQUFPO1FBQ2QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTlqQlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsME5BTUQsZ0JBQWdCLG9EQ3pEaEQsNDNHQWlHQTs7MkZEOUNhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTTtrUEFPMUIsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUMrQixPQUFPO3NCQUF4RCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDbGFzcyxcbiAgQ2xhc3NTZWxlY3RvcnMsXG4gIENvbnRleHRNZW51QWN0aW9ucyxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBEYXRhV2lkZ2V0Q29tcG9uZW50LFxuICBHcmFwaFdpZGdldE9wdGlvbnMsXG4gIEl0ZW0sXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBSZWxhdGlvblR5cGUsXG4gIFJlbGF0aW9uVHlwZXNBY3Rpb25zLFxuICBSZWxhdGlvblR5cGVzU2VsZWN0b3JzLFxuICBTeW1ib2xTZXJ2aWNlLFxuICBUb29sdGlwRmFjdG9yeVNlcnZpY2UsXG4gIFdJREdFVF9IRUFERVJfSEVJR0hUXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBmb3JjZUNlbnRlciwgZm9yY2VDb2xsaWRlLCBmb3JjZUxpbmssIGZvcmNlTWFueUJvZHksIGZvcmNlU2ltdWxhdGlvbiwgZm9yY2VYLCBmb3JjZVkgfSBmcm9tICdkMy1mb3JjZSc7XG5pbXBvcnQge1xuICBhdWRpdFRpbWUsXG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVsYXksXG4gIGZpbHRlcixcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByeUxpbmssIFByeU5vZGUgfSBmcm9tICcuLi9sYXlvdXQvbm9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgc2ltcGxlU2ltdWxhdGlvbiB9IGZyb20gJy4uL2xheW91dC9zaW1wbGUuZnVuY3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LWdyYXBoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1ncmFwaC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldEdyYXBoQ29tcG9uZW50IGV4dGVuZHMgRGF0YVdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIG9wdGlvbnMkOiBPYnNlcnZhYmxlPEdyYXBoV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnMhOiBHcmFwaFdpZGdldE9wdGlvbnM7XG4gIG9wdGlvbnNDb3B5PzogR3JhcGhXaWRnZXRPcHRpb25zO1xuICBzZWxlY3RlZElkcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBAVmlld0NoaWxkKCdjYW52YXMnKSBjYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB0b29sdGlwITogVmlld0NvbnRhaW5lclJlZjtcbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIHZpZXdTaXplJDogT2JzZXJ2YWJsZTxbbnVtYmVyLCBudW1iZXJdPjtcbiAgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHwgbnVsbCA9IG51bGw7XG4gIHNpbXVsYXRpb24hOiBhbnk7XG4gIGFsbEl0ZW1zV2l0aEltYWdlcyQ6IE9ic2VydmFibGU8eyBpdGVtOiBJdGVtOyBpbWFnZTogSFRNTENhbnZhc0VsZW1lbnQgfVtdPjtcbiAgaXRlbXNBc05vZGVzOiBQcnlOb2RlW10gPSBbXTtcbiAgcmVsYXRpb25zQXNMaW5rczogUHJ5TGlua1tdID0gW107XG4gIGRyYWdnZWROb2RlPzogUHJ5Tm9kZTtcbiAgdG9vbHRpcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgaXRlbTogbnVsbCBhcyB1bmtub3duIGFzIFByeU5vZGUsXG4gICAgZGlzcGxheTogZmFsc2VcbiAgfSk7XG4gIGRyYWdnaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdFJlY3Q/OiB7IHN0YXJ0OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07IGVuZDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IH07XG4gIHJlbGF0aW9uVHlwZXM6IFJlbGF0aW9uVHlwZVtdID0gW107XG4gIG1vdmUkID0gbmV3IFN1YmplY3Q8TW91c2VFdmVudD4oKTtcbiAgbW9kZTogJ21vdmUnIHwgJ3JlY3RhbmdsZScgPSAnbW92ZSc7XG4gIG9mZnNldCA9IFswLCAwXTtcbiAgYWRkaXRpb25uYWxPZmZzZXQ6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMF07XG4gIGxheW91dHMgPSBbeyBrZXk6ICdzaW1wbGUnIH0sIHsga2V5OiAnZm9yY2UnIH1dO1xuICBtb3VzZURvd246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHRvb2x0aXBGYWN0b3J5U2VydmljZTogVG9vbHRpcEZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogUHJ5STE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeW1ib2xTZXJ2aWNlOiBTeW1ib2xTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHN1cGVyKHN0b3JlLCBlbCk7XG5cbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG4gICAgdGhpcy5zZWxlY3RlZElkcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlbGF0aW9uVHlwZXNBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5vcHRpb25zJCA9IHRoaXMubWFuaWZlc3QkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChtYW5pZmVzdCkgPT5cbiAgICAgICAgICAoe1xuICAgICAgICAgICAgbGlua1N0cm9rZUNvbG9yOiAnIzk5OScsXG4gICAgICAgICAgICBsaW5rU3Ryb2tlT3BhY2l0eTogMC42LFxuICAgICAgICAgICAgbGlua1N0cm9rZVdpZHRoOiAxLjUsXG4gICAgICAgICAgICBsaW5rU3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgICAgICAgICAgIG5vZGVTdHJva2VDb2xvcjogJyNmZmYnLFxuICAgICAgICAgICAgbm9kZVN0cm9rZVdpZHRoOiAxLjUsXG4gICAgICAgICAgICBub2RlU3Ryb2tlT3BhY2l0eTogMSxcbiAgICAgICAgICAgIG5vZGVSYWRpdXM6IDI1LFxuICAgICAgICAgICAgbGF5b3V0OiAnc2ltcGxlJyxcbiAgICAgICAgICAgIC4uLm1hbmlmZXN0Lm9wdGlvbnNcbiAgICAgICAgICB9IGFzIEdyYXBoV2lkZ2V0T3B0aW9ucylcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMub3B0aW9ucyQucGlwZShmaWx0ZXIoKG9wdCkgPT4gISFvcHQpKS5zdWJzY3JpYmUoKG9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IHsgLi4uKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpIGFzIEdyYXBoV2lkZ2V0T3B0aW9ucykgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudmlld1NpemUkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWRnZXRTaXplJCwgdGhpcy5kaXNwbGF5SGVhZGVyJF0pLnBpcGUoXG4gICAgICBkZWxheSgxMCksXG4gICAgICBtYXAoKFtzaXplLCBoZWFkZXJdKSA9PiBbc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQgLSAoaGVhZGVyID8gV0lER0VUX0hFQURFUl9IRUlHSFQgOiAwKSAtIDEwXSBhcyBbbnVtYmVyLCBudW1iZXJdKSxcbiAgICAgIHRhcCgoc2l6ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW52YXMpIHtcbiAgICAgICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoID0gc2l6ZVswXTtcbiAgICAgICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodCA9IHNpemVbMV07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYWxsSXRlbXNXaXRoSW1hZ2VzJCA9IHRoaXMuYWxsSXRlbXMkLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoaXRlbXMpID0+XG4gICAgICAgIGZyb20oXG4gICAgICAgICAgbmV3IFByb21pc2U8eyBpdGVtOiBJdGVtOyBpbWFnZTogSFRNTENhbnZhc0VsZW1lbnQgfVtdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBQcm9taXNlLmFsbChpdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuc3ltYm9sU2VydmljZS5nZXRTeW1ib2woaXRlbSkpKS50aGVuKChjYW52YXNlcykgPT5cbiAgICAgICAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICAgICAgICBpdGVtcy5tYXAoKGl0ZW0sIGlkeCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICBpbWFnZTogY2FudmFzZXNbaWR4XVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFsbEl0ZW1zV2l0aEltYWdlcyQsXG4gICAgICB0aGlzLnJlc3VsdFNldCQucGlwZShtYXAoKHJzKSA9PiBycy5yZWxhdGlvbnMpKSxcbiAgICAgIHRoaXMudmlld1NpemUkLFxuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KFJlbGF0aW9uVHlwZXNTZWxlY3RvcnMucmVsYXRpb25zVHlwZXMpLnBpcGUodGFwKChydCkgPT4gKHRoaXMucmVsYXRpb25UeXBlcyA9IHJ0KSkpLFxuICAgICAgdGhpcy5zZWxlY3RlZElkcyRcbiAgICBdKS5zdWJzY3JpYmUoKFtpdGVtcywgcmVsYXRpb25zLCBzaXplLCBvcHRpb25zLCByZWxhdGlvblR5cGVzLCBzZWxlY3RlZElkc10pID0+IHtcbiAgICAgIHRoaXMuaXRlbXNBc05vZGVzID0gaXRlbXMubWFwKChpdGVtV2l0aEltYWdlLCBpZHgpID0+ICh7XG4gICAgICAgIGluZGV4OiBpZHgsXG4gICAgICAgIGl0ZW06IGl0ZW1XaXRoSW1hZ2UuaXRlbSxcbiAgICAgICAgaWQ6IGl0ZW1XaXRoSW1hZ2UuaXRlbS5pZCxcbiAgICAgICAgaW1hZ2U6IGl0ZW1XaXRoSW1hZ2UuaW1hZ2UsXG4gICAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZElkcy5pbmRleE9mKGl0ZW1XaXRoSW1hZ2UuaXRlbS5pZCkgPiAtMVxuICAgICAgfSkpIGFzIFByeU5vZGVbXTtcblxuICAgICAgY29uc3QgdW5rbm93bkltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICB1bmtub3duSW1hZ2Uuc3JjID0gJy9hc3NldHMvc3Zncy9xdWVzdGlvbi1saW5lLnN2Zyc7XG5cbiAgICAgIC8vIENvbXBsZXRlIG1pc3Npbmcgbm9kZXNcbiAgICAgIHJlbGF0aW9ucy5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXNBc05vZGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHJlbGF0aW9uLnNvdXJjZSkpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zQXNOb2Rlcy5wdXNoKHtcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLml0ZW1zQXNOb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtOiB7IGlkOiByZWxhdGlvbi5zb3VyY2UsIG9DbGFzczogJ3Vua25vd24nLCBhdHRyaWJ1dGVzOiB7fSB9LFxuICAgICAgICAgICAgaWQ6IHJlbGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgIGltYWdlOiB1bmtub3duSW1hZ2UsXG4gICAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRJZHMuaW5kZXhPZihyZWxhdGlvbi5zb3VyY2UpID4gLTFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXRlbXNBc05vZGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHJlbGF0aW9uLmRlc3RpbmF0aW9uKSkge1xuICAgICAgICAgIHRoaXMuaXRlbXNBc05vZGVzLnB1c2goe1xuICAgICAgICAgICAgaW5kZXg6IHRoaXMuaXRlbXNBc05vZGVzLmxlbmd0aCxcbiAgICAgICAgICAgIGl0ZW06IHsgaWQ6IHJlbGF0aW9uLmRlc3RpbmF0aW9uLCBvQ2xhc3M6ICd1bmtub3duJywgYXR0cmlidXRlczoge30gfSxcbiAgICAgICAgICAgIGlkOiByZWxhdGlvbi5kZXN0aW5hdGlvbixcbiAgICAgICAgICAgIGltYWdlOiB1bmtub3duSW1hZ2UsXG4gICAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRJZHMuaW5kZXhPZihyZWxhdGlvbi5kZXN0aW5hdGlvbikgPiAtMVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxhdGlvbnNBc0xpbmtzID0gcmVsYXRpb25zLm1hcCgocmVsYXRpb24pID0+ICh7XG4gICAgICAgIHNvdXJjZTogdGhpcy5pdGVtc0FzTm9kZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcmVsYXRpb24uc291cmNlKT8uaW5kZXggPz8gLTEsXG4gICAgICAgIHRhcmdldDogdGhpcy5pdGVtc0FzTm9kZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcmVsYXRpb24uZGVzdGluYXRpb24pPy5pbmRleCA/PyAtMSxcbiAgICAgICAgcmVsYXRpb25cbiAgICAgIH0pKSBhcyBQcnlMaW5rW107XG5cbiAgICAgIGlmICh0aGlzLnNpbXVsYXRpb24pIHtcbiAgICAgICAgdGhpcy5zaW11bGF0aW9uLnN0b3AoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zaW11bGF0aW9uID0gdGhpcy5pbml0U2ltdWxhdGlvbihvcHRpb25zLCBzaXplKS5vbigndGljaycsIHRoaXMuZHJhdyhzaXplLCBvcHRpb25zLCByZWxhdGlvblR5cGVzKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50b29sdGlwJC5waXBlKGZpbHRlcigodG9vbHRpcCkgPT4gISF0b29sdGlwICYmICEhdG9vbHRpcC5pdGVtKSkuc3Vic2NyaWJlKCh0b29sdGlwKSA9PiB7XG4gICAgICAgIGxldCB0eXBlID0gdG9vbHRpcC5pdGVtLml0ZW0ub0NsYXNzIGFzIHN0cmluZztcbiAgICAgICAgdGhpcy50b29sdGlwLmNsZWFyKCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCQgPSB0aGlzLnRvb2x0aXBGYWN0b3J5U2VydmljZS5nZW5lcmF0ZVRvb2x0aXAodHlwZSwgdGhpcy5faW5qZWN0b3IsIHRoaXMudG9vbHRpcCk7XG4gICAgICAgIGNvbXBvbmVudCQuc3Vic2NyaWJlKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb21wb25lbnQuaW5zdGFuY2UuZGF0YS5pdGVtID0gdG9vbHRpcC5pdGVtLml0ZW07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMubW92ZSQucGlwZShhdWRpdFRpbWUoMzApKS5zdWJzY3JpYmUoKCRldmVudCkgPT4gdGhpcy5tb3ZlQ2FsbGJhY2soJGV2ZW50KSk7XG4gIH1cblxuICBpbml0U2ltdWxhdGlvbihvcHRpb25zOiBHcmFwaFdpZGdldE9wdGlvbnMsIHNpemU6IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubGF5b3V0KSB7XG4gICAgICBjYXNlICdzaW1wbGUnOlxuICAgICAgICByZXR1cm4gc2ltcGxlU2ltdWxhdGlvbih0aGlzLml0ZW1zQXNOb2RlcywgdGhpcy5yZWxhdGlvbnNBc0xpbmtzLCBvcHRpb25zLCBzaXplKTtcbiAgICAgIGNhc2UgJ2ZvcmNlJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmb3JjZVNpbXVsYXRpb24odGhpcy5pdGVtc0FzTm9kZXMpXG4gICAgICAgICAgLmZvcmNlKCdjaGFyZ2UnLCBmb3JjZU1hbnlCb2R5KCkpXG4gICAgICAgICAgLmZvcmNlKCdsaW5rJywgZm9yY2VMaW5rKHRoaXMucmVsYXRpb25zQXNMaW5rcykuZGlzdGFuY2UoNTApLnN0cmVuZ3RoKDAuMSkpXG4gICAgICAgICAgLmZvcmNlKCd4JywgZm9yY2VYKCkpXG4gICAgICAgICAgLmZvcmNlKCd5JywgZm9yY2VZKCkpXG4gICAgICAgICAgLmZvcmNlKCdjb2xsaWRlJywgZm9yY2VDb2xsaWRlKG9wdGlvbnMubm9kZVJhZGl1cyAqIDMpKVxuICAgICAgICAgIC5mb3JjZSgnY2VudGVyJywgZm9yY2VDZW50ZXIoc2l6ZVswXSAvIDIsIHNpemVbMV0gLyAyKSk7XG4gICAgfVxuICB9XG5cbiAgZW1pdE1hbmlmZXN0KCkge1xuICAgIHRoaXMubWFuaWZlc3RNb2RpZmllZC5lbWl0KHtcbiAgICAgIHdpZGdldEluZGV4OiB0aGlzLndpZGdldEluZGV4LFxuICAgICAgbWFuaWZlc3Q6IHsgLi4udGhpcy5tYW5pZmVzdCwgb3B0aW9uczogdGhpcy5vcHRpb25zQ29weSB9XG4gICAgfSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuZHJhdyhbdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudC53aWR0aCwgdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudC5oZWlnaHRdLCB0aGlzLm9wdGlvbnMsIHRoaXMucmVsYXRpb25UeXBlcykoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIGlmICh0aGlzLnNpbXVsYXRpb24pIHtcbiAgICAgIHRoaXMuc2ltdWxhdGlvbi5zdG9wKCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTW9kZShtb2RlOiAnbW92ZScgfCAncmVjdGFuZ2xlJykge1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH1cblxuICBjaGFuZ2VMYXlvdXQoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5IS5sYXlvdXQgPSAkZXZlbnQ7XG4gIH1cblxuICBjaGFuZ2VOb2RlUmFkaXVzKCRldmVudDogYW55KSB7XG4gICAgdGhpcy5vcHRpb25zQ29weSEubm9kZVJhZGl1cyA9ICRldmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEcmF3aW5nIHRoaW5nc1xuICAgKi9cblxuICBkcmF3KHNpemU6IFtudW1iZXIsIG51bWJlcl0sIG9wdGlvbnM6IEdyYXBoV2lkZ2V0T3B0aW9ucywgcmVsYXRpb25UeXBlczogUmVsYXRpb25UeXBlW10pIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgICAvLyBDbGVhciBjYW52YXNcbiAgICAgICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBzaXplWzBdLCBzaXplWzFdKTtcblxuICAgICAgICAvLyBEcmF3aW5nIGxpbmtzXG4gICAgICAgIHRoaXMuY29udGV4dC5zYXZlKCk7XG4gICAgICAgIHRoaXMuZHJhd0xpbmtzKG9wdGlvbnMsIHJlbGF0aW9uVHlwZXMpO1xuICAgICAgICB0aGlzLmNvbnRleHQucmVzdG9yZSgpO1xuXG4gICAgICAgIC8vIERyYXdpbmcgbm9kZXNcbiAgICAgICAgdGhpcy5jb250ZXh0LnNhdmUoKTtcbiAgICAgICAgdGhpcy5kcmF3Tm9kZXMob3B0aW9ucyk7XG4gICAgICAgIHRoaXMuY29udGV4dC5yZXN0b3JlKCk7XG5cbiAgICAgICAgLy8gRHJhd2luZyBzZWxlY3Rpb24gcmVjdGFuZ2xlIGlmIG5lZWRlZFxuICAgICAgICBpZiAodGhpcy5zZWxlY3RSZWN0KSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICB0aGlzLmRyYXdTZWxlY3Rpb25SZWN0KCk7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGRyYXdTZWxlY3Rpb25SZWN0KCkge1xuICAgIGlmICh0aGlzLmNvbnRleHQgJiYgdGhpcy5zZWxlY3RSZWN0ICYmIHRoaXMubW9kZSA9PT0gJ3JlY3RhbmdsZScpIHtcbiAgICAgIHRoaXMuY29udGV4dC5nbG9iYWxBbHBoYSA9IDAuMztcbiAgICAgIHRoaXMuY29udGV4dC5maWxsU3R5bGUgPSAnI2JjZGNkYSc7XG5cbiAgICAgIGNvbnN0IG1pblggPSBNYXRoLm1pbih0aGlzLnNlbGVjdFJlY3Quc3RhcnQueCwgdGhpcy5zZWxlY3RSZWN0LmVuZC54KTtcbiAgICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbih0aGlzLnNlbGVjdFJlY3Quc3RhcnQueSwgdGhpcy5zZWxlY3RSZWN0LmVuZC55KTtcbiAgICAgIGNvbnN0IGRYID0gTWF0aC5hYnModGhpcy5zZWxlY3RSZWN0LnN0YXJ0LnggLSB0aGlzLnNlbGVjdFJlY3QuZW5kLngpO1xuICAgICAgY29uc3QgZFkgPSBNYXRoLmFicyh0aGlzLnNlbGVjdFJlY3Quc3RhcnQueSAtIHRoaXMuc2VsZWN0UmVjdC5lbmQueSk7XG5cbiAgICAgIHRoaXMuY29udGV4dC5yZWN0KG1pblgsIG1pblksIGRYLCBkWSk7XG4gICAgICB0aGlzLmNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZHJhd05vZGVzKG9wdGlvbnM6IEdyYXBoV2lkZ2V0T3B0aW9ucykge1xuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wdGlvbnMubm9kZVN0cm9rZU9wYWNpdHk7XG4gICAgICBmb3IgKGNvbnN0IFtpLCBub2RlXSBvZiB0aGlzLml0ZW1zQXNOb2Rlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICB0aGlzLmNvbnRleHQubW92ZVRvKChub2RlLnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSwgKG5vZGUueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmFyYyhcbiAgICAgICAgICAobm9kZS54ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0sXG4gICAgICAgICAgKG5vZGUueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdLFxuICAgICAgICAgIG9wdGlvbnMubm9kZVJhZGl1cyAvIDIgKyA4LFxuICAgICAgICAgIDAsXG4gICAgICAgICAgMiAqIE1hdGguUEksXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9IG5vZGUuc2VsZWN0ZWQgPyAnIzU2OWE5YycgOiBub2RlLml0ZW0ub0NsYXNzID09PSAndW5rbm93bicgPyAnI2UyYTdhNycgOiAnI2VjZWRmNCc7XG4gICAgICAgIHRoaXMuY29udGV4dC5zdHJva2VTdHlsZSA9IG5vZGUuc2VsZWN0ZWQgPyAnIzU2OWE5YycgOiBub2RlLml0ZW0ub0NsYXNzID09PSAndW5rbm93bicgPyAnI2UyYTdhNycgOiAnI2VjZWRmNCc7XG4gICAgICAgIHRoaXMuY29udGV4dC5maWxsKCk7XG4gICAgICAgIHRoaXMuY29udGV4dC5zdHJva2UoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRyYXdJbWFnZShcbiAgICAgICAgICBub2RlLmltYWdlLFxuICAgICAgICAgIChub2RlLnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSAtIG9wdGlvbnMubm9kZVJhZGl1cyAvIDIsXG4gICAgICAgICAgKG5vZGUueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdIC0gb3B0aW9ucy5ub2RlUmFkaXVzIC8gMixcbiAgICAgICAgICBvcHRpb25zLm5vZGVSYWRpdXMsXG4gICAgICAgICAgb3B0aW9ucy5ub2RlUmFkaXVzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkcmF3TGlua3Mob3B0aW9uczogR3JhcGhXaWRnZXRPcHRpb25zLCByZWxhdGlvblR5cGVzOiBSZWxhdGlvblR5cGVbXSkge1xuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wdGlvbnMubGlua1N0cm9rZU9wYWNpdHk7XG4gICAgICBmb3IgKGNvbnN0IFtpLCBsaW5rXSBvZiB0aGlzLnJlbGF0aW9uc0FzTGlua3MuZW50cmllcygpKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgY29uc3Qgc291cmNlTm9kZSA9IHRoaXMuaXRlbXNBc05vZGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGxpbmsucmVsYXRpb24uc291cmNlKTtcbiAgICAgICAgbGV0IHRhcmdldE5vZGUgPSB0aGlzLml0ZW1zQXNOb2Rlcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBsaW5rLnJlbGF0aW9uLmRlc3RpbmF0aW9uKTtcbiAgICAgICAgaWYgKGxpbmsuc291cmNlID09PSBsaW5rLnRhcmdldCAmJiB0YXJnZXROb2RlKSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0Lm1vdmVUbygoc291cmNlTm9kZT8ueCA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLCAoc291cmNlTm9kZT8ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdKTtcbiAgICAgICAgICB0aGlzLmNvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICAgICAgICAgIChzb3VyY2VOb2RlPy54ID8/IDApIC0gMTAgKyB0aGlzLmdsb2JhbE9mZnNldFswXSxcbiAgICAgICAgICAgIChzb3VyY2VOb2RlPy55ID8/IDApIC0gNjAgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSxcbiAgICAgICAgICAgIChzb3VyY2VOb2RlPy54ID8/IDApICsgMTIwICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0sXG4gICAgICAgICAgICAoc291cmNlTm9kZT8ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdLFxuICAgICAgICAgICAgKHNvdXJjZU5vZGU/LnggPz8gMCkgLSAxMCArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLFxuICAgICAgICAgICAgKHNvdXJjZU5vZGU/LnkgPz8gMCkgKyAyMCArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCB7IG1pZGRsZVgsIG1pZGRsZVksIGFuZ2xlIH0gPSB0aGlzLmRyYXdTZWxmUmVsYXRpb25UZXh0TGluayhsaW5rLCBzb3VyY2VOb2RlISwgcmVsYXRpb25UeXBlcywgb3B0aW9ucyk7XG4gICAgICAgICAgLy8gYXJyb3dcbiAgICAgICAgICB0aGlzLmRyYXdBcnJvdyhcbiAgICAgICAgICAgICh0YXJnZXROb2RlPy54ID8/IDApICsgMTIwICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0sXG4gICAgICAgICAgICAodGFyZ2V0Tm9kZT8ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdLFxuICAgICAgICAgICAgbWlkZGxlWCxcbiAgICAgICAgICAgIG1pZGRsZVkgKyAzLFxuICAgICAgICAgICAgYW5nbGUgLSAxMDBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29udGV4dC5tb3ZlVG8oKHNvdXJjZU5vZGU/LnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSwgKHNvdXJjZU5vZGU/LnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSk7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVUbygodGFyZ2V0Tm9kZT8ueCA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLCAodGFyZ2V0Tm9kZT8ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdKTtcbiAgICAgICAgICBjb25zdCB7IG1pZGRsZVgsIG1pZGRsZVksIGFuZ2xlIH0gPSB0aGlzLmRyYXdUZXh0TGluayhsaW5rLCBzb3VyY2VOb2RlISwgdGFyZ2V0Tm9kZSEsIHJlbGF0aW9uVHlwZXMsIG9wdGlvbnMpO1xuICAgICAgICAgIC8vIGFycm93XG4gICAgICAgICAgdGhpcy5kcmF3QXJyb3coXG4gICAgICAgICAgICAodGFyZ2V0Tm9kZT8ueCA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLFxuICAgICAgICAgICAgKHRhcmdldE5vZGU/LnkgPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFsxXSxcbiAgICAgICAgICAgIG1pZGRsZVgsXG4gICAgICAgICAgICBtaWRkbGVZLFxuICAgICAgICAgICAgYW5nbGVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkcmF3U2VsZlJlbGF0aW9uVGV4dExpbmsoXG4gICAgbGluazogUHJ5TGluayxcbiAgICBzb3VyY2VOb2RlOiBQcnlOb2RlLFxuICAgIHJlbGF0aW9uVHlwZXM6IFJlbGF0aW9uVHlwZVtdLFxuICAgIG9wdGlvbnM6IEdyYXBoV2lkZ2V0T3B0aW9uc1xuICApIHtcbiAgICBjb25zdCBtaWRkbGVYID0gKHNvdXJjZU5vZGU/LnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSArIDQ1O1xuICAgIGNvbnN0IG1pZGRsZVkgPSAoc291cmNlTm9kZT8ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdIC0gMjA7XG4gICAgbGV0IGFuZ2xlID0gTWF0aC5hdGFuMihzb3VyY2VOb2RlPy55ID8/IDAsIHNvdXJjZU5vZGU/LnggPz8gMCk7XG4gICAgbGV0IGRyYXdBbmdsZSA9IGFuZ2xlO1xuXG4gICAgcmV0dXJuIHRoaXMuZHJhd1RleHQobWlkZGxlWCwgbWlkZGxlWSwgYW5nbGUsIHJlbGF0aW9uVHlwZXMsIG9wdGlvbnMsIGxpbmssIGRyYXdBbmdsZSk7XG4gIH1cblxuICBwcml2YXRlIGRyYXdUZXh0TGluayhcbiAgICBsaW5rOiBQcnlMaW5rLFxuICAgIHNvdXJjZU5vZGU6IFByeU5vZGUsXG4gICAgdGFyZ2V0Tm9kZTogUHJ5Tm9kZSxcbiAgICByZWxhdGlvblR5cGVzOiBSZWxhdGlvblR5cGVbXSxcbiAgICBvcHRpb25zOiBHcmFwaFdpZGdldE9wdGlvbnNcbiAgKSB7XG4gICAgY29uc3QgbWlkZGxlWCA9ICgoc291cmNlTm9kZT8ueCA/PyAwKSArICh0YXJnZXROb2RlPy54ID8/IDApKSAvIDIgKyB0aGlzLmdsb2JhbE9mZnNldFswXTtcbiAgICBjb25zdCBtaWRkbGVZID0gKChzb3VyY2VOb2RlPy55ID8/IDApICsgKHRhcmdldE5vZGU/LnkgPz8gMCkpIC8gMiArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdO1xuICAgIGxldCBhbmdsZSA9IE1hdGguYXRhbjIoKHRhcmdldE5vZGU/LnkgPz8gMCkgLSAoc291cmNlTm9kZT8ueSA/PyAwKSwgKHRhcmdldE5vZGU/LnggPz8gMCkgLSAoc291cmNlTm9kZT8ueCA/PyAwKSk7XG4gICAgbGV0IGRyYXdBbmdsZSA9IGFuZ2xlO1xuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIGlmICgoc291cmNlTm9kZT8ueCA/PyAwKSA+ICh0YXJnZXROb2RlPy54ID8/IDApKSB7XG4gICAgICAgIGRyYXdBbmdsZSArPSBNYXRoLlBJO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRyYXdUZXh0KG1pZGRsZVgsIG1pZGRsZVksIGFuZ2xlLCByZWxhdGlvblR5cGVzLCBvcHRpb25zLCBsaW5rLCBkcmF3QW5nbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3VGV4dChcbiAgICBtaWRkbGVYOiBudW1iZXIsXG4gICAgbWlkZGxlWTogbnVtYmVyLFxuICAgIGFuZ2xlOiBudW1iZXIsXG4gICAgcmVsYXRpb25UeXBlczogYW55W10sXG4gICAgb3B0aW9uczogR3JhcGhXaWRnZXRPcHRpb25zLFxuICAgIGxpbms6IFByeUxpbmssXG4gICAgZHJhd0FuZ2xlOiBudW1iZXJcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgdGhpcy5jb250ZXh0LmZvbnQgPSAnMTBweCBVYnVudHUnO1xuICAgICAgY29uc3QgcmVsYXRpb25UeXBlID0gbGluay5yZWxhdGlvbi5yZWxhdGlvblR5cGU7XG4gICAgICB0aGlzLmNvbnRleHQuc2F2ZSgpO1xuICAgICAgdGhpcy5jb250ZXh0LnRyYW5zbGF0ZShtaWRkbGVYLCBtaWRkbGVZKTtcbiAgICAgIHRoaXMuY29udGV4dC5yb3RhdGUoZHJhd0FuZ2xlKTtcbiAgICAgIHRoaXMuY29udGV4dC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgIHRoaXMuY29udGV4dC5maWxsVGV4dChyZWxhdGlvblR5cGVzLmZpbmQoKHJlbFQpID0+IHJlbFQuaWQgPT09IHJlbGF0aW9uVHlwZSk/Lm5hbWUgPz8gcmVsYXRpb25UeXBlLCAwLCAtNyk7XG4gICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvcHRpb25zLmxpbmtTdHJva2VDb2xvcjtcbiAgICAgIHRoaXMuY29udGV4dC5saW5lV2lkdGggPSBvcHRpb25zLmxpbmtTdHJva2VXaWR0aDtcbiAgICAgIHRoaXMuY29udGV4dC5zdHJva2UoKTtcbiAgICAgIHRoaXMuY29udGV4dC5yZXN0b3JlKCk7XG4gICAgfVxuICAgIHJldHVybiB7IG1pZGRsZVgsIG1pZGRsZVksIGFuZ2xlIH07XG4gIH1cblxuICBwcml2YXRlIGRyYXdBcnJvdyh0YXJnZXRYOiBudW1iZXIsIHRhcmdldFk6IG51bWJlciwgbWlkZGxlWDogbnVtYmVyLCBtaWRkbGVZOiBudW1iZXIsIGFuZ2xlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDE7XG4gICAgICBjb25zdCBoZWFkbGVuID0gMTA7XG5cbiAgICAgIC8vIFRoaXMgbWFrZXMgaXQgc28gdGhlIGVuZCBvZiB0aGUgYXJyb3cgaGVhZCBpcyBsb2NhdGVkIGF0IHRveCwgdG95LCBkb24ndCBhc2sgd2hlcmUgMS4xNSBjb21lcyBmcm9tXG4gICAgICB0YXJnZXRYIC09IE1hdGguY29zKGFuZ2xlKSAqICh3aWR0aCAqIDEuMTUpO1xuICAgICAgdGFyZ2V0WSAtPSBNYXRoLnNpbihhbmdsZSkgKiAod2lkdGggKiAxLjE1KTtcblxuICAgICAgLy9zdGFydGluZyBhIG5ldyBwYXRoIGZyb20gdGhlIGhlYWQgb2YgdGhlIGFycm93IHRvIG9uZSBvZiB0aGUgc2lkZXMgb2YgdGhlIHBvaW50XG4gICAgICB0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICB0aGlzLmNvbnRleHQubW92ZVRvKG1pZGRsZVgsIG1pZGRsZVkpO1xuICAgICAgdGhpcy5jb250ZXh0LmxpbmVUbyhcbiAgICAgICAgbWlkZGxlWCAtIGhlYWRsZW4gKiBNYXRoLmNvcyhhbmdsZSAtIE1hdGguUEkgLyA3KSxcbiAgICAgICAgbWlkZGxlWSAtIGhlYWRsZW4gKiBNYXRoLnNpbihhbmdsZSAtIE1hdGguUEkgLyA3KVxuICAgICAgKTtcblxuICAgICAgLy9wYXRoIGZyb20gdGhlIHNpZGUgcG9pbnQgb2YgdGhlIGFycm93LCB0byB0aGUgb3RoZXIgc2lkZSBwb2ludFxuICAgICAgdGhpcy5jb250ZXh0LmxpbmVUbyhcbiAgICAgICAgbWlkZGxlWCAtIGhlYWRsZW4gKiBNYXRoLmNvcyhhbmdsZSArIE1hdGguUEkgLyA3KSxcbiAgICAgICAgbWlkZGxlWSAtIGhlYWRsZW4gKiBNYXRoLnNpbihhbmdsZSArIE1hdGguUEkgLyA3KVxuICAgICAgKTtcblxuICAgICAgLy9wYXRoIGZyb20gdGhlIHNpZGUgcG9pbnQgYmFjayB0byB0aGUgdGlwIG9mIHRoZSBhcnJvdywgYW5kIHRoZW4gYWdhaW4gdG8gdGhlIG9wcG9zaXRlIHNpZGUgcG9pbnRcbiAgICAgIHRoaXMuY29udGV4dC5saW5lVG8obWlkZGxlWCwgbWlkZGxlWSk7XG4gICAgICB0aGlzLmNvbnRleHQubGluZVRvKFxuICAgICAgICBtaWRkbGVYIC0gaGVhZGxlbiAqIE1hdGguY29zKGFuZ2xlIC0gTWF0aC5QSSAvIDcpLFxuICAgICAgICBtaWRkbGVZIC0gaGVhZGxlbiAqIE1hdGguc2luKGFuZ2xlIC0gTWF0aC5QSSAvIDcpXG4gICAgICApO1xuXG4gICAgICAvL2RyYXdzIHRoZSBwYXRocyBjcmVhdGVkIGFib3ZlXG4gICAgICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICB0aGlzLmNvbnRleHQuZmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3VzZSBNYW5hZ2VtZW50XG4gICAqL1xuXG4gIG9uTW91c2VEb3duKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5maW5kTm9kZXMoJGV2ZW50KTtcbiAgICB0aGlzLmRyYWdnZWROb2RlID0gbm9kZXNbMF07XG4gICAgaWYgKHRoaXMuZHJhZ2dlZE5vZGUpIHtcbiAgICAgIHRoaXMuc2ltdWxhdGlvbi5hbHBoYVRhcmdldCgwLjMpLnJlc3RhcnQoKTtcbiAgICAgIHRoaXMuZHJhZ2dlZE5vZGUuZnggPSB0aGlzLmRyYWdnZWROb2RlLng7XG4gICAgICB0aGlzLmRyYWdnZWROb2RlLmZ5ID0gdGhpcy5kcmFnZ2VkTm9kZS55O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdFJlY3QgPSB7XG4gICAgICAgIHN0YXJ0OiB7IHg6ICRldmVudC5vZmZzZXRYLCB5OiAkZXZlbnQub2Zmc2V0WSB9LFxuICAgICAgICBlbmQ6IHsgeDogJGV2ZW50Lm9mZnNldFgsIHk6ICRldmVudC5vZmZzZXRZIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xuICB9XG5cbiAgb25Nb3VzZU1vdmUoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5tb3ZlJC5uZXh0KCRldmVudCk7XG4gICAgaWYgKHRoaXMubW91c2VEb3duKSB7XG4gICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBtb3ZlQ2FsbGJhY2soJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZHJhZ2dlZE5vZGUpIHtcbiAgICAgIHRoaXMuZHJhZ2dlZE5vZGUuZnggPSAkZXZlbnQub2Zmc2V0WCAtIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdO1xuICAgICAgdGhpcy5kcmFnZ2VkTm9kZS5meSA9ICRldmVudC5vZmZzZXRZIC0gdGhpcy5nbG9iYWxPZmZzZXRbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdFJlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RSZWN0IS5lbmQgPSB7IHg6ICRldmVudC5vZmZzZXRYLCB5OiAkZXZlbnQub2Zmc2V0WSB9O1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnbW92ZScpIHtcbiAgICAgICAgICB0aGlzLmFkZGl0aW9ubmFsT2Zmc2V0ID0gW1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RSZWN0LmVuZC54IC0gdGhpcy5zZWxlY3RSZWN0LnN0YXJ0LngsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFJlY3QuZW5kLnkgLSB0aGlzLnNlbGVjdFJlY3Quc3RhcnQueVxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cblxuICAgIC8vIGRpc3BsYXkgdG9vbHRpcCBmb3Igbm9kZXNcbiAgICBjb25zdCBub2RlcyA9IHRoaXMuZmluZE5vZGVzKCRldmVudCk7XG4gICAgdGhpcy50b29sdGlwJC5uZXh0KHsgaXRlbTogbm9kZXNbMF0sIGRpc3BsYXk6IG5vZGVzLmxlbmd0aCA+IDAsIHg6ICRldmVudC5vZmZzZXRYLCB5OiAkZXZlbnQub2Zmc2V0WSB9KTtcbiAgfVxuXG4gIG9uTW91c2VVcCgkZXZlbnQ6IE1vdXNlRXZlbnQsIGxlYXZlID0gZmFsc2UpIHtcbiAgICBpZiAoJGV2ZW50LmJ1dHRvbiAhPT0gMikge1xuICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dlZE5vZGUpIHtcbiAgICAgICAgICB0aGlzLnNpbXVsYXRpb24uYWxwaGFUYXJnZXQoMCk7XG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9uc0NvcHk/LmxheW91dCA9PT0gJ2ZvcmNlJykge1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkTm9kZS5meCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmRyYWdnZWROb2RlLmZ5ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JlY3RhbmdsZScpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5maW5kTm9kZXNJblNoYXBlZCh0aGlzLnNlbGVjdFJlY3QhKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RNYW55KHsgaWRzOiBub2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuaXRlbS5pZCkgfSkpO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gWy4uLnRoaXMuZ2xvYmFsT2Zmc2V0XTtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25uYWxPZmZzZXQgPSBbMCwgMF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWxlYXZlKSB7XG4gICAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmZpbmROb2RlcygkZXZlbnQpO1xuICAgICAgICAgIGlmIChub2Rlc1swXT8uaXRlbT8uaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3QoeyBpZDogbm9kZXNbMF0/Lml0ZW0/LmlkLCBjdW11bGF0aXZlOiAkZXZlbnQuc2hpZnRLZXkgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0KHsgaWQ6ICcnLCBjdW11bGF0aXZlOiAkZXZlbnQuc2hpZnRLZXkgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm1vZGUgPSAnbW92ZSc7XG4gICAgdGhpcy5zZWxlY3RSZWN0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZHJhZ2dlZE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMubW91c2VEb3duID0gZmFsc2U7XG4gIH1cblxuICBnZXQgZ2xvYmFsT2Zmc2V0KCkge1xuICAgIHJldHVybiBbdGhpcy5vZmZzZXRbMF0gKyB0aGlzLmFkZGl0aW9ubmFsT2Zmc2V0WzBdLCB0aGlzLm9mZnNldFsxXSArIHRoaXMuYWRkaXRpb25uYWxPZmZzZXRbMV1dO1xuICB9XG5cbiAgY29udGV4dE1lbnUoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMubWFuaWZlc3QuY29udGV4dE1lbnUgIT09IGZhbHNlKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5maW5kTm9kZXMoJGV2ZW50KTtcbiAgICAgIGlmIChub2Rlc1swXSAmJiBub2Rlc1swXS5pdGVtKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgQ29udGV4dE1lbnVBY3Rpb25zLm9wZW4oe1xuICAgICAgICAgICAgaXRlbUlkOiBub2Rlc1swXS5pdGVtLmlkLFxuICAgICAgICAgICAgY2xpZW50WDogJGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICBjbGllbnRZOiAkZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgIHJlc3VsdFNldDogQXJyYXkuaXNBcnJheSh0aGlzLm1hbmlmZXN0LmRhdGFzb3VyY2UpID8gdGhpcy5tYW5pZmVzdC5kYXRhc291cmNlWzBdIDogdGhpcy5tYW5pZmVzdC5kYXRhc291cmNlLFxuICAgICAgICAgICAgZnJvbTogJ2dyYXBoJyxcbiAgICAgICAgICAgIGFsbG93T2JqZWN0Q3JlYXRpb246IGZhbHNlXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbk1vdXNlVXAoJGV2ZW50LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kaW5nIE5vZGVzXG4gICAqL1xuXG4gIGZpbmROb2RlcygkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc0FzTm9kZXMuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+XG4gICAgICAgIE1hdGgucG93KChpdGVtLnggPz8gMCkgLSAkZXZlbnQub2Zmc2V0WCArIHRoaXMuZ2xvYmFsT2Zmc2V0WzBdLCAyKSArXG4gICAgICAgICAgTWF0aC5wb3coKGl0ZW0ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdIC0gJGV2ZW50Lm9mZnNldFksIDIpIDxcbiAgICAgICAgTWF0aC5wb3codGhpcy5vcHRpb25zLm5vZGVSYWRpdXMgLyAyICsgOCwgMilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTm9kZXNJblNoYXBlZChzaGFwZTogeyBzdGFydDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9OyBlbmQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB9KTogUHJ5Tm9kZVtdIHtcbiAgICBjb25zdCBtaW5YID0gTWF0aC5taW4oc2hhcGUuc3RhcnQueCwgc2hhcGUuZW5kLngpO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChzaGFwZS5zdGFydC54LCBzaGFwZS5lbmQueCk7XG4gICAgY29uc3QgbWluWSA9IE1hdGgubWluKHNoYXBlLnN0YXJ0LnksIHNoYXBlLmVuZC55KTtcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgoc2hhcGUuc3RhcnQueSwgc2hhcGUuZW5kLnkpO1xuXG4gICAgcmV0dXJuIHRoaXMuaXRlbXNBc05vZGVzLmZpbHRlcihcbiAgICAgIChpdGVtKSA9PlxuICAgICAgICAoaXRlbS54ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMF0gPiBtaW5YICYmXG4gICAgICAgIChpdGVtLnggPz8gMCkgKyB0aGlzLmdsb2JhbE9mZnNldFswXSA8IG1heFggJiZcbiAgICAgICAgKGl0ZW0ueSA/PyAwKSArIHRoaXMuZ2xvYmFsT2Zmc2V0WzFdID4gbWluWSAmJlxuICAgICAgICAoaXRlbS55ID8/IDApICsgdGhpcy5nbG9iYWxPZmZzZXRbMV0gPCBtYXhZXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHRvSW1hZ2UoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgcmVzb2x2ZSh0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cHJ5LXdpZGdldC1mb3JjZS1ncmFwaC1jc3M+PC9wcnktd2lkZ2V0LWZvcmNlLWdyYXBoLWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldC0tZ3JhcGhcIiBbY2xhc3MuLWhhcy1oZWFkZXJdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiPlxuICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgICpuZ0lmPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICBbbWFuaWZlc3RdPVwibWFuaWZlc3RcIlxuICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICBbaGVhZGVyT3B0aW9uc109XCIoZGlzcGxheUhlYWRlciQgfCBhc3luYykgPz8ge31cIlxuICAgICNoZWFkZXJcbiAgPlxuICAgIDxwcnktc2V0dGluZ3NcbiAgICAgIChzYXZlVHJpZ2dlcmVkKT1cImVtaXRNYW5pZmVzdCgpXCJcbiAgICAgIChjaGFuZ2VUaXRsZSk9XCJjaGFuZ2VXaWRnZXRUaXRsZSgkZXZlbnQpXCJcbiAgICAgIFtoZWFkZXJQcmVzZW50XT1cImRpc3BsYXlIZWFkZXIkIHwgYXN5bmNcIlxuICAgICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcbiAgICAgIFtvcGVuJF09XCJvcGVuJFwiXG4gICAgICBjbGFzcz1cIm8tc2V0dGluZ3NcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImdyYXBoX2xheW91dFwiPnt7ICdAcHJ5LndpZGdldC5ncmFwaC5sYXlvdXQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGF5b3V0KCRldmVudClcIlxuICAgICAgICAgIFtpdGVtc109XCJsYXlvdXRzXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weSEubGF5b3V0XCJcbiAgICAgICAgICBiaW5kTGFiZWw9XCJrZXlcIlxuICAgICAgICAgIGJpbmRWYWx1ZT1cImtleVwiXG4gICAgICAgICAgaWQ9XCJncmFwaF9sYXlvdXRcIlxuICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgPHByeS1yYW5nZVxuICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5IS5ub2RlUmFkaXVzXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VOb2RlUmFkaXVzKCRldmVudClcIlxuICAgICAgICAgIGxhYmVsVHJhbnNsYXRlPVwiQHByeS53aWRnZXQuZ3JhcGgubm9kZVJhZGl1c1wiXG4gICAgICAgICAgbWluPVwiMTBcIlxuICAgICAgICAgIG1heD1cIjIwMFwiXG4gICAgICAgID48L3ByeS1yYW5nZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvcHJ5LXNldHRpbmdzPlxuICA8L3ByeS13aWRnZXQtaGVhZGVyPlxuICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0XCIgKm5nSWY9XCIoYWxsSXRlbXNXaXRoSW1hZ2VzJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwXCI+XG4gICAgPGltZ1xuICAgICAgY2xhc3M9XCJuby1yZXN1bHRfX3NlYXJjaFwiXG4gICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvc3Zncy9wcnlfcmVjaGVyY2hlX3Bhc19kZV9yZXN1bHRhdC5zdmdcIlxuICAgICAgYWx0PVwie3sgJ0Bwcnkud2lkZ2V0LnRhYmxlLmVtcHR5JyB8IGkxOG4gfX1cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAvPlxuICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmdyYXBoLmVtcHR5JyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLXNlbGVjdGlvbi1jaG9pY2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seSBhLXRvb2x0aXAgYS10b29sdGlwLS1tb3ZlXCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdtb3ZlJylcIlxuICAgICAgW2NsYXNzLi1zZWxlY3RlZF09XCJtb2RlID09PSAnbW92ZSdcIlxuICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LndpZGdldC5ncmFwaC5tb3ZlJyB8IGkxOG5cIlxuICAgID5cbiAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwibW92ZVwiPjwvcHJ5LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Bwcnkud2lkZ2V0LmdyYXBoLm1vdmUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IGEtdG9vbHRpcCBhLXRvb2x0aXAtLXJlY3RhbmdsZVwiXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9kZSgncmVjdGFuZ2xlJylcIlxuICAgICAgW2NsYXNzLi1zZWxlY3RlZF09XCJtb2RlID09PSAncmVjdGFuZ2xlJ1wiXG4gICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0Bwcnkud2lkZ2V0LmdyYXBoLnJlY3RhbmdsZScgfCBpMThuXCJcbiAgICA+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInJlY3RhbmdsZVwiPjwvcHJ5LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Bwcnkud2lkZ2V0LmdyYXBoLnJlY3RhbmdsZScgfCBpMThuIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8Y2FudmFzXG4gICAgI2NhbnZhc1xuICAgIGNsYXNzPVwiby13aWRnZXQtLWdyYXBoX19jYW52YXNcIlxuICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZVVwKCRldmVudCwgdHJ1ZSlcIlxuICAgIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgPjwvY2FudmFzPlxuXG4gIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tcmVjdGFuZ2xlXCIgI3NlbGVjdGlvblJlY3RhbmdsZT48L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJtLXRvb2x0aXAgbS10b29sdGlwLS1wb3B1cCBub2V2ZW50XCJcbiAgICBbc3R5bGUuZGlzcGxheV09XCIodG9vbHRpcCQgfCBhc3luYyk/LmRpc3BsYXkgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgICBbc3R5bGUubGVmdC5weF09XCIoKHRvb2x0aXAkIHwgYXN5bmMpPy54ID8/IDApICsgNTBcIlxuICAgIFtzdHlsZS50b3AucHhdPVwiKCh0b29sdGlwJCB8IGFzeW5jKT8ueSA/PyAwKSArIDUwXCJcbiAgPlxuICAgIDxkaXYgI3Rvb2x0aXA+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -96,4 +96,4 @@ const recursiveTopologicalSort = (nodes, result, node, links) => {
|
|
|
96
96
|
node.topologicalColor = 'BLACK';
|
|
97
97
|
result.push(node);
|
|
98
98
|
};
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLmZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtZ3JhcGgvbGF5b3V0L3NpbXBsZS5mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUM5QixNQUFpQixFQUNqQixLQUFnQixFQUNoQixPQUEyQixFQUMzQixJQUFzQixFQUN0QixFQUFFO0lBQ0YsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFN0MsTUFBTSxZQUFZLEdBQUcsRUFBaUIsQ0FBQztJQUN2QyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QixJQUFJLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRS9CLE9BQU8sY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDaEMsSUFBSSxzQkFBc0IsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO1lBQ25ELHFGQUFxRjtZQUNyRixZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLHNCQUFzQixHQUFHLENBQUMsQ0FBQztZQUMzQixZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekQ7UUFFRCxJQUFJLFNBQVMsR0FB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QUM7SUFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhXaWRnZXRPcHRpb25zIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IFByeUxpbmssIFByeU5vZGUgfSBmcm9tICcuL25vZGUuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IHNpbXBsZVNpbXVsYXRpb24gPSAoXG4gIF9ub2RlczogUHJ5Tm9kZVtdLFxuICBsaW5rczogUHJ5TGlua1tdLFxuICBvcHRpb25zOiBHcmFwaFdpZGdldE9wdGlvbnMsXG4gIHNpemU6IFtudW1iZXIsIG51bWJlcl1cbikgPT4ge1xuICBsZXQgdGlja0ZuID0gKCkgPT4ge307XG5cbiAgY29uc3Qgbm9kZXMgPSB0b3BvbG9naWNhbFNvcnQoX25vZGVzLCBsaW5rcyk7XG5cbiAgY29uc3Qgbm9kZXNCeUxldmVsID0gW10gYXMgUHJ5Tm9kZVtdW107XG4gIG5vZGVzQnlMZXZlbFswXSA9IFtub2Rlc1swXV07XG5cbiAgbGV0IHJlbWFpbmluZ05vZGVzID0gZ2V0UmVtYWluaW5nTm9kZXMobm9kZXNCeUxldmVsLCBub2Rlcyk7XG4gIGxldCBjdXJyZW50TGV2ZWwgPSAxO1xuICBsZXQgcHJldmlvdXNSZW1haW5pbmdOb2RlcyA9IDA7XG5cbiAgd2hpbGUgKHJlbWFpbmluZ05vZGVzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAocHJldmlvdXNSZW1haW5pbmdOb2RlcyA9PSByZW1haW5pbmdOb2Rlcy5sZW5ndGgpIHtcbiAgICAgIC8vIE5vIG5ldyBub2RlIHJlYWNoZWQsIGFkZCBvbmUgb2YgdGhlIHJlbWFpbmluZyBub2RlIHRvIHRoZSBzZXQsIGFuZCByZXN0YXJ0IGxvb3BpbmdcbiAgICAgIGN1cnJlbnRMZXZlbCA9IDE7XG4gICAgICBwcmV2aW91c1JlbWFpbmluZ05vZGVzID0gMDtcbiAgICAgIG5vZGVzQnlMZXZlbFswXS5wdXNoKHJlbWFpbmluZ05vZGVzWzBdKTtcbiAgICAgIHJlbWFpbmluZ05vZGVzID0gZ2V0UmVtYWluaW5nTm9kZXMobm9kZXNCeUxldmVsLCBub2Rlcyk7XG4gICAgfVxuXG4gICAgbGV0IG5leHROb2RlcyA9IG5vZGVzQnlMZXZlbFtjdXJyZW50TGV2ZWwgLSAxXVxuICAgICAgLm1hcChcbiAgICAgICAgKHJvb3ROb2RlKSA9PlxuICAgICAgICAgIGxpbmtzXG4gICAgICAgICAgICAuZmlsdGVyKChsaW5rKSA9PiByb290Tm9kZS5pbmRleCA9PT0gbGluay5zb3VyY2UpXG4gICAgICAgICAgICAubWFwKChsaW5rKSA9PiBub2Rlcy5maW5kKChub2RlKSA9PiBsaW5rLnRhcmdldCA9PT0gbm9kZS5pbmRleCkpXG4gICAgICAgICAgICAuZmlsdGVyKChub2RlKSA9PiAhIW5vZGUpIGFzIFByeU5vZGVbXVxuICAgICAgKVxuICAgICAgLnJlZHVjZSgocDogUHJ5Tm9kZVtdLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdIGFzIFByeU5vZGVbXSk7XG5cbiAgICBuZXh0Tm9kZXMgPSBuZXh0Tm9kZXMuZmlsdGVyKChub2RlKSA9PiByZW1haW5pbmdOb2Rlcy5tYXAoKHJlbWFpbmluZ05vZGUpID0+IHJlbWFpbmluZ05vZGUuaWQpLmluY2x1ZGVzKG5vZGUuaWQpKTtcblxuICAgIG5vZGVzQnlMZXZlbFtjdXJyZW50TGV2ZWxdID0gKG5vZGVzQnlMZXZlbFtjdXJyZW50TGV2ZWxdID8/IFtdKS5jb25jYXQoLi4ubmV4dE5vZGVzKTtcbiAgICBwcmV2aW91c1JlbWFpbmluZ05vZGVzID0gcmVtYWluaW5nTm9kZXMubGVuZ3RoO1xuICAgIHJlbWFpbmluZ05vZGVzID0gZ2V0UmVtYWluaW5nTm9kZXMobm9kZXNCeUxldmVsLCBub2Rlcyk7XG4gICAgY3VycmVudExldmVsKys7XG4gIH1cblxuICBsZXQgaW50ZXJ2YWw6IGFueTtcblxuICBjb25zdCB0aGF0ID0ge1xuICAgIG9uOiAodHlwZTogc3RyaW5nLCBmbjogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICd0aWNrJykge1xuICAgICAgICB0aWNrRm4gPSBmbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgc3RvcDogKCkgPT4ge1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICByZXR1cm4gdGhhdDtcbiAgICB9LFxuICAgIHN0YXJ0OiAoKSA9PiB7XG4gICAgICBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgY2FsY3VsYXRlTGF5b3V0KG5vZGVzQnlMZXZlbCwgb3B0aW9ucywgc2l6ZSk7XG4gICAgICAgIHRpY2tGbigpO1xuICAgICAgfSwgMTAwKTtcbiAgICAgIHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgcmVzdGFydDogKCkgPT4ge1xuICAgICAgdGhhdC5zdG9wKCkuc3RhcnQoKTtcbiAgICAgIHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgYWxwaGFUYXJnZXQ6ICgpID0+IHtcbiAgICAgIHJldHVybiB0aGF0O1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdGhhdC5zdGFydCgpO1xufTtcblxuY29uc3QgZ2V0VXNlZE5vZGVzID0gKG5vZGVzQnlMZXZlbDogUHJ5Tm9kZVtdW10pID0+IHtcbiAgcmV0dXJuIG5vZGVzQnlMZXZlbC5tYXAoKG5vZGVzKSA9PiAobm9kZXMgPz8gW10pLm1hcCgobm9kZSkgPT4gbm9kZT8uaWQpKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pO1xufTtcblxuY29uc3QgZ2V0UmVtYWluaW5nTm9kZXMgPSAobm9kZXNCeUxldmVsOiBQcnlOb2RlW11bXSwgYWxsTm9kZXM6IFByeU5vZGVbXSkgPT4ge1xuICBjb25zdCB1c2VkTm9kZXMgPSBnZXRVc2VkTm9kZXMobm9kZXNCeUxldmVsKTtcbiAgcmV0dXJuIGFsbE5vZGVzLmZpbHRlcigobm9kZSkgPT4gIXVzZWROb2Rlcy5pbmNsdWRlcyhub2RlLmlkKSk7XG59O1xuXG5jb25zdCBjYWxjdWxhdGVMYXlvdXQgPSAobm9kZXNCeUxldmVsOiBQcnlOb2RlW11bXSwgb3B0aW9uczogR3JhcGhXaWRnZXRPcHRpb25zLCBzaXplOiBbbnVtYmVyLCBudW1iZXJdKSA9PiB7XG4gIGNvbnN0IG1hcmdpbiA9IG9wdGlvbnMubm9kZVJhZGl1cyAqIDI7XG4gIGNvbnN0IGhTcGFjaW5nID0gb3B0aW9ucy5ub2RlUmFkaXVzICogODtcbiAgY29uc3QgdlNwYWNpbmcgPSBvcHRpb25zLm5vZGVSYWRpdXMgKiAyO1xuICBub2Rlc0J5TGV2ZWwuZm9yRWFjaCgobm9kZXNPZkxldmVsLCBsdmwpID0+IHtcbiAgICBub2Rlc09mTGV2ZWxcbiAgICAgIC5maWx0ZXIoKG5vZGUpID0+ICEhbm9kZSlcbiAgICAgIC5mb3JFYWNoKChub2RlLCBpZHhJbkxldmVsKSA9PiB7XG4gICAgICAgIG5vZGUueCA9IG5vZGUuZnggPz8gbWFyZ2luICsgMTAgKyBoU3BhY2luZyAqIGx2bDtcbiAgICAgICAgbm9kZS55ID0gbm9kZS5meSA/PyBtYXJnaW4gKyBpZHhJbkxldmVsICogdlNwYWNpbmc7XG4gICAgICB9KTtcbiAgfSk7XG59O1xuXG5jb25zdCB0b3BvbG9naWNhbFNvcnQgPSAobm9kZXM6IFByeU5vZGVbXSwgbGlua3M6IFByeUxpbmtbXSkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBbXSBhcyBQcnlOb2RlW107XG4gIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IChub2RlLnRvcG9sb2dpY2FsQ29sb3IgPSAnV0hJVEUnKSk7XG5cbiAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgIGlmIChub2RlLnRvcG9sb2dpY2FsQ29sb3IgPT09ICdXSElURScpIHtcbiAgICAgIHJlY3Vyc2l2ZVRvcG9sb2dpY2FsU29ydChub2RlcywgcmVzdWx0LCBub2RlLCBsaW5rcyk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0LnJldmVyc2UoKTtcbn07XG5cbmNvbnN0IHJlY3Vyc2l2ZVRvcG9sb2dpY2FsU29ydCA9IChub2RlczogUHJ5Tm9kZVtdLCByZXN1bHQ6IFByeU5vZGVbXSwgbm9kZTogUHJ5Tm9kZSwgbGlua3M6IFByeUxpbmtbXSkgPT4ge1xuICBub2RlLnRvcG9sb2dpY2FsQ29sb3IgPSAnR1JFWSc7XG4gIGNvbnN0IG5laWdoYm9ycyA9IG5vZGVzLmZpbHRlcihcbiAgICAocG90ZW50aWFsTmVpZ2hib3IpID0+XG4gICAgICBsaW5rcy5maWx0ZXIoKGxpbmspID0+IGxpbmsudGFyZ2V0ID09PSBwb3RlbnRpYWxOZWlnaGJvci5pbmRleCAmJiBsaW5rLnNvdXJjZSA9PT0gbm9kZS5pbmRleCkubGVuZ3RoID4gMFxuICApO1xuICBuZWlnaGJvcnMuZm9yRWFjaCgobmVpZ2hib3IpID0+IHtcbiAgICBpZiAobmVpZ2hib3IudG9wb2xvZ2ljYWxDb2xvciA9PT0gJ1dISVRFJykge1xuICAgICAgcmVjdXJzaXZlVG9wb2xvZ2ljYWxTb3J0KG5vZGVzLCByZXN1bHQsIG5laWdoYm9yLCBsaW5rcyk7XG4gICAgfVxuICB9KTtcbiAgbm9kZS50b3BvbG9naWNhbENvbG9yID0gJ0JMQUNLJztcbiAgcmVzdWx0LnB1c2gobm9kZSk7XG59O1xuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLmZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtZ3JhcGgvbGF5b3V0L3NpbXBsZS5mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUM5QixNQUFpQixFQUNqQixLQUFnQixFQUNoQixPQUEyQixFQUMzQixJQUFzQixFQUN0QixFQUFFO0lBQ0YsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFN0MsTUFBTSxZQUFZLEdBQUcsRUFBaUIsQ0FBQztJQUN2QyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QixJQUFJLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRS9CLE9BQU8sY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxJQUFJLHNCQUFzQixJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxxRkFBcUY7WUFDckYsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUNqQixzQkFBc0IsR0FBRyxDQUFDLENBQUM7WUFDM0IsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFF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USxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7SUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFdpZGdldE9wdGlvbnMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgUHJ5TGluaywgUHJ5Tm9kZSB9IGZyb20gJy4vbm9kZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3Qgc2ltcGxlU2ltdWxhdGlvbiA9IChcbiAgX25vZGVzOiBQcnlOb2RlW10sXG4gIGxpbmtzOiBQcnlMaW5rW10sXG4gIG9wdGlvbnM6IEdyYXBoV2lkZ2V0T3B0aW9ucyxcbiAgc2l6ZTogW251bWJlciwgbnVtYmVyXVxuKSA9PiB7XG4gIGxldCB0aWNrRm4gPSAoKSA9PiB7fTtcblxuICBjb25zdCBub2RlcyA9IHRvcG9sb2dpY2FsU29ydChfbm9kZXMsIGxpbmtzKTtcblxuICBjb25zdCBub2Rlc0J5TGV2ZWwgPSBbXSBhcyBQcnlOb2RlW11bXTtcbiAgbm9kZXNCeUxldmVsWzBdID0gW25vZGVzWzBdXTtcblxuICBsZXQgcmVtYWluaW5nTm9kZXMgPSBnZXRSZW1haW5pbmdOb2Rlcyhub2Rlc0J5TGV2ZWwsIG5vZGVzKTtcbiAgbGV0IGN1cnJlbnRMZXZlbCA9IDE7XG4gIGxldCBwcmV2aW91c1JlbWFpbmluZ05vZGVzID0gMDtcblxuICB3aGlsZSAocmVtYWluaW5nTm9kZXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChwcmV2aW91c1JlbWFpbmluZ05vZGVzID09IHJlbWFpbmluZ05vZGVzLmxlbmd0aCkge1xuICAgICAgLy8gTm8gbmV3IG5vZGUgcmVhY2hlZCwgYWRkIG9uZSBvZiB0aGUgcmVtYWluaW5nIG5vZGUgdG8gdGhlIHNldCwgYW5kIHJlc3RhcnQgbG9vcGluZ1xuICAgICAgY3VycmVudExldmVsID0gMTtcbiAgICAgIHByZXZpb3VzUmVtYWluaW5nTm9kZXMgPSAwO1xuICAgICAgbm9kZXNCeUxldmVsWzBdLnB1c2gocmVtYWluaW5nTm9kZXNbMF0pO1xuICAgICAgcmVtYWluaW5nTm9kZXMgPSBnZXRSZW1haW5pbmdOb2Rlcyhub2Rlc0J5TGV2ZWwsIG5vZGVzKTtcbiAgICB9XG5cbiAgICBsZXQgbmV4dE5vZGVzID0gbm9kZXNCeUxldmVsW2N1cnJlbnRMZXZlbCAtIDFdXG4gICAgICAubWFwKFxuICAgICAgICAocm9vdE5vZGUpID0+XG4gICAgICAgICAgbGlua3NcbiAgICAgICAgICAgIC5maWx0ZXIoKGxpbmspID0+IHJvb3ROb2RlLmluZGV4ID09PSBsaW5rLnNvdXJjZSlcbiAgICAgICAgICAgIC5tYXAoKGxpbmspID0+IG5vZGVzLmZpbmQoKG5vZGUpID0+IGxpbmsudGFyZ2V0ID09PSBub2RlLmluZGV4KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKG5vZGUpID0+ICEhbm9kZSkgYXMgUHJ5Tm9kZVtdXG4gICAgICApXG4gICAgICAucmVkdWNlKChwOiBQcnlOb2RlW10sIGMpID0+IFsuLi5wLCAuLi5jXSwgW10gYXMgUHJ5Tm9kZVtdKTtcblxuICAgIG5leHROb2RlcyA9IG5leHROb2Rlcy5maWx0ZXIoKG5vZGUpID0+IHJlbWFpbmluZ05vZGVzLm1hcCgocmVtYWluaW5nTm9kZSkgPT4gcmVtYWluaW5nTm9kZS5pZCkuaW5jbHVkZXMobm9kZS5pZCkpO1xuXG4gICAgbm9kZXNCeUxldmVsW2N1cnJlbnRMZXZlbF0gPSAobm9kZXNCeUxldmVsW2N1cnJlbnRMZXZlbF0gPz8gW10pLmNvbmNhdCguLi5uZXh0Tm9kZXMpO1xuICAgIHByZXZpb3VzUmVtYWluaW5nTm9kZXMgPSByZW1haW5pbmdOb2Rlcy5sZW5ndGg7XG4gICAgcmVtYWluaW5nTm9kZXMgPSBnZXRSZW1haW5pbmdOb2Rlcyhub2Rlc0J5TGV2ZWwsIG5vZGVzKTtcbiAgICBjdXJyZW50TGV2ZWwrKztcbiAgfVxuXG4gIGxldCBpbnRlcnZhbDogYW55O1xuXG4gIGNvbnN0IHRoYXQgPSB7XG4gICAgb246ICh0eXBlOiBzdHJpbmcsIGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3RpY2snKSB7XG4gICAgICAgIHRpY2tGbiA9IGZuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgfSxcbiAgICBzdG9wOiAoKSA9PiB7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgIHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgc3RhcnQ6ICgpID0+IHtcbiAgICAgIGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBjYWxjdWxhdGVMYXlvdXQobm9kZXNCeUxldmVsLCBvcHRpb25zLCBzaXplKTtcbiAgICAgICAgdGlja0ZuKCk7XG4gICAgICB9LCAxMDApO1xuICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgfSxcbiAgICByZXN0YXJ0OiAoKSA9PiB7XG4gICAgICB0aGF0LnN0b3AoKS5zdGFydCgpO1xuICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgfSxcbiAgICBhbHBoYVRhcmdldDogKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoYXQ7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB0aGF0LnN0YXJ0KCk7XG59O1xuXG5jb25zdCBnZXRVc2VkTm9kZXMgPSAobm9kZXNCeUxldmVsOiBQcnlOb2RlW11bXSkgPT4ge1xuICByZXR1cm4gbm9kZXNCeUxldmVsLm1hcCgobm9kZXMpID0+IChub2RlcyA/PyBbXSkubWFwKChub2RlKSA9PiBub2RlPy5pZCkpLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSk7XG59O1xuXG5jb25zdCBnZXRSZW1haW5pbmdOb2RlcyA9IChub2Rlc0J5TGV2ZWw6IFByeU5vZGVbXVtdLCBhbGxOb2RlczogUHJ5Tm9kZVtdKSA9PiB7XG4gIGNvbnN0IHVzZWROb2RlcyA9IGdldFVzZWROb2Rlcyhub2Rlc0J5TGV2ZWwpO1xuICByZXR1cm4gYWxsTm9kZXMuZmlsdGVyKChub2RlKSA9PiAhdXNlZE5vZGVzLmluY2x1ZGVzKG5vZGUuaWQpKTtcbn07XG5cbmNvbnN0IGNhbGN1bGF0ZUxheW91dCA9IChub2Rlc0J5TGV2ZWw6IFByeU5vZGVbXVtdLCBvcHRpb25zOiBHcmFwaFdpZGdldE9wdGlvbnMsIHNpemU6IFtudW1iZXIsIG51bWJlcl0pID0+IHtcbiAgY29uc3QgbWFyZ2luID0gb3B0aW9ucy5ub2RlUmFkaXVzICogMjtcbiAgY29uc3QgaFNwYWNpbmcgPSBvcHRpb25zLm5vZGVSYWRpdXMgKiA4O1xuICBjb25zdCB2U3BhY2luZyA9IG9wdGlvbnMubm9kZVJhZGl1cyAqIDI7XG4gIG5vZGVzQnlMZXZlbC5mb3JFYWNoKChub2Rlc09mTGV2ZWwsIGx2bCkgPT4ge1xuICAgIG5vZGVzT2ZMZXZlbFxuICAgICAgLmZpbHRlcigobm9kZSkgPT4gISFub2RlKVxuICAgICAgLmZvckVhY2goKG5vZGUsIGlkeEluTGV2ZWwpID0+IHtcbiAgICAgICAgbm9kZS54ID0gbm9kZS5meCA/PyBtYXJnaW4gKyAxMCArIGhTcGFjaW5nICogbHZsO1xuICAgICAgICBub2RlLnkgPSBub2RlLmZ5ID8/IG1hcmdpbiArIGlkeEluTGV2ZWwgKiB2U3BhY2luZztcbiAgICAgIH0pO1xuICB9KTtcbn07XG5cbmNvbnN0IHRvcG9sb2dpY2FsU29ydCA9IChub2RlczogUHJ5Tm9kZVtdLCBsaW5rczogUHJ5TGlua1tdKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdIGFzIFByeU5vZGVbXTtcbiAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4gKG5vZGUudG9wb2xvZ2ljYWxDb2xvciA9ICdXSElURScpKTtcblxuICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgaWYgKG5vZGUudG9wb2xvZ2ljYWxDb2xvciA9PT0gJ1dISVRFJykge1xuICAgICAgcmVjdXJzaXZlVG9wb2xvZ2ljYWxTb3J0KG5vZGVzLCByZXN1bHQsIG5vZGUsIGxpbmtzKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQucmV2ZXJzZSgpO1xufTtcblxuY29uc3QgcmVjdXJzaXZlVG9wb2xvZ2ljYWxTb3J0ID0gKG5vZGVzOiBQcnlOb2RlW10sIHJlc3VsdDogUHJ5Tm9kZVtdLCBub2RlOiBQcnlOb2RlLCBsaW5rczogUHJ5TGlua1tdKSA9PiB7XG4gIG5vZGUudG9wb2xvZ2ljYWxDb2xvciA9ICdHUkVZJztcbiAgY29uc3QgbmVpZ2hib3JzID0gbm9kZXMuZmlsdGVyKFxuICAgIChwb3RlbnRpYWxOZWlnaGJvcikgPT5cbiAgICAgIGxpbmtzLmZpbHRlcigobGluaykgPT4gbGluay50YXJnZXQgPT09IHBvdGVudGlhbE5laWdoYm9yLmluZGV4ICYmIGxpbmsuc291cmNlID09PSBub2RlLmluZGV4KS5sZW5ndGggPiAwXG4gICk7XG4gIG5laWdoYm9ycy5mb3JFYWNoKChuZWlnaGJvcikgPT4ge1xuICAgIGlmIChuZWlnaGJvci50b3BvbG9naWNhbENvbG9yID09PSAnV0hJVEUnKSB7XG4gICAgICByZWN1cnNpdmVUb3BvbG9naWNhbFNvcnQobm9kZXMsIHJlc3VsdCwgbmVpZ2hib3IsIGxpbmtzKTtcbiAgICB9XG4gIH0pO1xuICBub2RlLnRvcG9sb2dpY2FsQ29sb3IgPSAnQkxBQ0snO1xuICByZXN1bHQucHVzaChub2RlKTtcbn07XG4iXX0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Component, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class PryWidgetForceGraphCssComponent {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetForceGraphCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetForceGraphCssComponent, selector: "pry-widget-force-graph-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget--graph__canvas{position:absolute;height:100%;width:100%}.o-widget .m-btn-group.-selection-choice{transform:translate(10px,10px)}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 30px)}.a-tooltip--rectangle[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 50px)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6
6
|
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetForceGraphCssComponent, decorators: [{
|
|
8
8
|
type: Component,
|
|
9
|
-
args: [{ selector: 'pry-widget-force-graph-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 30px)}.a-tooltip--rectangle[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 50px)}\n"] }]
|
|
9
|
+
args: [{ selector: 'pry-widget-force-graph-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget--graph__canvas{position:absolute;height:100%;width:100%}.o-widget .m-btn-group.-selection-choice{transform:translate(10px,10px)}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 30px)}.a-tooltip--rectangle[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 50px)}\n"] }]
|
|
10
10
|
}] });
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LWdyYXBoL3N0eWxlL2Nzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRN0QsTUFBTSxPQUFPLCtCQUErQjs4R0FBL0IsK0JBQStCO2tHQUEvQiwrQkFBK0Isa0VBSmhDLEVBQUU7OzJGQUlELCtCQUErQjtrQkFOM0MsU0FBUzsrQkFDRSw0QkFBNEIsWUFDNUIsRUFBRSxpQkFFRyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LWZvcmNlLWdyYXBoLWNzcycsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3R5bGVVcmxzOiBbJy4vX28td2lkZ2V0LWdyYXBoLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQcnlXaWRnZXRGb3JjZUdyYXBoQ3NzQ29tcG9uZW50IHt9XG4iXX0=
|
|
@@ -26,8 +26,8 @@ export class WidgetGraphModule extends BaseWidgetModule {
|
|
|
26
26
|
getComponent() {
|
|
27
27
|
return WidgetGraphComponent;
|
|
28
28
|
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
30
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetGraphModule, deps: [{ token: i1.TooltipFactoryService }, { token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
30
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: WidgetGraphModule, declarations: [WidgetGraphComponent, PryWidgetForceGraphCssComponent], imports: [CommonModule,
|
|
31
31
|
FormsModule,
|
|
32
32
|
OverlayModule,
|
|
33
33
|
PryCoreModule,
|
|
@@ -38,7 +38,7 @@ export class WidgetGraphModule extends BaseWidgetModule {
|
|
|
38
38
|
PryOverlayModule,
|
|
39
39
|
PryI18nModule,
|
|
40
40
|
PryRangeModule], exports: [WidgetGraphComponent] }); }
|
|
41
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
41
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetGraphModule, imports: [CommonModule,
|
|
42
42
|
FormsModule,
|
|
43
43
|
OverlayModule,
|
|
44
44
|
PryCoreModule,
|
|
@@ -50,7 +50,7 @@ export class WidgetGraphModule extends BaseWidgetModule {
|
|
|
50
50
|
PryI18nModule,
|
|
51
51
|
PryRangeModule] }); }
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetGraphModule, decorators: [{
|
|
54
54
|
type: NgModule,
|
|
55
55
|
args: [{
|
|
56
56
|
declarations: [WidgetGraphComponent, PryWidgetForceGraphCssComponent],
|
|
@@ -69,5 +69,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
69
69
|
],
|
|
70
70
|
exports: [WidgetGraphComponent]
|
|
71
71
|
}]
|
|
72
|
-
}], ctorParameters:
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
}], ctorParameters: () => [{ type: i1.TooltipFactoryService }, { type: i1.PryI18nService }] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWdyYXBoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LWdyYXBoL3dpZGdldC1ncmFwaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsYUFBYSxFQUViLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGVBQWUsRUFDZixlQUFlLEVBRWYsYUFBYSxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBbUJ4RSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZ0JBQWdCO0lBQ3JELFlBQ1UscUJBQTRDLEVBQzVDLG1CQUFtQztRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUhBLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFnQjtRQUkzQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRTdFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQztZQUMvQyxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUNULE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzVELGFBQWEsQ0FBQyxNQUFNLEVBQUUseUJBQXlCLENBQUMsQ0FDakQ7YUFDSjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUSxZQUFZO1FBQ25CLE9BQU8sb0JBQWlELENBQUM7SUFDM0QsQ0FBQzs4R0F2QlUsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBaEJiLG9CQUFvQixFQUFFLCtCQUErQixhQUVsRSxZQUFZO1lBQ1osV0FBVztZQUNYLGFBQWE7WUFDYixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixhQUFhO1lBQ2IsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsY0FBYyxhQUVOLG9CQUFvQjsrR0FFbkIsaUJBQWlCLFlBZDFCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLGFBQWE7WUFDYixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixjQUFjOzsyRkFJTCxpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLCtCQUErQixDQUFDO29CQUNyRSxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQmFzZVdpZGdldENvbXBvbmVudCxcbiAgQmFzZVdpZGdldE1vZHVsZSxcbiAgUHJ5Q29yZU1vZHVsZSxcbiAgUHJ5RGFzaGJvYXJkTW9kdWxlLFxuICBQcnlJMThuTW9kdWxlLFxuICBQcnlJMThuU2VydmljZSxcbiAgUHJ5SWNvbk1vZHVsZSxcbiAgUHJ5T3ZlcmxheU1vZHVsZSxcbiAgUHJ5UmFuZ2VNb2R1bGUsXG4gIFByeVNlbGVjdE1vZHVsZSxcbiAgUHJ5VG9nZ2xlTW9kdWxlLFxuICBUb29sdGlwRmFjdG9yeVNlcnZpY2UsXG4gIHRvb2x0aXBMb2FkZXJcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IFdpZGdldEdyYXBoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQvd2lkZ2V0LWdyYXBoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBlblRyYW5zbGF0aW9ucyB9IGZyb20gJy4vaTE4bi9lbi50cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHsgZnJUcmFuc2xhdGlvbnMgfSBmcm9tICcuL2kxOG4vZnIudHJhbnNsYXRpb25zJztcbmltcG9ydCB7IFByeVdpZGdldEZvcmNlR3JhcGhDc3NDb21wb25lbnQgfSBmcm9tICcuL3N0eWxlL2Nzcy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtXaWRnZXRHcmFwaENvbXBvbmVudCwgUHJ5V2lkZ2V0Rm9yY2VHcmFwaENzc0NvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBQcnlDb3JlTW9kdWxlLFxuICAgIFByeURhc2hib2FyZE1vZHVsZSxcbiAgICBQcnlTZWxlY3RNb2R1bGUsXG4gICAgUHJ5SWNvbk1vZHVsZSxcbiAgICBQcnlUb2dnbGVNb2R1bGUsXG4gICAgUHJ5T3ZlcmxheU1vZHVsZSxcbiAgICBQcnlJMThuTW9kdWxlLFxuICAgIFByeVJhbmdlTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtXaWRnZXRHcmFwaENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0R3JhcGhNb2R1bGUgZXh0ZW5kcyBCYXNlV2lkZ2V0TW9kdWxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b29sdGlwRmFjdG9yeVNlcnZpY2U6IFRvb2x0aXBGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHByeVRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnByeVRyYW5zbGF0ZVNlcnZpY2UuYWRkTGFuZ09iamVjdCgnZnInLCAnd2lkZ2V0LWdyYXBoJywgZnJUcmFuc2xhdGlvbnMpO1xuICAgIHRoaXMucHJ5VHJhbnNsYXRlU2VydmljZS5hZGRMYW5nT2JqZWN0KCdlbicsICd3aWRnZXQtZ3JhcGgnLCBlblRyYW5zbGF0aW9ucyk7XG5cbiAgICB0aGlzLnRvb2x0aXBGYWN0b3J5U2VydmljZS5hZGRUb29sdGlwRGVmaW5pdGlvbnMoe1xuICAgICAgbGluazoge1xuICAgICAgICBuYW1lOiAnbGluaycsXG4gICAgICAgIGxvYWQ6ICgpID0+XG4gICAgICAgICAgaW1wb3J0KCdAcHJvdm9seS9kYXNoYm9hcmQvdG9vbHRpcHMvY2x1c3RlcicpLnRoZW4oKG1vZHVsZSkgPT5cbiAgICAgICAgICAgIHRvb2x0aXBMb2FkZXIobW9kdWxlLCAnUHJ5Q2x1c3RlclRvb2x0aXBNb2R1bGUnKVxuICAgICAgICAgIClcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldENvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gV2lkZ2V0R3JhcGhDb21wb25lbnQgYXMgVHlwZTxCYXNlV2lkZ2V0Q29tcG9uZW50PjtcbiAgfVxufVxuIl19
|