@messaia/cdk 18.2.3 → 19.0.0-rc01
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/fesm2022/messaia-cdk.mjs +1147 -932
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/base/components/base.component.d.ts +1 -1
- package/lib/base/components/generic-embedded-list.component.d.ts +1 -1
- package/lib/base/components/generic-form-base.component.d.ts +1 -1
- package/lib/base/components/generic-form.component.d.ts +1 -1
- package/lib/base/components/generic-list.component.d.ts +7 -3
- package/lib/base/components/generic-reactive-form.component.d.ts +1 -1
- package/lib/base/helpers/auth-helper.d.ts +1 -1
- package/lib/chips/components/chips.component.d.ts +5 -16
- package/lib/common/functions/utils.d.ts +1 -1
- package/lib/common/helpers/app-storage.d.ts +1 -1
- package/lib/common/styles/_layout.scss +1 -1
- package/lib/common/styles/_variables.scss +4 -25
- package/lib/common/styles/colors/_colors-dark.scss +2 -0
- package/lib/common/styles/colors/_colors.scss +4 -4
- package/lib/common/styles/core/_button.scss +7 -21
- package/lib/common/styles/core/_card.scss +13 -97
- package/lib/common/styles/core/_core.scss +8 -21
- package/lib/common/styles/core/_sidenav.scss +9 -7
- package/lib/common/styles/core/_structure.scss +4 -11
- package/lib/common/styles/font/_font.scss +5 -13
- package/lib/common/styles/m2/_common-theme.scss +10 -10
- package/lib/common/styles/m3/_common-theme.scss +27 -10
- package/lib/common/styles/platform.scss +10 -8
- package/lib/common/styles/utilities/_general.scss +55 -51
- package/lib/common/styles/utilities/_pull.scss +23 -30
- package/lib/common/styles/utilities/_push.scss +23 -30
- package/lib/common/styles/utilities/_size.scss +3 -3
- package/lib/common/styles/utilities/_utilities.scss +14 -14
- package/lib/common/theming/_m2-all-theme.scss +4 -11
- package/lib/common/theming/_m3-all-theme.scss +18 -0
- package/lib/form-validators/directives/base-directive.d.ts +1 -1
- package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +1 -1
- package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +1 -1
- package/lib/form-validators/services/rx-form-array.d.ts +2 -2
- package/lib/form-validators/util/reset-form.d.ts +3 -3
- package/lib/forms/directives/mat-form-field-editor.directive.d.ts +31 -28
- package/lib/forms/helpers/abstract-mat-form-field.d.ts +147 -91
- package/lib/forms/helpers/abstract-select-form-field.component.d.ts +144 -67
- package/lib/forms/helpers/value-accessor-base.d.ts +1 -1
- package/lib/layout/_m2-layout-theme.scss +14 -50
- package/lib/layout/layout-toggle.class.d.ts +1 -1
- package/lib/list/components/list.component.d.ts +3 -15
- package/lib/select/components/select.component.d.ts +3 -16
- package/lib/table/components/filter-select/filter-select.component.d.ts +2 -3
- package/package.json +3 -5
- package/esm2022/lib/base/base.module.mjs +0 -114
- package/esm2022/lib/base/components/base.component.mjs +0 -904
- package/esm2022/lib/base/components/dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.mjs +0 -123
- package/esm2022/lib/base/components/generic-embedded-list.component.mjs +0 -197
- package/esm2022/lib/base/components/generic-form-base.component.mjs +0 -891
- package/esm2022/lib/base/components/generic-form.component.mjs +0 -44
- package/esm2022/lib/base/components/generic-list.component.mjs +0 -966
- package/esm2022/lib/base/components/generic-reactive-form.component.mjs +0 -101
- package/esm2022/lib/base/components/task-dialog/task-dialog.component.mjs +0 -147
- package/esm2022/lib/base/constants/common.mjs +0 -92
- package/esm2022/lib/base/constants/global-roles.mjs +0 -9
- package/esm2022/lib/base/enums/message-type.mjs +0 -7
- package/esm2022/lib/base/helpers/auth-helper.mjs +0 -53
- package/esm2022/lib/base/interceptors/base.interceptor.mjs +0 -168
- package/esm2022/lib/base/interceptors/caching-interceptor.mjs +0 -67
- package/esm2022/lib/base/interceptors/loading.interceptor.mjs +0 -64
- package/esm2022/lib/base/interfaces/ibase-component.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-form-base.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-list-component.mjs +0 -2
- package/esm2022/lib/base/interfaces/igeneric-reactive-form-base.mjs +0 -2
- package/esm2022/lib/base/models/auth-user.mjs +0 -18
- package/esm2022/lib/base/models/task-dialog-data.mjs +0 -85
- package/esm2022/lib/base/public_api.mjs +0 -2
- package/esm2022/lib/base/services/file.service.mjs +0 -18
- package/esm2022/lib/base/services/loading-screen.service.mjs +0 -45
- package/esm2022/lib/base/services/print.service.mjs +0 -41
- package/esm2022/lib/chips/chips.module.mjs +0 -77
- package/esm2022/lib/chips/components/chips.component.mjs +0 -702
- package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +0 -18
- package/esm2022/lib/chips/directives/chip.directive.mjs +0 -18
- package/esm2022/lib/chips/public_api.mjs +0 -3
- package/esm2022/lib/common/animations/collapse/collapse.animation.mjs +0 -33
- package/esm2022/lib/common/animations/common/interfaces.mjs +0 -2
- package/esm2022/lib/common/behaviors/constructor.mjs +0 -2
- package/esm2022/lib/common/behaviors/control-value-accesor.mixin.mjs +0 -41
- package/esm2022/lib/common/behaviors/disabled.mixin.mjs +0 -24
- package/esm2022/lib/common/common.module.mjs +0 -176
- package/esm2022/lib/common/constants/constants.mjs +0 -3
- package/esm2022/lib/common/directives/autofocus.directive.mjs +0 -62
- package/esm2022/lib/common/directives/delayed-hover.directive.mjs +0 -133
- package/esm2022/lib/common/directives/disable-control.directive.mjs +0 -35
- package/esm2022/lib/common/enums/app-event-type.mjs +0 -6
- package/esm2022/lib/common/enums/filter-glue.mjs +0 -16
- package/esm2022/lib/common/enums/filter-operator.mjs +0 -15
- package/esm2022/lib/common/enums/salutation.mjs +0 -7
- package/esm2022/lib/common/functions/decorators.mjs +0 -22
- package/esm2022/lib/common/functions/functions.mjs +0 -22
- package/esm2022/lib/common/functions/utils.mjs +0 -271
- package/esm2022/lib/common/helpers/app-storage.mjs +0 -77
- package/esm2022/lib/common/helpers/delegate.mjs +0 -2
- package/esm2022/lib/common/helpers/dynamic-builder.mjs +0 -52
- package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +0 -11
- package/esm2022/lib/common/models/action-item.mjs +0 -77
- package/esm2022/lib/common/models/app-event.mjs +0 -21
- package/esm2022/lib/common/models/app-setting.mjs +0 -92
- package/esm2022/lib/common/models/audit-entity.mjs +0 -53
- package/esm2022/lib/common/models/audit-user.mjs +0 -24
- package/esm2022/lib/common/models/base-entity.mjs +0 -40
- package/esm2022/lib/common/models/common-error.mjs +0 -29
- package/esm2022/lib/common/models/common-handler-context.mjs +0 -45
- package/esm2022/lib/common/models/displayname-number-projection.mjs +0 -56
- package/esm2022/lib/common/models/displayname-projection.mjs +0 -38
- package/esm2022/lib/common/models/entity.mjs +0 -2
- package/esm2022/lib/common/models/enum-item.mjs +0 -2
- package/esm2022/lib/common/models/enum-metadata.mjs +0 -44
- package/esm2022/lib/common/models/filter-field.mjs +0 -2
- package/esm2022/lib/common/models/filter.mjs +0 -2
- package/esm2022/lib/common/models/icommon-handler-context.mjs +0 -2
- package/esm2022/lib/common/models/icon.mjs +0 -42
- package/esm2022/lib/common/models/key-value.mjs +0 -11
- package/esm2022/lib/common/models/modifiable-entity.mjs +0 -22
- package/esm2022/lib/common/models/name-number-projection.mjs +0 -35
- package/esm2022/lib/common/models/name-projection.mjs +0 -25
- package/esm2022/lib/common/models/permission.mjs +0 -29
- package/esm2022/lib/common/models/save-action.mjs +0 -7
- package/esm2022/lib/common/models/suffix-button.mjs +0 -15
- package/esm2022/lib/common/models/title-projection.mjs +0 -25
- package/esm2022/lib/common/pipes/bind.mjs +0 -31
- package/esm2022/lib/common/pipes/data-source.pipe.mjs +0 -15
- package/esm2022/lib/common/pipes/enum.pipe.mjs +0 -41
- package/esm2022/lib/common/pipes/file-size.pipe.mjs +0 -35
- package/esm2022/lib/common/pipes/filter.pipe.mjs +0 -54
- package/esm2022/lib/common/pipes/first-letter.mjs +0 -24
- package/esm2022/lib/common/pipes/form-array.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/form-control.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/form-group.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/func.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/join.pipe.mjs +0 -26
- package/esm2022/lib/common/pipes/keys.mjs +0 -18
- package/esm2022/lib/common/pipes/map.pipe.mjs +0 -48
- package/esm2022/lib/common/pipes/month-name.pipe.mjs +0 -25
- package/esm2022/lib/common/pipes/nested-property.mjs +0 -29
- package/esm2022/lib/common/pipes/only-number.mjs +0 -58
- package/esm2022/lib/common/pipes/order.pipe.mjs +0 -269
- package/esm2022/lib/common/pipes/placeholder.pipe.mjs +0 -26
- package/esm2022/lib/common/pipes/property-join.pipe.mjs +0 -27
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +0 -32
- package/esm2022/lib/common/pipes/split.pipe.mjs +0 -25
- package/esm2022/lib/common/pipes/time.pipe.mjs +0 -21
- package/esm2022/lib/common/pipes/titlecase.pipe.mjs +0 -14
- package/esm2022/lib/common/pipes/truncate.pipe.mjs +0 -15
- package/esm2022/lib/common/pipes/values.mjs +0 -14
- package/esm2022/lib/common/public_api.mjs +0 -41
- package/esm2022/lib/common/services/base.service.mjs +0 -19
- package/esm2022/lib/common/services/context-helper.mjs +0 -17
- package/esm2022/lib/common/services/enum.service.mjs +0 -81
- package/esm2022/lib/common/services/event-queue.service.mjs +0 -31
- package/esm2022/lib/common/services/service-locator.mjs +0 -25
- package/esm2022/lib/common/templates/templates.mjs +0 -87
- package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +0 -46
- package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -60
- package/esm2022/lib/dialogs/dialog.component.mjs +0 -59
- package/esm2022/lib/dialogs/dialogs.module.mjs +0 -72
- package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +0 -44
- package/esm2022/lib/dialogs/public_api.mjs +0 -2
- package/esm2022/lib/dialogs/services/dialog.service.mjs +0 -154
- package/esm2022/lib/file/file-input.component.mjs +0 -334
- package/esm2022/lib/file/file.module.mjs +0 -37
- package/esm2022/lib/file/public_api.mjs +0 -2
- package/esm2022/lib/form-validators/abstract/typed-form.mjs +0 -13
- package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +0 -33
- package/esm2022/lib/form-validators/const/app-validators.const.mjs +0 -68
- package/esm2022/lib/form-validators/const/app.const.mjs +0 -65
- package/esm2022/lib/form-validators/const/config-names.const.mjs +0 -33
- package/esm2022/lib/form-validators/const/config-required-fields.const.mjs +0 -35
- package/esm2022/lib/form-validators/const/decorators.const.mjs +0 -23
- package/esm2022/lib/form-validators/const/events.const.mjs +0 -53
- package/esm2022/lib/form-validators/const/html-elements.const.mjs +0 -25
- package/esm2022/lib/form-validators/const/iban-country-wise-regex.const.mjs +0 -80
- package/esm2022/lib/form-validators/const/index.mjs +0 -6
- package/esm2022/lib/form-validators/const/operators.const.mjs +0 -7
- package/esm2022/lib/form-validators/const/validation-alphabet-locale.const.mjs +0 -9
- package/esm2022/lib/form-validators/const/validator.const.mjs +0 -29
- package/esm2022/lib/form-validators/core/annotation-types.mjs +0 -75
- package/esm2022/lib/form-validators/core/default-container.mjs +0 -500
- package/esm2022/lib/form-validators/decorators/allOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/alpha.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/alphaNumeric.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/and.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/ascii.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/async.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/base-decorator.function.mjs +0 -7
- package/esm2022/lib/form-validators/decorators/choice.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/compare.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/compose.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/contains.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/credit-card.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/cusip.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/custom.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/dataUri.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/date.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/different.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/digit.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/email.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/endsWith.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/even.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/extension.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/factor.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/file.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/fileSize.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/greater-than.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/grid.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/hexColor.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/image.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/index.mjs +0 -93
- package/esm2022/lib/form-validators/decorators/json.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/latLong.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/latitude.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/leapYear.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/less-than.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/longitude.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/lowercase.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/mac.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/mask.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/maxDate.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxLength.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxNumber.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/maxTime.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minDate.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minLength.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minNumber.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/minTime.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/model.decorator.mjs +0 -7
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/noneOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/not.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/notEmpty.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/numeric.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/odd.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/oneOf.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/or.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/password.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/pattern.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/port.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/primeNumber.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/prop-array.decorator.mjs +0 -18
- package/esm2022/lib/form-validators/decorators/prop-object.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +0 -18
- package/esm2022/lib/form-validators/decorators/range.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/required.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/requiredTrue.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/rule.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/escape.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/toString.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/trim.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +0 -8
- package/esm2022/lib/form-validators/decorators/startsWith.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/time.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/decorators/unique.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/uppercase.decorator.mjs +0 -6
- package/esm2022/lib/form-validators/decorators/url.decorator.mjs +0 -10
- package/esm2022/lib/form-validators/directives/base-directive.mjs +0 -75
- package/esm2022/lib/form-validators/directives/control-host.directive.mjs +0 -55
- package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +0 -36
- package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +0 -234
- package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +0 -40
- package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +0 -76
- package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +0 -60
- package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +0 -122
- package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +0 -74
- package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +0 -394
- package/esm2022/lib/form-validators/domain/disable-provider.mjs +0 -198
- package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +0 -134
- package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +0 -453
- package/esm2022/lib/form-validators/domain/form-data.mjs +0 -93
- package/esm2022/lib/form-validators/enums/error-message-binding-strategy.mjs +0 -11
- package/esm2022/lib/form-validators/enums/index.mjs +0 -5
- package/esm2022/lib/form-validators/enums/ip-version.mjs +0 -7
- package/esm2022/lib/form-validators/enums/numeric-value-type.mjs +0 -7
- package/esm2022/lib/form-validators/enums/reset-type.mjs +0 -10
- package/esm2022/lib/form-validators/enums/url-validation-type.mjs +0 -7
- package/esm2022/lib/form-validators/models/config/alpha-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/array-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-config-fn.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/base-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/choice-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/compare-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/component-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/compose-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/contains-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/credit-card-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/custom-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/default-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/digit-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/disable-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/element-class-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/email-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/error-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/extension-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/factor-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/field-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/file-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/hex-color-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/iban-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/image-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/index.mjs +0 -35
- package/esm2022/lib/form-validators/models/config/ip-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/logical-operator-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/mask-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/max-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/message-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/min-date-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/model-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/number-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/numeric-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/password-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/pattern-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/prop-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/props-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/range-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/relational-operator-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/required-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/rule-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/sanitize-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/size-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/string-comparison-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/string-value-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/time-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/todate-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/unique-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/update-on-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/config/url-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/control-info.mjs +0 -2
- package/esm2022/lib/form-validators/models/data-sanitizer.mjs +0 -2
- package/esm2022/lib/form-validators/models/decorator-configuration.mjs +0 -2
- package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +0 -58
- package/esm2022/lib/form-validators/models/index.mjs +0 -3
- package/esm2022/lib/form-validators/models/instance-container.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/auto-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/form-data-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/i-abstract-control.mjs +0 -30
- package/esm2022/lib/form-validators/models/interface/i-form-group.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/instance-argument.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +0 -2
- package/esm2022/lib/form-validators/models/interface/options.mjs +0 -2
- package/esm2022/lib/form-validators/models/password-validation.model.mjs +0 -2
- package/esm2022/lib/form-validators/models/prop-validation-config.mjs +0 -2
- package/esm2022/lib/form-validators/models/property-info.mjs +0 -2
- package/esm2022/lib/form-validators/public_api.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +0 -33
- package/esm2022/lib/form-validators/reactive-form-validators/alpha.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +0 -38
- package/esm2022/lib/form-validators/reactive-form-validators/ascii.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +0 -45
- package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +0 -31
- package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +0 -32
- package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +0 -34
- package/esm2022/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +0 -63
- package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +0 -48
- package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +0 -38
- package/esm2022/lib/form-validators/reactive-form-validators/custom.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/date.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/digit.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/email.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +0 -23
- package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +0 -40
- package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +0 -37
- package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +0 -34
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +0 -31
- package/esm2022/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +0 -28
- package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +0 -52
- package/esm2022/lib/form-validators/reactive-form-validators/index.mjs +0 -66
- package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +0 -28
- package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +0 -18
- package/esm2022/lib/form-validators/reactive-form-validators/latitude.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/less-than.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/longitude.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +0 -15
- package/esm2022/lib/form-validators/reactive-form-validators/mac.validator.mjs +0 -9
- package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +0 -14
- package/esm2022/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/minDate.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/minTime.validator.mjs +0 -8
- package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +0 -24
- package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +0 -26
- package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +0 -35
- package/esm2022/lib/form-validators/reactive-form-validators/pattern.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +0 -27
- package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +0 -17
- package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/rule.validator.mjs +0 -22
- package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +0 -25
- package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +0 -19
- package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +0 -77
- package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +0 -16
- package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +0 -28
- package/esm2022/lib/form-validators/services/base-form-builder.mjs +0 -220
- package/esm2022/lib/form-validators/services/entity.service.mjs +0 -76
- package/esm2022/lib/form-validators/services/form-control.mjs +0 -370
- package/esm2022/lib/form-validators/services/form-group.mjs +0 -2
- package/esm2022/lib/form-validators/services/reactive-form.module.mjs +0 -52
- package/esm2022/lib/form-validators/services/rx-form-array.mjs +0 -114
- package/esm2022/lib/form-validators/services/rx-form-builder.mjs +0 -1035
- package/esm2022/lib/form-validators/services/rx-form-group.mjs +0 -451
- package/esm2022/lib/form-validators/services/typed-form-builder.mjs +0 -25
- package/esm2022/lib/form-validators/util/alphabet-regex.locale.mjs +0 -29
- package/esm2022/lib/form-validators/util/app-util.mjs +0 -161
- package/esm2022/lib/form-validators/util/check-length.mjs +0 -11
- package/esm2022/lib/form-validators/util/config-provider.mjs +0 -37
- package/esm2022/lib/form-validators/util/date-checker.function.mjs +0 -52
- package/esm2022/lib/form-validators/util/date-provider.mjs +0 -108
- package/esm2022/lib/form-validators/util/form-const.mjs +0 -3
- package/esm2022/lib/form-validators/util/form-provider.mjs +0 -87
- package/esm2022/lib/form-validators/util/index.mjs +0 -7
- package/esm2022/lib/form-validators/util/instance-provider.function.mjs +0 -63
- package/esm2022/lib/form-validators/util/ip-checker.mjs +0 -19
- package/esm2022/lib/form-validators/util/linq.mjs +0 -157
- package/esm2022/lib/form-validators/util/object-maker.mjs +0 -68
- package/esm2022/lib/form-validators/util/reactive-form-config.mjs +0 -25
- package/esm2022/lib/form-validators/util/regex-rules.mjs +0 -37
- package/esm2022/lib/form-validators/util/regex-validator.mjs +0 -74
- package/esm2022/lib/form-validators/util/relational-checker.function.mjs +0 -92
- package/esm2022/lib/form-validators/util/reset-form.mjs +0 -57
- package/esm2022/lib/form-validators/util/sanitizers.mjs +0 -140
- package/esm2022/lib/form-validators/util/time-checker.function.mjs +0 -50
- package/esm2022/lib/form-validators/util/type.mjs +0 -2
- package/esm2022/lib/form-validators/util/validator-value-checker.mjs +0 -21
- package/esm2022/lib/form-validators/validators-extension/allOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/alpha-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/and-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/ascii-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +0 -34
- package/esm2022/lib/form-validators/validators-extension/choice-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/compare-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/compose-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/contains-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/cusip-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/custom-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/date-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/different-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/digit-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/email-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/even-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/extension-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/factor-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/file-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/grid-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/iban-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/image-validator.extension.mjs +0 -10
- package/esm2022/lib/form-validators/validators-extension/index.mjs +0 -68
- package/esm2022/lib/form-validators/validators-extension/ip-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/json-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/latLong-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/latitude-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/less-than-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/longitude-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/mac-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/mask-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minDate-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minLength-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/minTime-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/not-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/numeric-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/odd-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/or-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/password-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/pattern-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/port-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/range-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/required-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/rxweb-validators.mjs +0 -108
- package/esm2022/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/time-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-extension/unique-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +0 -7
- package/esm2022/lib/form-validators/validators-extension/url-validator.extension.mjs +0 -11
- package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +0 -71
- package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +0 -33
- package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +0 -84
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +0 -602
- package/esm2022/lib/forms/constants/constants.mjs +0 -4
- package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +0 -197
- package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +0 -34
- package/esm2022/lib/forms/directives/parse-decimal-directive.mjs +0 -87
- package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +0 -35
- package/esm2022/lib/forms/enums/form-field-type.mjs +0 -23
- package/esm2022/lib/forms/forms.module.mjs +0 -168
- package/esm2022/lib/forms/functions/decorators.mjs +0 -136
- package/esm2022/lib/forms/functions/functions.mjs +0 -72
- package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +0 -308
- package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +0 -492
- package/esm2022/lib/forms/helpers/value-accessor-base.mjs +0 -146
- package/esm2022/lib/forms/models/form-definition.mjs +0 -63
- package/esm2022/lib/forms/models/form-field-definition.mjs +0 -468
- package/esm2022/lib/forms/models/form-field-group-definition.mjs +0 -55
- package/esm2022/lib/forms/pipes/field-func.pipe.mjs +0 -23
- package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +0 -34
- package/esm2022/lib/forms/public_api.mjs +0 -5
- package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +0 -25
- package/esm2022/lib/forms/validators/equal-validator.directive.mjs +0 -69
- package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +0 -41
- package/esm2022/lib/forms/validators/unique-validator-directive.mjs +0 -88
- package/esm2022/lib/http/http.module.mjs +0 -15
- package/esm2022/lib/http/models/response.mjs +0 -24
- package/esm2022/lib/http/public_api.mjs +0 -2
- package/esm2022/lib/http/services/generic.service.mjs +0 -331
- package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +0 -103
- package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +0 -49
- package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +0 -193
- package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +0 -37
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +0 -150
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +0 -108
- package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +0 -146
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +0 -141
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +0 -105
- package/esm2022/lib/layout/layout-toggle.class.mjs +0 -89
- package/esm2022/lib/layout/layout.component.mjs +0 -230
- package/esm2022/lib/layout/layout.directives.mjs +0 -81
- package/esm2022/lib/layout/layout.module.mjs +0 -144
- package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +0 -47
- package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +0 -275
- package/esm2022/lib/layout/public_api.mjs +0 -2
- package/esm2022/lib/list/components/list.component.mjs +0 -78
- package/esm2022/lib/list/directives/vd-list-option.directive.mjs +0 -23
- package/esm2022/lib/list/list.module.mjs +0 -36
- package/esm2022/lib/list/public_api.mjs +0 -3
- package/esm2022/lib/media/directives/media-toggle.directive.mjs +0 -154
- package/esm2022/lib/media/media.module.mjs +0 -35
- package/esm2022/lib/media/public_api.mjs +0 -2
- package/esm2022/lib/media/services/media.service.mjs +0 -110
- package/esm2022/lib/menu/components/menu.component.mjs +0 -95
- package/esm2022/lib/menu/enums/menu-scope.mjs +0 -6
- package/esm2022/lib/menu/menu.module.mjs +0 -64
- package/esm2022/lib/menu/models/menu-client.mjs +0 -39
- package/esm2022/lib/menu/models/menu-department.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item-client.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item-department.mjs +0 -39
- package/esm2022/lib/menu/models/menu-item.mjs +0 -351
- package/esm2022/lib/menu/models/menu-settings.mjs +0 -13
- package/esm2022/lib/menu/models/menu.mjs +0 -224
- package/esm2022/lib/menu/public_api.mjs +0 -3
- package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +0 -50
- package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +0 -50
- package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +0 -51
- package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +0 -24
- package/esm2022/lib/menu/services/menu-items.service.mjs +0 -19
- package/esm2022/lib/menu/services/menu.resolve.mjs +0 -68
- package/esm2022/lib/menu/services/menu.service.mjs +0 -19
- package/esm2022/lib/search/public_api.mjs +0 -2
- package/esm2022/lib/search/search.module.mjs +0 -33
- package/esm2022/lib/select/components/select.component.mjs +0 -215
- package/esm2022/lib/select/directives/vd-select-option.directive.mjs +0 -23
- package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +0 -23
- package/esm2022/lib/select/public_api.mjs +0 -4
- package/esm2022/lib/select/select.module.mjs +0 -48
- package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +0 -810
- package/esm2022/lib/table/components/filter-clear/filter-clear.component.mjs +0 -36
- package/esm2022/lib/table/components/filter-date/filter-date.component.mjs +0 -146
- package/esm2022/lib/table/components/filter-input/filter-input.component.mjs +0 -198
- package/esm2022/lib/table/components/filter-select/filter-select.component.mjs +0 -375
- package/esm2022/lib/table/constants/constants.mjs +0 -3
- package/esm2022/lib/table/directives/data-source-filter.directive.mjs +0 -49
- package/esm2022/lib/table/directives/vd-table-field.directive.mjs +0 -35
- package/esm2022/lib/table/enums/grid.mjs +0 -12
- package/esm2022/lib/table/enums/table-column-type.mjs +0 -17
- package/esm2022/lib/table/functions/decorators.mjs +0 -163
- package/esm2022/lib/table/functions/functions.mjs +0 -28
- package/esm2022/lib/table/models/facet-value.mjs +0 -47
- package/esm2022/lib/table/models/facet.mjs +0 -48
- package/esm2022/lib/table/models/pagination.mjs +0 -27
- package/esm2022/lib/table/models/table-column-config.mjs +0 -128
- package/esm2022/lib/table/models/table-column.mjs +0 -270
- package/esm2022/lib/table/models/table-config.mjs +0 -41
- package/esm2022/lib/table/models/table-definition.mjs +0 -110
- package/esm2022/lib/table/models/table-query-config.mjs +0 -26
- package/esm2022/lib/table/paginator-intl.mjs +0 -41
- package/esm2022/lib/table/public_api.mjs +0 -2
- package/esm2022/lib/table/table.data-source.mjs +0 -326
- package/esm2022/lib/table/table.module.mjs +0 -165
- package/esm2022/lib/table/table.static-data-source.mjs +0 -198
- package/esm2022/messaia-cdk.mjs +0 -5
- package/esm2022/public_api.mjs +0 -19
- package/lib/common/styles/_elevation.scss +0 -147
- package/lib/common/styles/_rtl.scss +0 -28
- package/lib/common/styles/_styles.scss +0 -12
- package/lib/common/styles/_theme-functions.scss +0 -4
- package/lib/common/styles/_typography.scss +0 -76
- package/lib/common/styles/core/_content.scss +0 -42
- package/lib/common/styles/core/_divider.scss +0 -14
- package/lib/common/styles/core/_icons.scss +0 -27
- package/lib/common/styles/core/_list.scss +0 -8
- package/lib/common/styles/core/_toolbar.scss +0 -31
- package/lib/common/styles/core/_whiteframe.scss +0 -111
- package/lib/common/styles/m2/_theme-functions.scss +0 -21
- package/lib/common/styles/m3/_theme-functions.scss +0 -21
- package/lib/common/theming/_all-theme.scss +0 -27
- package/lib/common/typography/_all-typography.scss +0 -33
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { ARRAY_PROPERTY, OBJECT_PROPERTY, PROPERTY } from "../const";
|
|
2
|
-
import { defaultContainer } from '../core/default-container';
|
|
3
|
-
import { getInstance, instanceProvider } from "../util/instance-provider.function";
|
|
4
|
-
import { RegexValidator } from '../util/regex-validator';
|
|
5
|
-
import { SANITIZERS } from "../util/sanitizers";
|
|
6
|
-
/**
|
|
7
|
-
* Definition of BaseFormBuilder class
|
|
8
|
-
*/
|
|
9
|
-
export class BaseFormBuilder {
|
|
10
|
-
/**
|
|
11
|
-
* Creates a new instance.
|
|
12
|
-
* @returns The newly created instance.
|
|
13
|
-
*/
|
|
14
|
-
createInstance() {
|
|
15
|
-
/* Create a new empty object */
|
|
16
|
-
let instance = {};
|
|
17
|
-
/* Increment model count in default container */
|
|
18
|
-
defaultContainer.modelIncrementCount = defaultContainer.modelIncrementCount + 1;
|
|
19
|
-
/* Generate model name */
|
|
20
|
-
let modelName = `RxWebModel${defaultContainer.modelIncrementCount}`;
|
|
21
|
-
/* Dynamically create constructor function */
|
|
22
|
-
instance.constructor = Function(`"use strict";return(function ${modelName}(){ })`)();
|
|
23
|
-
/* Return the newly created instance */
|
|
24
|
-
return instance;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Creates and returns an instance of a class object.
|
|
28
|
-
*
|
|
29
|
-
* @param model The model or class for which the instance is created.
|
|
30
|
-
* @param formBuilderConfiguration The configuration for the form builder.
|
|
31
|
-
* @param classInstance An optional existing instance of the class.
|
|
32
|
-
* @returns An instance of the class object.
|
|
33
|
-
*/
|
|
34
|
-
createClassObject(model, formBuilderConfiguration, classInstance) {
|
|
35
|
-
/* Get the instance container from the default container */
|
|
36
|
-
let instanceContainer = defaultContainer.get(model);
|
|
37
|
-
/* Retrieve the auto instance configuration from the form builder configuration */
|
|
38
|
-
let autoInstanceConfig = formBuilderConfiguration ? formBuilderConfiguration.autoInstanceConfig : undefined;
|
|
39
|
-
/* Check if auto instance configuration is not provided */
|
|
40
|
-
if (!autoInstanceConfig) {
|
|
41
|
-
/* Return the existing class instance if it's provided and not a function, otherwise create a new instance */
|
|
42
|
-
return classInstance && typeof classInstance != "function" ? classInstance : getInstance(model, []);
|
|
43
|
-
}
|
|
44
|
-
/* If auto instance configuration is provided */
|
|
45
|
-
else {
|
|
46
|
-
/* Ensure classInstance is a new instance if not already provided */
|
|
47
|
-
classInstance = classInstance && typeof classInstance != "function" ? classInstance : getInstance(model, autoInstanceConfig.arguments || []);
|
|
48
|
-
/* Handle objectPropInstanceConfig */
|
|
49
|
-
if (autoInstanceConfig.objectPropInstanceConfig && autoInstanceConfig.objectPropInstanceConfig.length > 0) {
|
|
50
|
-
autoInstanceConfig.objectPropInstanceConfig.forEach(t => {
|
|
51
|
-
/* Find the object property in the instance container */
|
|
52
|
-
let objectProperty = instanceContainer.properties?.filter(property => property.name == t.propertyName && property.propertyType == OBJECT_PROPERTY)[0];
|
|
53
|
-
if (objectProperty) {
|
|
54
|
-
let data = classInstance[t.propertyName];
|
|
55
|
-
/* Create an instance for the object property */
|
|
56
|
-
classInstance[t.propertyName] = getInstance(objectProperty.entity, t.arguments || []);
|
|
57
|
-
if (data) {
|
|
58
|
-
/* Set the object value */
|
|
59
|
-
this.setObjectValue(data, classInstance[t.propertyName]);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
/* Handle arrayPropInstanceConfig */
|
|
65
|
-
if (autoInstanceConfig.arrayPropInstanceConfig && autoInstanceConfig.arrayPropInstanceConfig.length > 0) {
|
|
66
|
-
autoInstanceConfig.arrayPropInstanceConfig.forEach(t => {
|
|
67
|
-
/* Find the array property in the instance container */
|
|
68
|
-
let property = instanceContainer.properties?.filter(property => property.name == t.propertyName && property.propertyType == ARRAY_PROPERTY)[0];
|
|
69
|
-
if (property) {
|
|
70
|
-
let data = classInstance[t.propertyName];
|
|
71
|
-
classInstance[t.propertyName] = [];
|
|
72
|
-
for (var i = 0; i < t.rowItems; i++) {
|
|
73
|
-
/* Create an instance for each item in the array */
|
|
74
|
-
let instance = getInstance(property.entity, t.arguments || []);
|
|
75
|
-
if (data && data[i]) {
|
|
76
|
-
/* Set the object value for each item */
|
|
77
|
-
this.setObjectValue(data[i], instance);
|
|
78
|
-
}
|
|
79
|
-
classInstance[t.propertyName].push(instance);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/* Return the updated class instance */
|
|
85
|
-
return classInstance;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Updates the class instance object with values from the entity object based on the instance container properties.
|
|
90
|
-
*
|
|
91
|
-
* @param model The model or class for which the instance container is retrieved.
|
|
92
|
-
* @param entityObject The entity object containing the values to update.
|
|
93
|
-
* @param formBuilderConfiguration The configuration for the form builder.
|
|
94
|
-
* @returns The updated class instance object.
|
|
95
|
-
*/
|
|
96
|
-
updateObject(model, entityObject, formBuilderConfiguration) {
|
|
97
|
-
/* Get the instance container using the provided model */
|
|
98
|
-
let instanceContainer = instanceProvider(model);
|
|
99
|
-
/* Get a new instance of the model */
|
|
100
|
-
let classInstance = getInstance(model, []);
|
|
101
|
-
/* Check if instance container exists */
|
|
102
|
-
if (instanceContainer) {
|
|
103
|
-
/* Iterate through the properties in the instance container */
|
|
104
|
-
instanceContainer.properties?.forEach(t => {
|
|
105
|
-
/* Determine the entity type based on property type and configuration */
|
|
106
|
-
let entity = ((t.propertyType == OBJECT_PROPERTY || t.propertyType == ARRAY_PROPERTY) && t.entity) ? t.entity : (formBuilderConfiguration && formBuilderConfiguration.genericEntities) ? formBuilderConfiguration.genericEntities[t.name] : undefined;
|
|
107
|
-
if (!entity && t.entityProvider) {
|
|
108
|
-
entity = t.entityProvider.call(entityObject);
|
|
109
|
-
}
|
|
110
|
-
/* Switch based on the property type */
|
|
111
|
-
switch (t.propertyType) {
|
|
112
|
-
case PROPERTY:
|
|
113
|
-
/* Set the value for single property */
|
|
114
|
-
classInstance[t.name] = this.getValue(entityObject, t, formBuilderConfiguration);
|
|
115
|
-
break;
|
|
116
|
-
case OBJECT_PROPERTY:
|
|
117
|
-
/* Get the value for object property */
|
|
118
|
-
let objectValue = this.getValue(entityObject, t, formBuilderConfiguration);
|
|
119
|
-
if (objectValue) {
|
|
120
|
-
/* Recursively update the object property */
|
|
121
|
-
classInstance[t.name] = this.updateObject(entity, objectValue, formBuilderConfiguration);
|
|
122
|
-
}
|
|
123
|
-
break;
|
|
124
|
-
case ARRAY_PROPERTY:
|
|
125
|
-
/* Get the value for array property */
|
|
126
|
-
let arrayObjectValue = this.getValue(entityObject, t, formBuilderConfiguration);
|
|
127
|
-
if (arrayObjectValue && Array.isArray(arrayObjectValue)) {
|
|
128
|
-
classInstance[t.name] = [];
|
|
129
|
-
for (let row of arrayObjectValue) {
|
|
130
|
-
/* Recursively update each item in the array */
|
|
131
|
-
let instanceObject = this.updateObject(entity, row, formBuilderConfiguration);
|
|
132
|
-
classInstance[t.name].push(instanceObject);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
break;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/* Return the updated class instance object */
|
|
140
|
-
return classInstance;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Provides an instance based on the function and entity object.
|
|
144
|
-
* @param instanceFunc - The function to provide an instance from.
|
|
145
|
-
* @param entityObject - The entity object to use.
|
|
146
|
-
* @returns The provided instance container.
|
|
147
|
-
*/
|
|
148
|
-
instaceProvider(instanceFunc, entityObject) {
|
|
149
|
-
return instanceProvider(instanceFunc, entityObject);
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Gets the default value for the property.
|
|
153
|
-
* @param propertyInfo - Information about the property.
|
|
154
|
-
* @param value - The value to get the default for.
|
|
155
|
-
* @param formBuilderConfiguration - The configuration for the form builder.
|
|
156
|
-
* @returns The default value.
|
|
157
|
-
*/
|
|
158
|
-
getDefaultValue(propertyInfo, value, formBuilderConfiguration) {
|
|
159
|
-
let defaultValue = (formBuilderConfiguration &&
|
|
160
|
-
formBuilderConfiguration.propsConfig &&
|
|
161
|
-
formBuilderConfiguration.propsConfig[propertyInfo.name] &&
|
|
162
|
-
formBuilderConfiguration.propsConfig[propertyInfo.name].defaultValue &&
|
|
163
|
-
!RegexValidator.isNotBlank(value)) ? formBuilderConfiguration.propsConfig[propertyInfo.name].defaultValue :
|
|
164
|
-
(propertyInfo.defaultValue != undefined && !RegexValidator.isNotBlank(value)) ? propertyInfo.defaultValue : value;
|
|
165
|
-
return defaultValue;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Sanitizes the provided value based on the instance container and property name.
|
|
169
|
-
* @param instanceContainer - The container for the instance.
|
|
170
|
-
* @param propertyName - The name of the property.
|
|
171
|
-
* @param value - The value to sanitize.
|
|
172
|
-
* @param entityObject - The entity object.
|
|
173
|
-
* @param baseObject - The base object.
|
|
174
|
-
* @returns The sanitized value.
|
|
175
|
-
*/
|
|
176
|
-
sanitizeValue(instanceContainer, propertyName, value, entityObject, baseObject) {
|
|
177
|
-
/* If sanitizers are defined for the property and the property exists in the instanceContainer */
|
|
178
|
-
if (instanceContainer.sanitizers && instanceContainer.sanitizers[propertyName]) {
|
|
179
|
-
/* Iterate over each sanitizer defined for the property */
|
|
180
|
-
for (let sanitizer of instanceContainer.sanitizers[propertyName]) {
|
|
181
|
-
/* Apply the sanitizer to the value */
|
|
182
|
-
value = SANITIZERS[sanitizer.name](value, sanitizer.config);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/* If the property exists in the entityObject and its value has changed */
|
|
186
|
-
if (entityObject[propertyName] !== undefined && entityObject[propertyName] !== value) {
|
|
187
|
-
/* Update the property value in the entityObject */
|
|
188
|
-
entityObject[propertyName] = value;
|
|
189
|
-
}
|
|
190
|
-
/* If the property exists in the baseObject and its value has changed */
|
|
191
|
-
if (baseObject[propertyName] !== undefined && baseObject[propertyName] !== value) {
|
|
192
|
-
/* Update the property value in the baseObject */
|
|
193
|
-
baseObject[propertyName] = value;
|
|
194
|
-
}
|
|
195
|
-
/* Return the sanitized or unchanged value */
|
|
196
|
-
return value;
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Gets the value for the property.
|
|
200
|
-
* @param entityObject - The entity object.
|
|
201
|
-
* @param propertyInfo - Information about the property.
|
|
202
|
-
* @param formBuilderConfiguration - The configuration for the form builder.
|
|
203
|
-
* @returns The property value.
|
|
204
|
-
*/
|
|
205
|
-
getValue(entityObject, propertyInfo, formBuilderConfiguration) {
|
|
206
|
-
let propValue = (propertyInfo.dataPropertyName) ? entityObject[propertyInfo.dataPropertyName] : entityObject[propertyInfo.name];
|
|
207
|
-
return this.getDefaultValue(propertyInfo, propValue, formBuilderConfiguration);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Sets the value of the object.
|
|
211
|
-
* @param entityObject - The entity object.
|
|
212
|
-
* @param classInstance - The class instance to set the value on.
|
|
213
|
-
*/
|
|
214
|
-
setObjectValue(entityObject, classInstance) {
|
|
215
|
-
for (var column in entityObject) {
|
|
216
|
-
classInstance[column] = entityObject[column];
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvc2VydmljZXMvYmFzZS1mb3JtLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDeEI7OztPQUdHO0lBQ08sY0FBYztRQUNwQiwrQkFBK0I7UUFDL0IsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGdEQUFnRDtRQUNoRCxnQkFBZ0IsQ0FBQyxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFFaEYseUJBQXlCO1FBQ3pCLElBQUksU0FBUyxHQUFHLGFBQWEsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUVwRSw2Q0FBNkM7UUFDN0MsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsZ0NBQWdDLFNBQVMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUVyRix1Q0FBdUM7UUFDdkMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyxpQkFBaUIsQ0FBQyxLQUFVLEVBQUUsd0JBQWtELEVBQUUsYUFBbUI7UUFDM0csMkRBQTJEO1FBQzNELElBQUksaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBELGtGQUFrRjtRQUNsRixJQUFJLGtCQUFrQixHQUFtQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUU1SSwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEIsNkdBQTZHO1lBQzdHLE9BQU8sYUFBYSxJQUFJLE9BQU8sYUFBYSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFFRCxnREFBZ0Q7YUFDM0MsQ0FBQztZQUNGLG9FQUFvRTtZQUNwRSxhQUFhLEdBQUcsYUFBYSxJQUFJLE9BQU8sYUFBYSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUU3SSxxQ0FBcUM7WUFDckMsSUFBSSxrQkFBa0IsQ0FBQyx3QkFBd0IsSUFBSSxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDcEQsd0RBQXdEO29CQUN4RCxJQUFJLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxZQUFZLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RKLElBQUksY0FBYyxFQUFFLENBQUM7d0JBQ2pCLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBRXpDLGdEQUFnRDt3QkFDaEQsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUN0RixJQUFJLElBQUksRUFBRSxDQUFDOzRCQUNQLDBCQUEwQjs0QkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO3dCQUM3RCxDQUFDO29CQUNMLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBRUQsb0NBQW9DO1lBQ3BDLElBQUksa0JBQWtCLENBQUMsdUJBQXVCLElBQUksa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0RyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ25ELHVEQUF1RDtvQkFDdkQsSUFBSSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsWUFBWSxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvSSxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNYLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ3pDLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDOzRCQUNsQyxtREFBbUQ7NEJBQ25ELElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7NEJBQy9ELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dDQUNsQix3Q0FBd0M7Z0NBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDOzRCQUMzQyxDQUFDOzRCQUVELGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNqRCxDQUFDO29CQUNMLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBRUQsdUNBQXVDO1lBQ3ZDLE9BQU8sYUFBYSxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNPLFlBQVksQ0FBQyxLQUFVLEVBQUUsWUFBaUIsRUFBRSx3QkFBa0Q7UUFDcEcseURBQXlEO1FBQ3pELElBQUksaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEQscUNBQXFDO1FBQ3JDLElBQUksYUFBYSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFM0Msd0NBQXdDO1FBQ3hDLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQiw4REFBOEQ7WUFDOUQsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEMsd0VBQXdFO2dCQUN4RSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxlQUFlLElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLElBQUksd0JBQXdCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDdFAsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQzlCLE1BQU0sR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakQsQ0FBQztnQkFFRCx1Q0FBdUM7Z0JBQ3ZDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNyQixLQUFLLFFBQVE7d0JBQ1QsdUNBQXVDO3dCQUN2QyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO3dCQUNqRixNQUFNO29CQUVWLEtBQUssZUFBZTt3QkFDaEIsdUNBQXVDO3dCQUN2QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsd0JBQXdCLENBQUMsQ0FBQzt3QkFDM0UsSUFBSSxXQUFXLEVBQUUsQ0FBQzs0QkFDZCw0Q0FBNEM7NEJBQzVDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixDQUFDLENBQUM7d0JBQzdGLENBQUM7d0JBQ0QsTUFBTTtvQkFFVixLQUFLLGNBQWM7d0JBQ2Ysc0NBQXNDO3dCQUN0QyxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO3dCQUNoRixJQUFJLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDOzRCQUN0RCxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzs0QkFDM0IsS0FBSyxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dDQUMvQiwrQ0FBK0M7Z0NBQy9DLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO2dDQUM5RSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzs0QkFDL0MsQ0FBQzt3QkFDTCxDQUFDO3dCQUNELE1BQU07Z0JBQ2QsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxlQUFlLENBQUMsWUFBaUIsRUFBRSxZQUFpQjtRQUMxRCxPQUFPLGdCQUFnQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sZUFBZSxDQUFDLFlBQTBCLEVBQUUsS0FBVSxFQUFFLHdCQUFrRDtRQUNoSCxJQUFJLFlBQVksR0FBRyxDQUFDLHdCQUF3QjtZQUN4Qyx3QkFBd0IsQ0FBQyxXQUFXO1lBQ3BDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3ZELHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTtZQUNwRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzRyxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksU0FBUyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFckgsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ08sYUFBYSxDQUFDLGlCQUFvQyxFQUFFLFlBQW9CLEVBQUUsS0FBVSxFQUFFLFlBQWlCLEVBQUUsVUFBZTtRQUM5SCxpR0FBaUc7UUFDakcsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDN0UsMERBQTBEO1lBQzFELEtBQUssSUFBSSxTQUFTLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELHNDQUFzQztnQkFDdEMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0wsQ0FBQztRQUVELDBFQUEwRTtRQUMxRSxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ25GLG1EQUFtRDtZQUNuRCxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCx3RUFBd0U7UUFDeEUsSUFBSSxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMvRSxpREFBaUQ7WUFDakQsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNyQyxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxRQUFRLENBQUMsWUFBb0MsRUFBRSxZQUEwQixFQUFFLHdCQUFrRDtRQUNqSSxJQUFJLFNBQVMsR0FBRyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGNBQWMsQ0FBQyxZQUFvQyxFQUFFLGFBQWtCO1FBQzNFLEtBQUssSUFBSSxNQUFNLElBQUksWUFBWSxFQUFFLENBQUM7WUFDOUIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVJSQVlfUFJPUEVSVFksIE9CSkVDVF9QUk9QRVJUWSwgUFJPUEVSVFkgfSBmcm9tIFwiLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gJy4uL2NvcmUvZGVmYXVsdC1jb250YWluZXInO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1idWlsZGVyLWNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnN0YW5jZUNvbnRhaW5lciB9IGZyb20gXCIuLi9tb2RlbHMvaW5zdGFuY2UtY29udGFpbmVyXCI7XHJcbmltcG9ydCB7IEF1dG9JbnN0YW5jZUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9pbnRlcmZhY2UvYXV0by1pbnN0YW5jZS1jb25maWcuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcIi4uL21vZGVscy9wcm9wZXJ0eS1pbmZvXCI7XHJcbmltcG9ydCB7IGdldEluc3RhbmNlLCBpbnN0YW5jZVByb3ZpZGVyIH0gZnJvbSBcIi4uL3V0aWwvaW5zdGFuY2UtcHJvdmlkZXIuZnVuY3Rpb25cIjtcclxuaW1wb3J0IHsgUmVnZXhWYWxpZGF0b3IgfSBmcm9tICcuLi91dGlsL3JlZ2V4LXZhbGlkYXRvcic7XHJcbmltcG9ydCB7IFNBTklUSVpFUlMgfSBmcm9tIFwiLi4vdXRpbC9zYW5pdGl6ZXJzXCI7XHJcblxyXG4vKipcclxuICogRGVmaW5pdGlvbiBvZiBCYXNlRm9ybUJ1aWxkZXIgY2xhc3NcclxuICovXHJcbmV4cG9ydCBjbGFzcyBCYXNlRm9ybUJ1aWxkZXIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlLlxyXG4gICAgICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICAvKiBDcmVhdGUgYSBuZXcgZW1wdHkgb2JqZWN0ICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlID0ge307XHJcblxyXG4gICAgICAgIC8qIEluY3JlbWVudCBtb2RlbCBjb3VudCBpbiBkZWZhdWx0IGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGRlZmF1bHRDb250YWluZXIubW9kZWxJbmNyZW1lbnRDb3VudCA9IGRlZmF1bHRDb250YWluZXIubW9kZWxJbmNyZW1lbnRDb3VudCArIDE7XHJcblxyXG4gICAgICAgIC8qIEdlbmVyYXRlIG1vZGVsIG5hbWUgKi9cclxuICAgICAgICBsZXQgbW9kZWxOYW1lID0gYFJ4V2ViTW9kZWwke2RlZmF1bHRDb250YWluZXIubW9kZWxJbmNyZW1lbnRDb3VudH1gO1xyXG5cclxuICAgICAgICAvKiBEeW5hbWljYWxseSBjcmVhdGUgY29uc3RydWN0b3IgZnVuY3Rpb24gKi9cclxuICAgICAgICBpbnN0YW5jZS5jb25zdHJ1Y3RvciA9IEZ1bmN0aW9uKGBcInVzZSBzdHJpY3RcIjtyZXR1cm4oZnVuY3Rpb24gJHttb2RlbE5hbWV9KCl7IH0pYCkoKTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlICovXHJcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIG9iamVjdC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG1vZGVsIFRoZSBtb2RlbCBvciBjbGFzcyBmb3Igd2hpY2ggdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQuXHJcbiAgICAgKiBAcGFyYW0gZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZm9ybSBidWlsZGVyLlxyXG4gICAgICogQHBhcmFtIGNsYXNzSW5zdGFuY2UgQW4gb3B0aW9uYWwgZXhpc3RpbmcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLlxyXG4gICAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUNsYXNzT2JqZWN0KG1vZGVsOiBhbnksIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbjogRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLCBjbGFzc0luc3RhbmNlPzogYW55KTogYW55IHtcclxuICAgICAgICAvKiBHZXQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBmcm9tIHRoZSBkZWZhdWx0IGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lciA9IGRlZmF1bHRDb250YWluZXIuZ2V0KG1vZGVsKTtcclxuXHJcbiAgICAgICAgLyogUmV0cmlldmUgdGhlIGF1dG8gaW5zdGFuY2UgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBmb3JtIGJ1aWxkZXIgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgIGxldCBhdXRvSW5zdGFuY2VDb25maWc6IEF1dG9JbnN0YW5jZUNvbmZpZyB8IHVuZGVmaW5lZCA9IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiA/IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5hdXRvSW5zdGFuY2VDb25maWcgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIGF1dG8gaW5zdGFuY2UgY29uZmlndXJhdGlvbiBpcyBub3QgcHJvdmlkZWQgKi9cclxuICAgICAgICBpZiAoIWF1dG9JbnN0YW5jZUNvbmZpZykge1xyXG4gICAgICAgICAgICAvKiBSZXR1cm4gdGhlIGV4aXN0aW5nIGNsYXNzIGluc3RhbmNlIGlmIGl0J3MgcHJvdmlkZWQgYW5kIG5vdCBhIGZ1bmN0aW9uLCBvdGhlcndpc2UgY3JlYXRlIGEgbmV3IGluc3RhbmNlICovXHJcbiAgICAgICAgICAgIHJldHVybiBjbGFzc0luc3RhbmNlICYmIHR5cGVvZiBjbGFzc0luc3RhbmNlICE9IFwiZnVuY3Rpb25cIiA/IGNsYXNzSW5zdGFuY2UgOiBnZXRJbnN0YW5jZShtb2RlbCwgW10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogSWYgYXV0byBpbnN0YW5jZSBjb25maWd1cmF0aW9uIGlzIHByb3ZpZGVkICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8qIEVuc3VyZSBjbGFzc0luc3RhbmNlIGlzIGEgbmV3IGluc3RhbmNlIGlmIG5vdCBhbHJlYWR5IHByb3ZpZGVkICovXHJcbiAgICAgICAgICAgIGNsYXNzSW5zdGFuY2UgPSBjbGFzc0luc3RhbmNlICYmIHR5cGVvZiBjbGFzc0luc3RhbmNlICE9IFwiZnVuY3Rpb25cIiA/IGNsYXNzSW5zdGFuY2UgOiBnZXRJbnN0YW5jZShtb2RlbCwgYXV0b0luc3RhbmNlQ29uZmlnLmFyZ3VtZW50cyB8fCBbXSk7XHJcblxyXG4gICAgICAgICAgICAvKiBIYW5kbGUgb2JqZWN0UHJvcEluc3RhbmNlQ29uZmlnICovXHJcbiAgICAgICAgICAgIGlmIChhdXRvSW5zdGFuY2VDb25maWcub2JqZWN0UHJvcEluc3RhbmNlQ29uZmlnICYmIGF1dG9JbnN0YW5jZUNvbmZpZy5vYmplY3RQcm9wSW5zdGFuY2VDb25maWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYXV0b0luc3RhbmNlQ29uZmlnLm9iamVjdFByb3BJbnN0YW5jZUNvbmZpZy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEZpbmQgdGhlIG9iamVjdCBwcm9wZXJ0eSBpbiB0aGUgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9iamVjdFByb3BlcnR5ID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcz8uZmlsdGVyKHByb3BlcnR5ID0+IHByb3BlcnR5Lm5hbWUgPT0gdC5wcm9wZXJ0eU5hbWUgJiYgcHJvcGVydHkucHJvcGVydHlUeXBlID09IE9CSkVDVF9QUk9QRVJUWSlbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gY2xhc3NJbnN0YW5jZVt0LnByb3BlcnR5TmFtZV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBDcmVhdGUgYW4gaW5zdGFuY2UgZm9yIHRoZSBvYmplY3QgcHJvcGVydHkgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NJbnN0YW5jZVt0LnByb3BlcnR5TmFtZV0gPSBnZXRJbnN0YW5jZShvYmplY3RQcm9wZXJ0eS5lbnRpdHksIHQuYXJndW1lbnRzIHx8IFtdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldCB0aGUgb2JqZWN0IHZhbHVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE9iamVjdFZhbHVlKGRhdGEsIGNsYXNzSW5zdGFuY2VbdC5wcm9wZXJ0eU5hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBIYW5kbGUgYXJyYXlQcm9wSW5zdGFuY2VDb25maWcgKi9cclxuICAgICAgICAgICAgaWYgKGF1dG9JbnN0YW5jZUNvbmZpZy5hcnJheVByb3BJbnN0YW5jZUNvbmZpZyAmJiBhdXRvSW5zdGFuY2VDb25maWcuYXJyYXlQcm9wSW5zdGFuY2VDb25maWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYXV0b0luc3RhbmNlQ29uZmlnLmFycmF5UHJvcEluc3RhbmNlQ29uZmlnLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogRmluZCB0aGUgYXJyYXkgcHJvcGVydHkgaW4gdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXM/LmZpbHRlcihwcm9wZXJ0eSA9PiBwcm9wZXJ0eS5uYW1lID09IHQucHJvcGVydHlOYW1lICYmIHByb3BlcnR5LnByb3BlcnR5VHlwZSA9PSBBUlJBWV9QUk9QRVJUWSlbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gY2xhc3NJbnN0YW5jZVt0LnByb3BlcnR5TmFtZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzSW5zdGFuY2VbdC5wcm9wZXJ0eU5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5yb3dJdGVtczsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDcmVhdGUgYW4gaW5zdGFuY2UgZm9yIGVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnN0YW5jZSA9IGdldEluc3RhbmNlKHByb3BlcnR5LmVudGl0eSwgdC5hcmd1bWVudHMgfHwgW10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVtpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldCB0aGUgb2JqZWN0IHZhbHVlIGZvciBlYWNoIGl0ZW0gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE9iamVjdFZhbHVlKGRhdGFbaV0sIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0luc3RhbmNlW3QucHJvcGVydHlOYW1lXS5wdXNoKGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBSZXR1cm4gdGhlIHVwZGF0ZWQgY2xhc3MgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgcmV0dXJuIGNsYXNzSW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB0aGUgY2xhc3MgaW5zdGFuY2Ugb2JqZWN0IHdpdGggdmFsdWVzIGZyb20gdGhlIGVudGl0eSBvYmplY3QgYmFzZWQgb24gdGhlIGluc3RhbmNlIGNvbnRhaW5lciBwcm9wZXJ0aWVzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIG9yIGNsYXNzIGZvciB3aGljaCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGlzIHJldHJpZXZlZC5cclxuICAgICAqIEBwYXJhbSBlbnRpdHlPYmplY3QgVGhlIGVudGl0eSBvYmplY3QgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIHVwZGF0ZS5cclxuICAgICAqIEBwYXJhbSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBmb3JtIGJ1aWxkZXIuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBjbGFzcyBpbnN0YW5jZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCB1cGRhdGVPYmplY3QobW9kZWw6IGFueSwgZW50aXR5T2JqZWN0OiBhbnksIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbjogRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKTogYW55IHtcclxuICAgICAgICAvKiBHZXQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciB1c2luZyB0aGUgcHJvdmlkZWQgbW9kZWwgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2VDb250YWluZXIgPSBpbnN0YW5jZVByb3ZpZGVyKG1vZGVsKTtcclxuXHJcbiAgICAgICAgLyogR2V0IGEgbmV3IGluc3RhbmNlIG9mIHRoZSBtb2RlbCAqL1xyXG4gICAgICAgIGxldCBjbGFzc0luc3RhbmNlID0gZ2V0SW5zdGFuY2UobW9kZWwsIFtdKTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgaW5zdGFuY2UgY29udGFpbmVyIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChpbnN0YW5jZUNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIHByb3BlcnRpZXMgaW4gdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgICAgICBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzPy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgLyogRGV0ZXJtaW5lIHRoZSBlbnRpdHkgdHlwZSBiYXNlZCBvbiBwcm9wZXJ0eSB0eXBlIGFuZCBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBsZXQgZW50aXR5ID0gKCh0LnByb3BlcnR5VHlwZSA9PSBPQkpFQ1RfUFJPUEVSVFkgfHwgdC5wcm9wZXJ0eVR5cGUgPT0gQVJSQVlfUFJPUEVSVFkpICYmIHQuZW50aXR5KSA/IHQuZW50aXR5IDogKGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAmJiBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24uZ2VuZXJpY0VudGl0aWVzKSA/IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5nZW5lcmljRW50aXRpZXNbdC5uYW1lXSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGlmICghZW50aXR5ICYmIHQuZW50aXR5UHJvdmlkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHkgPSB0LmVudGl0eVByb3ZpZGVyLmNhbGwoZW50aXR5T2JqZWN0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBTd2l0Y2ggYmFzZWQgb24gdGhlIHByb3BlcnR5IHR5cGUgKi9cclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodC5wcm9wZXJ0eVR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFBST1BFUlRZOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBTZXQgdGhlIHZhbHVlIGZvciBzaW5nbGUgcHJvcGVydHkgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NJbnN0YW5jZVt0Lm5hbWVdID0gdGhpcy5nZXRWYWx1ZShlbnRpdHlPYmplY3QsIHQsIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9QUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogR2V0IHRoZSB2YWx1ZSBmb3Igb2JqZWN0IHByb3BlcnR5ICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvYmplY3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZW50aXR5T2JqZWN0LCB0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlY3Vyc2l2ZWx5IHVwZGF0ZSB0aGUgb2JqZWN0IHByb3BlcnR5ICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0luc3RhbmNlW3QubmFtZV0gPSB0aGlzLnVwZGF0ZU9iamVjdChlbnRpdHksIG9iamVjdFZhbHVlLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEFSUkFZX1BST1BFUlRZOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBHZXQgdGhlIHZhbHVlIGZvciBhcnJheSBwcm9wZXJ0eSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXJyYXlPYmplY3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZW50aXR5T2JqZWN0LCB0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPYmplY3RWYWx1ZSAmJiBBcnJheS5pc0FycmF5KGFycmF5T2JqZWN0VmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0luc3RhbmNlW3QubmFtZV0gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBhcnJheU9iamVjdFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVjdXJzaXZlbHkgdXBkYXRlIGVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5zdGFuY2VPYmplY3QgPSB0aGlzLnVwZGF0ZU9iamVjdChlbnRpdHksIHJvdywgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0luc3RhbmNlW3QubmFtZV0ucHVzaChpbnN0YW5jZU9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSB1cGRhdGVkIGNsYXNzIGluc3RhbmNlIG9iamVjdCAqL1xyXG4gICAgICAgIHJldHVybiBjbGFzc0luc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvdmlkZXMgYW4gaW5zdGFuY2UgYmFzZWQgb24gdGhlIGZ1bmN0aW9uIGFuZCBlbnRpdHkgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyAtIFRoZSBmdW5jdGlvbiB0byBwcm92aWRlIGFuIGluc3RhbmNlIGZyb20uXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5T2JqZWN0IC0gVGhlIGVudGl0eSBvYmplY3QgdG8gdXNlLlxyXG4gICAgICogQHJldHVybnMgVGhlIHByb3ZpZGVkIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGluc3RhY2VQcm92aWRlcihpbnN0YW5jZUZ1bmM6IGFueSwgZW50aXR5T2JqZWN0OiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlUHJvdmlkZXIoaW5zdGFuY2VGdW5jLCBlbnRpdHlPYmplY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyAtIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9wZXJ0eS5cclxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBnZXQgdGhlIGRlZmF1bHQgZm9yLlxyXG4gICAgICogQHBhcmFtIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZm9ybSBidWlsZGVyLlxyXG4gICAgICogQHJldHVybnMgVGhlIGRlZmF1bHQgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXREZWZhdWx0VmFsdWUocHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8sIHZhbHVlOiBhbnksIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbjogRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IChmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gJiZcclxuICAgICAgICAgICAgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLnByb3BzQ29uZmlnICYmXHJcbiAgICAgICAgICAgIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5wcm9wc0NvbmZpZ1twcm9wZXJ0eUluZm8ubmFtZV0gJiZcclxuICAgICAgICAgICAgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLnByb3BzQ29uZmlnW3Byb3BlcnR5SW5mby5uYW1lXS5kZWZhdWx0VmFsdWUgJiZcclxuICAgICAgICAgICAgIVJlZ2V4VmFsaWRhdG9yLmlzTm90QmxhbmsodmFsdWUpKSA/IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5wcm9wc0NvbmZpZ1twcm9wZXJ0eUluZm8ubmFtZV0uZGVmYXVsdFZhbHVlIDpcclxuICAgICAgICAgICAgKHByb3BlcnR5SW5mby5kZWZhdWx0VmFsdWUgIT0gdW5kZWZpbmVkICYmICFSZWdleFZhbGlkYXRvci5pc05vdEJsYW5rKHZhbHVlKSkgPyBwcm9wZXJ0eUluZm8uZGVmYXVsdFZhbHVlIDogdmFsdWVcclxuXHJcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNhbml0aXplcyB0aGUgcHJvdmlkZWQgdmFsdWUgYmFzZWQgb24gdGhlIGluc3RhbmNlIGNvbnRhaW5lciBhbmQgcHJvcGVydHkgbmFtZS5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZUNvbnRhaW5lciAtIFRoZSBjb250YWluZXIgZm9yIHRoZSBpbnN0YW5jZS5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2FuaXRpemUuXHJcbiAgICAgKiBAcGFyYW0gZW50aXR5T2JqZWN0IC0gVGhlIGVudGl0eSBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0gYmFzZU9iamVjdCAtIFRoZSBiYXNlIG9iamVjdC5cclxuICAgICAqIEByZXR1cm5zIFRoZSBzYW5pdGl6ZWQgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzYW5pdGl6ZVZhbHVlKGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGVudGl0eU9iamVjdDogYW55LCBiYXNlT2JqZWN0OiBhbnkpIHtcclxuICAgICAgICAvKiBJZiBzYW5pdGl6ZXJzIGFyZSBkZWZpbmVkIGZvciB0aGUgcHJvcGVydHkgYW5kIHRoZSBwcm9wZXJ0eSBleGlzdHMgaW4gdGhlIGluc3RhbmNlQ29udGFpbmVyICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyLnNhbml0aXplcnMgJiYgaW5zdGFuY2VDb250YWluZXIuc2FuaXRpemVyc1twcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgIC8qIEl0ZXJhdGUgb3ZlciBlYWNoIHNhbml0aXplciBkZWZpbmVkIGZvciB0aGUgcHJvcGVydHkgKi9cclxuICAgICAgICAgICAgZm9yIChsZXQgc2FuaXRpemVyIG9mIGluc3RhbmNlQ29udGFpbmVyLnNhbml0aXplcnNbcHJvcGVydHlOYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgdGhlIHNhbml0aXplciB0byB0aGUgdmFsdWUgKi9cclxuICAgICAgICAgICAgICAgIHZhbHVlID0gU0FOSVRJWkVSU1tzYW5pdGl6ZXIubmFtZV0odmFsdWUsIHNhbml0aXplci5jb25maWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBJZiB0aGUgcHJvcGVydHkgZXhpc3RzIGluIHRoZSBlbnRpdHlPYmplY3QgYW5kIGl0cyB2YWx1ZSBoYXMgY2hhbmdlZCAqL1xyXG4gICAgICAgIGlmIChlbnRpdHlPYmplY3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkICYmIGVudGl0eU9iamVjdFtwcm9wZXJ0eU5hbWVdICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAvKiBVcGRhdGUgdGhlIHByb3BlcnR5IHZhbHVlIGluIHRoZSBlbnRpdHlPYmplY3QgKi9cclxuICAgICAgICAgICAgZW50aXR5T2JqZWN0W3Byb3BlcnR5TmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBleGlzdHMgaW4gdGhlIGJhc2VPYmplY3QgYW5kIGl0cyB2YWx1ZSBoYXMgY2hhbmdlZCAqL1xyXG4gICAgICAgIGlmIChiYXNlT2JqZWN0W3Byb3BlcnR5TmFtZV0gIT09IHVuZGVmaW5lZCAmJiBiYXNlT2JqZWN0W3Byb3BlcnR5TmFtZV0gIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgcHJvcGVydHkgdmFsdWUgaW4gdGhlIGJhc2VPYmplY3QgKi9cclxuICAgICAgICAgICAgYmFzZU9iamVjdFtwcm9wZXJ0eU5hbWVdID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZXR1cm4gdGhlIHNhbml0aXplZCBvciB1bmNoYW5nZWQgdmFsdWUgKi9cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LlxyXG4gICAgICogQHBhcmFtIGVudGl0eU9iamVjdCAtIFRoZSBlbnRpdHkgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyAtIEluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9wZXJ0eS5cclxuICAgICAqIEBwYXJhbSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGZvcm0gYnVpbGRlci5cclxuICAgICAqIEByZXR1cm5zIFRoZSBwcm9wZXJ0eSB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZShlbnRpdHlPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb246IEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIGxldCBwcm9wVmFsdWUgPSAocHJvcGVydHlJbmZvLmRhdGFQcm9wZXJ0eU5hbWUpID8gZW50aXR5T2JqZWN0W3Byb3BlcnR5SW5mby5kYXRhUHJvcGVydHlOYW1lXSA6IGVudGl0eU9iamVjdFtwcm9wZXJ0eUluZm8ubmFtZV07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFZhbHVlKHByb3BlcnR5SW5mbywgcHJvcFZhbHVlLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIG9iamVjdC5cclxuICAgICAqIEBwYXJhbSBlbnRpdHlPYmplY3QgLSBUaGUgZW50aXR5IG9iamVjdC5cclxuICAgICAqIEBwYXJhbSBjbGFzc0luc3RhbmNlIC0gVGhlIGNsYXNzIGluc3RhbmNlIHRvIHNldCB0aGUgdmFsdWUgb24uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0T2JqZWN0VmFsdWUoZW50aXR5T2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjbGFzc0luc3RhbmNlOiBhbnkpIHtcclxuICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4gZW50aXR5T2JqZWN0KSB7XHJcbiAgICAgICAgICAgIGNsYXNzSW5zdGFuY2VbY29sdW1uXSA9IGVudGl0eU9iamVjdFtjb2x1bW5dO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
function isObjectType(value) {
|
|
2
|
-
return !(typeof value == "string" || typeof value === "number" || typeof value === "boolean" || value instanceof Date);
|
|
3
|
-
}
|
|
4
|
-
function isObject(value) {
|
|
5
|
-
return Object.prototype.toString.call(value) === '[object Object]';
|
|
6
|
-
}
|
|
7
|
-
export function clone(jsonObject) {
|
|
8
|
-
let jObject = {};
|
|
9
|
-
if (isObjectType(jsonObject)) {
|
|
10
|
-
for (var columnName in jsonObject) {
|
|
11
|
-
if ((columnName != "formGroup")) {
|
|
12
|
-
if (Array.isArray(jsonObject[columnName])) {
|
|
13
|
-
jObject[columnName] = [];
|
|
14
|
-
for (let row of jsonObject[columnName]) {
|
|
15
|
-
if (isObject(row)) {
|
|
16
|
-
jObject[columnName].push(clone(row));
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
jObject[columnName].push(row);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
else if (typeof jsonObject[columnName] == "object" && !(jsonObject[columnName] instanceof RegExp)) {
|
|
24
|
-
jObject[columnName] = clone(jsonObject[columnName]);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
jObject[columnName] = jsonObject[columnName];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return jObject;
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
return jsonObject;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export function merge(firstObject, secondObject) {
|
|
38
|
-
for (var columnName in secondObject) {
|
|
39
|
-
if (Array.isArray(secondObject[columnName])) {
|
|
40
|
-
if (!firstObject[columnName]) {
|
|
41
|
-
firstObject[columnName] = [];
|
|
42
|
-
}
|
|
43
|
-
for (let row of secondObject[columnName]) {
|
|
44
|
-
firstObject[columnName].push(clone(row));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (typeof firstObject[columnName] == "object" && !(firstObject[columnName] instanceof RegExp)) {
|
|
48
|
-
firstObject[columnName] = merge(firstObject[columnName], secondObject[columnName]);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
firstObject[columnName] = secondObject[columnName];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return firstObject;
|
|
55
|
-
}
|
|
56
|
-
export function isMatched(jsonObject, compareObject) {
|
|
57
|
-
let isModified = false;
|
|
58
|
-
for (var columnName in compareObject) {
|
|
59
|
-
if (Array.isArray(jsonObject[columnName])) {
|
|
60
|
-
for (var i = 0; i < jsonObject[columnName].length; i++) {
|
|
61
|
-
isModified = isMatched(jsonObject[columnName][i], compareObject[columnName][i]);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else if (typeof jsonObject[columnName] == "object" && !(jsonObject[columnName] instanceof RegExp)) {
|
|
65
|
-
isModified = isMatched(jsonObject[columnName], compareObject[columnName]);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
isModified = !(jsonObject[columnName] == compareObject[columnName]);
|
|
69
|
-
}
|
|
70
|
-
if (isModified) {
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return isModified;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvc2VydmljZXMvZW50aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxZQUFZLENBQUMsS0FBVTtJQUM1QixPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUM7QUFDM0gsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQVU7SUFDeEIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssaUJBQWlCLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsVUFBa0M7SUFDcEQsSUFBSSxPQUFPLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDM0IsS0FBSyxJQUFJLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUN6QixLQUFLLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO3dCQUNyQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNoQixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFH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Q0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzlFLENBQUM7YUFDSSxDQUFDO1lBQ0YsVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixNQUFNO1FBQ1YsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmZ1bmN0aW9uIGlzT2JqZWN0VHlwZSh2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gISh0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjbG9uZShqc29uT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICBsZXQgak9iamVjdDogYW55ID0ge307XHJcbiAgICBpZiAoaXNPYmplY3RUeXBlKGpzb25PYmplY3QpKSB7XHJcbiAgICAgICAgZm9yICh2YXIgY29sdW1uTmFtZSBpbiBqc29uT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIGlmICgoY29sdW1uTmFtZSAhPSBcImZvcm1Hcm91cFwiKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoanNvbk9iamVjdFtjb2x1bW5OYW1lXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIGpzb25PYmplY3RbY29sdW1uTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHJvdykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpPYmplY3RbY29sdW1uTmFtZV0ucHVzaChjbG9uZShyb3cpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqT2JqZWN0W2NvbHVtbk5hbWVdLnB1c2gocm93KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGpzb25PYmplY3RbY29sdW1uTmFtZV0gPT0gXCJvYmplY3RcIiAmJiAhKGpzb25PYmplY3RbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSZWdFeHApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IGNsb25lKGpzb25PYmplY3RbY29sdW1uTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgak9iamVjdFtjb2x1bW5OYW1lXSA9IGpzb25PYmplY3RbY29sdW1uTmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBqT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBqc29uT2JqZWN0O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoZmlyc3RPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIHNlY29uZE9iamVjdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xyXG4gICAgZm9yICh2YXIgY29sdW1uTmFtZSBpbiBzZWNvbmRPYmplY3QpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWNvbmRPYmplY3RbY29sdW1uTmFtZV0pKSB7XHJcbiAgICAgICAgICAgIGlmICghZmlyc3RPYmplY3RbY29sdW1uTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIGZpcnN0T2JqZWN0W2NvbHVtbk5hbWVdID0gW107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBzZWNvbmRPYmplY3RbY29sdW1uTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIGZpcnN0T2JqZWN0W2NvbHVtbk5hbWVdLnB1c2goY2xvbmUocm93KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaXJzdE9iamVjdFtjb2x1bW5OYW1lXSA9PSBcIm9iamVjdFwiICYmICEoZmlyc3RPYmplY3RbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSZWdFeHApKSB7XHJcbiAgICAgICAgICAgIGZpcnN0T2JqZWN0W2NvbHVtbk5hbWVdID0gbWVyZ2UoZmlyc3RPYmplY3RbY29sdW1uTmFtZV0sIHNlY29uZE9iamVjdFtjb2x1bW5OYW1lXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmaXJzdE9iamVjdFtjb2x1bW5OYW1lXSA9IHNlY29uZE9iamVjdFtjb2x1bW5OYW1lXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpcnN0T2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNNYXRjaGVkKGpzb25PYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNvbXBhcmVPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiBib29sZWFuIHtcclxuICAgIGxldCBpc01vZGlmaWVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBjb2x1bW5OYW1lIGluIGNvbXBhcmVPYmplY3QpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uT2JqZWN0W2NvbHVtbk5hbWVdKSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb25PYmplY3RbY29sdW1uTmFtZV0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlzTW9kaWZpZWQgPSBpc01hdGNoZWQoanNvbk9iamVjdFtjb2x1bW5OYW1lXVtpXSwgY29tcGFyZU9iamVjdFtjb2x1bW5OYW1lXVtpXSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGpzb25PYmplY3RbY29sdW1uTmFtZV0gPT0gXCJvYmplY3RcIiAmJiAhKGpzb25PYmplY3RbY29sdW1uTmFtZV0gaW5zdGFuY2VvZiBSZWdFeHApKSB7XHJcbiAgICAgICAgICAgIGlzTW9kaWZpZWQgPSBpc01hdGNoZWQoanNvbk9iamVjdFtjb2x1bW5OYW1lXSwgY29tcGFyZU9iamVjdFtjb2x1bW5OYW1lXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpc01vZGlmaWVkID0gIShqc29uT2JqZWN0W2NvbHVtbk5hbWVdID09IGNvbXBhcmVPYmplY3RbY29sdW1uTmFtZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNNb2RpZmllZCkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzTW9kaWZpZWQ7XHJcbn1cclxuIl19
|