@testgorilla/tgo-ui 2.26.21 → 2.27.0
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 +95 -95
- package/components/spinner/spinner.component.d.ts +7 -1
- package/esm2022/components/accordion/accordion.component.mjs +3 -3
- package/esm2022/components/accordion/accordion.component.module.mjs +1 -1
- package/esm2022/components/accordion/accordion.model.mjs +1 -1
- package/esm2022/components/alert-banner/alert-banner.component.mjs +3 -3
- package/esm2022/components/alert-banner/alert-banner.component.module.mjs +1 -1
- package/esm2022/components/alert-banner/alert-banner.model.mjs +1 -1
- package/esm2022/components/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/components/autocomplete/autocomplete.component.module.mjs +1 -1
- package/esm2022/components/autocomplete/autocomplete.model.mjs +1 -1
- package/esm2022/components/autocomplete/includes.pipe.mjs +1 -1
- package/esm2022/components/autocomplete/prevent-input.directive.mjs +1 -1
- package/esm2022/components/autocomplete/transform-Item.pipe.mjs +1 -1
- package/esm2022/components/avatar/avatar.component.mjs +3 -3
- package/esm2022/components/avatar/avatar.component.module.mjs +1 -1
- package/esm2022/components/avatar/avatar.model.mjs +1 -1
- package/esm2022/components/badge/badge.component.mjs +3 -3
- package/esm2022/components/badge/badge.component.module.mjs +1 -1
- package/esm2022/components/badge/badge.model.mjs +1 -1
- package/esm2022/components/button/button.component.mjs +3 -3
- package/esm2022/components/button/button.component.module.mjs +1 -1
- package/esm2022/components/button/button.model.mjs +1 -1
- package/esm2022/components/card/card.component.mjs +3 -3
- package/esm2022/components/card/card.component.module.mjs +1 -1
- package/esm2022/components/card/card.model.mjs +1 -1
- package/esm2022/components/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/components/checkbox/checkbox.component.module.mjs +1 -1
- package/esm2022/components/checkbox/focus-visible.directive.mjs +1 -1
- package/esm2022/components/checklist/checklist.component.mjs +3 -3
- package/esm2022/components/checklist/checklist.model.mjs +1 -1
- package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +1 -1
- package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +1 -1
- package/esm2022/components/datepicker/date-adapter.mjs +1 -1
- package/esm2022/components/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/components/datepicker/datepicker.component.module.mjs +1 -1
- package/esm2022/components/datepicker/datepicker.service.mjs +1 -1
- package/esm2022/components/datepicker/no-date-format.directive.mjs +1 -1
- package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +3 -3
- package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +1 -1
- package/esm2022/components/dialog/dialog.component.mjs +3 -3
- package/esm2022/components/dialog/dialog.component.module.mjs +1 -1
- package/esm2022/components/dialog/dialog.model.mjs +1 -1
- package/esm2022/components/dialog/dialog.service.mjs +1 -1
- package/esm2022/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/divider/divider.component.module.mjs +1 -1
- package/esm2022/components/divider/divider.model.mjs +1 -1
- package/esm2022/components/dropdown/dropdown.component.mjs +5 -5
- package/esm2022/components/dropdown/dropdown.component.module.mjs +1 -1
- package/esm2022/components/dropdown/dropdown.model.mjs +1 -1
- package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +3 -3
- package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +1 -1
- package/esm2022/components/elevation-shadow/elevation-shadow.constant.mjs +1 -1
- package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
- package/esm2022/components/empty-state/empty-state.component.module.mjs +1 -1
- package/esm2022/components/empty-state/empty-state.model.mjs +1 -1
- package/esm2022/components/field/field.component.mjs +3 -3
- package/esm2022/components/field/field.component.module.mjs +1 -1
- package/esm2022/components/field/field.model.mjs +1 -1
- package/esm2022/components/file-upload/file-upload.component.mjs +3 -3
- package/esm2022/components/file-upload/file-upload.component.module.mjs +1 -1
- package/esm2022/components/filter-button/filter-button.component.mjs +3 -3
- package/esm2022/components/filter-button/filter-button.component.module.mjs +1 -1
- package/esm2022/components/filter-button/filter-button.model.mjs +1 -1
- package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +3 -3
- package/esm2022/components/gaussian-chart/gaussian-chart.module.mjs +1 -1
- package/esm2022/components/icon/icon.component.mjs +3 -3
- package/esm2022/components/icon/icon.component.module.mjs +1 -1
- package/esm2022/components/icon/icon.config.mjs +1 -1
- package/esm2022/components/icon/icon.model.mjs +1 -1
- package/esm2022/components/icon-label/icon-label.component.mjs +3 -3
- package/esm2022/components/icon-label/icon-label.component.module.mjs +1 -1
- package/esm2022/components/logo/logo.component.mjs +3 -3
- package/esm2022/components/logo/logo.component.module.mjs +1 -1
- package/esm2022/components/logo/logo.model.mjs +1 -1
- package/esm2022/components/media-card/media-card.component.mjs +3 -3
- package/esm2022/components/multi-input/multi-input.component.mjs +3 -3
- package/esm2022/components/multi-input/multi-input.component.module.mjs +1 -1
- package/esm2022/components/multi-input/multi-input.model.mjs +1 -1
- package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +3 -3
- package/esm2022/components/navbar/navbar.component.mjs +3 -3
- package/esm2022/components/navbar/navbar.component.module.mjs +1 -1
- package/esm2022/components/navbar/navbar.model.mjs +1 -1
- package/esm2022/components/overflow-menu/overflow-menu.component.mjs +3 -3
- package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +1 -1
- package/esm2022/components/overflow-menu/overflow-menu.model.mjs +1 -1
- package/esm2022/components/page-header/page-header.component.mjs +3 -3
- package/esm2022/components/page-header/page-header.component.module.mjs +1 -1
- package/esm2022/components/paginator/paginator.component.mjs +3 -3
- package/esm2022/components/paginator/paginator.component.module.mjs +1 -1
- package/esm2022/components/password-criteria/password.component.mjs +3 -3
- package/esm2022/components/password-criteria/password.component.module.mjs +1 -1
- package/esm2022/components/password-strength/password-strength.component.mjs +3 -3
- package/esm2022/components/password-strength/password-strength.component.module.mjs +1 -1
- package/esm2022/components/phone-input/join-strings.pipe.mjs +1 -1
- package/esm2022/components/phone-input/phone-input.component.mjs +3 -3
- package/esm2022/components/phone-input/phone-input.component.module.mjs +1 -1
- package/esm2022/components/phone-input/phone-input.model.mjs +1 -1
- package/esm2022/components/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/components/progress-bar/progress-bar.component.module.mjs +1 -1
- package/esm2022/components/radial-progress/radial-progress.component.mjs +3 -3
- package/esm2022/components/radial-progress/radial-progress.component.module.mjs +1 -1
- package/esm2022/components/radial-progress/radial-progress.model.mjs +1 -1
- package/esm2022/components/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/components/radio-button/radio-button.component.module.mjs +1 -1
- package/esm2022/components/radio-button/radio-button.model.mjs +1 -1
- package/esm2022/components/rating/half-star.pipe.mjs +1 -1
- package/esm2022/components/rating/rating.component.mjs +3 -3
- package/esm2022/components/rating/rating.component.module.mjs +1 -1
- package/esm2022/components/scale/scale.component.mjs +3 -3
- package/esm2022/components/scale/scale.component.module.mjs +1 -1
- package/esm2022/components/segmented-bar/segmented-bar.component.mjs +3 -3
- package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +1 -1
- package/esm2022/components/segmented-bar/segmented-bar.model.mjs +1 -1
- package/esm2022/components/segmented-button/segmented-button.component.mjs +3 -3
- package/esm2022/components/segmented-button/segmented-button.component.module.mjs +1 -1
- package/esm2022/components/segmented-button/segmented-button.model.mjs +1 -1
- package/esm2022/components/side-panel/side-panel.animations.mjs +1 -1
- package/esm2022/components/side-panel/side-panel.component.mjs +3 -3
- package/esm2022/components/side-panel/side-panel.model.mjs +1 -1
- package/esm2022/components/side-panel/side-panel.service.mjs +1 -1
- package/esm2022/components/side-sheet/side-sheet.component.mjs +3 -3
- package/esm2022/components/side-sheet/side-sheet.component.module.mjs +1 -1
- package/esm2022/components/side-sheet/side-sheet.model.mjs +1 -1
- package/esm2022/components/side-sheet/side-sheet.service.mjs +1 -1
- package/esm2022/components/skeleton/skeleton.component.mjs +3 -3
- package/esm2022/components/skeleton/skeleton.model.mjs +1 -1
- package/esm2022/components/slider/slider.component.mjs +3 -3
- package/esm2022/components/slider/slider.component.module.mjs +1 -1
- package/esm2022/components/slider/slider.model.mjs +1 -1
- package/esm2022/components/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/components/snackbar/snackbar.component.module.mjs +1 -1
- package/esm2022/components/snackbar/snackbar.model.mjs +1 -1
- package/esm2022/components/snackbar/snackbar.service.mjs +1 -1
- package/esm2022/components/spider-chart/spider-chart.component.mjs +3 -3
- package/esm2022/components/spider-chart/spider-chart.model.mjs +1 -1
- package/esm2022/components/spider-chart/spider-chart.module.mjs +1 -1
- package/esm2022/components/spinner/spinner.component.mjs +13 -4
- package/esm2022/components/spinner/spinner.model.mjs +1 -1
- package/esm2022/components/spinner/spinner.module.mjs +1 -1
- package/esm2022/components/step/step.component.mjs +3 -3
- package/esm2022/components/step/step.component.module.mjs +1 -1
- package/esm2022/components/stepper/stepper.component.mjs +3 -3
- package/esm2022/components/stepper/stepper.component.module.mjs +1 -1
- package/esm2022/components/stepper/stepper.model.mjs +1 -1
- package/esm2022/components/table/sentence-case.pipe.mjs +1 -1
- package/esm2022/components/table/table.component.mjs +3 -3
- package/esm2022/components/table/table.component.module.mjs +1 -1
- package/esm2022/components/table/table.model.mjs +1 -1
- package/esm2022/components/tabs/tab.directive.mjs +1 -1
- package/esm2022/components/tabs/tabs.component.mjs +3 -3
- package/esm2022/components/tabs/tabs.component.module.mjs +1 -1
- package/esm2022/components/tabs/tabs.model.mjs +1 -1
- package/esm2022/components/tag/tag.component.mjs +3 -3
- package/esm2022/components/tag/tag.component.module.mjs +1 -1
- package/esm2022/components/tag/tag.model.mjs +1 -1
- package/esm2022/components/toggle/toggle.component.mjs +3 -3
- package/esm2022/components/toggle/toggle.component.module.mjs +1 -1
- package/esm2022/components/toggle/toggle.model.mjs +1 -1
- package/esm2022/components/tooltip/tooltip-template.directive.mjs +1 -1
- package/esm2022/components/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/components/tooltip/tooltip.component.module.mjs +1 -1
- package/esm2022/components/tooltip/tooltip.model.mjs +1 -1
- package/esm2022/components/universal-skills-report/universal-skills-report.component.mjs +3 -3
- package/esm2022/components/universal-skills-report/universal-skills-report.component.module.mjs +1 -1
- package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.mjs +3 -3
- package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.mjs +1 -1
- package/esm2022/components/validation-error/validation-error.component.mjs +3 -3
- package/esm2022/components/validation-error/validation-error.model.mjs +1 -1
- package/esm2022/components/validation-error/validation-error.module.mjs +1 -1
- package/esm2022/directives/digits-only.directive.mjs +1 -1
- package/esm2022/directives/drag-drop.directive.mjs +1 -1
- package/esm2022/directives/dynamic-component.directive.mjs +1 -1
- package/esm2022/directives/ellipse-text.directive.mjs +1 -1
- package/esm2022/directives/select-text.directive.mjs +1 -1
- package/esm2022/directives/step-line-element.directive.mjs +1 -1
- package/esm2022/models/application-theme.model.mjs +1 -1
- package/esm2022/models/checkbox.model.mjs +1 -1
- package/esm2022/models/colors.model.mjs +1 -1
- package/esm2022/models/keyboard-events.model.mjs +1 -1
- package/esm2022/models/screen-breakpoints.model.mjs +1 -1
- package/esm2022/models/universal-skills-report.model.mjs +1 -1
- package/esm2022/pipes/data-property-getter.mjs +1 -1
- package/esm2022/pipes/has-validation-error.pipe.mjs +1 -1
- package/esm2022/pipes/memoize-func.pipe.mjs +1 -1
- package/esm2022/pipes/name-initials.pipe.mjs +1 -1
- package/esm2022/pipes/ui-ordinal-suffix.pipe.mjs +1 -1
- package/esm2022/pipes/ui-translate.pipe.mjs +1 -1
- package/esm2022/providers/is-mobile.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/services/icons.service.mjs +1 -1
- package/esm2022/services/universal-skills.service.mjs +1 -1
- package/esm2022/utils/alert-bar.model.mjs +1 -1
- package/esm2022/utils/alert-bars.utils.mjs +1 -1
- package/esm2022/utils/autocomplete-utils.mjs +2 -2
- package/esm2022/utils/color-contrast.mjs +1 -1
- package/esm2022/utils/hex-to-rgb.mjs +1 -1
- package/esm2022/utils/localization/language.model.mjs +1 -1
- package/esm2022/utils/localization/language.service.mjs +1 -1
- package/esm2022/utils/table.utils.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui.mjs +129 -120
- package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/projects/tgo-canopy-ui/assets/i18n/da-dk.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/de.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/en.json +818 -818
- package/projects/tgo-canopy-ui/assets/i18n/es.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/fr.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/it-it.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/ja-jp.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/nb-no.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/nl.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/pl-pl.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/pt-br.json +180 -180
- package/projects/tgo-canopy-ui/assets/i18n/sv-se.json +180 -180
- package/projects/tgo-canopy-ui/assets/icons/Add.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Archive.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Arrow_down.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Arrow_left.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Arrow_right.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Arrow_up.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Assessment.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Attempts.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Book.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Calendar.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Candidates.svg +8 -8
- package/projects/tgo-canopy-ui/assets/icons/Chat-notifications.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Chat.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Check.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Clone.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Close.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Code.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Company.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Copy.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Custom-questions.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Delete.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Devices.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Document.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Dot.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Download.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Edit.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Email-message.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Employee.svg +8 -8
- package/projects/tgo-canopy-ui/assets/icons/Empty-placeholder.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Error.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Essay.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Eye-hide.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Eye-view.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Fast-forward.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Fast-rewind.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Feedback-1.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Feedback-2.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Feedback-3.svg +6 -6
- package/projects/tgo-canopy-ui/assets/icons/Feedback-4.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Feedback-5.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/File-attach.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/File-upload.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Filter.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Fire.svg +10 -10
- package/projects/tgo-canopy-ui/assets/icons/Folder.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-add-file.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-add-table.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-align-L.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-align-R.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-align-center.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-align-justify.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-bold.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-code-active.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-code-block.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-edit-table.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-format.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-function.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-italics.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-list-bulleted.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-list-numbered.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-picker.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-quote.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-subscript.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-superscript.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-text-direction-L.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-text-direction-R.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-text-size.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-underline.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Format-variable.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Full-screen.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Gender-female.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Gender-male.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Gift.svg +7 -7
- package/projects/tgo-canopy-ui/assets/icons/Google.svg +6 -6
- package/projects/tgo-canopy-ui/assets/icons/Grab.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Help-2.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Help.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Image.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Info.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Integration.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Language.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Layout.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Learn.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Level.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Light-bulb.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Link.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Loading-spinner.svg +10 -10
- package/projects/tgo-canopy-ui/assets/icons/Localisation.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Location.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Lock.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Log-out.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Menu-burger.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Menu-ellipsis.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Microphone.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Minimize.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Minus.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Money-bag.svg +5 -5
- package/projects/tgo-canopy-ui/assets/icons/Mouse-cursor.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Mouse-grab-cursor.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Mouse.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Multi-choice.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Notifications.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Password.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Path.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Pin-marker.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Plan-billing.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Plus.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Premium.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Promotion.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Question-count.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Refer.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Reset.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Review.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Round-check-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Round-check.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Search.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Secure-checkout.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Send.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Settings.svg +8 -8
- package/projects/tgo-canopy-ui/assets/icons/Share.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Skip-next.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Skip-previous.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/Social-facebook.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Social-instagram.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Social-linkedin.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Sorting-down-1.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Sorting-down.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Sparkles.svg +18 -18
- package/projects/tgo-canopy-ui/assets/icons/Speedometer.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Star-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Star-half.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Star-outline.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Suitcase.svg +6 -6
- package/projects/tgo-canopy-ui/assets/icons/Support.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Sync.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Team.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Test.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/TestGorilla.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/Thunder.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Timer.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Trophy.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Type.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Unarchive.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Unlock.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Upgrade.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Upload.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/User-access.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/User-add.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/User-invite.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/User-profile.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/User-reject.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/User-switch.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Video-pause.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Video-play.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Video-record.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Video-stop.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Video.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Volume.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Warning.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/Zoom-in.svg +6 -6
- package/projects/tgo-canopy-ui/assets/icons/Zoom-out.svg +5 -5
- package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-filled-disabled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-half.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-outline.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Add-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Add-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Archive-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Archive-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-down-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-down-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-left-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-left-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-right-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-right-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-up-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-up-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-down-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-down-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-up-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-up-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Assessment-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Assessment-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Attach-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Attach-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Attempts-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Attempts-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Book-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Book-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Calendar-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Calendar-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Candidates-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Candidates-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Chat-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Chat-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-round-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-round-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Circle-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Circle-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Clone-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Clone-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Code-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Code-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Company-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Company-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Copy-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Copy-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Delete-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Delete-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Devices-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Devices-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Disconnected-in-line.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Document-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Document-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Dot-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Dot-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Download-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Download-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-text-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-text-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Employee-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Employee-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Empty-search-in-line.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Error-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Error-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Essay-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Essay-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Experience-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Experience-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Facebook-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Facebook-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-forward-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-forward-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-rewind-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-rewind-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Filter-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Filter-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Fire-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Fire-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Folder-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Folder-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Full-screen-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Full-screen-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-female-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-female-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-male-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-male-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Gift-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Gift-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Google-filled.svg +6 -6
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Google-in-line.svg +6 -6
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Grab-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Grab-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Help-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Help-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Hide-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Hide-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Image-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Image-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Info-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Info-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Instagram-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Instagram-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Integration-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Integration-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Invite-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Invite-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Language-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Language-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Layout-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Layout-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Learn-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Learn-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Level-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Level-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Light-bulb-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Light-bulb-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Link-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Link-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Linkedin-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Linkedin-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Localization-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Localization-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Location-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Location-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Lock-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Lock-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Logout-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Logout-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Lost-found-404-in-line.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Medal-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Medal-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-burger-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-burger-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-ellipsis-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-ellipsis-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Mic-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Mic-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Minimize-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Minimize-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Minus-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Minus-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Mouse-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Mouse-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Multi-choice-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Multi-choice-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Notification-bell-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Notification-bell-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Password-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Password-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Path-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Path-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Pause-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Pause-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Pin-marker-filled.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Pin-marker-in-line.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Plan-billing-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Plan-billing-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Play-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Play-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Plus-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Plus-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-circle-in-line.svg +5 -5
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-count-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-count-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Record-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Record-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Refer-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Refer-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Reject-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Reject-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Reset-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Reset-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-1-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-1-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-2-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-2-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-3-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-3-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-4-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-4-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-5-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-5-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-half-star-filled.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-half-star-in-line.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-filled-disabled.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-filled.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-in-line.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Round-check-in-line.svg +4 -4
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Search-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Search-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Secure-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Secure-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Send-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Send-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Settings-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Settings-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Share-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Share-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-next-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-next-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-previous-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-previous-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Sparkle-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Sparkle-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Speedometer-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Speedometer-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Star-filled.svg +5 -5
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Star-in-line.svg +5 -5
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Stop-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Stop-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Sync-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Sync-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Team-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Team-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Test-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Test-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-Pink-filled.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-Pink-in-line.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-filled.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-in-line.svg +11 -11
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Timer-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Timer-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Trophy-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Trophy-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Type-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Type-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Unarchive-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Unarchive-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Unlock-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Unlock-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Upgrade-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Upgrade-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Upload-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Upload-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/User-access-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/User-access-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/User-add-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/User-add-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/User-profile-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/User-profile-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Validated-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Validated-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Verified-badge-filled.svg +23 -23
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Verified-badge-in-line.svg +23 -23
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Video-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Video-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/View-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/View-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Volume-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Volume-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Warning-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Warning-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-in-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-in-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-out-filled.svg +3 -3
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-out-in-line.svg +3 -3
- package/projects/tgo-canopy-ui/assets/images/empty-state-default.svg +9 -9
- package/projects/tgo-canopy-ui/assets/images/poweredbyTG.svg +37 -37
- package/projects/tgo-canopy-ui/assets/images/premium.svg +5 -5
- package/projects/tgo-canopy-ui/assets/images/rebrand-last-step-icon-black.svg +3 -3
- package/projects/tgo-canopy-ui/assets/images/rebrand-last-step-icon-light.svg +3 -3
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/powered-by.svg +22 -22
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_brandmark_pink.svg +10 -10
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_lockup_pink.svg +22 -22
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_wordmark_pink.svg +21 -21
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_brandmark_black.svg +11 -11
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_brandmark_cream.svg +11 -11
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_lockup_black.svg +23 -23
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_lockup_cream.svg +23 -23
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_wordmark_black.svg +21 -21
- package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_wordmark_cream.svg +21 -21
- package/projects/tgo-canopy-ui/assets/images/reverseTG.svg +84 -84
- package/projects/tgo-canopy-ui/assets/images/step-finish.svg +6 -6
- package/projects/tgo-canopy-ui/assets/images/testgorilla.svg +76 -76
- package/projects/tgo-canopy-ui/theme/_alert-bars.scss +110 -110
- package/projects/tgo-canopy-ui/theme/_breakpoints-mixin.scss +12 -12
- package/projects/tgo-canopy-ui/theme/_button.scss +72 -72
- package/projects/tgo-canopy-ui/theme/_core.scss +19 -19
- package/projects/tgo-canopy-ui/theme/_font.scss +95 -95
- package/projects/tgo-canopy-ui/theme/_icon.scss +5 -5
- package/projects/tgo-canopy-ui/theme/_input.scss +574 -574
- package/projects/tgo-canopy-ui/theme/_lib-styles.scss +35 -35
- package/projects/tgo-canopy-ui/theme/_mat-paginator.scss +59 -59
- package/projects/tgo-canopy-ui/theme/_palette.scss +108 -108
- package/projects/tgo-canopy-ui/theme/_tooltip.scss +316 -316
- package/projects/tgo-canopy-ui/theme/_typography.scss +267 -267
- package/projects/tgo-canopy-ui/theme/_variables.scss +163 -163
- package/projects/tgo-canopy-ui/theme/line-clamp.scss +8 -8
- package/projects/tgo-canopy-ui/theme/theme.scss +67 -67
|
@@ -181,7 +181,7 @@ export class TableComponent {
|
|
|
181
181
|
this.tableData = data;
|
|
182
182
|
}
|
|
183
183
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.DestroyRef }, { token: IS_MOBILE_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
184
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme", tableDetailColumns: "tableDetailColumns", tableDetails: "tableDetails", disableBorderRadius: "disableBorderRadius" }, outputs: { onRowClickEvent: "onRowClickEvent", onDetailRowClickEvent: "onDetailRowClickEvent", paginatorChange: "paginatorChange", sortChange: "sortChange" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #tableContainer class=\"table-container\"\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\n [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\n {{ tableConfig.title | sentencecase }}\n <ng-content select=\"[title-actions]\"></ng-content>\n </div>\n <div\n #table\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\n class=\"table-wrapper\">\n <table\n [tabIndex]=\"0\"\n class=\"main-table\"\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n multiTemplateDataRows\n >\n\n <ng-container\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table\n mat-table\n [dataSource]=\"dataSourceDetail\"\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\n >\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.title ?? ''\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{ tableColumn.title | uppercase }}\n </th>\n\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{ tableColumn.function?.(element) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\n (click)=\"toggleRow(row)\">\n </tr>\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n </ng-container>\n\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\n <tr *matNoDataRow>\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <ui-paginator\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n *ngIf=\"!i && tableDetails\"\n variant=\"icon-button\"\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\n ></ui-button>\n</ng-template>\n\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\n <div class=\"header-section\">\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}\n </span>\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\n ></ui-icon>\n </div>\n</ng-template>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "applicationTheme"] }, { kind: "component", type: i5.PaginatorComponent, selector: "ui-paginator", inputs: ["pageSizeOptions", "length", "pageSize", "disabled", "applicationTheme", "currentPage"], outputs: ["paginatorChange"] }, { kind: "component", type: i6.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: i9.EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "directive", type: i10.DynamicComponentDirective, selector: "[dynamicComponent]", inputs: ["dynamicComponent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i11.DataPropertyGetterPipe, name: "dataPropertyGetter" }, { kind: "pipe", type: i12.MemoizeFuncPipe, name: "memoizeFunc" }, { kind: "pipe", type: i13.SentenceCasePipe, name: "sentencecase" }], animations: [
|
|
184
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme", tableDetailColumns: "tableDetailColumns", tableDetails: "tableDetails", disableBorderRadius: "disableBorderRadius" }, outputs: { onRowClickEvent: "onRowClickEvent", onDetailRowClickEvent: "onDetailRowClickEvent", paginatorChange: "paginatorChange", sortChange: "sortChange" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #tableContainer class=\"table-container\"\r\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\r\n [attr.theme]=\"applicationTheme\">\r\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\r\n {{ tableConfig.title | sentencecase }}\r\n <ng-content select=\"[title-actions]\"></ng-content>\r\n </div>\r\n <div\r\n #table\r\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\r\n class=\"table-wrapper\">\r\n <table\r\n [tabIndex]=\"0\"\r\n class=\"main-table\"\r\n mat-table\r\n [dataSource]=\"tableData\"\r\n matSort\r\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\r\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\r\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\r\n (matSortChange)=\"onSortChange($event)\"\r\n multiTemplateDataRows\r\n >\r\n\r\n <ng-container\r\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\r\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\r\n <th mat-header-cell\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\r\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\r\n <table\r\n mat-table\r\n [dataSource]=\"dataSourceDetail\"\r\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\r\n >\r\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\r\n [matColumnDef]=\"tableColumn.title ?? ''\">\r\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\r\n {{ tableColumn.title | uppercase }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\r\n [align]=\"tableColumn.styles?.alignment\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\r\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\r\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\r\n </table>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\r\n <div class=\"align-wrapper\">\r\n <ng-container [ngSwitch]=\"tableColumn.type\">\r\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\r\n {{ tableColumn.function?.(element) }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\r\n <ng-template\r\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\r\n (click)=\"toggleRow(row)\">\r\n </tr>\r\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\r\n <tr *matNoDataRow>\r\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <ui-paginator\r\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\r\n [disabled]=\"loading\"\r\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\r\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\r\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\r\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\r\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\r\n (paginatorChange)=\"onPaginatorChange($event)\"\r\n ></ui-paginator>\r\n</div>\r\n\r\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\r\n <ui-button\r\n [applicationTheme]=\"applicationTheme\"\r\n *ngIf=\"!i && tableDetails\"\r\n variant=\"icon-button\"\r\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\r\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\r\n ></ui-button>\r\n</ng-template>\r\n\r\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\r\n <div class=\"header-section\">\r\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\r\n class=\"column-title\">{{ column.title | sentencecase }}\r\n </span>\r\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\r\n [matTooltipClass]=\"applicationTheme\"\r\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\r\n ></ui-icon>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "applicationTheme"] }, { kind: "component", type: i5.PaginatorComponent, selector: "ui-paginator", inputs: ["pageSizeOptions", "length", "pageSize", "disabled", "applicationTheme", "currentPage"], outputs: ["paginatorChange"] }, { kind: "component", type: i6.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: i9.EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "directive", type: i10.DynamicComponentDirective, selector: "[dynamicComponent]", inputs: ["dynamicComponent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i11.DataPropertyGetterPipe, name: "dataPropertyGetter" }, { kind: "pipe", type: i12.MemoizeFuncPipe, name: "memoizeFunc" }, { kind: "pipe", type: i13.SentenceCasePipe, name: "sentencecase" }], animations: [
|
|
185
185
|
trigger('expandDetail', [
|
|
186
186
|
state('collapsed, void', style({ height: '0px' })),
|
|
187
187
|
state('expanded', style({ height: '*' })),
|
|
@@ -199,7 +199,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
199
199
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
200
200
|
transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))
|
|
201
201
|
])
|
|
202
|
-
], template: "<div #tableContainer class=\"table-container\"\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\n [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\n {{ tableConfig.title | sentencecase }}\n <ng-content select=\"[title-actions]\"></ng-content>\n </div>\n <div\n #table\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\n class=\"table-wrapper\">\n <table\n [tabIndex]=\"0\"\n class=\"main-table\"\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n multiTemplateDataRows\n >\n\n <ng-container\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table\n mat-table\n [dataSource]=\"dataSourceDetail\"\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\n >\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.title ?? ''\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{ tableColumn.title | uppercase }}\n </th>\n\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{ tableColumn.function?.(element) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\n (click)=\"toggleRow(row)\">\n </tr>\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n </ng-container>\n\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\n <tr *matNoDataRow>\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <ui-paginator\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n *ngIf=\"!i && tableDetails\"\n variant=\"icon-button\"\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\n ></ui-button>\n</ng-template>\n\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\n <div class=\"header-section\">\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}\n </span>\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\n ></ui-icon>\n </div>\n</ng-template>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"] }]
|
|
202
|
+
], template: "<div #tableContainer class=\"table-container\"\r\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\r\n [attr.theme]=\"applicationTheme\">\r\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\r\n {{ tableConfig.title | sentencecase }}\r\n <ng-content select=\"[title-actions]\"></ng-content>\r\n </div>\r\n <div\r\n #table\r\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\r\n class=\"table-wrapper\">\r\n <table\r\n [tabIndex]=\"0\"\r\n class=\"main-table\"\r\n mat-table\r\n [dataSource]=\"tableData\"\r\n matSort\r\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\r\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\r\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\r\n (matSortChange)=\"onSortChange($event)\"\r\n multiTemplateDataRows\r\n >\r\n\r\n <ng-container\r\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\r\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\r\n <th mat-header-cell\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\r\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\r\n <table\r\n mat-table\r\n [dataSource]=\"dataSourceDetail\"\r\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\r\n >\r\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\r\n [matColumnDef]=\"tableColumn.title ?? ''\">\r\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\r\n {{ tableColumn.title | uppercase }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\r\n [align]=\"tableColumn.styles?.alignment\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\r\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\r\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\r\n </table>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\r\n <div class=\"align-wrapper\">\r\n <ng-container [ngSwitch]=\"tableColumn.type\">\r\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\r\n {{ tableColumn.function?.(element) }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\r\n <ng-template\r\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\r\n (click)=\"toggleRow(row)\">\r\n </tr>\r\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\r\n <tr *matNoDataRow>\r\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <ui-paginator\r\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\r\n [disabled]=\"loading\"\r\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\r\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\r\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\r\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\r\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\r\n (paginatorChange)=\"onPaginatorChange($event)\"\r\n ></ui-paginator>\r\n</div>\r\n\r\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\r\n <ui-button\r\n [applicationTheme]=\"applicationTheme\"\r\n *ngIf=\"!i && tableDetails\"\r\n variant=\"icon-button\"\r\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\r\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\r\n ></ui-button>\r\n</ng-template>\r\n\r\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\r\n <div class=\"header-section\">\r\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\r\n class=\"column-title\">{{ column.title | sentencecase }}\r\n </span>\r\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\r\n [matTooltipClass]=\"applicationTheme\"\r\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\r\n ></ui-icon>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"] }]
|
|
203
203
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
204
204
|
type: Optional
|
|
205
205
|
}, {
|
|
@@ -235,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
235
235
|
type: ViewChild,
|
|
236
236
|
args: ['table']
|
|
237
237
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsVUFBVSxFQVVYLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCNUQsTUFBTSxPQUFPLGNBQWM7SUEwRXpCLFlBQzZFLGVBQWlDLEVBQ3BHLFVBQXNCLEVBQ2MsU0FBOEI7UUFGQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDcEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNjLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBNUQ1RTs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcs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QUFDLENBQUM7YUFDakYsQ0FBQztTQUNIOzs0RkFFVSxjQUFjO2tCQWQxQixTQUFTOytCQUNFLFVBQVUsbUJBR0gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQzt3QkFDVixPQUFPLENBQUMsY0FBYyxFQUFFOzRCQUN0QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7NEJBQ2xELEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7NEJBQ3pDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzs0QkFDckYsVUFBVSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUNqRixDQUFDO3FCQUNIOzswQkE2RUUsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7OzBCQUV2RCxNQUFNOzJCQUFDLGVBQWU7eUNBdEVFLE1BQU07c0JBQWhDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVFoQixJQUFJO3NCQUFaLEtBQUs7Z0JBU0csT0FBTztzQkFBZixLQUFLO2dCQVFHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFRRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVhLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb2x1bW5FbGxpcHNlLFxuICBDb2x1bW5UeXBlLFxuICBDb21wb25lbnRSZW5kZXJlcixcbiAgRGF0YVNvdXJjZSxcbiAgUGFnaW5hdGlvbixcbiAgU2Nyb2xsU2V0dGluZ3MsXG4gIFRhYmxlQ29sdW1uLFxuICBUYWJsZUNvbmZpZyxcbiAgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbixcbiAgVGFibGVEYXRhLFxuICBUYWJsZURldGFpbENvbHVtblxufSBmcm9tICcuL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IHNvcnRCeU9yZGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUudXRpbHMnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSVNfTU9CSUxFX1RPS0VOIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2lzLW1vYmlsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbmREZXRhaWwnLCBbXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkLCB2b2lkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnIH0pKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiB2b2lkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YVNvdXJjZSwgVERldGFpbCBleHRlbmRzIERhdGFTb3VyY2U+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIFRhYmxlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHR5cGUge1RhYmxlQ29uZmlnfVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbmZpZzogVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbjxUPjtcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgZm9yIHByb3ZpZGluZyB0aGUgdGFibGUgZGF0YS5cbiAgICpcbiAgICogQHR5cGUge1RhYmxlRGF0YX1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkYXRhOiBUYWJsZURhdGFcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBpbiBhIGxvYWRpbmcgc3RhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIERhdGEgc3RydWN0dXJlIHRvIHNlbGVjdCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSByZW5kZXJlZCBhbmQgdGhlaXIgY2FwYWJpbGl0aWVzXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZURldGFpbENvbHVtbn1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0YWJsZURldGFpbENvbHVtbnM6IFRhYmxlRGV0YWlsQ29sdW1uPFQsIFREZXRhaWw+O1xuICBASW5wdXQoKSB0YWJsZURldGFpbHMgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGlzYWJsZSBib3JkZXIgcmFkaXVzIGZvciB0YWJsZVxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlQm9yZGVyUmFkaXVzID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9uUm93Q2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRGV0YWlsUm93Q2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBFbGVtZW50UmVmO1xuXG4gIHByb3RlY3RlZCB0YWJsZURhdGE6IFRhYmxlRGF0YTtcbiAgcHJvdGVjdGVkIHNvdXJjZURhdGE6IFRhYmxlRGF0YTtcbiAgcHJvdGVjdGVkIGNvbHVtbnNUb29sdGlwU3RhdGU6IENvbHVtbkVsbGlwc2VbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgY29sdW1uc0RldGFpbFRvRGlzcGxheTogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNrZWxldG9uU3R5bGVDb25maWcgPSB7XG4gICAgYmFja2dyb3VuZDogJyNGNkY2RjYnLFxuICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCdcbiAgfTtcbiAgcHJvdGVjdGVkIGRhdGFTb3VyY2VEZXRhaWwgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4oW10pO1xuICBwcm90ZWN0ZWQgZWxlbWVudERldGFpbDogYW55O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRGF0YVR5cGUgPSBDb2x1bW5UeXBlO1xuICBwcm90ZWN0ZWQgc2Nyb2xsU2V0dGluZ3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY3JvbGxTZXR0aW5ncz4oeyBzY3JvbGxFbmQ6IGZhbHNlLCBob3Jpem9udGFsU2Nyb2xsOiBmYWxzZSwgc2Nyb2xsU3RhcnQ6IGZhbHNlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgQEluamVjdChJU19NT0JJTEVfVE9LRU4pIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0VGFibGVDb25maWcodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc2V0VGFibGVEYXRhKHRoaXMuZGF0YSk7XG5cbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpIHtcbiAgICAgIHRoaXMuc2tlbGV0b25TdHlsZUNvbmZpZy5iYWNrZ3JvdW5kID0gJyNGNEY0RjQnO1xuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgndGhlbWUnLCB0aGlzLmFwcGxpY2F0aW9uVGhlbWUpO1xuXG4gICAgaWYgKHRoaXMudGFibGVEZXRhaWxDb2x1bW5zKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucy5jb2x1bW5EZWZzLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5oaWRkZW4pO1xuICAgICAgdGhpcy5jb2x1bW5zRGV0YWlsVG9EaXNwbGF5ID0gZmlsdGVyZWRDb2x1bW5zLmxlbmd0aCA/ICBmaWx0ZXJlZENvbHVtbnMubWFwKFxuICAgICAgICAodGFibGVDb2x1bW46IFRhYmxlQ29sdW1uPFREZXRhaWw+KSA9PiB0YWJsZUNvbHVtbi50aXRsZSFcbiAgICAgICkgOiBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZz8uc29ydGFibGUgJiYgdGhpcy50YWJsZUNvbmZpZz8uc29ydCkge1xuICAgICAgdGhpcy5vblNvcnRDaGFuZ2UodGhpcy50YWJsZUNvbmZpZy5zb3J0IGFzIFNvcnQsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5oYXNUYWJsZVNjcm9sbCgpO1xuICAgIGZyb21FdmVudCh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFzVGFibGVTY3JvbGwoKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmIGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc3QgY29uZmlnID0gY2hhbmdlc1snY29uZmlnJ10uY3VycmVudFZhbHVlIGFzIFRhYmxlQ29uZmlnPFQ+O1xuICAgICAgdGhpcy5zZXRUYWJsZUNvbmZpZyhjb25maWcpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZGF0YSddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0VGFibGVEYXRhKGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWUgYXMgVGFibGVEYXRhKTtcbiAgICB9XG4gIH1cblxuICBoYXNUYWJsZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGUubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBob3Jpem9udGFsU2Nyb2xsID0gdGFibGUuc2Nyb2xsV2lkdGggPiB0YWJsZS5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBzY3JvbGxFbmQgPSB0YWJsZS5zY3JvbGxMZWZ0ICsgdGFibGUuY2xpZW50V2lkdGggPj0gdGFibGUuc2Nyb2xsV2lkdGg7XG4gICAgdGhpcy5zY3JvbGxTZXR0aW5ncyQubmV4dCh7XG4gICAgICBzY3JvbGxTdGFydDogIXRhYmxlLnNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxFbmQsXG4gICAgICBob3Jpem9udGFsU2Nyb2xsXG4gICAgfSk7XG4gIH1cblxuICBjYWxsUmVuZGVyZXIoW3JlbmRlcmVyRm4sIGVsZW1lbnRdOiBbKHY6IFQpID0+IENvbXBvbmVudFJlbmRlcmVyIHwgc3RyaW5nLCBUXSk6IGFueSB7XG4gICAgaWYgKHJlbmRlcmVyRm4pIHtcbiAgICAgIHJldHVybiByZW5kZXJlckZuKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvblBhZ2luYXRvckNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3JDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DaGFuZ2VDb2x1bW5TaXplKGNvbHVtbkluZGV4OiBudW1iZXIsIHNob3dUb29sdGlwOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlID0gdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlLm1hcChjb2x1bW4gPT4ge1xuICAgICAgaWYgKGNvbHVtbi5pbmRleCA9PT0gY29sdW1uSW5kZXgpIHtcbiAgICAgICAgY29sdW1uLnNob3dUb29sdGlwID0gc2hvd1Rvb2x0aXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sdW1uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU29ydENoYW5nZShzb3J0U3RhdGU6IFNvcnQsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0U3RhdGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnPy5zb3J0YWJsZSkge1xuICAgICAgdGhpcy50YWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBpc0FzYyA9IHNvcnRTdGF0ZS5kaXJlY3Rpb24gPT09ICdhc2MnO1xuICAgICAgICBjb25zdCBhVmFsID0gYVtzb3J0U3RhdGUuYWN0aXZlXTtcbiAgICAgICAgY29uc3QgYlZhbCA9IGJbc29ydFN0YXRlLmFjdGl2ZV07XG4gICAgICAgIHJldHVybiAoYVZhbCA8IGJWYWwgPyAtMSA6IDEpICogKGlzQXNjID8gMSA6IC0xKTtcbiAgICAgIH0pXVxuXG4gICAgICBpZiAoIXNvcnRTdGF0ZS5kaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbLi4udGhpcy5zb3VyY2VEYXRhXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Sb3dDbGljayhyb3dQYXJhbXM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Sb3dDbGlja0V2ZW50LmVtaXQocm93UGFyYW1zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRldGFpbFJvd0NsaWNrKHJvd1BhcmFtczogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkRldGFpbFJvd0NsaWNrRXZlbnQuZW1pdChyb3dQYXJhbXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVJvdyhlbGVtZW50OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFibGVEZXRhaWxzKSB7XG4gICAgICB0aGlzLmVsZW1lbnREZXRhaWwgPSB0aGlzLmVsZW1lbnREZXRhaWwgPT09IGVsZW1lbnQgPyBudWxsIDogZWxlbWVudDtcbiAgICAgIGlmICh0aGlzLmVsZW1lbnREZXRhaWwpIHtcbiAgICAgICAgdGhpcy50YWJsZURldGFpbENvbHVtbnMuc2V0RGV0YWlsUm93RGF0YSh7XG4gICAgICAgICAgZGF0YTogZWxlbWVudCxcbiAgICAgICAgICBzZXREZXRhaWxEYXRhU291cmNlOiB0aGlzLnNldFRhYmxlRGV0YWlsRGF0YVNvdXJjZS5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVEZXRhaWxEYXRhU291cmNlKHJvd0RhdGE6IFREZXRhaWxbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZURldGFpbCA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55Pihyb3dEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVDb25maWcoY29uZmlnOiBUYWJsZUNvbmZpZzxUPik6IHZvaWQge1xuICAgIGNvbmZpZy5wYWdpbmF0aW9uID0gY29uZmlnPy5wYWdpbmF0aW9uID8/IHRoaXMuZGVmYXVsdFBhZ2luYXRpb25Db25maWc7XG5cbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gY29uZmlnIGFzIFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XG5cbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSBjb25maWcuY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XG4gICAgICBpbmRleCxcbiAgICAgIHNob3dUb29sdGlwOiBjb2x1bW4uc2hvd1Rvb2x0aXAgPz8gZmFsc2VcbiAgICB9KSk7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gc29ydEJ5T3JkZXI8VD4oY29uZmlnLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmhpZGRlbikpLm1hcChjb2x1bW4gPT4gY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZURhdGEoZGF0YTogVGFibGVEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zb3VyY2VEYXRhID0gZGF0YTtcbiAgICB0aGlzLnRhYmxlRGF0YSA9IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uID0ge1xuICAgIGN1cnJlbnRQYWdlOiAwLFxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzEwLCAyNSwgNTBdLFxuICAgIHRvdGFsSXRlbXM6IDIwXG4gIH07XG5cbiAgdHJhY2tDb2x1bW5VbmlxdWVJZCA9IChpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nID0+IGNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5O1xufVxuIiwiPGRpdiAjdGFibGVDb250YWluZXIgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIlxuICAgICBbbmdDbGFzc109XCJ7ICd3aXRob3V0LXRpdGxlJzogIXRhYmxlQ29uZmlnPy50aXRsZSwgJ2Rpc2FibGUtYm9yZGVyLXJhZGl1cyc6IGRpc2FibGVCb3JkZXJSYWRpdXMgfVwiXG4gICAgIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj5cbiAgPGRpdiAqbmdJZj1cInRhYmxlQ29uZmlnPy50aXRsZVwiIGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAge3sgdGFibGVDb25maWcudGl0bGUgfCBzZW50ZW5jZWNhc2UgfX1cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGl0bGUtYWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgI3RhYmxlXG4gICAgKm5nSWY9XCJzY3JvbGxTZXR0aW5ncyQgfCBhc3luYyBhcyBzY3JvbGxTZXR0aW5nc1wiXG4gICAgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XG4gICAgPHRhYmxlXG4gICAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgICBjbGFzcz1cIm1haW4tdGFibGVcIlxuICAgICAgbWF0LXRhYmxlXG4gICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFcIlxuICAgICAgbWF0U29ydFxuICAgICAgW21hdFNvcnRTdGFydF09XCJ0YWJsZUNvbmZpZz8uc29ydD8uZGVmYXVsdFNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICBbbWF0U29ydEFjdGl2ZV09XCJ0YWJsZUNvbmZpZz8uc29ydD8uYWN0aXZlID8/ICcnXCJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kaXJlY3Rpb24gPz8gJydcIlxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXG4gICAgPlxuXG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb25maWcuY29sdW1uczsgaW5kZXggYXMgaSwgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQ29sdW1uVW5pcXVlSWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiIFtzdGlja3lFbmRdPVwiIXNjcm9sbFNldHRpbmdzPy5zY3JvbGxFbmRcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sdW1uLnNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBkYXRhSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKGVsZW1lbnQpOyBjb2x1bW4/LnJvd0NlbGxUZW1wbGF0ZUNsaWNrID8gY29sdW1uIS5yb3dDZWxsVGVtcGxhdGVDbGljaz8uKCkgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIiBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBlbGVtZW50LCByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5RW5kXT1cInNjcm9sbFNldHRpbmdzLmhvcml6b250YWxTY3JvbGwgPyAhc2Nyb2xsU2V0dGluZ3Muc2Nyb2xsRW5kIDogdHJ1ZVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiBjb2x1bW4uc3R5bGVzPy53aWR0aCwgbWluV2lkdGg6IGNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uSGVhZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaSwgY29sdW1uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgICAgICAgW2FsaWduXT1cImNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIiEoaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cIihpc01vYmlsZSQgfCBhc3luYykgPyBmYWxzZSA6ICFzY3JvbGxTZXR0aW5ncy5zY3JvbGxTdGFydCAgJiYgISFjb2x1bW4uaXNTdGlja3lcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sdW1uLnNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uSGVhZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaSwgY29sdW1uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgICAgICAgW2FsaWduXT1cImNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cIihpc01vYmlsZSQgfCBhc3luYykgPyBmYWxzZSA6ICFzY3JvbGxTZXR0aW5ncy5zY3JvbGxTdGFydCAmJiAhIWNvbHVtbi5pc1N0aWNreVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiBjb2x1bW4uc3R5bGVzPy53aWR0aCwgbWluV2lkdGg6IGNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RkLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJyddXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbjogY29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAgZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGVtZW50LWRldGFpbFwiICpuZ0lmPVwiZGF0YVNvdXJjZURldGFpbC5kYXRhLmxlbmd0aFwiXG4gICAgICAgICAgICAgICBbQGV4cGFuZERldGFpbF09XCJlbGVtZW50ID09PSBlbGVtZW50RGV0YWlsID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgbWF0LXRhYmxlXG4gICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VEZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoaWRlLWJvcmRlcnMnOiBlbGVtZW50ID09PSB0YWJsZURhdGFbdGFibGVEYXRhLmxlbmd0aCAtIDFdIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJsZUNvbHVtbiBvZiB0YWJsZURldGFpbENvbHVtbnMuY29sdW1uRGVmc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJ0YWJsZUNvbHVtbi50aXRsZSA/PyAnJ1wiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGFycm93UG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogdGFibGVDb2x1bW4uc3R5bGVzPy53aWR0aH1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0aC0nK3RhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHRhYmxlQ29sdW1uLnRpdGxlIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgKGNsaWNrKT1cIm9uRGV0YWlsUm93Q2xpY2soZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYWxpZ25dPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK3RhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IHRhYmxlQ29sdW1uLnN0eWxlcz8ud2lkdGggfVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uc0RldGFpbFRvRGlzcGxheVwiPjwvdHI+XG4gICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93RGV0YWlsOyBjb2x1bW5zOiBjb2x1bW5zRGV0YWlsVG9EaXNwbGF5O1wiPjwvdHI+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEYXRhVHBsIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC10YWJsZUNvbHVtbj1cInRhYmxlQ29sdW1uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi13cmFwcGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidGFibGVDb2x1bW4udHlwZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGUuRklFTERcIj5cbiAgICAgICAgICAgICAge3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogdGFibGVDb2x1bW4ua2V5IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLkZVTkNUSU9OXCI+XG4gICAgICAgICAgICAgIHt7IHRhYmxlQ29sdW1uLmZ1bmN0aW9uPy4oZWxlbWVudCkgfX1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGUuUkVOREVSRVJcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW2R5bmFtaWNDb21wb25lbnRdPVwiW3RhYmxlQ29sdW1uLnJlbmRlcmVyLCBlbGVtZW50XSB8IG1lbW9pemVGdW5jIDogY2FsbFJlbmRlcmVyXCI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAge3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogdGFibGVDb2x1bW4ua2V5IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2V4cGFuZGVkLXJvdyc6IGVsZW1lbnREZXRhaWwgPT09IHJvdywgJ3Jvdy1jbGlja2FibGUnOiB0YWJsZURldGFpbHMsICdzZWxlY3RlZCc6IHJvdz8uc2VsZWN0ZWQsICdsYXN0LXJvdyc6IHJvdyA9PT0gdGFibGVEYXRhW3RhYmxlRGF0YS5sZW5ndGggLSAxXSAmJiAhZWxlbWVudERldGFpbCB9XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93KHJvdylcIj5cbiAgICAgIDwvdHI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEZXRhaWxzICYmIHRhYmxlRGV0YWlsQ29sdW1ucz8uY29sdW1uRGVmcz8ubGVuZ3RoXCI+XG4gICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImRldGFpbC1yb3dcIj48L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZy5ub0RhdGFSb3dUcGxcIj5cbiAgICAgICAgPHRyICptYXROb0RhdGFSb3c+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29uZmlnLm5vRGF0YVJvd1RwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG5cbiAgPHVpLXBhZ2luYXRvclxuICAgICpuZ0lmPVwiIXRhYmxlQ29uZmlnPy5oaWRlUGFnaW5hdGlvbiAmJiB0YWJsZUNvbmZpZz8ucGFnaW5hdGlvblwiXG4gICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyA/ICdsaWdodCcgOiAnY2xhc3NpYydcIlxuICAgIFtwYWdlU2l6ZV09XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy5pdGVtc1BlclBhZ2UgPz8gMjVcIlxuICAgIFtsZW5ndGhdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8udG90YWxJdGVtcyA/PyAwXCJcbiAgICBbY3VycmVudFBhZ2VdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8uY3VycmVudFBhZ2UgPz8gMFwiXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy5pdGVtc1BlclBhZ2VPcHRpb25zID8/IFsxMCwgMjUsIDUwXVwiXG4gICAgKHBhZ2luYXRvckNoYW5nZSk9XCJvblBhZ2luYXRvckNoYW5nZSgkZXZlbnQpXCJcbiAgPjwvdWktcGFnaW5hdG9yPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZXhwYW5kQnV0dG9uIGxldC1pPVwiaW5kZXhcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIj5cbiAgPHVpLWJ1dHRvblxuICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICpuZ0lmPVwiIWkgJiYgdGFibGVEZXRhaWxzXCJcbiAgICB2YXJpYW50PVwiaWNvbi1idXR0b25cIlxuICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBlbGVtZW50RGV0YWlsICYmIGVsZW1lbnQgPT0gZWxlbWVudERldGFpbCB9XCJcbiAgICBbaWNvbk5hbWVdPVwiZWxlbWVudERldGFpbCAmJiBlbGVtZW50ID09IGVsZW1lbnREZXRhaWwgPyAnQXJyb3ctY2hldnJvbi11cC1pbi1saW5lJyA6ICdBcnJvdy1jaGV2cm9uLWRvd24taW4tbGluZSdcIlxuICA+PC91aS1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbHVtbkhlYWRlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWk9XCJpXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB1aUVsbGlwc2VUZXh0IChvbkNoYW5nZVRleHRTdGF0ZSk9XCJvbkNoYW5nZUNvbHVtblNpemUoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uLXRpdGxlXCI+e3sgY29sdW1uLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19XG4gICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICA8dWktaWNvbiAqbmdJZj1cImNvbHVtbj8uc2hvd1Rvb2x0aXBcIiBbbmFtZV09XCInSGVscC1pbi1saW5lJ1wiXG4gICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoY29sdW1uPy5zaG93VG9vbHRpcCA/IChjb2x1bW4/LnRvb2x0aXAgPyBjb2x1bW4udG9vbHRpcCA6IGNvbHVtbi50aXRsZSApIDogJycpIHx8ICcnXCJcbiAgICA+PC91aS1pY29uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsVUFBVSxFQVVYLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCNUQsTUFBTSxPQUFPLGNBQWM7SUEwRXpCLFlBQzZFLGVBQWlDLEVBQ3BHLFVBQXNCLEVBQ2MsU0FBOEI7UUFGQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDcEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNjLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBNUQ1RTs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcs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QUFDLENBQUM7YUFDakYsQ0FBQztTQUNIOzs0RkFFVSxjQUFjO2tCQWQxQixTQUFTOytCQUNFLFVBQVUsbUJBR0gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQzt3QkFDVixPQUFPLENBQUMsY0FBYyxFQUFFOzRCQUN0QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7NEJBQ2xELEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7NEJBQ3pDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzs0QkFDckYsVUFBVSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUNqRixDQUFDO3FCQUNIOzswQkE2RUUsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7OzBCQUV2RCxNQUFNOzJCQUFDLGVBQWU7eUNBdEVFLE1BQU07c0JBQWhDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVFoQixJQUFJO3NCQUFaLEtBQUs7Z0JBU0csT0FBTztzQkFBZixLQUFLO2dCQVFHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFRRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVhLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRGVzdHJveVJlZixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbHVtbkVsbGlwc2UsXHJcbiAgQ29sdW1uVHlwZSxcclxuICBDb21wb25lbnRSZW5kZXJlcixcclxuICBEYXRhU291cmNlLFxyXG4gIFBhZ2luYXRpb24sXHJcbiAgU2Nyb2xsU2V0dGluZ3MsXHJcbiAgVGFibGVDb2x1bW4sXHJcbiAgVGFibGVDb25maWcsXHJcbiAgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbixcclxuICBUYWJsZURhdGEsXHJcbiAgVGFibGVEZXRhaWxDb2x1bW5cclxufSBmcm9tICcuL3RhYmxlLm1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XHJcbmltcG9ydCB7IHNvcnRCeU9yZGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUudXRpbHMnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgSVNfTU9CSUxFX1RPS0VOIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2lzLW1vYmlsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZXhwYW5kRGV0YWlsJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkLCB2b2lkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiB2b2lkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBEYXRhU291cmNlLCBURGV0YWlsIGV4dGVuZHMgRGF0YVNvdXJjZT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKlxyXG4gICAqIFRhYmxlIGNvbmZpZ3VyYXRpb25cclxuICAgKlxyXG4gICAqIEB0eXBlIHtUYWJsZUNvbmZpZ31cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb25maWc6IFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IGZvciBwcm92aWRpbmcgdGhlIHRhYmxlIGRhdGEuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7VGFibGVEYXRhfVxyXG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRhdGE6IFRhYmxlRGF0YVxyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBwcm9wZXJ0eSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhYmxlIGlzIGluIGEgbG9hZGluZyBzdGF0ZS5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICovXHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXHJcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XHJcbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGEgc3RydWN0dXJlIHRvIHNlbGVjdCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSByZW5kZXJlZCBhbmQgdGhlaXIgY2FwYWJpbGl0aWVzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7VGFibGVEZXRhaWxDb2x1bW59XHJcbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFibGVEZXRhaWxDb2x1bW5zOiBUYWJsZURldGFpbENvbHVtbjxULCBURGV0YWlsPjtcclxuICBASW5wdXQoKSB0YWJsZURldGFpbHMgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzYWJsZSBib3JkZXIgcmFkaXVzIGZvciB0YWJsZVxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZUJvcmRlclJhZGl1cyA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkRldGFpbFJvd0NsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHBhZ2luYXRvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcm90ZWN0ZWQgdGFibGVEYXRhOiBUYWJsZURhdGE7XHJcbiAgcHJvdGVjdGVkIHNvdXJjZURhdGE6IFRhYmxlRGF0YTtcclxuICBwcm90ZWN0ZWQgY29sdW1uc1Rvb2x0aXBTdGF0ZTogQ29sdW1uRWxsaXBzZVtdID0gW107XHJcbiAgcHJvdGVjdGVkIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uPFQ+O1xyXG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBjb2x1bW5zRGV0YWlsVG9EaXNwbGF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBza2VsZXRvblN0eWxlQ29uZmlnID0ge1xyXG4gICAgYmFja2dyb3VuZDogJyNGNkY2RjYnLFxyXG4gICAgJ2JvcmRlci1yYWRpdXMnOiAnNHB4JyxcclxuICAgIGhlaWdodDogJzI0cHgnXHJcbiAgfTtcclxuICBwcm90ZWN0ZWQgZGF0YVNvdXJjZURldGFpbCA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihbXSk7XHJcbiAgcHJvdGVjdGVkIGVsZW1lbnREZXRhaWw6IGFueTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRGF0YVR5cGUgPSBDb2x1bW5UeXBlO1xyXG4gIHByb3RlY3RlZCBzY3JvbGxTZXR0aW5ncyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjcm9sbFNldHRpbmdzPih7IHNjcm9sbEVuZDogZmFsc2UsIGhvcml6b250YWxTY3JvbGw6IGZhbHNlLCBzY3JvbGxTdGFydDogZmFsc2UgfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxyXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxyXG4gICAgQEluamVjdChJU19NT0JJTEVfVE9LRU4pIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cclxuICApIHtcclxuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcclxuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldFRhYmxlQ29uZmlnKHRoaXMuY29uZmlnKTtcclxuICAgIHRoaXMuc2V0VGFibGVEYXRhKHRoaXMuZGF0YSk7XHJcblxyXG4gICAgaWYgKHRoaXMuYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnKSB7XHJcbiAgICAgIHRoaXMuc2tlbGV0b25TdHlsZUNvbmZpZy5iYWNrZ3JvdW5kID0gJyNGNEY0RjQnO1xyXG4gICAgfVxyXG4gICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ3RoZW1lJywgdGhpcy5hcHBsaWNhdGlvblRoZW1lKTtcclxuXHJcbiAgICBpZiAodGhpcy50YWJsZURldGFpbENvbHVtbnMpIHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy50YWJsZURldGFpbENvbHVtbnMuY29sdW1uRGVmcy5maWx0ZXIoY29sdW1uID0+ICFjb2x1bW4uaGlkZGVuKTtcclxuICAgICAgdGhpcy5jb2x1bW5zRGV0YWlsVG9EaXNwbGF5ID0gZmlsdGVyZWRDb2x1bW5zLmxlbmd0aCA/ICBmaWx0ZXJlZENvbHVtbnMubWFwKFxyXG4gICAgICAgICh0YWJsZUNvbHVtbjogVGFibGVDb2x1bW48VERldGFpbD4pID0+IHRhYmxlQ29sdW1uLnRpdGxlIVxyXG4gICAgICApIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudGFibGVDb25maWc/LnNvcnRhYmxlICYmIHRoaXMudGFibGVDb25maWc/LnNvcnQpIHtcclxuICAgICAgdGhpcy5vblNvcnRDaGFuZ2UodGhpcy50YWJsZUNvbmZpZy5zb3J0IGFzIFNvcnQsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaGFzVGFibGVTY3JvbGwoKTtcclxuICAgIGZyb21FdmVudCh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhc1RhYmxlU2Nyb2xsKCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmIGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zdCBjb25maWcgPSBjaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWUgYXMgVGFibGVDb25maWc8VD47XHJcbiAgICAgIHRoaXMuc2V0VGFibGVDb25maWcoY29uZmlnKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFRhYmxlRGF0YShjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlIGFzIFRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNUYWJsZVNjcm9sbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbCA9IHRhYmxlLnNjcm9sbFdpZHRoID4gdGFibGUuY2xpZW50V2lkdGg7XHJcbiAgICBjb25zdCBzY3JvbGxFbmQgPSB0YWJsZS5zY3JvbGxMZWZ0ICsgdGFibGUuY2xpZW50V2lkdGggPj0gdGFibGUuc2Nyb2xsV2lkdGg7XHJcbiAgICB0aGlzLnNjcm9sbFNldHRpbmdzJC5uZXh0KHtcclxuICAgICAgc2Nyb2xsU3RhcnQ6ICF0YWJsZS5zY3JvbGxMZWZ0LFxyXG4gICAgICBzY3JvbGxFbmQsXHJcbiAgICAgIGhvcml6b250YWxTY3JvbGxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FsbFJlbmRlcmVyKFtyZW5kZXJlckZuLCBlbGVtZW50XTogWyh2OiBUKSA9PiBDb21wb25lbnRSZW5kZXJlciB8IHN0cmluZywgVF0pOiBhbnkge1xyXG4gICAgaWYgKHJlbmRlcmVyRm4pIHtcclxuICAgICAgcmV0dXJuIHJlbmRlcmVyRm4oZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25QYWdpbmF0b3JDaGFuZ2UoZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JDaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25DaGFuZ2VDb2x1bW5TaXplKGNvbHVtbkluZGV4OiBudW1iZXIsIHNob3dUb29sdGlwOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUubWFwKGNvbHVtbiA9PiB7XHJcbiAgICAgIGlmIChjb2x1bW4uaW5kZXggPT09IGNvbHVtbkluZGV4KSB7XHJcbiAgICAgICAgY29sdW1uLnNob3dUb29sdGlwID0gc2hvd1Rvb2x0aXA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbHVtbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uU29ydENoYW5nZShzb3J0U3RhdGU6IFNvcnQsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmIChlbWl0RXZlbnQpIHtcclxuICAgICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydFN0YXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZz8uc29ydGFibGUpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzQXNjID0gc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gJ2FzYyc7XHJcbiAgICAgICAgY29uc3QgYVZhbCA9IGFbc29ydFN0YXRlLmFjdGl2ZV07XHJcbiAgICAgICAgY29uc3QgYlZhbCA9IGJbc29ydFN0YXRlLmFjdGl2ZV07XHJcbiAgICAgICAgcmV0dXJuIChhVmFsIDwgYlZhbCA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xyXG4gICAgICB9KV1cclxuXHJcbiAgICAgIGlmICghc29ydFN0YXRlLmRpcmVjdGlvbikge1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gWy4uLnRoaXMuc291cmNlRGF0YV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvblJvd0NsaWNrKHJvd1BhcmFtczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uUm93Q2xpY2tFdmVudC5lbWl0KHJvd1BhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25EZXRhaWxSb3dDbGljayhyb3dQYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkRldGFpbFJvd0NsaWNrRXZlbnQuZW1pdChyb3dQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZVJvdyhlbGVtZW50OiBUKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURldGFpbHMpIHtcclxuICAgICAgdGhpcy5lbGVtZW50RGV0YWlsID0gdGhpcy5lbGVtZW50RGV0YWlsID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XHJcbiAgICAgIGlmICh0aGlzLmVsZW1lbnREZXRhaWwpIHtcclxuICAgICAgICB0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucy5zZXREZXRhaWxSb3dEYXRhKHtcclxuICAgICAgICAgIGRhdGE6IGVsZW1lbnQsXHJcbiAgICAgICAgICBzZXREZXRhaWxEYXRhU291cmNlOiB0aGlzLnNldFRhYmxlRGV0YWlsRGF0YVNvdXJjZS5iaW5kKHRoaXMpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGFibGVEZXRhaWxEYXRhU291cmNlKHJvd0RhdGE6IFREZXRhaWxbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhU291cmNlRGV0YWlsID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUYWJsZUNvbmZpZyhjb25maWc6IFRhYmxlQ29uZmlnPFQ+KTogdm9pZCB7XHJcbiAgICBjb25maWcucGFnaW5hdGlvbiA9IGNvbmZpZz8ucGFnaW5hdGlvbiA/PyB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnO1xyXG5cclxuICAgIHRoaXMudGFibGVDb25maWcgPSBjb25maWcgYXMgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbjxUPjtcclxuXHJcbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSBjb25maWcuY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XHJcbiAgICAgIGluZGV4LFxyXG4gICAgICBzaG93VG9vbHRpcDogY29sdW1uLnNob3dUb29sdGlwID8/IGZhbHNlXHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBzb3J0QnlPcmRlcjxUPihjb25maWcuY29sdW1ucy5maWx0ZXIoY29sdW1uID0+ICFjb2x1bW4uaGlkZGVuKSkubWFwKGNvbHVtbiA9PiBjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRhYmxlRGF0YShkYXRhOiBUYWJsZURhdGEpOiB2b2lkIHtcclxuICAgIHRoaXMuc291cmNlRGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uID0ge1xyXG4gICAgY3VycmVudFBhZ2U6IDAsXHJcbiAgICBpdGVtc1BlclBhZ2U6IDEwLFxyXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzEwLCAyNSwgNTBdLFxyXG4gICAgdG90YWxJdGVtczogMjBcclxuICB9O1xyXG5cclxuICB0cmFja0NvbHVtblVuaXF1ZUlkID0gKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW48VD4pOiBzdHJpbmcgPT4gY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXk7XHJcbn1cclxuIiwiPGRpdiAjdGFibGVDb250YWluZXIgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsgJ3dpdGhvdXQtdGl0bGUnOiAhdGFibGVDb25maWc/LnRpdGxlLCAnZGlzYWJsZS1ib3JkZXItcmFkaXVzJzogZGlzYWJsZUJvcmRlclJhZGl1cyB9XCJcclxuICAgICBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+XHJcbiAgPGRpdiAqbmdJZj1cInRhYmxlQ29uZmlnPy50aXRsZVwiIGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcbiAgICB7eyB0YWJsZUNvbmZpZy50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fVxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RpdGxlLWFjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgICN0YWJsZVxyXG4gICAgKm5nSWY9XCJzY3JvbGxTZXR0aW5ncyQgfCBhc3luYyBhcyBzY3JvbGxTZXR0aW5nc1wiXHJcbiAgICBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIj5cclxuICAgIDx0YWJsZVxyXG4gICAgICBbdGFiSW5kZXhdPVwiMFwiXHJcbiAgICAgIGNsYXNzPVwibWFpbi10YWJsZVwiXHJcbiAgICAgIG1hdC10YWJsZVxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFcIlxyXG4gICAgICBtYXRTb3J0XHJcbiAgICAgIFttYXRTb3J0U3RhcnRdPVwidGFibGVDb25maWc/LnNvcnQ/LmRlZmF1bHRTb3J0U3RhcnQgPz8gJ2FzYydcIlxyXG4gICAgICBbbWF0U29ydEFjdGl2ZV09XCJ0YWJsZUNvbmZpZz8uc29ydD8uYWN0aXZlID8/ICcnXCJcclxuICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwidGFibGVDb25maWc/LnNvcnQ/LmRpcmVjdGlvbiA/PyAnJ1wiXHJcbiAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIm9uU29ydENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbiAgICA+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zOyBpbmRleCBhcyBpLCBsYXN0IGFzIGlzTGFzdDsgdHJhY2tCeTogdHJhY2tDb2x1bW5VbmlxdWVJZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5ICYmIGNvbHVtbi5hbGxvd1NvcnRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiIFtzdGlja3lFbmRdPVwiIXNjcm9sbFNldHRpbmdzPy5zY3JvbGxFbmRcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgICAgICAgW3N0YXJ0XT1cImNvbHVtbi5zb3J0U3RhcnQgPz8gJ2FzYydcIlxyXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiJ2JvbGQnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxyXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcclxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbmRCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpbmRleDogaSwgZWxlbWVudCB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnQsIHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW4ua2V5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgIWNvbHVtbi5hbGxvd1NvcnRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGlja3lFbmRdPVwic2Nyb2xsU2V0dGluZ3MuaG9yaXpvbnRhbFNjcm9sbCA/ICFzY3JvbGxTZXR0aW5ncy5zY3JvbGxFbmQgOiB0cnVlXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiJ2JvbGQnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxyXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcclxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbmRCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpbmRleDogaSwgZWxlbWVudCB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50LCByb3dJbmRleCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cIiEoaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgY29sdW1uLmFsbG93U29ydFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0aWNreV09XCIoaXNNb2JpbGUkIHwgYXN5bmMpID8gZmFsc2UgOiAhc2Nyb2xsU2V0dGluZ3Muc2Nyb2xsU3RhcnQgICYmICEhY29sdW1uLmlzU3RpY2t5XCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgIFtzdGFydF09XCJjb2x1bW4uc29ydFN0YXJ0ID8/ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRIZWFkZXIgPz8gY29sdW1uLmtleVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiJ2JvbGQnXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxyXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcclxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbmRCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpbmRleDogaSwgZWxlbWVudCB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50LCByb3dJbmRleCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCIhKGlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kpICYmICFjb2x1bW4uYWxsb3dTb3J0XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cIihpc01vYmlsZSQgfCBhc3luYykgPyBmYWxzZSA6ICFzY3JvbGxTZXR0aW5ncy5zY3JvbGxTdGFydCAmJiAhIWNvbHVtbi5pc1N0aWNreVwiPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiJ2JvbGQnXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxyXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcclxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbmRCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpbmRleDogaSwgZWxlbWVudCB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAgZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW4ua2V5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIFthdHRyLmNvbHNwYW5dPVwiZGlzcGxheWVkQ29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGVtZW50LWRldGFpbFwiICpuZ0lmPVwiZGF0YVNvdXJjZURldGFpbC5kYXRhLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgIFtAZXhwYW5kRGV0YWlsXT1cImVsZW1lbnQgPT09IGVsZW1lbnREZXRhaWwgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cclxuICAgICAgICAgICAgPHRhYmxlXHJcbiAgICAgICAgICAgICAgbWF0LXRhYmxlXHJcbiAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZURldGFpbFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZS1ib3JkZXJzJzogZWxlbWVudCA9PT0gdGFibGVEYXRhW3RhYmxlRGF0YS5sZW5ndGggLSAxXSB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYmxlQ29sdW1uIG9mIHRhYmxlRGV0YWlsQ29sdW1ucy5jb2x1bW5EZWZzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwidGFibGVDb2x1bW4udGl0bGUgPz8gJydcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGFycm93UG9zaXRpb249XCJhZnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiB0YWJsZUNvbHVtbi5zdHlsZXM/LndpZHRofVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJyt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHRhYmxlQ29sdW1uLnRpdGxlIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgKGNsaWNrKT1cIm9uRGV0YWlsUm93Q2xpY2soZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGlnbl09XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJyt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IHRhYmxlQ29sdW1uLnN0eWxlcz8ud2lkdGggfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW59XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNEZXRhaWxUb0Rpc3BsYXlcIj48L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93RGV0YWlsOyBjb2x1bW5zOiBjb2x1bW5zRGV0YWlsVG9EaXNwbGF5O1wiPjwvdHI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEYXRhVHBsIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC10YWJsZUNvbHVtbj1cInRhYmxlQ29sdW1uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFsaWduLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRhYmxlQ29sdW1uLnR5cGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGUuRklFTERcIj5cclxuICAgICAgICAgICAgICB7eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiB0YWJsZUNvbHVtbi5rZXkgfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLkZVTkNUSU9OXCI+XHJcbiAgICAgICAgICAgICAge3sgdGFibGVDb2x1bW4uZnVuY3Rpb24/LihlbGVtZW50KSB9fVxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGUuUkVOREVSRVJcIj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgIFtkeW5hbWljQ29tcG9uZW50XT1cIlt0YWJsZUNvbHVtbi5yZW5kZXJlciwgZWxlbWVudF0gfCBtZW1vaXplRnVuYyA6IGNhbGxSZW5kZXJlclwiPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAge3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogdGFibGVDb2x1bW4ua2V5IH19XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydleHBhbmRlZC1yb3cnOiBlbGVtZW50RGV0YWlsID09PSByb3csICdyb3ctY2xpY2thYmxlJzogdGFibGVEZXRhaWxzLCAnc2VsZWN0ZWQnOiByb3c/LnNlbGVjdGVkLCAnbGFzdC1yb3cnOiByb3cgPT09IHRhYmxlRGF0YVt0YWJsZURhdGEubGVuZ3RoIC0gMV0gJiYgIWVsZW1lbnREZXRhaWwgfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93KHJvdylcIj5cclxuICAgICAgPC90cj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlRGV0YWlscyAmJiB0YWJsZURldGFpbENvbHVtbnM/LmNvbHVtbkRlZnM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImRldGFpbC1yb3dcIj48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZy5ub0RhdGFSb3dUcGxcIj5cclxuICAgICAgICA8dHIgKm1hdE5vRGF0YVJvdz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbmZpZy5ub0RhdGFSb3dUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx1aS1wYWdpbmF0b3JcclxuICAgICpuZ0lmPVwiIXRhYmxlQ29uZmlnPy5oaWRlUGFnaW5hdGlvbiAmJiB0YWJsZUNvbmZpZz8ucGFnaW5hdGlvblwiXHJcbiAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXHJcbiAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyAnbGlnaHQnIDogJ2NsYXNzaWMnXCJcclxuICAgIFtwYWdlU2l6ZV09XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy5pdGVtc1BlclBhZ2UgPz8gMjVcIlxyXG4gICAgW2xlbmd0aF09XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy50b3RhbEl0ZW1zID8/IDBcIlxyXG4gICAgW2N1cnJlbnRQYWdlXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24/LmN1cnJlbnRQYWdlID8/IDBcIlxyXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy5pdGVtc1BlclBhZ2VPcHRpb25zID8/IFsxMCwgMjUsIDUwXVwiXHJcbiAgICAocGFnaW5hdG9yQ2hhbmdlKT1cIm9uUGFnaW5hdG9yQ2hhbmdlKCRldmVudClcIlxyXG4gID48L3VpLXBhZ2luYXRvcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2V4cGFuZEJ1dHRvbiBsZXQtaT1cImluZGV4XCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCI+XHJcbiAgPHVpLWJ1dHRvblxyXG4gICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXHJcbiAgICAqbmdJZj1cIiFpICYmIHRhYmxlRGV0YWlsc1wiXHJcbiAgICB2YXJpYW50PVwiaWNvbi1idXR0b25cIlxyXG4gICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IGVsZW1lbnREZXRhaWwgJiYgZWxlbWVudCA9PSBlbGVtZW50RGV0YWlsIH1cIlxyXG4gICAgW2ljb25OYW1lXT1cImVsZW1lbnREZXRhaWwgJiYgZWxlbWVudCA9PSBlbGVtZW50RGV0YWlsID8gJ0Fycm93LWNoZXZyb24tdXAtaW4tbGluZScgOiAnQXJyb3ctY2hldnJvbi1kb3duLWluLWxpbmUnXCJcclxuICA+PC91aS1idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkhlYWRlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWk9XCJpXCI+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uLXRpdGxlXCI+e3sgY29sdW1uLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgPHVpLWljb24gKm5nSWY9XCJjb2x1bW4/LnNob3dUb29sdGlwXCIgW25hbWVdPVwiJ0hlbHAtaW4tbGluZSdcIlxyXG4gICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcclxuICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihjb2x1bW4/LnNob3dUb29sdGlwID8gKGNvbHVtbj8udG9vbHRpcCA/IGNvbHVtbi50b29sdGlwIDogY29sdW1uLnRpdGxlICkgOiAnJykgfHwgJydcIlxyXG4gICAgPjwvdWktaWNvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
58
58
|
exports: [TableComponent],
|
|
59
59
|
}]
|
|
60
60
|
}] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFvQmhFLE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CLGlCQWpCaEIsY0FBYyxFQUFFLGdCQUFnQixhQUU3QyxZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsc0JBQXNCO1lBQ3RCLGVBQWUsYUFFUCxjQUFjO2dIQUViLG9CQUFvQixZQWY3QixZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IsbUJBQW1COzs0RkFRVixvQkFBb0I7a0JBbEJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQubW9kdWxlJztcclxuaW1wb3J0IHsgRWxsaXBzZVRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2VsbGlwc2UtdGV4dC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IEljb25Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50Lm1vZHVsZSc7XHJcbmltcG9ydCB7IFNlbnRlbmNlQ2FzZVBpcGUgfSBmcm9tICcuL3NlbnRlbmNlLWNhc2UucGlwZSc7XHJcbmltcG9ydCB7IERhdGFQcm9wZXJ0eUdldHRlclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9kYXRhLXByb3BlcnR5LWdldHRlcic7XHJcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtY29tcG9uZW50LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1lbW9pemVGdW5jUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL21lbW9pemUtZnVuYy5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbVGFibGVDb21wb25lbnQsIFNlbnRlbmNlQ2FzZVBpcGVdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIFNrZWxldG9uQ29tcG9uZW50LFxyXG4gICAgUGFnaW5hdG9yQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQnV0dG9uQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIEljb25Db21wb25lbnRNb2R1bGUsXHJcbiAgICBFbGxpcHNlVGV4dERpcmVjdGl2ZSxcclxuICAgIER5bmFtaWNDb21wb25lbnREaXJlY3RpdmUsXHJcbiAgICBEYXRhUHJvcGVydHlHZXR0ZXJQaXBlLFxyXG4gICAgTWVtb2l6ZUZ1bmNQaXBlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1RhYmxlQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50TW9kdWxlIHt9XHJcbiJdfQ==
|