@jigx/core-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -0
- package/README.md +87 -0
- package/dist/PACKAGE.d.ts +4 -0
- package/dist/PACKAGE.d.ts.map +1 -0
- package/dist/PACKAGE.js +5 -0
- package/dist/abstract/app-info.d.ts +8 -0
- package/dist/abstract/app-info.d.ts.map +1 -0
- package/dist/abstract/app-info.js +8 -0
- package/dist/abstract/app-name.d.ts +15 -0
- package/dist/abstract/app-name.d.ts.map +1 -0
- package/dist/abstract/app-name.js +28 -0
- package/dist/abstract/base-builder.d.ts +4 -0
- package/dist/abstract/base-builder.d.ts.map +1 -0
- package/dist/abstract/base-builder.js +3 -0
- package/dist/abstract/element-base-builder.d.ts +7 -0
- package/dist/abstract/element-base-builder.d.ts.map +1 -0
- package/dist/abstract/element-base-builder.js +11 -0
- package/dist/abstract/generic.d.ts +31 -0
- package/dist/abstract/generic.d.ts.map +1 -0
- package/dist/abstract/generic.js +2 -0
- package/dist/abstract/index.d.ts +12 -0
- package/dist/abstract/index.d.ts.map +1 -0
- package/dist/abstract/index.js +11 -0
- package/dist/abstract/register.d.ts +31 -0
- package/dist/abstract/register.d.ts.map +1 -0
- package/dist/abstract/register.js +48 -0
- package/dist/abstract/sdk.expression.d.ts +43 -0
- package/dist/abstract/sdk.expression.d.ts.map +1 -0
- package/dist/abstract/sdk.expression.js +175 -0
- package/dist/abstract/sdk.text.d.ts +23 -0
- package/dist/abstract/sdk.text.d.ts.map +1 -0
- package/dist/abstract/sdk.text.js +110 -0
- package/dist/abstract/sdk.types.d.ts +16 -0
- package/dist/abstract/sdk.types.d.ts.map +1 -0
- package/dist/abstract/sdk.types.js +88 -0
- package/dist/abstract/zod.strata.d.ts +17 -0
- package/dist/abstract/zod.strata.d.ts.map +1 -0
- package/dist/abstract/zod.strata.js +11 -0
- package/dist/abstract/zod.types.d.ts +1937 -0
- package/dist/abstract/zod.types.d.ts.map +1 -0
- package/dist/abstract/zod.types.js +848 -0
- package/dist/action/action-definition.builder.d.ts +16 -0
- package/dist/action/action-definition.builder.d.ts.map +1 -0
- package/dist/action/action-definition.builder.js +35 -0
- package/dist/action/action.descriptor.d.ts +8 -0
- package/dist/action/action.descriptor.d.ts.map +1 -0
- package/dist/action/action.descriptor.js +2 -0
- package/dist/action/index.d.ts +57 -0
- package/dist/action/index.d.ts.map +1 -0
- package/dist/action/index.js +48 -0
- package/dist/action/ja.abstract.d.ts +33 -0
- package/dist/action/ja.abstract.d.ts.map +1 -0
- package/dist/action/ja.abstract.js +58 -0
- package/dist/action/ja.action-definition.d.ts +11 -0
- package/dist/action/ja.action-definition.d.ts.map +1 -0
- package/dist/action/ja.action-definition.js +12 -0
- package/dist/action/ja.action-list.d.ts +9 -0
- package/dist/action/ja.action-list.d.ts.map +1 -0
- package/dist/action/ja.action-list.js +15 -0
- package/dist/action/ja.clear-queue.d.ts +9 -0
- package/dist/action/ja.clear-queue.d.ts.map +1 -0
- package/dist/action/ja.clear-queue.js +9 -0
- package/dist/action/ja.color.d.ts +3 -0
- package/dist/action/ja.color.d.ts.map +1 -0
- package/dist/action/ja.color.js +2 -0
- package/dist/action/ja.confirm.abstract.d.ts +16 -0
- package/dist/action/ja.confirm.abstract.d.ts.map +1 -0
- package/dist/action/ja.confirm.abstract.js +25 -0
- package/dist/action/ja.confirm.d.ts +23 -0
- package/dist/action/ja.confirm.d.ts.map +1 -0
- package/dist/action/ja.confirm.js +28 -0
- package/dist/action/ja.delete-queue-command.d.ts +9 -0
- package/dist/action/ja.delete-queue-command.d.ts.map +1 -0
- package/dist/action/ja.delete-queue-command.js +9 -0
- package/dist/action/ja.delete-sync-scope.d.ts +10 -0
- package/dist/action/ja.delete-sync-scope.d.ts.map +1 -0
- package/dist/action/ja.delete-sync-scope.js +14 -0
- package/dist/action/ja.delete-sync-status.d.ts +9 -0
- package/dist/action/ja.delete-sync-status.d.ts.map +1 -0
- package/dist/action/ja.delete-sync-status.js +9 -0
- package/dist/action/ja.evaluate.d.ts +12 -0
- package/dist/action/ja.evaluate.d.ts.map +1 -0
- package/dist/action/ja.evaluate.js +9 -0
- package/dist/action/ja.execute-action.d.ts +11 -0
- package/dist/action/ja.execute-action.d.ts.map +1 -0
- package/dist/action/ja.execute-action.js +15 -0
- package/dist/action/ja.execute-entities.d.ts +7 -0
- package/dist/action/ja.execute-entities.d.ts.map +1 -0
- package/dist/action/ja.execute-entities.js +8 -0
- package/dist/action/ja.execute-entity.abstract.d.ts +41 -0
- package/dist/action/ja.execute-entity.abstract.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.abstract.js +104 -0
- package/dist/action/ja.execute-entity.d.ts +6 -0
- package/dist/action/ja.execute-entity.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.dynamic-data.d.ts +6 -0
- package/dist/action/ja.execute-entity.dynamic-data.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.dynamic-data.js +2 -0
- package/dist/action/ja.execute-entity.generic.d.ts +11 -0
- package/dist/action/ja.execute-entity.generic.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.generic.js +2 -0
- package/dist/action/ja.execute-entity.js +8 -0
- package/dist/action/ja.execute-entity.sql.d.ts +12 -0
- package/dist/action/ja.execute-entity.sql.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.sql.js +2 -0
- package/dist/action/ja.execute-sql.abstract.d.ts +6 -0
- package/dist/action/ja.execute-sql.abstract.d.ts.map +1 -0
- package/dist/action/ja.execute-sql.abstract.js +2 -0
- package/dist/action/ja.execute-sql.d.ts +16 -0
- package/dist/action/ja.execute-sql.d.ts.map +1 -0
- package/dist/action/ja.execute-sql.js +64 -0
- package/dist/action/ja.find-replace.d.ts +12 -0
- package/dist/action/ja.find-replace.d.ts.map +1 -0
- package/dist/action/ja.find-replace.js +22 -0
- package/dist/action/ja.generate-file.d.ts +11 -0
- package/dist/action/ja.generate-file.d.ts.map +1 -0
- package/dist/action/ja.generate-file.js +19 -0
- package/dist/action/ja.generate-pdf.d.ts +10 -0
- package/dist/action/ja.generate-pdf.d.ts.map +1 -0
- package/dist/action/ja.generate-pdf.js +10 -0
- package/dist/action/ja.go-back.d.ts +9 -0
- package/dist/action/ja.go-back.d.ts.map +1 -0
- package/dist/action/ja.go-back.js +11 -0
- package/dist/action/ja.go-to.d.ts +18 -0
- package/dist/action/ja.go-to.d.ts.map +1 -0
- package/dist/action/ja.go-to.js +41 -0
- package/dist/action/ja.in-background.d.ts +95 -0
- package/dist/action/ja.in-background.d.ts.map +1 -0
- package/dist/action/ja.in-background.factory.d.ts +88 -0
- package/dist/action/ja.in-background.factory.d.ts.map +1 -0
- package/dist/action/ja.in-background.factory.js +98 -0
- package/dist/action/ja.in-background.js +247 -0
- package/dist/action/ja.info-modal.d.ts +37 -0
- package/dist/action/ja.info-modal.d.ts.map +1 -0
- package/dist/action/ja.info-modal.js +61 -0
- package/dist/action/ja.jig-actions.d.ts +16 -0
- package/dist/action/ja.jig-actions.d.ts.map +1 -0
- package/dist/action/ja.jig-actions.js +35 -0
- package/dist/action/ja.on-button.factory.d.ts +89 -0
- package/dist/action/ja.on-button.factory.d.ts.map +1 -0
- package/dist/action/ja.on-button.factory.js +86 -0
- package/dist/action/ja.open-app-settings.d.ts +6 -0
- package/dist/action/ja.open-app-settings.d.ts.map +1 -0
- package/dist/action/ja.open-app-settings.js +8 -0
- package/dist/action/ja.open-map.abstract.d.ts +6 -0
- package/dist/action/ja.open-map.abstract.d.ts.map +1 -0
- package/dist/action/ja.open-map.abstract.js +2 -0
- package/dist/action/ja.open-map.d.ts +11 -0
- package/dist/action/ja.open-map.d.ts.map +1 -0
- package/dist/action/ja.open-map.js +25 -0
- package/dist/action/ja.open-media-picker.abstract.d.ts +8 -0
- package/dist/action/ja.open-media-picker.abstract.d.ts.map +1 -0
- package/dist/action/ja.open-media-picker.abstract.js +2 -0
- package/dist/action/ja.open-media-picker.d.ts +18 -0
- package/dist/action/ja.open-media-picker.d.ts.map +1 -0
- package/dist/action/ja.open-media-picker.js +46 -0
- package/dist/action/ja.open-scanner.d.ts +14 -0
- package/dist/action/ja.open-scanner.d.ts.map +1 -0
- package/dist/action/ja.open-scanner.js +23 -0
- package/dist/action/ja.open-url.d.ts +10 -0
- package/dist/action/ja.open-url.d.ts.map +1 -0
- package/dist/action/ja.open-url.js +13 -0
- package/dist/action/ja.print.d.ts +10 -0
- package/dist/action/ja.print.d.ts.map +1 -0
- package/dist/action/ja.print.js +17 -0
- package/dist/action/ja.reset-application-state.d.ts +9 -0
- package/dist/action/ja.reset-application-state.d.ts.map +1 -0
- package/dist/action/ja.reset-application-state.js +12 -0
- package/dist/action/ja.reset-component-state.d.ts +9 -0
- package/dist/action/ja.reset-component-state.d.ts.map +1 -0
- package/dist/action/ja.reset-component-state.js +13 -0
- package/dist/action/ja.reset-screen-state.d.ts +9 -0
- package/dist/action/ja.reset-screen-state.d.ts.map +1 -0
- package/dist/action/ja.reset-screen-state.js +12 -0
- package/dist/action/ja.reset-state.d.ts +9 -0
- package/dist/action/ja.reset-state.d.ts.map +1 -0
- package/dist/action/ja.reset-state.js +13 -0
- package/dist/action/ja.retry-queue-command.d.ts +9 -0
- package/dist/action/ja.retry-queue-command.d.ts.map +1 -0
- package/dist/action/ja.retry-queue-command.js +9 -0
- package/dist/action/ja.sdk.d.ts +4 -0
- package/dist/action/ja.sdk.d.ts.map +1 -0
- package/dist/action/ja.sdk.js +2 -0
- package/dist/action/ja.set-active-tab.d.ts +13 -0
- package/dist/action/ja.set-active-tab.d.ts.map +1 -0
- package/dist/action/ja.set-active-tab.js +29 -0
- package/dist/action/ja.set-application-state.d.ts +9 -0
- package/dist/action/ja.set-application-state.d.ts.map +1 -0
- package/dist/action/ja.set-application-state.js +17 -0
- package/dist/action/ja.set-screen-state.d.ts +9 -0
- package/dist/action/ja.set-screen-state.d.ts.map +1 -0
- package/dist/action/ja.set-screen-state.js +12 -0
- package/dist/action/ja.share.d.ts +12 -0
- package/dist/action/ja.share.d.ts.map +1 -0
- package/dist/action/ja.share.js +23 -0
- package/dist/action/ja.show-alert.d.ts +33 -0
- package/dist/action/ja.show-alert.d.ts.map +1 -0
- package/dist/action/ja.show-alert.js +61 -0
- package/dist/action/ja.start-location-sharing.abstract.d.ts +6 -0
- package/dist/action/ja.start-location-sharing.abstract.d.ts.map +1 -0
- package/dist/action/ja.start-location-sharing.abstract.js +2 -0
- package/dist/action/ja.start-location-sharing.d.ts +18 -0
- package/dist/action/ja.start-location-sharing.d.ts.map +1 -0
- package/dist/action/ja.start-location-sharing.js +33 -0
- package/dist/action/ja.start-sync-scope.d.ts +9 -0
- package/dist/action/ja.start-sync-scope.d.ts.map +1 -0
- package/dist/action/ja.start-sync-scope.js +18 -0
- package/dist/action/ja.stop-location-sharing.d.ts +6 -0
- package/dist/action/ja.stop-location-sharing.d.ts.map +1 -0
- package/dist/action/ja.stop-location-sharing.js +8 -0
- package/dist/action/ja.submit-form.abstract.d.ts +11 -0
- package/dist/action/ja.submit-form.abstract.d.ts.map +1 -0
- package/dist/action/ja.submit-form.abstract.js +2 -0
- package/dist/action/ja.submit-form.d.ts +31 -0
- package/dist/action/ja.submit-form.d.ts.map +1 -0
- package/dist/action/ja.submit-form.js +124 -0
- package/dist/action/ja.swipeable-action.d.ts +19 -0
- package/dist/action/ja.swipeable-action.d.ts.map +1 -0
- package/dist/action/ja.swipeable-action.js +25 -0
- package/dist/action/ja.sync-entities.abstract.d.ts +25 -0
- package/dist/action/ja.sync-entities.abstract.d.ts.map +1 -0
- package/dist/action/ja.sync-entities.abstract.js +2 -0
- package/dist/action/ja.sync-entities.d.ts +32 -0
- package/dist/action/ja.sync-entities.d.ts.map +1 -0
- package/dist/action/ja.sync-entities.js +142 -0
- package/dist/action/ja.update-profile.d.ts +12 -0
- package/dist/action/ja.update-profile.d.ts.map +1 -0
- package/dist/action/ja.update-profile.js +20 -0
- package/dist/application/application.sdk.d.ts +84 -0
- package/dist/application/application.sdk.d.ts.map +1 -0
- package/dist/application/application.sdk.js +217 -0
- package/dist/application/application.tab.d.ts +20 -0
- package/dist/application/application.tab.d.ts.map +1 -0
- package/dist/application/application.tab.js +45 -0
- package/dist/application/context.sdk.d.ts +48 -0
- package/dist/application/context.sdk.d.ts.map +1 -0
- package/dist/application/context.sdk.js +116 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +4 -0
- package/dist/assets/example-extraction-cache.json +9 -0
- package/dist/assets/extracted-core-sdk-examples.yaml +44440 -0
- package/dist/assets/extracted-core-sdk-types.yaml +12100 -0
- package/dist/assets/stream-line-icons.csv +19281 -0
- package/dist/assets/type-extraction-cache.json +9 -0
- package/dist/builder/application-analyzer/application-analyzer.d.ts +42 -0
- package/dist/builder/application-analyzer/application-analyzer.d.ts.map +1 -0
- package/dist/builder/application-analyzer/application-analyzer.js +150 -0
- package/dist/builder/application-analyzer/create-application-analyzer.d.ts +17 -0
- package/dist/builder/application-analyzer/create-application-analyzer.d.ts.map +1 -0
- package/dist/builder/application-analyzer/create-application-analyzer.js +121 -0
- package/dist/builder/application-analyzer/index.d.ts +5 -0
- package/dist/builder/application-analyzer/index.d.ts.map +1 -0
- package/dist/builder/application-analyzer/index.js +5 -0
- package/dist/builder/application-analyzer/select-component-nodes.d.ts +7 -0
- package/dist/builder/application-analyzer/select-component-nodes.d.ts.map +1 -0
- package/dist/builder/application-analyzer/select-component-nodes.js +15 -0
- package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts +8 -0
- package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts.map +1 -0
- package/dist/builder/application-analyzer/select-datasource-node-by-id.js +20 -0
- package/dist/builder/application-analyzer/types.d.ts +60 -0
- package/dist/builder/application-analyzer/types.d.ts.map +1 -0
- package/dist/builder/application-analyzer/types.js +16 -0
- package/dist/builder/application-analyzer/utils.d.ts +3 -0
- package/dist/builder/application-analyzer/utils.d.ts.map +1 -0
- package/dist/builder/application-analyzer/utils.js +8 -0
- package/dist/builder/builder.d.ts +8 -0
- package/dist/builder/builder.d.ts.map +1 -0
- package/dist/builder/builder.js +54 -0
- package/dist/builder/index.d.ts +5 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +4 -0
- package/dist/builder/transform-summary.d.ts +3 -0
- package/dist/builder/transform-summary.d.ts.map +1 -0
- package/dist/builder/transform-summary.js +39 -0
- package/dist/builder/types.d.ts +8 -0
- package/dist/builder/types.d.ts.map +1 -0
- package/dist/builder/types.js +2 -0
- package/dist/builder/validate-datasource-ids.d.ts +17 -0
- package/dist/builder/validate-datasource-ids.d.ts.map +1 -0
- package/dist/builder/validate-datasource-ids.js +51 -0
- package/dist/component/common/index.d.ts +22 -0
- package/dist/component/common/index.d.ts.map +1 -0
- package/dist/component/common/index.js +16 -0
- package/dist/component/common/jc.avatar-field.types.d.ts +9 -0
- package/dist/component/common/jc.avatar-field.types.d.ts.map +1 -0
- package/dist/component/common/jc.avatar-field.types.js +11 -0
- package/dist/component/common/jc.chart.common.abstract.d.ts +85 -0
- package/dist/component/common/jc.chart.common.abstract.d.ts.map +1 -0
- package/dist/component/common/jc.chart.common.abstract.js +2 -0
- package/dist/component/common/jc.chart.common.builders.d.ts +37 -0
- package/dist/component/common/jc.chart.common.builders.d.ts.map +1 -0
- package/dist/component/common/jc.chart.common.builders.js +81 -0
- package/dist/component/common/jc.component.types.d.ts +101 -0
- package/dist/component/common/jc.component.types.d.ts.map +1 -0
- package/dist/component/common/jc.component.types.js +144 -0
- package/dist/component/common/jc.context.d.ts +7 -0
- package/dist/component/common/jc.context.d.ts.map +1 -0
- package/dist/component/common/jc.context.js +2 -0
- package/dist/component/common/jc.element.types.d.ts +14 -0
- package/dist/component/common/jc.element.types.d.ts.map +1 -0
- package/dist/component/common/jc.element.types.js +13 -0
- package/dist/component/common/jc.field-base.builder.d.ts +21 -0
- package/dist/component/common/jc.field-base.builder.d.ts.map +1 -0
- package/dist/component/common/jc.field-base.builder.js +101 -0
- package/dist/component/common/jc.field-base.types.d.ts +28 -0
- package/dist/component/common/jc.field-base.types.d.ts.map +1 -0
- package/dist/component/common/jc.field-base.types.js +2 -0
- package/dist/component/common/jc.left-right.element.avatar.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.avatar.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.avatar.js +18 -0
- package/dist/component/common/jc.left-right.element.badge.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.badge.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.badge.js +17 -0
- package/dist/component/common/jc.left-right.element.button.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.button.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.button.js +14 -0
- package/dist/component/common/jc.left-right.element.checkbox.d.ts +13 -0
- package/dist/component/common/jc.left-right.element.checkbox.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.checkbox.js +21 -0
- package/dist/component/common/jc.left-right.element.d.ts +31 -0
- package/dist/component/common/jc.left-right.element.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.icon.d.ts +18 -0
- package/dist/component/common/jc.left-right.element.icon.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.icon.js +32 -0
- package/dist/component/common/jc.left-right.element.image.d.ts +16 -0
- package/dist/component/common/jc.left-right.element.image.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.image.js +29 -0
- package/dist/component/common/jc.left-right.element.js +2 -0
- package/dist/component/common/jc.left-right.element.progress.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.progress.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.progress.js +17 -0
- package/dist/component/common/jc.left-right.element.switch.d.ts +13 -0
- package/dist/component/common/jc.left-right.element.switch.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.switch.js +21 -0
- package/dist/component/common/jc.left-right.element.value.d.ts +10 -0
- package/dist/component/common/jc.left-right.element.value.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.value.js +12 -0
- package/dist/component/common/jc.picker-field-options.types.d.ts +13 -0
- package/dist/component/common/jc.picker-field-options.types.d.ts.map +1 -0
- package/dist/component/common/jc.picker-field-options.types.js +2 -0
- package/dist/component/common/jc.text.types.d.ts +6 -0
- package/dist/component/common/jc.text.types.d.ts.map +1 -0
- package/dist/component/common/jc.text.types.js +2 -0
- package/dist/component/common/jc.validation.d.ts +9 -0
- package/dist/component/common/jc.validation.d.ts.map +1 -0
- package/dist/component/common/jc.validation.js +48 -0
- package/dist/component/index.d.ts +86 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/component/index.js +83 -0
- package/dist/component/jc.abstract.d.ts +32 -0
- package/dist/component/jc.abstract.d.ts.map +1 -0
- package/dist/component/jc.abstract.factory.d.ts +488 -0
- package/dist/component/jc.abstract.factory.d.ts.map +1 -0
- package/dist/component/jc.abstract.factory.js +757 -0
- package/dist/component/jc.abstract.js +53 -0
- package/dist/component/jc.abstract.utils.d.ts +3 -0
- package/dist/component/jc.abstract.utils.d.ts.map +1 -0
- package/dist/component/jc.abstract.utils.js +26 -0
- package/dist/component/jc.amount-control.d.ts +16 -0
- package/dist/component/jc.amount-control.d.ts.map +1 -0
- package/dist/component/jc.amount-control.js +36 -0
- package/dist/component/jc.avatar-field.d.ts +11 -0
- package/dist/component/jc.avatar-field.d.ts.map +1 -0
- package/dist/component/jc.avatar-field.js +27 -0
- package/dist/component/jc.avatar.d.ts +14 -0
- package/dist/component/jc.avatar.d.ts.map +1 -0
- package/dist/component/jc.avatar.js +26 -0
- package/dist/component/jc.banner.d.ts +81 -0
- package/dist/component/jc.banner.d.ts.map +1 -0
- package/dist/component/jc.banner.js +49 -0
- package/dist/component/jc.bar-chart.d.ts +23 -0
- package/dist/component/jc.bar-chart.d.ts.map +1 -0
- package/dist/component/jc.bar-chart.js +45 -0
- package/dist/component/jc.button.d.ts +20 -0
- package/dist/component/jc.button.d.ts.map +1 -0
- package/dist/component/jc.button.js +39 -0
- package/dist/component/jc.card.abstract.d.ts +14 -0
- package/dist/component/jc.card.abstract.d.ts.map +1 -0
- package/dist/component/jc.card.abstract.js +31 -0
- package/dist/component/jc.card.on-default.d.ts +91 -0
- package/dist/component/jc.card.on-default.d.ts.map +1 -0
- package/dist/component/jc.card.on-default.js +96 -0
- package/dist/component/jc.carousel.d.ts +31 -0
- package/dist/component/jc.carousel.d.ts.map +1 -0
- package/dist/component/jc.carousel.js +58 -0
- package/dist/component/jc.chat-message.d.ts +17 -0
- package/dist/component/jc.chat-message.d.ts.map +1 -0
- package/dist/component/jc.chat-message.js +32 -0
- package/dist/component/jc.chat.d.ts +23 -0
- package/dist/component/jc.chat.d.ts.map +1 -0
- package/dist/component/jc.chat.js +68 -0
- package/dist/component/jc.checkbox.d.ts +15 -0
- package/dist/component/jc.checkbox.d.ts.map +1 -0
- package/dist/component/jc.checkbox.js +38 -0
- package/dist/component/jc.choice-field-item.d.ts +15 -0
- package/dist/component/jc.choice-field-item.d.ts.map +1 -0
- package/dist/component/jc.choice-field-item.js +41 -0
- package/dist/component/jc.choice-field.d.ts +21 -0
- package/dist/component/jc.choice-field.d.ts.map +1 -0
- package/dist/component/jc.choice-field.js +34 -0
- package/dist/component/jc.count-down.d.ts +18 -0
- package/dist/component/jc.count-down.d.ts.map +1 -0
- package/dist/component/jc.count-down.js +55 -0
- package/dist/component/jc.count-up.d.ts +15 -0
- package/dist/component/jc.count-up.d.ts.map +1 -0
- package/dist/component/jc.count-up.js +42 -0
- package/dist/component/jc.custom-component.interop.d.ts +58 -0
- package/dist/component/jc.custom-component.interop.d.ts.map +1 -0
- package/dist/component/jc.custom-component.interop.js +115 -0
- package/dist/component/jc.date-picker.d.ts +15 -0
- package/dist/component/jc.date-picker.d.ts.map +1 -0
- package/dist/component/jc.date-picker.js +31 -0
- package/dist/component/jc.divider.d.ts +7 -0
- package/dist/component/jc.divider.d.ts.map +1 -0
- package/dist/component/jc.divider.js +8 -0
- package/dist/component/jc.dropdown.d.ts +20 -0
- package/dist/component/jc.dropdown.d.ts.map +1 -0
- package/dist/component/jc.dropdown.item.d.ts +22 -0
- package/dist/component/jc.dropdown.item.d.ts.map +1 -0
- package/dist/component/jc.dropdown.item.js +85 -0
- package/dist/component/jc.dropdown.js +33 -0
- package/dist/component/jc.duration-picker.d.ts +18 -0
- package/dist/component/jc.duration-picker.d.ts.map +1 -0
- package/dist/component/jc.duration-picker.js +35 -0
- package/dist/component/jc.email-field.d.ts +11 -0
- package/dist/component/jc.email-field.d.ts.map +1 -0
- package/dist/component/jc.email-field.js +19 -0
- package/dist/component/jc.entity-field.d.ts +23 -0
- package/dist/component/jc.entity-field.d.ts.map +1 -0
- package/dist/component/jc.entity-field.js +71 -0
- package/dist/component/jc.entity.d.ts +15 -0
- package/dist/component/jc.entity.d.ts.map +1 -0
- package/dist/component/jc.entity.js +27 -0
- package/dist/component/jc.event.d.ts +22 -0
- package/dist/component/jc.event.d.ts.map +1 -0
- package/dist/component/jc.event.js +68 -0
- package/dist/component/jc.expander.d.ts +49 -0
- package/dist/component/jc.expander.d.ts.map +1 -0
- package/dist/component/jc.expander.header.d.ts +25 -0
- package/dist/component/jc.expander.header.d.ts.map +1 -0
- package/dist/component/jc.expander.header.js +39 -0
- package/dist/component/jc.expander.js +53 -0
- package/dist/component/jc.field-row.d.ts +34 -0
- package/dist/component/jc.field-row.d.ts.map +1 -0
- package/dist/component/jc.field-row.entity.d.ts +12 -0
- package/dist/component/jc.field-row.entity.d.ts.map +1 -0
- package/dist/component/jc.field-row.entity.js +35 -0
- package/dist/component/jc.field-row.js +37 -0
- package/dist/component/jc.form.d.ts +98 -0
- package/dist/component/jc.form.d.ts.map +1 -0
- package/dist/component/jc.form.js +127 -0
- package/dist/component/jc.gallery-item.d.ts +12 -0
- package/dist/component/jc.gallery-item.d.ts.map +1 -0
- package/dist/component/jc.gallery-item.js +24 -0
- package/dist/component/jc.grid-item.d.ts +15 -0
- package/dist/component/jc.grid-item.d.ts.map +1 -0
- package/dist/component/jc.grid-item.js +31 -0
- package/dist/component/jc.grid.d.ts +16 -0
- package/dist/component/jc.grid.d.ts.map +1 -0
- package/dist/component/jc.grid.js +64 -0
- package/dist/component/jc.guards.d.ts +17 -0
- package/dist/component/jc.guards.d.ts.map +1 -0
- package/dist/component/jc.guards.js +14 -0
- package/dist/component/jc.icon.d.ts +19 -0
- package/dist/component/jc.icon.d.ts.map +1 -0
- package/dist/component/jc.icon.js +41 -0
- package/dist/component/jc.image.abstract.d.ts +28 -0
- package/dist/component/jc.image.abstract.d.ts.map +1 -0
- package/dist/component/jc.image.abstract.js +52 -0
- package/dist/component/jc.image.d.ts +5 -0
- package/dist/component/jc.image.d.ts.map +1 -0
- package/dist/component/jc.image.js +2 -0
- package/dist/component/jc.image.on-carousel.d.ts +23 -0
- package/dist/component/jc.image.on-carousel.d.ts.map +1 -0
- package/dist/component/jc.image.on-carousel.js +19 -0
- package/dist/component/jc.image.on-default.d.ts +25 -0
- package/dist/component/jc.image.on-default.d.ts.map +1 -0
- package/dist/component/jc.image.on-default.js +22 -0
- package/dist/component/jc.interactive-image.d.ts +41 -0
- package/dist/component/jc.interactive-image.d.ts.map +1 -0
- package/dist/component/jc.interactive-image.item.d.ts +24 -0
- package/dist/component/jc.interactive-image.item.d.ts.map +1 -0
- package/dist/component/jc.interactive-image.item.js +78 -0
- package/dist/component/jc.interactive-image.js +78 -0
- package/dist/component/jc.jig-header.d.ts +19 -0
- package/dist/component/jc.jig-header.d.ts.map +1 -0
- package/dist/component/jc.jig-header.js +42 -0
- package/dist/component/jc.jig-widget.d.ts +15 -0
- package/dist/component/jc.jig-widget.d.ts.map +1 -0
- package/dist/component/jc.jig-widget.js +41 -0
- package/dist/component/jc.jig.d.ts +11 -0
- package/dist/component/jc.jig.d.ts.map +1 -0
- package/dist/component/jc.jig.js +24 -0
- package/dist/component/jc.line-chart.d.ts +28 -0
- package/dist/component/jc.line-chart.d.ts.map +1 -0
- package/dist/component/jc.line-chart.js +45 -0
- package/dist/component/jc.list-item.d.ts +106 -0
- package/dist/component/jc.list-item.d.ts.map +1 -0
- package/dist/component/jc.list-item.js +274 -0
- package/dist/component/jc.list-item.standalone.d.ts +13 -0
- package/dist/component/jc.list-item.standalone.d.ts.map +1 -0
- package/dist/component/jc.list-item.standalone.js +10 -0
- package/dist/component/jc.list.abstract.d.ts +36 -0
- package/dist/component/jc.list.abstract.d.ts.map +1 -0
- package/dist/component/jc.list.abstract.js +2 -0
- package/dist/component/jc.list.d.ts +39 -0
- package/dist/component/jc.list.d.ts.map +1 -0
- package/dist/component/jc.list.js +95 -0
- package/dist/component/jc.location.d.ts +41 -0
- package/dist/component/jc.location.d.ts.map +1 -0
- package/dist/component/jc.location.js +63 -0
- package/dist/component/jc.marker-item.d.ts +29 -0
- package/dist/component/jc.marker-item.d.ts.map +1 -0
- package/dist/component/jc.marker-item.js +48 -0
- package/dist/component/jc.media-field.d.ts +13 -0
- package/dist/component/jc.media-field.d.ts.map +1 -0
- package/dist/component/jc.media-field.js +37 -0
- package/dist/component/jc.menu-item.d.ts +89 -0
- package/dist/component/jc.menu-item.d.ts.map +1 -0
- package/dist/component/jc.menu-item.js +65 -0
- package/dist/component/jc.number-field.d.ts +21 -0
- package/dist/component/jc.number-field.d.ts.map +1 -0
- package/dist/component/jc.number-field.js +33 -0
- package/dist/component/jc.pie-chart.d.ts +26 -0
- package/dist/component/jc.pie-chart.d.ts.map +1 -0
- package/dist/component/jc.pie-chart.js +45 -0
- package/dist/component/jc.product-item.amount.d.ts +17 -0
- package/dist/component/jc.product-item.amount.d.ts.map +1 -0
- package/dist/component/jc.product-item.amount.js +31 -0
- package/dist/component/jc.product-item.d.ts +30 -0
- package/dist/component/jc.product-item.d.ts.map +1 -0
- package/dist/component/jc.product-item.js +68 -0
- package/dist/component/jc.progress-bar.d.ts +45 -0
- package/dist/component/jc.progress-bar.d.ts.map +1 -0
- package/dist/component/jc.progress-bar.js +58 -0
- package/dist/component/jc.rating.d.ts +17 -0
- package/dist/component/jc.rating.d.ts.map +1 -0
- package/dist/component/jc.rating.js +38 -0
- package/dist/component/jc.section.abstract.d.ts +87 -0
- package/dist/component/jc.section.abstract.d.ts.map +1 -0
- package/dist/component/jc.section.abstract.js +33 -0
- package/dist/component/jc.section.on-default.d.ts +85 -0
- package/dist/component/jc.section.on-default.d.ts.map +1 -0
- package/dist/component/jc.section.on-default.js +85 -0
- package/dist/component/jc.section.on-entity.d.ts +11 -0
- package/dist/component/jc.section.on-entity.d.ts.map +1 -0
- package/dist/component/jc.section.on-entity.js +11 -0
- package/dist/component/jc.segmented-control.d.ts +23 -0
- package/dist/component/jc.segmented-control.d.ts.map +1 -0
- package/dist/component/jc.segmented-control.js +66 -0
- package/dist/component/jc.signature-field.d.ts +11 -0
- package/dist/component/jc.signature-field.d.ts.map +1 -0
- package/dist/component/jc.signature-field.js +18 -0
- package/dist/component/jc.slider.d.ts +36 -0
- package/dist/component/jc.slider.d.ts.map +1 -0
- package/dist/component/jc.slider.js +53 -0
- package/dist/component/jc.stage.d.ts +23 -0
- package/dist/component/jc.stage.d.ts.map +1 -0
- package/dist/component/jc.stage.js +31 -0
- package/dist/component/jc.step.d.ts +30 -0
- package/dist/component/jc.step.d.ts.map +1 -0
- package/dist/component/jc.step.js +35 -0
- package/dist/component/jc.stepper.d.ts +34 -0
- package/dist/component/jc.stepper.d.ts.map +1 -0
- package/dist/component/jc.stepper.js +59 -0
- package/dist/component/jc.story-group.d.ts +18 -0
- package/dist/component/jc.story-group.d.ts.map +1 -0
- package/dist/component/jc.story-group.js +27 -0
- package/dist/component/jc.summary.abstract.d.ts +15 -0
- package/dist/component/jc.summary.abstract.d.ts.map +1 -0
- package/dist/component/jc.summary.abstract.js +29 -0
- package/dist/component/jc.summary.card.d.ts +14 -0
- package/dist/component/jc.summary.card.d.ts.map +1 -0
- package/dist/component/jc.summary.card.js +36 -0
- package/dist/component/jc.summary.counter.d.ts +12 -0
- package/dist/component/jc.summary.counter.d.ts.map +1 -0
- package/dist/component/jc.summary.counter.js +28 -0
- package/dist/component/jc.summary.default.d.ts +16 -0
- package/dist/component/jc.summary.default.d.ts.map +1 -0
- package/dist/component/jc.summary.default.js +34 -0
- package/dist/component/jc.summary.progress.d.ts +46 -0
- package/dist/component/jc.summary.progress.d.ts.map +1 -0
- package/dist/component/jc.summary.progress.js +35 -0
- package/dist/component/jc.tab-button.d.ts +18 -0
- package/dist/component/jc.tab-button.d.ts.map +1 -0
- package/dist/component/jc.tab-button.js +43 -0
- package/dist/component/jc.text-field.d.ts +20 -0
- package/dist/component/jc.text-field.d.ts.map +1 -0
- package/dist/component/jc.text-field.js +49 -0
- package/dist/component/jc.text.d.ts +24 -0
- package/dist/component/jc.text.d.ts.map +1 -0
- package/dist/component/jc.text.js +44 -0
- package/dist/component/jc.titles.d.ts +19 -0
- package/dist/component/jc.titles.d.ts.map +1 -0
- package/dist/component/jc.titles.js +34 -0
- package/dist/component/jc.trend.d.ts +18 -0
- package/dist/component/jc.trend.d.ts.map +1 -0
- package/dist/component/jc.trend.js +31 -0
- package/dist/component/jc.types.d.ts +75 -0
- package/dist/component/jc.types.d.ts.map +1 -0
- package/dist/component/jc.types.js +74 -0
- package/dist/component/jc.video-player.abstract.d.ts +28 -0
- package/dist/component/jc.video-player.abstract.d.ts.map +1 -0
- package/dist/component/jc.video-player.abstract.js +38 -0
- package/dist/component/jc.video-player.d.ts +4 -0
- package/dist/component/jc.video-player.d.ts.map +1 -0
- package/dist/component/jc.video-player.js +2 -0
- package/dist/component/jc.video-player.on-jig.d.ts +25 -0
- package/dist/component/jc.video-player.on-jig.d.ts.map +1 -0
- package/dist/component/jc.video-player.on-jig.js +31 -0
- package/dist/component/jc.view.d.ts +158 -0
- package/dist/component/jc.view.d.ts.map +1 -0
- package/dist/component/jc.view.js +85 -0
- package/dist/component/jc.web-view.abstract.d.ts +15 -0
- package/dist/component/jc.web-view.abstract.d.ts.map +1 -0
- package/dist/component/jc.web-view.abstract.js +33 -0
- package/dist/component/jc.web-view.on-default.d.ts +5 -0
- package/dist/component/jc.web-view.on-default.d.ts.map +1 -0
- package/dist/component/jc.web-view.on-default.js +4 -0
- package/dist/component/jc.web-view.on-full.d.ts +10 -0
- package/dist/component/jc.web-view.on-full.d.ts.map +1 -0
- package/dist/component/jc.web-view.on-full.js +14 -0
- package/dist/database/database.abstract.d.ts +39 -0
- package/dist/database/database.abstract.d.ts.map +1 -0
- package/dist/database/database.abstract.js +42 -0
- package/dist/database/index.d.ts +2 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +2 -0
- package/dist/datasource/datasource.abstract.d.ts +39 -0
- package/dist/datasource/datasource.abstract.d.ts.map +1 -0
- package/dist/datasource/datasource.abstract.js +47 -0
- package/dist/datasource/datasource.descriptor.d.ts +11 -0
- package/dist/datasource/datasource.descriptor.d.ts.map +1 -0
- package/dist/datasource/datasource.descriptor.js +2 -0
- package/dist/datasource/datasource.reference.d.ts +33 -0
- package/dist/datasource/datasource.reference.d.ts.map +1 -0
- package/dist/datasource/datasource.reference.js +66 -0
- package/dist/datasource/datasource.sdk.d.ts +7 -0
- package/dist/datasource/datasource.sdk.d.ts.map +1 -0
- package/dist/datasource/datasource.sdk.js +5 -0
- package/dist/datasource/datasource.sqlite.d.ts +88 -0
- package/dist/datasource/datasource.sqlite.d.ts.map +1 -0
- package/dist/datasource/datasource.sqlite.js +286 -0
- package/dist/datasource/datasource.static.d.ts +21 -0
- package/dist/datasource/datasource.static.d.ts.map +1 -0
- package/dist/datasource/datasource.static.js +30 -0
- package/dist/datasource/datasource.system.d.ts +18 -0
- package/dist/datasource/datasource.system.d.ts.map +1 -0
- package/dist/datasource/datasource.system.js +10 -0
- package/dist/datasource/entity.descriptor.d.ts +9 -0
- package/dist/datasource/entity.descriptor.d.ts.map +1 -0
- package/dist/datasource/entity.descriptor.js +2 -0
- package/dist/datasource/index.d.ts +11 -0
- package/dist/datasource/index.d.ts.map +1 -0
- package/dist/datasource/index.js +9 -0
- package/dist/datasource/sqlite-normalizer.d.ts +3 -0
- package/dist/datasource/sqlite-normalizer.d.ts.map +1 -0
- package/dist/datasource/sqlite-normalizer.js +194 -0
- package/dist/datasource/sqlite-validator.d.ts +28 -0
- package/dist/datasource/sqlite-validator.d.ts.map +1 -0
- package/dist/datasource/sqlite-validator.js +218 -0
- package/dist/function/function.abstract.d.ts +538 -0
- package/dist/function/function.abstract.d.ts.map +1 -0
- package/dist/function/function.abstract.js +271 -0
- package/dist/function/function.guard.d.ts +17 -0
- package/dist/function/function.guard.d.ts.map +1 -0
- package/dist/function/function.guard.js +62 -0
- package/dist/function/function.operation.d.ts +26 -0
- package/dist/function/function.operation.d.ts.map +1 -0
- package/dist/function/function.operation.js +118 -0
- package/dist/function/function.rest.continuation.d.ts +12 -0
- package/dist/function/function.rest.continuation.d.ts.map +1 -0
- package/dist/function/function.rest.continuation.js +24 -0
- package/dist/function/function.rest.d.ts +31 -0
- package/dist/function/function.rest.d.ts.map +1 -0
- package/dist/function/function.rest.error-builder.d.ts +38 -0
- package/dist/function/function.rest.error-builder.d.ts.map +1 -0
- package/dist/function/function.rest.error-builder.js +161 -0
- package/dist/function/function.rest.js +72 -0
- package/dist/function/function.rest.parameter-builder.d.ts +33 -0
- package/dist/function/function.rest.parameter-builder.d.ts.map +1 -0
- package/dist/function/function.rest.parameter-builder.js +81 -0
- package/dist/function/function.rest.types.d.ts +28 -0
- package/dist/function/function.rest.types.d.ts.map +1 -0
- package/dist/function/function.rest.types.js +2 -0
- package/dist/function/function.sdk.d.ts +10 -0
- package/dist/function/function.sdk.d.ts.map +1 -0
- package/dist/function/function.sdk.js +12 -0
- package/dist/function/function.soap.d.ts +19 -0
- package/dist/function/function.soap.d.ts.map +1 -0
- package/dist/function/function.soap.js +36 -0
- package/dist/function/function.soap.parameter-builder.d.ts +25 -0
- package/dist/function/function.soap.parameter-builder.d.ts.map +1 -0
- package/dist/function/function.soap.parameter-builder.js +41 -0
- package/dist/function/function.soap.types.d.ts +17 -0
- package/dist/function/function.soap.types.d.ts.map +1 -0
- package/dist/function/function.soap.types.js +2 -0
- package/dist/function/function.sql.d.ts +20 -0
- package/dist/function/function.sql.d.ts.map +1 -0
- package/dist/function/function.sql.js +53 -0
- package/dist/function/function.sql.parameter-builder.d.ts +24 -0
- package/dist/function/function.sql.parameter-builder.d.ts.map +1 -0
- package/dist/function/function.sql.parameter-builder.js +44 -0
- package/dist/function/function.sql.types.d.ts +20 -0
- package/dist/function/function.sql.types.d.ts.map +1 -0
- package/dist/function/function.sql.types.js +2 -0
- package/dist/function/function.types.d.ts +7 -0
- package/dist/function/function.types.d.ts.map +1 -0
- package/dist/function/function.types.js +2 -0
- package/dist/function/index.d.ts +17 -0
- package/dist/function/index.d.ts.map +1 -0
- package/dist/function/index.js +13 -0
- package/dist/icon/index.d.ts +3 -0
- package/dist/icon/index.d.ts.map +1 -0
- package/dist/icon/index.js +3 -0
- package/dist/icon/sdk.icon.d.ts +10 -0
- package/dist/icon/sdk.icon.d.ts.map +1 -0
- package/dist/icon/sdk.icon.data.d.ts +7 -0
- package/dist/icon/sdk.icon.data.d.ts.map +1 -0
- package/dist/icon/sdk.icon.data.js +19283 -0
- package/dist/icon/sdk.icon.js +27 -0
- package/dist/icon/sdk.icon.loader.d.ts +7 -0
- package/dist/icon/sdk.icon.loader.d.ts.map +1 -0
- package/dist/icon/sdk.icon.loader.js +15 -0
- package/dist/icon/sdk.icon.name.d.ts +7 -0
- package/dist/icon/sdk.icon.name.d.ts.map +1 -0
- package/dist/icon/sdk.icon.name.js +19305 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/jsonata/ast.d.ts +15 -0
- package/dist/jsonata/ast.d.ts.map +1 -0
- package/dist/jsonata/ast.js +118 -0
- package/dist/jsonata/base.d.ts +7 -0
- package/dist/jsonata/base.d.ts.map +1 -0
- package/dist/jsonata/base.js +43 -0
- package/dist/jsonata/builder.d.ts +28 -0
- package/dist/jsonata/builder.d.ts.map +1 -0
- package/dist/jsonata/builder.js +140 -0
- package/dist/jsonata/context.d.ts +10 -0
- package/dist/jsonata/context.d.ts.map +1 -0
- package/dist/jsonata/context.js +349 -0
- package/dist/jsonata/expression.d.ts +35 -0
- package/dist/jsonata/expression.d.ts.map +1 -0
- package/dist/jsonata/expression.js +498 -0
- package/dist/jsonata/index.d.ts +6 -0
- package/dist/jsonata/index.d.ts.map +1 -0
- package/dist/jsonata/index.js +6 -0
- package/dist/logger/index.d.ts +2 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +2 -0
- package/dist/logger/logger.d.ts +14 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +40 -0
- package/dist/runtime/auth.d.ts +19 -0
- package/dist/runtime/auth.d.ts.map +1 -0
- package/dist/runtime/auth.js +11 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/system.d.ts +27 -0
- package/dist/runtime/system.d.ts.map +1 -0
- package/dist/runtime/system.js +26 -0
- package/dist/screen/common/index.d.ts +9 -0
- package/dist/screen/common/index.d.ts.map +1 -0
- package/dist/screen/common/index.js +7 -0
- package/dist/screen/common/screen.badge.d.ts +8 -0
- package/dist/screen/common/screen.badge.d.ts.map +1 -0
- package/dist/screen/common/screen.badge.js +2 -0
- package/dist/screen/common/screen.bottom-sheet.d.ts +62 -0
- package/dist/screen/common/screen.bottom-sheet.d.ts.map +1 -0
- package/dist/screen/common/screen.bottom-sheet.js +31 -0
- package/dist/screen/common/screen.callback-actions.d.ts +7 -0
- package/dist/screen/common/screen.callback-actions.d.ts.map +1 -0
- package/dist/screen/common/screen.callback-actions.js +19 -0
- package/dist/screen/common/screen.input-definition.d.ts +108 -0
- package/dist/screen/common/screen.input-definition.d.ts.map +1 -0
- package/dist/screen/common/screen.input-definition.js +109 -0
- package/dist/screen/common/screen.placeholder.d.ts +20 -0
- package/dist/screen/common/screen.placeholder.d.ts.map +1 -0
- package/dist/screen/common/screen.placeholder.js +54 -0
- package/dist/screen/common/screen.preview.actions.d.ts +47 -0
- package/dist/screen/common/screen.preview.actions.d.ts.map +1 -0
- package/dist/screen/common/screen.preview.actions.js +122 -0
- package/dist/screen/common/screen.preview.d.ts +40 -0
- package/dist/screen/common/screen.preview.d.ts.map +1 -0
- package/dist/screen/common/screen.preview.js +87 -0
- package/dist/screen/common/screen.state.d.ts +7 -0
- package/dist/screen/common/screen.state.d.ts.map +1 -0
- package/dist/screen/common/screen.state.js +2 -0
- package/dist/screen/common/screen.summary.d.ts +14 -0
- package/dist/screen/common/screen.summary.d.ts.map +1 -0
- package/dist/screen/common/screen.summary.js +22 -0
- package/dist/screen/index.d.ts +16 -0
- package/dist/screen/index.d.ts.map +1 -0
- package/dist/screen/index.js +16 -0
- package/dist/screen/screen.abstract.d.ts +105 -0
- package/dist/screen/screen.abstract.d.ts.map +1 -0
- package/dist/screen/screen.abstract.js +175 -0
- package/dist/screen/screen.calendar.d.ts +22 -0
- package/dist/screen/screen.calendar.d.ts.map +1 -0
- package/dist/screen/screen.calendar.js +32 -0
- package/dist/screen/screen.default.d.ts +65 -0
- package/dist/screen/screen.default.d.ts.map +1 -0
- package/dist/screen/screen.default.js +68 -0
- package/dist/screen/screen.document.d.ts +58 -0
- package/dist/screen/screen.document.d.ts.map +1 -0
- package/dist/screen/screen.document.js +72 -0
- package/dist/screen/screen.full-screen.d.ts +23 -0
- package/dist/screen/screen.full-screen.d.ts.map +1 -0
- package/dist/screen/screen.full-screen.js +18 -0
- package/dist/screen/screen.gallery.d.ts +15 -0
- package/dist/screen/screen.gallery.d.ts.map +1 -0
- package/dist/screen/screen.gallery.js +14 -0
- package/dist/screen/screen.grid.base.d.ts +18 -0
- package/dist/screen/screen.grid.base.d.ts.map +1 -0
- package/dist/screen/screen.grid.base.js +17 -0
- package/dist/screen/screen.grid.dynamic.d.ts +18 -0
- package/dist/screen/screen.grid.dynamic.d.ts.map +1 -0
- package/dist/screen/screen.grid.dynamic.js +26 -0
- package/dist/screen/screen.grid.static.d.ts +14 -0
- package/dist/screen/screen.grid.static.d.ts.map +1 -0
- package/dist/screen/screen.grid.static.js +12 -0
- package/dist/screen/screen.guards.d.ts +41 -0
- package/dist/screen/screen.guards.d.ts.map +1 -0
- package/dist/screen/screen.guards.js +35 -0
- package/dist/screen/screen.list.d.ts +79 -0
- package/dist/screen/screen.list.d.ts.map +1 -0
- package/dist/screen/screen.list.js +123 -0
- package/dist/screen/screen.sdk.d.ts +13 -0
- package/dist/screen/screen.sdk.d.ts.map +1 -0
- package/dist/screen/screen.sdk.js +9 -0
- package/dist/screen/screen.tabs.d.ts +27 -0
- package/dist/screen/screen.tabs.d.ts.map +1 -0
- package/dist/screen/screen.tabs.instance.d.ts +34 -0
- package/dist/screen/screen.tabs.instance.d.ts.map +1 -0
- package/dist/screen/screen.tabs.instance.js +79 -0
- package/dist/screen/screen.tabs.js +35 -0
- package/dist/screen/screen.wizard.d.ts +12 -0
- package/dist/screen/screen.wizard.d.ts.map +1 -0
- package/dist/screen/screen.wizard.instance.d.ts +20 -0
- package/dist/screen/screen.wizard.instance.d.ts.map +1 -0
- package/dist/screen/screen.wizard.instance.js +40 -0
- package/dist/screen/screen.wizard.js +23 -0
- package/dist/utils/check.d.ts +3 -0
- package/dist/utils/check.d.ts.map +1 -0
- package/dist/utils/check.js +7 -0
- package/dist/utils/convert.d.ts +2 -0
- package/dist/utils/convert.d.ts.map +1 -0
- package/dist/utils/convert.js +8 -0
- package/dist/utils/dedent.d.ts +2 -0
- package/dist/utils/dedent.d.ts.map +1 -0
- package/dist/utils/dedent.js +28 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/types.d.ts +2 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/utils.d.ts +9 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +49 -0
- package/dist/widget/index.d.ts +12 -0
- package/dist/widget/index.d.ts.map +1 -0
- package/dist/widget/index.js +12 -0
- package/dist/widget/jw.abstract.d.ts +27 -0
- package/dist/widget/jw.abstract.d.ts.map +1 -0
- package/dist/widget/jw.abstract.js +36 -0
- package/dist/widget/jw.actions.d.ts +17 -0
- package/dist/widget/jw.actions.d.ts.map +1 -0
- package/dist/widget/jw.actions.js +30 -0
- package/dist/widget/jw.avatar.d.ts +19 -0
- package/dist/widget/jw.avatar.d.ts.map +1 -0
- package/dist/widget/jw.avatar.js +23 -0
- package/dist/widget/jw.chart.d.ts +18 -0
- package/dist/widget/jw.chart.d.ts.map +1 -0
- package/dist/widget/jw.chart.js +23 -0
- package/dist/widget/jw.group.d.ts +28 -0
- package/dist/widget/jw.group.d.ts.map +1 -0
- package/dist/widget/jw.group.js +35 -0
- package/dist/widget/jw.image.d.ts +27 -0
- package/dist/widget/jw.image.d.ts.map +1 -0
- package/dist/widget/jw.image.js +54 -0
- package/dist/widget/jw.list.d.ts +44 -0
- package/dist/widget/jw.list.d.ts.map +1 -0
- package/dist/widget/jw.list.js +44 -0
- package/dist/widget/jw.location.d.ts +41 -0
- package/dist/widget/jw.location.d.ts.map +1 -0
- package/dist/widget/jw.location.js +54 -0
- package/dist/widget/jw.sdk.d.ts +2 -0
- package/dist/widget/jw.sdk.d.ts.map +1 -0
- package/dist/widget/jw.sdk.js +2 -0
- package/dist/widget/jw.status.condition.d.ts +20 -0
- package/dist/widget/jw.status.condition.d.ts.map +1 -0
- package/dist/widget/jw.status.condition.js +27 -0
- package/dist/widget/jw.status.d.ts +8 -0
- package/dist/widget/jw.status.d.ts.map +1 -0
- package/dist/widget/jw.status.js +11 -0
- package/dist/widget/jw.value.d.ts +24 -0
- package/dist/widget/jw.value.d.ts.map +1 -0
- package/dist/widget/jw.value.js +51 -0
- package/package.json +94 -0
|
@@ -0,0 +1,848 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
import { convertOrExpression } from '../jsonata/base.js';
|
|
3
|
+
import { ExpressionSchema, NonExpressionSchema, NumberOrExpressionSchema, PrimitiveOrExpressionSchema, PrimitiveSchema, StringOrExpressionSchema, toExpression, } from './sdk.expression.js';
|
|
4
|
+
export const OrganizationIdSchema = z
|
|
5
|
+
.uuid()
|
|
6
|
+
.describe('Organization UUID (contains users, solutions, data)');
|
|
7
|
+
export function isOrganizationId(value) {
|
|
8
|
+
return OrganizationIdSchema.safeParse(value).success;
|
|
9
|
+
}
|
|
10
|
+
export function toOrganizationId(value) {
|
|
11
|
+
return OrganizationIdSchema.parse(value);
|
|
12
|
+
}
|
|
13
|
+
export const SolutionIdSchema = z.uuid().describe('Solution UUID (a native mobile app)');
|
|
14
|
+
export function isSolutionId(value) {
|
|
15
|
+
return SolutionIdSchema.safeParse(value).success;
|
|
16
|
+
}
|
|
17
|
+
export function toSolutionId(value) {
|
|
18
|
+
return SolutionIdSchema.parse(value);
|
|
19
|
+
}
|
|
20
|
+
export const CommonNameMixedRegex = /^[a-zA-Z][a-zA-Z0-9_-]{0,48}[a-zA-Z0-9]$/;
|
|
21
|
+
export const CommonNameMixedSchema = z
|
|
22
|
+
.string()
|
|
23
|
+
.regex(CommonNameMixedRegex, 'Mixedcase 2-50, prefer kebab-case, starts alpha, contains alphanum and `-`, ends alphanum.');
|
|
24
|
+
export function toCommonNameMixed(value) {
|
|
25
|
+
return CommonNameMixedSchema.parse(value);
|
|
26
|
+
}
|
|
27
|
+
export const CategorySchema = z
|
|
28
|
+
.enum([
|
|
29
|
+
'unknown',
|
|
30
|
+
'analytics',
|
|
31
|
+
'business',
|
|
32
|
+
'communications',
|
|
33
|
+
'consulting',
|
|
34
|
+
'field-services',
|
|
35
|
+
'finances',
|
|
36
|
+
'health',
|
|
37
|
+
'human-resources',
|
|
38
|
+
'logistics',
|
|
39
|
+
'management',
|
|
40
|
+
'miscellaneous',
|
|
41
|
+
'operations',
|
|
42
|
+
'personal',
|
|
43
|
+
'sales',
|
|
44
|
+
])
|
|
45
|
+
.describe('Solution category');
|
|
46
|
+
const ApplicationGroupIdSchema = CommonNameMixedSchema.describe('Application group Id');
|
|
47
|
+
export const InstanceIdSchema = z
|
|
48
|
+
.string()
|
|
49
|
+
.min(1, 'Required')
|
|
50
|
+
.regex(CommonNameMixedRegex, 'Starts with alpha, 0-48 alphanum/`_`/`-`, ends alphanum.')
|
|
51
|
+
.describe('Instance Id');
|
|
52
|
+
export function isInstanceId(value) {
|
|
53
|
+
return InstanceIdSchema.safeParse(value).success;
|
|
54
|
+
}
|
|
55
|
+
export function toInstanceId(value) {
|
|
56
|
+
return InstanceIdSchema.parse(value);
|
|
57
|
+
}
|
|
58
|
+
export const KegInstanceIdSchema = z
|
|
59
|
+
.union([InstanceIdSchema, ExpressionSchema])
|
|
60
|
+
.describe('Instance Identifier');
|
|
61
|
+
export function isInstanceIdOrExpression(value, options) {
|
|
62
|
+
if (!KegInstanceIdSchema.safeParse(value).success)
|
|
63
|
+
return false;
|
|
64
|
+
if (!options || options.yamlConversion === false)
|
|
65
|
+
return true;
|
|
66
|
+
try {
|
|
67
|
+
toInstanceIdOrExpression(value, options);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function toInstanceIdOrExpression(value, options) {
|
|
75
|
+
return convertOrExpression(value, KegInstanceIdSchema, 'KegInstanceId', options);
|
|
76
|
+
}
|
|
77
|
+
export const FormIdSchema = NonExpressionSchema.describe('Form Identifier');
|
|
78
|
+
export function isFormId(value) {
|
|
79
|
+
return FormIdSchema.safeParse(value).success;
|
|
80
|
+
}
|
|
81
|
+
export function toFormId(value) {
|
|
82
|
+
return FormIdSchema.parse(value);
|
|
83
|
+
}
|
|
84
|
+
export const SYSTEM_TABLES = [
|
|
85
|
+
'_commandQueue',
|
|
86
|
+
'_syncScope',
|
|
87
|
+
];
|
|
88
|
+
export function isSqliteSystemTable(name) {
|
|
89
|
+
return SYSTEM_TABLES.includes(name);
|
|
90
|
+
}
|
|
91
|
+
export const ParameterNameSchema = z.string().describe('Parameter name');
|
|
92
|
+
export function isParameterName(value) {
|
|
93
|
+
return ParameterNameSchema.safeParse(value).success;
|
|
94
|
+
}
|
|
95
|
+
export function toParameterName(value) {
|
|
96
|
+
return ParameterNameSchema.parse(value);
|
|
97
|
+
}
|
|
98
|
+
export const ParameterNameDollarSchema = z
|
|
99
|
+
.string()
|
|
100
|
+
.regex(/^[$a-zA-Z][a-zA-Z0-9_-]{0,48}[a-zA-Z0-9]$/, 'Starts with $ or alpha, 0-48 alphanum/`_`/`-`, ends alphanum.');
|
|
101
|
+
export function isParameterNameDollar(value) {
|
|
102
|
+
return ParameterNameDollarSchema.safeParse(value).success;
|
|
103
|
+
}
|
|
104
|
+
export function toParameterNameDollar(value) {
|
|
105
|
+
if (value.startsWith('$')) {
|
|
106
|
+
return ParameterNameDollarSchema.parse(value);
|
|
107
|
+
}
|
|
108
|
+
if (value.length < 2) {
|
|
109
|
+
throw new Error('Starts with $ or alpha, 0-48 alphanum/`_`/`-`, ends alphanum.');
|
|
110
|
+
}
|
|
111
|
+
if (!/^[a-zA-Z]/.test(value)) {
|
|
112
|
+
throw new Error('Starts with $ or alpha, 0-48 alphanum/`_`/`-`, ends alphanum.');
|
|
113
|
+
}
|
|
114
|
+
if (!/[a-zA-Z0-9]$/.test(value)) {
|
|
115
|
+
throw new Error('Starts with $ or alpha, 0-48 alphanum/`_`/`-`, ends alphanum.');
|
|
116
|
+
}
|
|
117
|
+
const withDollar = `$${value}`;
|
|
118
|
+
return ParameterNameDollarSchema.parse(withDollar);
|
|
119
|
+
}
|
|
120
|
+
const EntityNameBaseSchema = z.string().min(1, 'Required').regex(CommonNameMixedRegex);
|
|
121
|
+
const EntityNameFqnSchema = z
|
|
122
|
+
.string()
|
|
123
|
+
.min(1, 'Required')
|
|
124
|
+
.regex(/^default\/[a-zA-Z][a-zA-Z0-9_-]{0,48}[a-zA-Z0-9]$/, 'Entity name must be in format default/table')
|
|
125
|
+
.describe('Entity name in format default/table');
|
|
126
|
+
export const EntityNameSchema = z.union([EntityNameBaseSchema, EntityNameFqnSchema]);
|
|
127
|
+
export const EntityNameBranded = EntityNameSchema;
|
|
128
|
+
export function isEntityName(value) {
|
|
129
|
+
return EntityNameBranded.safeParse(value).success;
|
|
130
|
+
}
|
|
131
|
+
export function toEntityName(value, requireDefault) {
|
|
132
|
+
if (requireDefault || value.startsWith('default/')) {
|
|
133
|
+
return EntityNameFqnSchema.parse(value);
|
|
134
|
+
}
|
|
135
|
+
else if (isSqliteSystemTable(value)) {
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return EntityNameBaseSchema.parse(value);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export const ActionIdSchema = z.string().regex(CommonNameMixedRegex);
|
|
143
|
+
export function toActionId(value) {
|
|
144
|
+
return ActionIdSchema.parse(value);
|
|
145
|
+
}
|
|
146
|
+
export function isActionId(value) {
|
|
147
|
+
return ActionIdSchema.safeParse(value).success;
|
|
148
|
+
}
|
|
149
|
+
export const ScreenIdSchema = z.string().regex(CommonNameMixedRegex);
|
|
150
|
+
export function toScreenId(value) {
|
|
151
|
+
return ScreenIdSchema.parse(value);
|
|
152
|
+
}
|
|
153
|
+
export function toScreenIdOrExpression(value) {
|
|
154
|
+
return value.startsWith('=') ? toExpression(value) : toScreenId(value);
|
|
155
|
+
}
|
|
156
|
+
export function isScreenId(value) {
|
|
157
|
+
return ScreenIdSchema.safeParse(value).success;
|
|
158
|
+
}
|
|
159
|
+
export const SCREEN_TYPE = {
|
|
160
|
+
CALENDAR: 'jig.calendar',
|
|
161
|
+
DEFAULT: 'jig.default',
|
|
162
|
+
DOCUMENT: 'jig.document',
|
|
163
|
+
FULL_SCREEN: 'jig.full-screen',
|
|
164
|
+
GALLERY: 'jig.gallery',
|
|
165
|
+
GRID: 'jig.grid',
|
|
166
|
+
LIST: 'jig.list',
|
|
167
|
+
TABLE: 'jig.table',
|
|
168
|
+
TABS: 'jig.tabs',
|
|
169
|
+
WIZARD: 'jig.wizard',
|
|
170
|
+
};
|
|
171
|
+
export const SCREEN_TYPES = Object.values(SCREEN_TYPE);
|
|
172
|
+
export function isScreenType(value) {
|
|
173
|
+
return SCREEN_TYPES.includes(value);
|
|
174
|
+
}
|
|
175
|
+
export const ParameterValueSchema = z.union([
|
|
176
|
+
PrimitiveSchema,
|
|
177
|
+
z.array(PrimitiveSchema),
|
|
178
|
+
z.record(z.string(), PrimitiveSchema),
|
|
179
|
+
]);
|
|
180
|
+
export const WIDGET_TYPE = {
|
|
181
|
+
ACTIONS: 'widget.actions',
|
|
182
|
+
AVATAR: 'widget.avatar',
|
|
183
|
+
CHART: 'widget.chart',
|
|
184
|
+
GROUP: 'widget.group',
|
|
185
|
+
IMAGE: 'widget.image',
|
|
186
|
+
LIST: 'widget.list',
|
|
187
|
+
LOCATION: 'widget.location',
|
|
188
|
+
STATUS: 'widget.status',
|
|
189
|
+
VALUE: 'widget.value',
|
|
190
|
+
};
|
|
191
|
+
const WIDGET_TYPES = Object.values(WIDGET_TYPE);
|
|
192
|
+
export const WidgetTypeEnum = z.enum(WIDGET_TYPES, {
|
|
193
|
+
message: `Must be one of: ${WIDGET_TYPES.join(', ')}`,
|
|
194
|
+
});
|
|
195
|
+
export function isWidgetType(value) {
|
|
196
|
+
return WidgetTypeEnum.safeParse(value).success;
|
|
197
|
+
}
|
|
198
|
+
export const ParameterDefinitionSchema = z.object({
|
|
199
|
+
type: NonExpressionSchema.describe('Type from datasource'),
|
|
200
|
+
default: ParameterValueSchema.optional().describe('Default value'),
|
|
201
|
+
required: z.boolean().optional().describe('Required flag'),
|
|
202
|
+
});
|
|
203
|
+
export const ParameterDefinitionsSchema = z.record(ParameterNameDollarSchema, ParameterDefinitionSchema);
|
|
204
|
+
const ConvertFromToEnum = z
|
|
205
|
+
.enum(['buffer', 'local-uri', 'base64', 'data-uri'])
|
|
206
|
+
.describe('Specifies the type of data to convert from or to: buffer, local-uri, base64, data-uri.');
|
|
207
|
+
export function isConvertFromTo(value) {
|
|
208
|
+
return ConvertFromToEnum.safeParse(value).success;
|
|
209
|
+
}
|
|
210
|
+
export function toConvertFromTo(value) {
|
|
211
|
+
return ConvertFromToEnum.parse(value);
|
|
212
|
+
}
|
|
213
|
+
const ConversionDefinitionBase = z.object({
|
|
214
|
+
property: CommonNameMixedSchema.describe('Name of property to process conversion on'),
|
|
215
|
+
from: ConvertFromToEnum,
|
|
216
|
+
convertHeicToJpg: z.boolean().optional().describe('Convert HEIC to JPG'),
|
|
217
|
+
});
|
|
218
|
+
export const ConversionDefinitionSchema = z.discriminatedUnion('to', [
|
|
219
|
+
ConversionDefinitionBase.extend({
|
|
220
|
+
to: z.enum(['buffer', 'base64', 'data-uri']),
|
|
221
|
+
}),
|
|
222
|
+
ConversionDefinitionBase.extend({
|
|
223
|
+
to: z.literal('local-uri'),
|
|
224
|
+
localFilename: NonExpressionSchema.optional().describe('Local filename (optional)'),
|
|
225
|
+
}),
|
|
226
|
+
]);
|
|
227
|
+
export const TableNameSchema = CommonNameMixedSchema
|
|
228
|
+
.describe('Table Name.');
|
|
229
|
+
export function isDatabaseTableName(value) {
|
|
230
|
+
return TableNameSchema.safeParse(value).success;
|
|
231
|
+
}
|
|
232
|
+
export function toDatabaseTableName(value) {
|
|
233
|
+
if (value.startsWith('default/')) {
|
|
234
|
+
value = value.slice(8);
|
|
235
|
+
}
|
|
236
|
+
return TableNameSchema.parse(value);
|
|
237
|
+
}
|
|
238
|
+
export const ComponentIdSchema = CommonNameMixedSchema.min(1, 'Required');
|
|
239
|
+
export function isComponentId(value) {
|
|
240
|
+
return ComponentIdSchema.safeParse(value).success;
|
|
241
|
+
}
|
|
242
|
+
export function toComponentId(value) {
|
|
243
|
+
return ComponentIdSchema.parse(value);
|
|
244
|
+
}
|
|
245
|
+
export const ACTION_TYPE = {
|
|
246
|
+
ACTION_LIST: 'action.action-list',
|
|
247
|
+
CLEAR_QUEUE: 'action.clear-queue',
|
|
248
|
+
CONFIRM: 'action.confirm',
|
|
249
|
+
DELETE_QUEUE_COMMAND: 'action.delete-queue-command',
|
|
250
|
+
DELETE_SYNC_SCOPE: 'action.delete-sync-scope',
|
|
251
|
+
DELETE_SYNC_STATUS: 'action.delete-sync-status',
|
|
252
|
+
EXECUTE_ACTION: 'action.execute-action',
|
|
253
|
+
EXECUTE_ENTITIES: 'action.execute-entities',
|
|
254
|
+
EXECUTE_ENTITY: 'action.execute-entity',
|
|
255
|
+
EXECUTE_SQL: 'action.execute-sql',
|
|
256
|
+
EVALUATE: 'action.evaluate',
|
|
257
|
+
FIND_REPLACE: 'action.find-replace',
|
|
258
|
+
GENERATE_FILE: 'action.generate-file',
|
|
259
|
+
GENERATE_PDF: 'action.generate-pdf',
|
|
260
|
+
GO_BACK: 'action.go-back',
|
|
261
|
+
GO_TO: 'action.go-to',
|
|
262
|
+
INFO_MODAL: 'action.info-modal',
|
|
263
|
+
OPEN_APP_SETTINGS: 'action.open-app-settings',
|
|
264
|
+
OPEN_MAP: 'action.open-map',
|
|
265
|
+
OPEN_MEDIA_PICKER: 'action.open-media-picker',
|
|
266
|
+
OPEN_SCANNER: 'action.open-scanner',
|
|
267
|
+
OPEN_URL: 'action.open-url',
|
|
268
|
+
PRINT: 'action.print',
|
|
269
|
+
RESET_COMPONENT_STATE: 'action.reset-component-state',
|
|
270
|
+
RESET_JIG_STATE: 'action.reset-jig-state',
|
|
271
|
+
RESET_SOLUTION_STATE: 'action.reset-solution-state',
|
|
272
|
+
RESET_STATE: 'action.reset-state',
|
|
273
|
+
RETRY_QUEUE_COMMAND: 'action.retry-queue-command',
|
|
274
|
+
SET_ACTIVE_TAB: 'action.set-active-tab',
|
|
275
|
+
SET_JIG_STATE: 'action.set-jig-state',
|
|
276
|
+
SET_SOLUTION_STATE: 'action.set-solution-state',
|
|
277
|
+
SET_STATE: 'action.set-state',
|
|
278
|
+
SHARE: 'action.share',
|
|
279
|
+
SHOW_ALERT: 'action.show-alert',
|
|
280
|
+
START_LOCATION_SHARING: 'action.start-location-sharing',
|
|
281
|
+
START_SYNC_SCOPE: 'action.start-sync-scope',
|
|
282
|
+
STOP_LOCATION_SHARING: 'action.stop-location-sharing',
|
|
283
|
+
SUBMIT_FORM: 'action.submit-form',
|
|
284
|
+
SYNC_ENTITIES: 'action.sync-entities',
|
|
285
|
+
UPDATE_PROFILE: 'action.update-profile',
|
|
286
|
+
};
|
|
287
|
+
export const ActionTypeSchema = z.enum(ACTION_TYPE, {
|
|
288
|
+
error: `Must be one of: ${Object.values(ACTION_TYPE).join(', ')}`,
|
|
289
|
+
});
|
|
290
|
+
export const DatabaseIdSchema = z
|
|
291
|
+
.literal('default')
|
|
292
|
+
.describe('Name of database. Always named `default`.');
|
|
293
|
+
export function isDatabaseId(value) {
|
|
294
|
+
return DatabaseIdSchema.safeParse(value).success;
|
|
295
|
+
}
|
|
296
|
+
export function toDatabaseId(value) {
|
|
297
|
+
return DatabaseIdSchema.parse(value);
|
|
298
|
+
}
|
|
299
|
+
export const DefaultDatabaseId = toDatabaseId('default');
|
|
300
|
+
export const DatasourceIdSchema = CommonNameMixedSchema.min(1, 'Required');
|
|
301
|
+
export function isDatasourceId(value) {
|
|
302
|
+
return DatasourceIdSchema.safeParse(value).success;
|
|
303
|
+
}
|
|
304
|
+
export function toDatasourceId(value) {
|
|
305
|
+
return DatasourceIdSchema.parse(value);
|
|
306
|
+
}
|
|
307
|
+
export const DATASOURCE_TYPE = {
|
|
308
|
+
SQLITE: 'datasource.sqlite',
|
|
309
|
+
STATIC: 'datasource.static',
|
|
310
|
+
SYSTEM: 'datasource.system',
|
|
311
|
+
REFERENCE: 'datasource.reference',
|
|
312
|
+
};
|
|
313
|
+
const DATASOURCE_TYPES = Object.values(DATASOURCE_TYPE);
|
|
314
|
+
export const DatasourceTypeEnum = z.enum(DATASOURCE_TYPES, {
|
|
315
|
+
error: `Must be one of: ${DATASOURCE_TYPES.join(', ')}`,
|
|
316
|
+
});
|
|
317
|
+
export const FunctionIdSchema = CommonNameMixedSchema.min(1, 'Required');
|
|
318
|
+
export function isFunctionId(value) {
|
|
319
|
+
return FunctionIdSchema.safeParse(value).success;
|
|
320
|
+
}
|
|
321
|
+
export function toFunctionId(value) {
|
|
322
|
+
return FunctionIdSchema.parse(value);
|
|
323
|
+
}
|
|
324
|
+
export const DATA_PROVIDER = {
|
|
325
|
+
ONEDRIVE: 'DATA_PROVIDER_ONEDRIVE',
|
|
326
|
+
SALESFORCE: 'DATA_PROVIDER_SALESFORCE',
|
|
327
|
+
SQL: 'DATA_PROVIDER_SQL',
|
|
328
|
+
REST: 'DATA_PROVIDER_REST',
|
|
329
|
+
SOAP: 'DATA_PROVIDER_SOAP',
|
|
330
|
+
DYNAMIC: 'DATA_PROVIDER_DYNAMIC',
|
|
331
|
+
LOCAL: 'DATA_PROVIDER_LOCAL',
|
|
332
|
+
DYNAMIC_FILE: 'DATA_PROVIDER_DYNAMIC_FILE',
|
|
333
|
+
};
|
|
334
|
+
const DATA_PROVIDERS = Object.values(DATA_PROVIDER);
|
|
335
|
+
export const DataProviderEnum = z.enum(DATA_PROVIDERS, {
|
|
336
|
+
error: `Must be one of: ${DATA_PROVIDERS.join(', ')}`,
|
|
337
|
+
});
|
|
338
|
+
export function isDataProvider(value) {
|
|
339
|
+
return DataProviderEnum.safeParse(value).success;
|
|
340
|
+
}
|
|
341
|
+
export const CommonNameLower = z
|
|
342
|
+
.string()
|
|
343
|
+
.regex(/^[a-z][a-z0-9_-]{0,48}[a-z0-9]$/, 'Lowercase 2-50, prefer kebab-case, starts alpha, contains alphanum and `-`, ends alphanum.');
|
|
344
|
+
export const CommonName = z
|
|
345
|
+
.string()
|
|
346
|
+
.regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,48}[a-zA-Z0-9]$/, '2-50 chars, starts with letter, contains letters/numbers/underscore/hyphen.');
|
|
347
|
+
export const ExpressionsSchema = z.record(CommonNameLower, ExpressionSchema).default({});
|
|
348
|
+
export const InputExpressionsSchema = z
|
|
349
|
+
.record(CommonNameLower, z.union([PrimitiveSchema, ExpressionSchema, z.any()]))
|
|
350
|
+
.describe('Named Inputs with values or expressions');
|
|
351
|
+
export const ParameterExpressionsSchema = z
|
|
352
|
+
.record(ParameterNameDollarSchema, z.union([PrimitiveOrExpressionSchema, z.record(z.string(), z.unknown())]))
|
|
353
|
+
.describe('Named parameters with values, expressions, or objects');
|
|
354
|
+
const BasicColorSchema = z.enum([
|
|
355
|
+
'color1',
|
|
356
|
+
'color2',
|
|
357
|
+
'color3',
|
|
358
|
+
'color4',
|
|
359
|
+
'color5',
|
|
360
|
+
'color6',
|
|
361
|
+
'color7',
|
|
362
|
+
'color8',
|
|
363
|
+
'color9',
|
|
364
|
+
'color10',
|
|
365
|
+
'color11',
|
|
366
|
+
'color12',
|
|
367
|
+
'color13',
|
|
368
|
+
'color14',
|
|
369
|
+
]);
|
|
370
|
+
const StatusColorSchema = z.enum(['positive', 'negative', 'warning']);
|
|
371
|
+
const ComponentColorSchema = z.union([BasicColorSchema, StatusColorSchema]);
|
|
372
|
+
export const ColorValueSchema = z.union([
|
|
373
|
+
z.literal('primary'),
|
|
374
|
+
BasicColorSchema,
|
|
375
|
+
StatusColorSchema,
|
|
376
|
+
ExpressionSchema,
|
|
377
|
+
]);
|
|
378
|
+
export function toColorValue(value) {
|
|
379
|
+
return ColorValueSchema.parse(value);
|
|
380
|
+
}
|
|
381
|
+
export function toColorValueOrConditions(value) {
|
|
382
|
+
return ColorValueOrConditionsSchema.parse(value);
|
|
383
|
+
}
|
|
384
|
+
export const ColorConditionSchema = z.object({
|
|
385
|
+
when: z.union([z.string(), z.boolean()]),
|
|
386
|
+
color: ColorValueSchema,
|
|
387
|
+
});
|
|
388
|
+
export const ColorValueOrConditionsSchema = z
|
|
389
|
+
.union([ColorValueSchema, z.array(ColorConditionSchema)])
|
|
390
|
+
.describe('Color definition can be either a list of conditions or a single color value');
|
|
391
|
+
export const JigPreviewConfigurationSchema = z.object({
|
|
392
|
+
title: z.string().optional().describe('Preview title'),
|
|
393
|
+
subtitle: z.string().optional().describe('Preview subtitle'),
|
|
394
|
+
image: z.string().optional().describe('Preview image URL'),
|
|
395
|
+
});
|
|
396
|
+
export const PaletteColorSchema = z.enum([
|
|
397
|
+
'element',
|
|
398
|
+
'background',
|
|
399
|
+
'onBackground',
|
|
400
|
+
'screen',
|
|
401
|
+
'card',
|
|
402
|
+
'color10',
|
|
403
|
+
'color11',
|
|
404
|
+
'color12',
|
|
405
|
+
'color13',
|
|
406
|
+
'color14',
|
|
407
|
+
'color1',
|
|
408
|
+
'color2',
|
|
409
|
+
'color3',
|
|
410
|
+
'color4',
|
|
411
|
+
'color5',
|
|
412
|
+
'color6',
|
|
413
|
+
'color7',
|
|
414
|
+
'color8',
|
|
415
|
+
'color9',
|
|
416
|
+
'overlay',
|
|
417
|
+
'onOverlay',
|
|
418
|
+
'link',
|
|
419
|
+
'navigation',
|
|
420
|
+
'onNavigation',
|
|
421
|
+
'negative',
|
|
422
|
+
'onScreen',
|
|
423
|
+
'onCard',
|
|
424
|
+
'onColor10',
|
|
425
|
+
'onColor11',
|
|
426
|
+
'onColor12',
|
|
427
|
+
'onColor13',
|
|
428
|
+
'onColor14',
|
|
429
|
+
'onColor1',
|
|
430
|
+
'onColor2',
|
|
431
|
+
'onColor3',
|
|
432
|
+
'onColor4',
|
|
433
|
+
'onColor5',
|
|
434
|
+
'onColor6',
|
|
435
|
+
'onColor7',
|
|
436
|
+
'onColor8',
|
|
437
|
+
'onColor9',
|
|
438
|
+
'onElement',
|
|
439
|
+
'onNegative',
|
|
440
|
+
'onPositive',
|
|
441
|
+
'onPrimary',
|
|
442
|
+
'onSecondary',
|
|
443
|
+
'onSplash',
|
|
444
|
+
'onToast',
|
|
445
|
+
'onWarning',
|
|
446
|
+
'positive',
|
|
447
|
+
'primary',
|
|
448
|
+
'secondary',
|
|
449
|
+
'splash',
|
|
450
|
+
'toast',
|
|
451
|
+
'transparent',
|
|
452
|
+
'warning',
|
|
453
|
+
]);
|
|
454
|
+
export const TextNumberStyleSchema = z.enum(['decimal', 'currency', 'percent', 'unit']);
|
|
455
|
+
export const TextSignDisplaySchema = z.enum(['auto', 'always', 'never']);
|
|
456
|
+
export const TextUnitDisplaySchema = z.enum(['long', 'short', 'narrow']);
|
|
457
|
+
export const TextNumberingSystemSchema = z.enum([
|
|
458
|
+
'arab',
|
|
459
|
+
'arabext',
|
|
460
|
+
'bali',
|
|
461
|
+
'beng',
|
|
462
|
+
'deva',
|
|
463
|
+
'fullwide',
|
|
464
|
+
'gujr',
|
|
465
|
+
'guru',
|
|
466
|
+
'hanidec',
|
|
467
|
+
'khmr',
|
|
468
|
+
'knda',
|
|
469
|
+
'laoo',
|
|
470
|
+
'latn',
|
|
471
|
+
'limb',
|
|
472
|
+
'mlym',
|
|
473
|
+
'mong',
|
|
474
|
+
'mymr',
|
|
475
|
+
'orya',
|
|
476
|
+
'tamldec',
|
|
477
|
+
'telu',
|
|
478
|
+
'thai',
|
|
479
|
+
'tibt',
|
|
480
|
+
]);
|
|
481
|
+
export const TextNotationSchema = z.enum(['standard', 'scientific', 'engineering', 'compact']);
|
|
482
|
+
export const TextCompactDisplaySchema = z.enum(['short', 'long']);
|
|
483
|
+
export const TextCurrencyDisplaySchema = z.enum(['symbol', 'code', 'name', 'narrowSymbol']);
|
|
484
|
+
export const TextCurrencySignSchema = z.enum(['standard', 'accounting']);
|
|
485
|
+
export const TextDateFormatSchema = z.union([z.string(), z.enum(['default', 'fromNow', 'toNow'])]);
|
|
486
|
+
export const CurrencyCodesSchema = z.enum([
|
|
487
|
+
'AED', // 'United Arab Emirates Dirham'
|
|
488
|
+
'AFN', // 'Afghan Afghani'
|
|
489
|
+
'ALL', // 'Albanian Lek'
|
|
490
|
+
'AMD', // 'Armenian Dram'
|
|
491
|
+
'ANG', // 'Netherlands Antillean Guilder'
|
|
492
|
+
'AOA', // 'Angolan Kwanza'
|
|
493
|
+
'ARS', // 'Argentine Peso'
|
|
494
|
+
'AUD', // 'Australian Dollar'
|
|
495
|
+
'AWG', // 'Aruban Florin'
|
|
496
|
+
'AZN', // 'Azerbaijani Manat'
|
|
497
|
+
'BAM', // 'Bosnia-Herzegovina Convertible Mark'
|
|
498
|
+
'BBD', // 'Barbadian Dollar'
|
|
499
|
+
'BDT', // 'Bangladeshi Taka'
|
|
500
|
+
'BGN', // 'Bulgarian Lev'
|
|
501
|
+
'BHD', // 'Bahraini Dinar'
|
|
502
|
+
'BIF', // 'Burundian Franc'
|
|
503
|
+
'BMD', // 'Bermudian Dollar'
|
|
504
|
+
'BND', // 'Brunei Dollar'
|
|
505
|
+
'BOB', // 'Bolivian Boliviano'
|
|
506
|
+
'BRL', // 'Brazilian Real'
|
|
507
|
+
'BSD', // 'Bahamian Dollar'
|
|
508
|
+
'BTN', // 'Bhutanese Ngultrum'
|
|
509
|
+
'BWP', // 'Botswanan Pula'
|
|
510
|
+
'BYN', // 'Belarusian Ruble'
|
|
511
|
+
'BZD', // 'Belize Dollar'
|
|
512
|
+
'CAD', // 'Canadian Dollar'
|
|
513
|
+
'CDF', // 'Congolese Franc'
|
|
514
|
+
'CHF', // 'Swiss Franc'
|
|
515
|
+
'CLP', // 'Chilean Peso'
|
|
516
|
+
'CNY', // 'Chinese Yuan'
|
|
517
|
+
'COP', // 'Colombian Peso'
|
|
518
|
+
'CRC', // 'Costa Rican Colón'
|
|
519
|
+
'CUP', // 'Cuban Peso'
|
|
520
|
+
'CVE', // 'Cape Verdean Escudo'
|
|
521
|
+
'CZK', // 'Czech Koruna'
|
|
522
|
+
'DJF', // 'Djiboutian Franc'
|
|
523
|
+
'DKK', // 'Danish Krone'
|
|
524
|
+
'DOP', // 'Dominican Peso'
|
|
525
|
+
'DZD', // 'Algerian Dinar'
|
|
526
|
+
'EGP', // 'Egyptian Pound'
|
|
527
|
+
'ERN', // 'Eritrean Nakfa'
|
|
528
|
+
'ETB', // 'Ethiopian Birr'
|
|
529
|
+
'EUR', // 'Euro'
|
|
530
|
+
'FJD', // 'Fijian Dollar'
|
|
531
|
+
'FKP', // 'Falkland Islands Pound'
|
|
532
|
+
'FOK', // 'Faroese Króna'
|
|
533
|
+
'GBP', // 'British Pound Sterling'
|
|
534
|
+
'GEL', // 'Georgian Lari'
|
|
535
|
+
'GGP', // 'Guernsey Pound'
|
|
536
|
+
'GHS', // 'Ghanaian Cedi'
|
|
537
|
+
'GIP', // 'Gibraltar Pound'
|
|
538
|
+
'GMD', // 'Gambian Dalasi'
|
|
539
|
+
'GNF', // 'Guinean Franc'
|
|
540
|
+
'GTQ', // 'Guatemalan Quetzal'
|
|
541
|
+
'GYD', // 'Guyanaese Dollar'
|
|
542
|
+
'HKD', // 'Hong Kong Dollar'
|
|
543
|
+
'HNL', // 'Honduran Lempira'
|
|
544
|
+
'HRK', // 'Croatian Kuna'
|
|
545
|
+
'HTG', // 'Haitian Gourde'
|
|
546
|
+
'HUF', // 'Hungarian Forint'
|
|
547
|
+
'IDR', // 'Indonesian Rupiah'
|
|
548
|
+
'ILS', // 'Israeli New Shekel'
|
|
549
|
+
'IMP', // 'Isle of Man Pound'
|
|
550
|
+
'INR', // 'Indian Rupee'
|
|
551
|
+
'IQD', // 'Iraqi Dinar'
|
|
552
|
+
'IRR', // 'Iranian Rial'
|
|
553
|
+
'ISK', // 'Icelandic Króna'
|
|
554
|
+
'JEP', // 'Jersey Pound'
|
|
555
|
+
'JMD', // 'Jamaican Dollar'
|
|
556
|
+
'JOD', // 'Jordanian Dinar'
|
|
557
|
+
'JPY', // 'Japanese Yen'
|
|
558
|
+
'KES', // 'Kenyan Shilling'
|
|
559
|
+
'KGS', // 'Kyrgystani Som'
|
|
560
|
+
'KHR', // 'Cambodian Riel'
|
|
561
|
+
'KID', // 'Kiribati Dollar'
|
|
562
|
+
'KMF', // 'Comorian Franc'
|
|
563
|
+
'KRW', // 'South Korean Won'
|
|
564
|
+
'KWD', // 'Kuwaiti Dinar'
|
|
565
|
+
'KYD', // 'Cayman Islands Dollar'
|
|
566
|
+
'KZT', // 'Kazakhstani Tenge'
|
|
567
|
+
'LAK', // 'Laotian Kip'
|
|
568
|
+
'LBP', // 'Lebanese Pound'
|
|
569
|
+
'LKR', // 'Sri Lankan Rupee'
|
|
570
|
+
'LRD', // 'Liberian Dollar'
|
|
571
|
+
'LSL', // 'Lesotho Loti'
|
|
572
|
+
'LYD', // 'Libyan Dinar'
|
|
573
|
+
'MAD', // 'Moroccan Dirham'
|
|
574
|
+
'MDL', // 'Moldovan Leu'
|
|
575
|
+
'MGA', // 'Malagasy Ariary'
|
|
576
|
+
'MKD', // 'Macedonian Denar'
|
|
577
|
+
'MMK', // 'Myanma Kyat'
|
|
578
|
+
'MNT', // 'Mongolian Tugrik'
|
|
579
|
+
'MOP', // 'Macanese Pataca'
|
|
580
|
+
'MRU', // 'Mauritanian Ouguiya'
|
|
581
|
+
'MUR', // 'Mauritian Rupee'
|
|
582
|
+
'MVR', // 'Maldivian Rufiyaa'
|
|
583
|
+
'MWK', // 'Malawian Kwacha'
|
|
584
|
+
'MXN', // 'Mexican Peso'
|
|
585
|
+
'MYR', // 'Malaysian Ringgit'
|
|
586
|
+
'MZN', // 'Mozambican Metical'
|
|
587
|
+
'NAD', // 'Namibian Dollar'
|
|
588
|
+
'NGN', // 'Nigerian Naira'
|
|
589
|
+
'NIO', // 'Nicaraguan Córdoba'
|
|
590
|
+
'NOK', // 'Norwegian Krone'
|
|
591
|
+
'NPR', // 'Nepalese Rupee'
|
|
592
|
+
'NZD', // 'New Zealand Dollar'
|
|
593
|
+
'OMR', // 'Omani Rial'
|
|
594
|
+
'PAB', // 'Panamanian Balboa'
|
|
595
|
+
'PEN', // 'Peruvian Sol'
|
|
596
|
+
'PGK', // 'Papua New Guinean Kina'
|
|
597
|
+
'PHP', // 'Philippine Peso'
|
|
598
|
+
'PKR', // 'Pakistani Rupee'
|
|
599
|
+
'PLN', // 'Polish Zloty'
|
|
600
|
+
'PYG', // 'Paraguayan Guarani'
|
|
601
|
+
'QAR', // 'Qatari Rial'
|
|
602
|
+
'RON', // 'Romanian Leu'
|
|
603
|
+
'RSD', // 'Serbian Dinar'
|
|
604
|
+
'RUB', // 'Russian Ruble'
|
|
605
|
+
'RWF', // 'Rwandan Franc'
|
|
606
|
+
'SAR', // 'Saudi Riyal'
|
|
607
|
+
'SBD', // 'Solomon Islands Dollar'
|
|
608
|
+
'SCR', // 'Seychellois Rupee'
|
|
609
|
+
'SDG', // 'Sudanese Pound'
|
|
610
|
+
'SEK', // 'Swedish Krona'
|
|
611
|
+
'SGD', // 'Singapore Dollar'
|
|
612
|
+
'SHP', // 'Saint Helena Pound'
|
|
613
|
+
'SLL', // 'Sierra Leonean Leone'
|
|
614
|
+
'SOS', // 'Somali Shilling'
|
|
615
|
+
'SRD', // 'Surinamese Dollar'
|
|
616
|
+
'SSP', // 'South Sudanese Pound'
|
|
617
|
+
'STN', // 'São Tomé & Príncipe Dobra'
|
|
618
|
+
'SYP', // 'Syrian Pound'
|
|
619
|
+
'SZL', // 'Eswatini Lilangeni'
|
|
620
|
+
'THB', // 'Thai Baht'
|
|
621
|
+
'TJS', // 'Tajikistani Somoni'
|
|
622
|
+
'TMT', // 'Turkmenistan Manat'
|
|
623
|
+
'TND', // 'Tunisian Dinar'
|
|
624
|
+
'TOP', // "Tongan Pa'anga"
|
|
625
|
+
'TRY', // 'Turkish Lira'
|
|
626
|
+
'TTD', // 'Trinidad & Tobago Dollar'
|
|
627
|
+
'TVD', // 'Tuvaluan Dollar'
|
|
628
|
+
'TWD', // 'New Taiwan Dollar'
|
|
629
|
+
'TZS', // 'Tanzanian Shilling'
|
|
630
|
+
'UAH', // 'Ukrainian Hryvnia'
|
|
631
|
+
'UGX', // 'Ugandan Shilling'
|
|
632
|
+
'USD', // 'United States Dollar'
|
|
633
|
+
'UYU', // 'Uruguayan Peso'
|
|
634
|
+
'UZS', // 'Uzbekistani Som'
|
|
635
|
+
'VES', // 'Venezuelan Bolívar'
|
|
636
|
+
'VND', // 'Vietnamese Dong'
|
|
637
|
+
'VUV', // 'Vanuatu Vatu'
|
|
638
|
+
'WST', // 'Samoan Tala'
|
|
639
|
+
'XAF', // 'Central African CFA Franc'
|
|
640
|
+
'XCD', // 'East Caribbean Dollar'
|
|
641
|
+
'XDR', // 'Special Drawing Rights'
|
|
642
|
+
'XOF', // 'West African CFA Franc'
|
|
643
|
+
'XPF', // 'CFP Franc'
|
|
644
|
+
'YER', // 'Yemeni Rial'
|
|
645
|
+
'ZAR', // 'South African Rand'
|
|
646
|
+
'ZMW',
|
|
647
|
+
]);
|
|
648
|
+
export const NumberUnitSchema = z.enum([
|
|
649
|
+
'acre',
|
|
650
|
+
'bit',
|
|
651
|
+
'byte',
|
|
652
|
+
'celsius',
|
|
653
|
+
'centimeter',
|
|
654
|
+
'day',
|
|
655
|
+
'degree',
|
|
656
|
+
'fahrenheit',
|
|
657
|
+
'fluid-ounce',
|
|
658
|
+
'foot',
|
|
659
|
+
'gallon',
|
|
660
|
+
'gigabit',
|
|
661
|
+
'gigabyte',
|
|
662
|
+
'gram',
|
|
663
|
+
'hectare',
|
|
664
|
+
'hour',
|
|
665
|
+
'inch',
|
|
666
|
+
'kilobit',
|
|
667
|
+
'kilobyte',
|
|
668
|
+
'kilogram',
|
|
669
|
+
'kilometer',
|
|
670
|
+
'liter',
|
|
671
|
+
'megabit',
|
|
672
|
+
'megabyte',
|
|
673
|
+
'meter',
|
|
674
|
+
'mile',
|
|
675
|
+
'mile-scandinavian',
|
|
676
|
+
'milliliter',
|
|
677
|
+
'millimeter',
|
|
678
|
+
'millisecond',
|
|
679
|
+
'minute',
|
|
680
|
+
'month',
|
|
681
|
+
'ounce',
|
|
682
|
+
'percent',
|
|
683
|
+
'petabyte',
|
|
684
|
+
'pound',
|
|
685
|
+
'second',
|
|
686
|
+
'stone',
|
|
687
|
+
'terabit',
|
|
688
|
+
'terabyte',
|
|
689
|
+
'week',
|
|
690
|
+
'yard',
|
|
691
|
+
'year',
|
|
692
|
+
]);
|
|
693
|
+
export const NumberFormatExpressionsSchema = z.object({
|
|
694
|
+
numberStyle: z
|
|
695
|
+
.union([TextNumberStyleSchema, StringOrExpressionSchema])
|
|
696
|
+
.optional()
|
|
697
|
+
.describe('decimal, currency, percent or unit - identifying the type of quantity being measured'),
|
|
698
|
+
minimumIntegerDigits: NumberOrExpressionSchema.optional().describe('Minimum number of integer digits (1-21). Numbers padded with leading zeroes if necessary'),
|
|
699
|
+
minimumFractionDigits: NumberOrExpressionSchema.optional().describe('Minimum fraction digits. Numbers rounded or padded with trailing zeroes if necessary'),
|
|
700
|
+
maximumFractionDigits: NumberOrExpressionSchema.optional().describe('Maximum fraction digits. Numbers rounded or padded with trailing zeroes if necessary'),
|
|
701
|
+
minimumSignificantDigits: NumberOrExpressionSchema.optional().describe('Minimum significant digits to show'),
|
|
702
|
+
maximumSignificantDigits: NumberOrExpressionSchema.optional().describe('Maximum significant digits to show'),
|
|
703
|
+
signDisplay: z
|
|
704
|
+
.union([TextSignDisplaySchema, StringOrExpressionSchema])
|
|
705
|
+
.optional()
|
|
706
|
+
.describe('auto, always, never, or exceptZero - whether to show sign'),
|
|
707
|
+
unit: PrimitiveOrExpressionSchema.optional().describe('Unit for unit formatting (e.g. kilometer, mile-per-hour)'),
|
|
708
|
+
unitDisplay: z
|
|
709
|
+
.union([TextUnitDisplaySchema, StringOrExpressionSchema])
|
|
710
|
+
.optional()
|
|
711
|
+
.describe('long, short, or narrow - unit display style'),
|
|
712
|
+
numberingSystem: z
|
|
713
|
+
.union([TextNumberingSystemSchema, StringOrExpressionSchema])
|
|
714
|
+
.optional()
|
|
715
|
+
.describe('Numbering system for formatting'),
|
|
716
|
+
currency: z
|
|
717
|
+
.union([CurrencyCodesSchema, StringOrExpressionSchema])
|
|
718
|
+
.optional()
|
|
719
|
+
.describe('Currency code (e.g. USD, EUR) for currency formatting'),
|
|
720
|
+
notation: z
|
|
721
|
+
.union([TextNotationSchema, StringOrExpressionSchema])
|
|
722
|
+
.optional()
|
|
723
|
+
.describe('standard, scientific, engineering, or compact'),
|
|
724
|
+
compactDisplay: z
|
|
725
|
+
.union([TextCompactDisplaySchema, StringOrExpressionSchema])
|
|
726
|
+
.optional()
|
|
727
|
+
.describe('short or long - only used when notation is compact'),
|
|
728
|
+
currencyDisplay: z
|
|
729
|
+
.union([TextCurrencyDisplaySchema, StringOrExpressionSchema])
|
|
730
|
+
.optional()
|
|
731
|
+
.describe('symbol, code, name, or narrowSymbol - currency display style'),
|
|
732
|
+
currencySign: z
|
|
733
|
+
.union([TextCurrencySignSchema, StringOrExpressionSchema])
|
|
734
|
+
.optional()
|
|
735
|
+
.describe('standard or accounting - for negative currency rendering'),
|
|
736
|
+
});
|
|
737
|
+
export const TextFormatExpressionsSchema = NumberFormatExpressionsSchema.extend({
|
|
738
|
+
dateFormat: z
|
|
739
|
+
.union([TextDateFormatSchema, StringOrExpressionSchema])
|
|
740
|
+
.optional()
|
|
741
|
+
.describe('Date format pattern or preset'),
|
|
742
|
+
}).describe('Date & Number Format');
|
|
743
|
+
export const EmphasisDefinitionSchema = z
|
|
744
|
+
.union([
|
|
745
|
+
z.literal('extra-low'),
|
|
746
|
+
z.literal('low'),
|
|
747
|
+
z.literal('low-medium'),
|
|
748
|
+
z.literal('medium'),
|
|
749
|
+
z.literal('high'),
|
|
750
|
+
z.literal('color'),
|
|
751
|
+
ExpressionSchema,
|
|
752
|
+
])
|
|
753
|
+
.describe('Emphasis definition');
|
|
754
|
+
const _TextWithFormatSchemaBase = z.object({
|
|
755
|
+
text: z.union([StringOrExpressionSchema, z.lazy(() => TextLocaleSchema)]),
|
|
756
|
+
format: TextFormatExpressionsSchema.optional(),
|
|
757
|
+
});
|
|
758
|
+
export const TextWithFormatSchema = _TextWithFormatSchemaBase;
|
|
759
|
+
export function isTextWithFormat(value) {
|
|
760
|
+
return TextWithFormatSchema.safeParse(value).success;
|
|
761
|
+
}
|
|
762
|
+
export const TextLocaleSchema = z.object({
|
|
763
|
+
id: PrimitiveOrExpressionSchema.describe('Locale Id'),
|
|
764
|
+
defaultMessage: PrimitiveOrExpressionSchema.optional().describe('Default message'),
|
|
765
|
+
values: z
|
|
766
|
+
.record(CommonName, z.union([PrimitiveOrExpressionSchema, TextWithFormatSchema, z.lazy(() => TextLocaleSchema)]))
|
|
767
|
+
.optional(),
|
|
768
|
+
});
|
|
769
|
+
export const TextLocaleValuesSchema = z.record(CommonName, z.union([PrimitiveOrExpressionSchema, TextWithFormatSchema, TextLocaleSchema]));
|
|
770
|
+
export function isTextLocale(value) {
|
|
771
|
+
return TextLocaleSchema.safeParse(value).success;
|
|
772
|
+
}
|
|
773
|
+
export const TextValueSchema = z.union([
|
|
774
|
+
PrimitiveOrExpressionSchema,
|
|
775
|
+
TextWithFormatSchema,
|
|
776
|
+
TextLocaleSchema,
|
|
777
|
+
]);
|
|
778
|
+
export function isTextValue(value) {
|
|
779
|
+
return TextValueSchema.safeParse(value).success;
|
|
780
|
+
}
|
|
781
|
+
export function toTextValue(value) {
|
|
782
|
+
return TextValueSchema.parse(value);
|
|
783
|
+
}
|
|
784
|
+
export const TextStyleOptionSchema = z.object({
|
|
785
|
+
fontSize: z.enum(['regular', 'small', 'medium']).optional().describe('Font size'),
|
|
786
|
+
color: ColorValueOrConditionsSchema.optional().describe('Text color'),
|
|
787
|
+
isSubtle: z.union([z.boolean(), ExpressionSchema]).optional().describe('Is text subtle'),
|
|
788
|
+
isBold: z.union([z.boolean(), ExpressionSchema]).optional().describe('Is text bold'),
|
|
789
|
+
numberOfLines: NumberOrExpressionSchema.optional().describe('Number of lines to show before truncating with ellipsis'),
|
|
790
|
+
});
|
|
791
|
+
export const TextWithStyleSchema = _TextWithFormatSchemaBase.extend(TextStyleOptionSchema.shape);
|
|
792
|
+
export function isTextWithStyle(value) {
|
|
793
|
+
return TextWithStyleSchema.safeParse(value).success;
|
|
794
|
+
}
|
|
795
|
+
export const TextValueWithStyleSchema = z.union([
|
|
796
|
+
PrimitiveOrExpressionSchema,
|
|
797
|
+
TextWithStyleSchema,
|
|
798
|
+
TextLocaleSchema,
|
|
799
|
+
]);
|
|
800
|
+
export function isTextValueWithStyle(value) {
|
|
801
|
+
return TextValueWithStyleSchema.safeParse(value).success;
|
|
802
|
+
}
|
|
803
|
+
export function toTextValueWithStyle(value) {
|
|
804
|
+
return TextValueWithStyleSchema.parse(value);
|
|
805
|
+
}
|
|
806
|
+
export const Base64Schema = z.base64();
|
|
807
|
+
export const Base64UrlSchema = z.base64url();
|
|
808
|
+
export const Base64OrUrlSchema = z.union([Base64Schema, Base64UrlSchema]);
|
|
809
|
+
export function toBase64OrUrl(value) {
|
|
810
|
+
return Base64OrUrlSchema.parse(value);
|
|
811
|
+
}
|
|
812
|
+
export const SelectableMediaTypeSchema = z.union([
|
|
813
|
+
z.literal('image'),
|
|
814
|
+
z.literal('video'),
|
|
815
|
+
z.literal('imageAndVideo'),
|
|
816
|
+
z.literal('pdf'),
|
|
817
|
+
z.literal('doc'),
|
|
818
|
+
z.literal('ppt'),
|
|
819
|
+
z.literal('xls'),
|
|
820
|
+
z.literal('csv'),
|
|
821
|
+
z.literal('plainText'),
|
|
822
|
+
z.literal('any'),
|
|
823
|
+
]);
|
|
824
|
+
export const SetStateChangesSchema = z.record(z.string(), z.union([
|
|
825
|
+
ExpressionSchema,
|
|
826
|
+
z.string(),
|
|
827
|
+
z.number(),
|
|
828
|
+
z.boolean(),
|
|
829
|
+
z.null(),
|
|
830
|
+
z.record(z.string(), z.unknown()),
|
|
831
|
+
z.array(z.any()),
|
|
832
|
+
]));
|
|
833
|
+
export function toSetStateChanges(value) {
|
|
834
|
+
return SetStateChangesSchema.parse(value);
|
|
835
|
+
}
|
|
836
|
+
export const ImageResizeModeSchema = z
|
|
837
|
+
.enum(['cover', 'contain', 'stretch', 'repeat', 'center'])
|
|
838
|
+
.describe('Image resize mode');
|
|
839
|
+
export const ImageShapeSchema = z
|
|
840
|
+
.enum(['landscape', 'portrait', 'square'])
|
|
841
|
+
.describe('Image shape for list item');
|
|
842
|
+
export const ImageSizeSchema = z
|
|
843
|
+
.enum(['small', 'regular', 'large'])
|
|
844
|
+
.describe('Image size for list item');
|
|
845
|
+
export const HorizontalAlignSchema = z.enum(['left', 'center', 'right']);
|
|
846
|
+
export const VerticalAlignSchema = z.enum(['top', 'center', 'bottom']);
|
|
847
|
+
export const DataRowId = z.string().regex(/^[!$*-:=@-_a-~]{1,64}$/);
|
|
848
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fic3RyYWN0L3pvZC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRTFCLE9BQU8sRUFBRSxtQkFBbUIsRUFBMEIsTUFBTSxvQkFBb0IsQ0FBQTtBQUNoRixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFFeEIsMkJBQTJCLEVBQzNCLGVBQWUsRUFFZix3QkFBd0IsRUFDeEIsWUFBWSxHQUNiLE1BQU0scUJBQXFCLENBQUE7QUFFNUIsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQztLQUNsQyxJQUFJLEVBQUU7S0FDTixRQUFRLENBQUMscURBQXFELENBQUMsQ0FBQTtBQU1sRSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYyxFQUEyQjtJQUN4RSxPQUFPLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUE7QUFBQSxDQUNyRDtBQUNELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFjLEVBQWtCO0lBQy9ELE9BQU8sb0JBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQUEsQ0FDekM7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFNeEYsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFjLEVBQXVCO0lBQ2hFLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQTtBQUFBLENBQ2pEO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFjLEVBQWM7SUFDdkQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFBQSxDQUNyQztB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QzdCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDbkMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUE7QUFRdkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQVF4RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO0FBUXRFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSAnem9kL3Y0J1xuXG5pbXBvcnQgeyBjb252ZXJ0T3JFeHByZXNzaW9uLCB0eXBlIEV4cHJlc3Npb25PcHRpb25zIH0gZnJvbSAnLi4vanNvbmF0YS9iYXNlLmpzJ1xuaW1wb3J0IHtcbiAgdHlwZSBFeHByZXNzaW9uLFxuICBFeHByZXNzaW9uU2NoZW1hLFxuICBOb25FeHByZXNzaW9uU2NoZW1hLFxuICBOdW1iZXJPckV4cHJlc3Npb25TY2hlbWEsXG4gIHR5cGUgUHJpbWl0aXZlT3JFeHByZXNzaW9uLFxuICBQcmltaXRpdmVPckV4cHJlc3Npb25TY2hlbWEsXG4gIFByaW1pdGl2ZVNjaGVtYSxcbiAgdHlwZSBTdHJpbmdPckV4cHJlc3Npb24sXG4gIFN0cmluZ09yRXhwcmVzc2lvblNjaGVtYSxcbiAgdG9FeHByZXNzaW9uLFxufSBmcm9tICcuL3Nkay5leHByZXNzaW9uLmpzJ1xuXG5leHBvcnQgY29uc3QgT3JnYW5pemF0aW9uSWRTY2hlbWEgPSB6XG4gIC51dWlkKClcbiAgLmRlc2NyaWJlKCdPcmdhbml6YXRpb24gVVVJRCAoY29udGFpbnMgdXNlcnMsIHNvbHV0aW9ucywgZGF0YSknKVxuZXhwb3J0IHR5cGUgT3JnYW5pemF0aW9uSWQgPSB6LmluZmVyPHR5cGVvZiBPcmdhbml6YXRpb25JZFNjaGVtYT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgT3JnYW5pemF0aW9uSWQgKFVVSUQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcmdhbml6YXRpb25JZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIE9yZ2FuaXphdGlvbklkIHtcbiAgcmV0dXJuIE9yZ2FuaXphdGlvbklkU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvT3JnYW5pemF0aW9uSWQodmFsdWU6IHVua25vd24pOiBPcmdhbml6YXRpb25JZCB7XG4gIHJldHVybiBPcmdhbml6YXRpb25JZFNjaGVtYS5wYXJzZSh2YWx1ZSlcbn1cblxuZXhwb3J0IGNvbnN0IFNvbHV0aW9uSWRTY2hlbWEgPSB6LnV1aWQoKS5kZXNjcmliZSgnU29sdXRpb24gVVVJRCAoYSBuYXRpdmUgbW9iaWxlIGFwcCknKVxuZXhwb3J0IHR5cGUgU29sdXRpb25JZCA9IHouaW5mZXI8dHlwZW9mIFNvbHV0aW9uSWRTY2hlbWE+XG5cbi8qKlxuICogQ2hlY2tzIGlmIHZhbHVlIGlzIHZhbGlkIFNvbHV0aW9uSWQgKFVVSUQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTb2x1dGlvbklkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgU29sdXRpb25JZCB7XG4gIHJldHVybiBTb2x1dGlvbklkU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Tb2x1dGlvbklkKHZhbHVlOiB1bmtub3duKTogU29sdXRpb25JZCB7XG4gIHJldHVybiBTb2x1dGlvbklkU2NoZW1hLnBhcnNlKHZhbHVlKVxufVxuXG5leHBvcnQgY29uc3QgQ29tbW9uTmFtZU1peGVkUmVnZXggPSAvXlthLXpBLVpdW2EtekEtWjAtOV8tXXswLDQ4fVthLXpBLVowLTldJC9cblxuZXhwb3J0IGNvbnN0IENvbW1vbk5hbWVNaXhlZFNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5yZWdleChcbiAgICBDb21tb25OYW1lTWl4ZWRSZWdleCxcbiAgICAnTWl4ZWRjYXNlIDItNTAsIHByZWZlciBrZWJhYi1jYXNlLCBzdGFydHMgYWxwaGEsIGNvbnRhaW5zIGFscGhhbnVtIGFuZCBgLWAsIGVuZHMgYWxwaGFudW0uJyxcbiAgKVxuLyoqXG4gKiBNaXhlZGNhc2UgMi01MCwgcHJlZmVyIGtlYmFiLWNhc2UsIHN0YXJ0cyBhbHBoYSwgY29udGFpbnMgYWxwaGFudW0gYW5kIGAtYCwgZW5kcyBhbHBoYW51bS5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9Db21tb25OYW1lTWl4ZWRcbiAqL1xuZXhwb3J0IHR5cGUgQ29tbW9uTmFtZU1peGVkID0gei5pbmZlcjx0eXBlb2YgQ29tbW9uTmFtZU1peGVkU2NoZW1hPlxuXG4vKipcbiAqIENvbnZlcnQgc3RyaW5nIHRvIENvbW1vbk5hbWVNaXhlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ29tbW9uTmFtZU1peGVkKHZhbHVlOiBzdHJpbmcpOiBDb21tb25OYW1lTWl4ZWQge1xuICByZXR1cm4gQ29tbW9uTmFtZU1peGVkU2NoZW1hLnBhcnNlKHZhbHVlKVxufVxuXG5leHBvcnQgY29uc3QgQ2F0ZWdvcnlTY2hlbWEgPSB6XG4gIC5lbnVtKFtcbiAgICAndW5rbm93bicsXG4gICAgJ2FuYWx5dGljcycsXG4gICAgJ2J1c2luZXNzJyxcbiAgICAnY29tbXVuaWNhdGlvbnMnLFxuICAgICdjb25zdWx0aW5nJyxcbiAgICAnZmllbGQtc2VydmljZXMnLFxuICAgICdmaW5hbmNlcycsXG4gICAgJ2hlYWx0aCcsXG4gICAgJ2h1bWFuLXJlc291cmNlcycsXG4gICAgJ2xvZ2lzdGljcycsXG4gICAgJ21hbmFnZW1lbnQnLFxuICAgICdtaXNjZWxsYW5lb3VzJyxcbiAgICAnb3BlcmF0aW9ucycsXG4gICAgJ3BlcnNvbmFsJyxcbiAgICAnc2FsZXMnLFxuICBdKVxuICAuZGVzY3JpYmUoJ1NvbHV0aW9uIGNhdGVnb3J5Jylcbi8qKlxuICogQXBwbGljYXRpb24gY2F0ZWdvcnkgZW51bWVyYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIENhdGVnb3J5ID0gei5pbmZlcjx0eXBlb2YgQ2F0ZWdvcnlTY2hlbWE+XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmNvbnN0IEFwcGxpY2F0aW9uR3JvdXBJZFNjaGVtYSA9IENvbW1vbk5hbWVNaXhlZFNjaGVtYS5kZXNjcmliZSgnQXBwbGljYXRpb24gZ3JvdXAgSWQnKVxuLyoqXG4gKiBBcHBsaWNhdGlvbiBncm91cCBpZGVudGlmaWVyLlxuICogQGFsaWFzIFNvbHV0aW9uR3JvdXBJZFxuICogQHNlZSAjL2RlZmluaXRpb25zL1NvbHV0aW9uR3JvdXBJZFxuICovXG5leHBvcnQgdHlwZSBBcHBsaWNhdGlvbkdyb3VwSWQgPSB6LmluZmVyPHR5cGVvZiBBcHBsaWNhdGlvbkdyb3VwSWRTY2hlbWE+XG5cbi8qKlxuICogU3RyaW5nIG9yIEV4cHJlc3Npb24gdW5pb24gdHlwZS5cbiAqL1xuXG5leHBvcnQgY29uc3QgSW5zdGFuY2VJZFNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5taW4oMSwgJ1JlcXVpcmVkJylcbiAgLnJlZ2V4KENvbW1vbk5hbWVNaXhlZFJlZ2V4LCAnU3RhcnRzIHdpdGggYWxwaGEsIDAtNDggYWxwaGFudW0vYF9gL2AtYCwgZW5kcyBhbHBoYW51bS4nKVxuICAvLy5icmFuZDwnSW5zdGFuY2VJZCc+KClcbiAgLmRlc2NyaWJlKCdJbnN0YW5jZSBJZCcpXG4vKipcbiAqIEluc3RhbmNlIGlkZW50aWZpZXIuIFN0YXJ0cyB3aXRoIGxldHRlciwgY29udGFpbnMgbGV0dGVycy9udW1iZXJzL3VuZGVyc2NvcmUvaHlwaGVuLCBlbmRzIHdpdGggbGV0dGVyL251bWJlci5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9JbnN0YW5jZUlkXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbmNlSWQgPSB6LmluZmVyPHR5cGVvZiBJbnN0YW5jZUlkU2NoZW1hPlxuXG4vKipcbiAqIENoZWNrcyBpZiB2YWx1ZSBpcyB2YWxpZCBJbnN0YW5jZUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0YW5jZUlkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgSW5zdGFuY2VJZCB7XG4gIHJldHVybiBJbnN0YW5jZUlkU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBJbnN0YW5jZUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9JbnN0YW5jZUlkKHZhbHVlOiBzdHJpbmcpOiBJbnN0YW5jZUlkIHtcbiAgcmV0dXJuIEluc3RhbmNlSWRTY2hlbWEucGFyc2UodmFsdWUpXG59XG5cbmV4cG9ydCBjb25zdCBLZWdJbnN0YW5jZUlkU2NoZW1hID0gelxuICAudW5pb24oW0luc3RhbmNlSWRTY2hlbWEsIEV4cHJlc3Npb25TY2hlbWFdKVxuICAuZGVzY3JpYmUoJ0luc3RhbmNlIElkZW50aWZpZXInKVxuXG4vKipcbiAqIEtlZyBpbnN0YW5jZSBpZGVudGlmaWVyLiBFaXRoZXIgc3RhdGljIGlkZW50aWZpZXIgb3IgZXhwcmVzc2lvbi5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9LZWdJbnN0YW5jZUlkXG4gKi9cbmV4cG9ydCB0eXBlIEtlZ0luc3RhbmNlSWQgPSB6LmluZmVyPHR5cGVvZiBLZWdJbnN0YW5jZUlkU2NoZW1hPlxuXG4vKipcbiAqIENoZWNrcyBpZiB2YWx1ZSBpcyB2YWxpZCBLZWdJbnN0YW5jZUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0YW5jZUlkT3JFeHByZXNzaW9uKFxuICB2YWx1ZTogdW5rbm93bixcbiAgb3B0aW9ucz86IEV4cHJlc3Npb25PcHRpb25zLFxuKTogdmFsdWUgaXMgS2VnSW5zdGFuY2VJZCB7XG4gIGlmICghS2VnSW5zdGFuY2VJZFNjaGVtYS5zYWZlUGFyc2UodmFsdWUpLnN1Y2Nlc3MpIHJldHVybiBmYWxzZVxuXG4gIC8vIElmIG5vIG9wdGlvbnMgb3IgeWFtbENvbnZlcnNpb24gZGlzYWJsZWQsIHNjaGVtYSB2YWxpZGF0aW9uIGlzIGVub3VnaFxuICBpZiAoIW9wdGlvbnMgfHwgb3B0aW9ucy55YW1sQ29udmVyc2lvbiA9PT0gZmFsc2UpIHJldHVybiB0cnVlXG5cbiAgLy8gSWYgWUFNTCBjb252ZXJzaW9uIGVuYWJsZWQsIHRlc3QgdGhlIGFjdHVhbCBjb252ZXJzaW9uXG4gIHRyeSB7XG4gICAgdG9JbnN0YW5jZUlkT3JFeHByZXNzaW9uKHZhbHVlIGFzIHN0cmluZyB8IEV4cHJlc3Npb24sIG9wdGlvbnMpXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB2YWx1ZSB0byBLZWdJbnN0YW5jZUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9JbnN0YW5jZUlkT3JFeHByZXNzaW9uKFxuICB2YWx1ZTogc3RyaW5nIHwgRXhwcmVzc2lvbixcbiAgb3B0aW9ucz86IEV4cHJlc3Npb25PcHRpb25zLFxuKTogS2VnSW5zdGFuY2VJZCB7XG4gIHJldHVybiBjb252ZXJ0T3JFeHByZXNzaW9uKHZhbHVlLCBLZWdJbnN0YW5jZUlkU2NoZW1hLCAnS2VnSW5zdGFuY2VJZCcsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBGb3JtSWRTY2hlbWEgPSBOb25FeHByZXNzaW9uU2NoZW1hLmRlc2NyaWJlKCdGb3JtIElkZW50aWZpZXInKVxuXG4vKipcbiAqIEZvcm0gaWRlbnRpZmllci4gTm9uLWV4cHJlc3Npb24gc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBGb3JtSWQgPSB6LmluZmVyPHR5cGVvZiBLZWdJbnN0YW5jZUlkU2NoZW1hPlxuXG4vKipcbiAqIENoZWNrcyBpZiB2YWx1ZSBpcyB2YWxpZCBGb3JtSWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1JZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEZvcm1JZCB7XG4gIHJldHVybiBGb3JtSWRTY2hlbWEuc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbi8qKlxuICogQ29udmVydHMgdmFsdWUgdG8gRm9ybUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Gb3JtSWQodmFsdWU6IHN0cmluZyB8IEV4cHJlc3Npb24pOiBGb3JtSWQge1xuICByZXR1cm4gRm9ybUlkU2NoZW1hLnBhcnNlKHZhbHVlKVxufVxuXG4vKipcbiAqIFdoaXRlbGlzdGVkIHN5c3RlbSB0YWJsZXMgdGhhdCBieXBhc3Mgc3RhbmRhcmQgZW50aXR5IG5hbWUgdmFsaWRhdGlvbi5cbiAqIFRoZXNlIHRhYmxlcyBzdGFydCB3aXRoIHVuZGVyc2NvcmUgYW5kIGFyZSBtYW5hZ2VkIGJ5IHRoZSBKaWd4IHBsYXRmb3JtLlxuICovXG5leHBvcnQgY29uc3QgU1lTVEVNX1RBQkxFUyA9IFtcbiAgJ19jb21tYW5kUXVldWUnLFxuICAnX3N5bmNTY29wZScsXG4gIC8vIEFkZCBtb3JlIHN5c3RlbSB0YWJsZXMgaGVyZSBpZiBuZWVkZWRcbl0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgU3lzdGVtU3FsaXRlVGFibGVOYW1lID0gKHR5cGVvZiBTWVNURU1fVEFCTEVTKVtudW1iZXJdXG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHN0cmluZyBpcyBhIHN5c3RlbSB0YWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTcWxpdGVTeXN0ZW1UYWJsZShuYW1lOiBzdHJpbmcpOiBuYW1lIGlzIFN5c3RlbVNxbGl0ZVRhYmxlTmFtZSB7XG4gIHJldHVybiAoU1lTVEVNX1RBQkxFUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMobmFtZSlcbn1cblxuZXhwb3J0IGNvbnN0IFBhcmFtZXRlck5hbWVTY2hlbWEgPSB6LnN0cmluZygpLmRlc2NyaWJlKCdQYXJhbWV0ZXIgbmFtZScpXG5cbi8qKlxuICogUGFyYW1ldGVyIG5hbWUuIFN0YXJ0cyB3aXRoICQuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvUGFyYW1ldGVyTmFtZVxuICovXG5leHBvcnQgdHlwZSBQYXJhbWV0ZXJOYW1lID0gei5pbmZlcjx0eXBlb2YgUGFyYW1ldGVyTmFtZVNjaGVtYT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgUGFyYW1ldGVyTmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYW1ldGVyTmFtZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFBhcmFtZXRlck5hbWUge1xuICByZXR1cm4gUGFyYW1ldGVyTmFtZVNjaGVtYS5zYWZlUGFyc2UodmFsdWUpLnN1Y2Nlc3Ncbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gUGFyYW1ldGVyTmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFyYW1ldGVyTmFtZSh2YWx1ZTogc3RyaW5nKTogUGFyYW1ldGVyTmFtZSB7XG4gIHJldHVybiBQYXJhbWV0ZXJOYW1lU2NoZW1hLnBhcnNlKHZhbHVlKVxufVxuXG5leHBvcnQgY29uc3QgUGFyYW1ldGVyTmFtZURvbGxhclNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5yZWdleChcbiAgICAvXlskYS16QS1aXVthLXpBLVowLTlfLV17MCw0OH1bYS16QS1aMC05XSQvLFxuICAgICdTdGFydHMgd2l0aCAkIG9yIGFscGhhLCAwLTQ4IGFscGhhbnVtL2BfYC9gLWAsIGVuZHMgYWxwaGFudW0uJyxcbiAgKVxuXG4vKipcbiAqIFBhcmFtZXRlciBuYW1lLiBTdGFydHMgd2l0aCAkIG9yIGxldHRlciwgY29udGFpbnMgbGV0dGVycy9udW1iZXJzL3VuZGVyc2NvcmUvaHlwaGVuLCBlbmRzIHdpdGggbGV0dGVyL251bWJlci5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9QYXJhbWV0ZXJEZWZpbml0aW9ucy9wcm9wZXJ0eU5hbWVzXG4gKi9cbmV4cG9ydCB0eXBlIFBhcmFtZXRlck5hbWVEb2xsYXIgPSB6LmluZmVyPHR5cGVvZiBQYXJhbWV0ZXJOYW1lRG9sbGFyU2NoZW1hPlxuXG4vKipcbiAqIENoZWNrcyBpZiB2YWx1ZSBpcyB2YWxpZCBQYXJhbWV0ZXJEb2xsYXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BhcmFtZXRlck5hbWVEb2xsYXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQYXJhbWV0ZXJOYW1lRG9sbGFyIHtcbiAgcmV0dXJuIFBhcmFtZXRlck5hbWVEb2xsYXJTY2hlbWEuc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIFBhcmFtZXRlckRvbGxhciwgYWRkaW5nICQgcHJlZml4IGlmIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFyYW1ldGVyTmFtZURvbGxhcih2YWx1ZTogc3RyaW5nKTogUGFyYW1ldGVyTmFtZURvbGxhciB7XG4gIC8vIElmIGl0IGFscmVhZHkgc3RhcnRzIHdpdGggJCwganVzdCB2YWxpZGF0ZSBpdFxuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnJCcpKSB7XG4gICAgcmV0dXJuIFBhcmFtZXRlck5hbWVEb2xsYXJTY2hlbWEucGFyc2UodmFsdWUpXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgd2l0aG91dCAkIHdvdWxkIGJlIHZhbGlkXG4gIC8vIFRoZSByZWdleCByZXF1aXJlczogc3RhcnRzIHdpdGggbGV0dGVyLCAwLTQ4IGFscGhhbnVtL18vLSwgZW5kcyBhbHBoYW51bVxuICAvLyBTbyB3ZSBuZWVkIGF0IGxlYXN0IDIgY2hhcmFjdGVycyB0b3RhbFxuICBpZiAodmFsdWUubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RhcnRzIHdpdGggJCBvciBhbHBoYSwgMC00OCBhbHBoYW51bS9gX2AvYC1gLCBlbmRzIGFscGhhbnVtLicpXG4gIH1cblxuICAvLyBGaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxldHRlclxuICBpZiAoIS9eW2EtekEtWl0vLnRlc3QodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdGFydHMgd2l0aCAkIG9yIGFscGhhLCAwLTQ4IGFscGhhbnVtL2BfYC9gLWAsIGVuZHMgYWxwaGFudW0uJylcbiAgfVxuXG4gIC8vIExhc3QgY2hhcmFjdGVyIG11c3QgYmUgYWxwaGFudW1lcmljXG4gIGlmICghL1thLXpBLVowLTldJC8udGVzdCh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXJ0cyB3aXRoICQgb3IgYWxwaGEsIDAtNDggYWxwaGFudW0vYF9gL2AtYCwgZW5kcyBhbHBoYW51bS4nKVxuICB9XG5cbiAgLy8gQWRkICQgcHJlZml4IGFuZCB2YWxpZGF0ZSB3aXRoIHRoZSBzY2hlbWFcbiAgY29uc3Qgd2l0aERvbGxhciA9IGAkJHt2YWx1ZX1gXG4gIHJldHVybiBQYXJhbWV0ZXJOYW1lRG9sbGFyU2NoZW1hLnBhcnNlKHdpdGhEb2xsYXIpXG59XG5cbmNvbnN0IEVudGl0eU5hbWVCYXNlU2NoZW1hID0gei5zdHJpbmcoKS5taW4oMSwgJ1JlcXVpcmVkJykucmVnZXgoQ29tbW9uTmFtZU1peGVkUmVnZXgpXG5jb25zdCBFbnRpdHlOYW1lRnFuU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLm1pbigxLCAnUmVxdWlyZWQnKVxuICAucmVnZXgoXG4gICAgL15kZWZhdWx0XFwvW2EtekEtWl1bYS16QS1aMC05Xy1dezAsNDh9W2EtekEtWjAtOV0kLyxcbiAgICAnRW50aXR5IG5hbWUgbXVzdCBiZSBpbiBmb3JtYXQgZGVmYXVsdC90YWJsZScsXG4gIClcbiAgLmRlc2NyaWJlKCdFbnRpdHkgbmFtZSBpbiBmb3JtYXQgZGVmYXVsdC90YWJsZScpXG5cbi8vICMvZGVmaW5pdGlvbnMvRHluYW1pY0VudGl0eU5hbWVcbi8vICMvZGVmaW5pdGlvbnMvRW50aXR5TmFtZVxuZXhwb3J0IGNvbnN0IEVudGl0eU5hbWVTY2hlbWEgPSB6LnVuaW9uKFtFbnRpdHlOYW1lQmFzZVNjaGVtYSwgRW50aXR5TmFtZUZxblNjaGVtYV0pXG5cbi8qKlxuICogRW50aXR5IG5hbWUuIEZvcm1hdDogZGVmYXVsdC90YWJsZW5hbWUgd2hlcmUgdGFibGVuYW1lIHN0YXJ0cyB3aXRoIGxldHRlci5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9FbnRpdHlOYW1lXG4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eU5hbWUgPSB6LmluZmVyPHR5cGVvZiBFbnRpdHlOYW1lU2NoZW1hPlxuZXhwb3J0IGNvbnN0IEVudGl0eU5hbWVCcmFuZGVkID0gRW50aXR5TmFtZVNjaGVtYVxuLy8uYnJhbmQ8J0VudGl0eU5hbWUnPigpXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VudGl0eU5hbWUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFbnRpdHlOYW1lIHtcbiAgcmV0dXJuIEVudGl0eU5hbWVCcmFuZGVkLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBlbnRpdHkgbmFtZSwgYWRkaW5nIGRlZmF1bHQvIHByZWZpeCBpZiBuZWVkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0VudGl0eU5hbWUodmFsdWU6IHN0cmluZywgcmVxdWlyZURlZmF1bHQ6IGJvb2xlYW4pOiBFbnRpdHlOYW1lIHtcbiAgaWYgKHJlcXVpcmVEZWZhdWx0IHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ2RlZmF1bHQvJykpIHtcbiAgICByZXR1cm4gRW50aXR5TmFtZUZxblNjaGVtYS5wYXJzZSh2YWx1ZSlcbiAgfSBlbHNlIGlmIChpc1NxbGl0ZVN5c3RlbVRhYmxlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBFbnRpdHlOYW1lQmFzZVNjaGVtYS5wYXJzZSh2YWx1ZSlcbiAgfVxufVxuXG4vLyAjL2RlZmluaXRpb25zL0FjdGlvbklkRGVmaW5pdGlvblxuZXhwb3J0IGNvbnN0IEFjdGlvbklkU2NoZW1hID0gei5zdHJpbmcoKS5yZWdleChDb21tb25OYW1lTWl4ZWRSZWdleClcbi8vLmJyYW5kPCdBY3Rpb25JZCc+KClcbi8qKlxuICogQWN0aW9uIGlkZW50aWZpZXIuIFN0YXJ0cyB3aXRoIGxldHRlciwgY29udGFpbnMgbGV0dGVycy9udW1iZXJzL3VuZGVyc2NvcmUvaHlwaGVuLCBlbmRzIHdpdGggbGV0dGVyL251bWJlci5cbiAqL1xuZXhwb3J0IHR5cGUgQWN0aW9uSWQgPSB6LmluZmVyPHR5cGVvZiBBY3Rpb25JZFNjaGVtYT5cblxuLyoqXG4gKiBDb252ZXJ0cyB2YWx1ZSB0byB2YWxpZGF0ZWQgQWN0aW9uSWQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQWN0aW9uSWQodmFsdWU6IHVua25vd24pOiBBY3Rpb25JZCB7XG4gIHJldHVybiBBY3Rpb25JZFNjaGVtYS5wYXJzZSh2YWx1ZSlcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgQWN0aW9uSWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbklkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQWN0aW9uSWQge1xuICByZXR1cm4gQWN0aW9uSWRTY2hlbWEuc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbi8vICMvZGVmaW5pdGlvbnMvSmlnSWRcbmV4cG9ydCBjb25zdCBTY3JlZW5JZFNjaGVtYSA9IHouc3RyaW5nKCkucmVnZXgoQ29tbW9uTmFtZU1peGVkUmVnZXgpXG4vLy5icmFuZDwnU2NyZWVuSWQnPigpXG4vKipcbiAqIFNjcmVlbiBpZGVudGlmaWVyLiBTdGFydHMgd2l0aCBsZXR0ZXIsIGNvbnRhaW5zIGxldHRlcnMvbnVtYmVycy91bmRlcnNjb3JlL2h5cGhlbiwgZW5kcyB3aXRoIGxldHRlci9udW1iZXIuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvSmlnSWREZWZpbml0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFNjcmVlbklkID0gei5pbmZlcjx0eXBlb2YgU2NyZWVuSWRTY2hlbWE+XG5cbi8qKlxuICogQ29udmVydHMgdmFsdWUgdG8gU2NyZWVuSWQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWVuSWQodmFsdWU6IHVua25vd24pOiBTY3JlZW5JZCB7XG4gIHJldHVybiBTY3JlZW5JZFNjaGVtYS5wYXJzZSh2YWx1ZSlcbn1cblxuLyoqXG4gKiBQYXJzZXMgdmFsdWUgYXMgRXhwcmVzc2lvbiAoaWYgc3RhcnRzIHdpdGggYD1gKSBvciBTY3JlZW5JZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWVuSWRPckV4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IFNjcmVlbklkIHwgRXhwcmVzc2lvbiB7XG4gIHJldHVybiB2YWx1ZS5zdGFydHNXaXRoKCc9JykgPyB0b0V4cHJlc3Npb24odmFsdWUpIDogdG9TY3JlZW5JZCh2YWx1ZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyZWVuSWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTY3JlZW5JZCB7XG4gIHJldHVybiBTY3JlZW5JZFNjaGVtYS5zYWZlUGFyc2UodmFsdWUpLnN1Y2Nlc3Ncbn1cblxuZXhwb3J0IGNvbnN0IFNDUkVFTl9UWVBFID0ge1xuICBDQUxFTkRBUjogJ2ppZy5jYWxlbmRhcicsXG4gIERFRkFVTFQ6ICdqaWcuZGVmYXVsdCcsXG4gIERPQ1VNRU5UOiAnamlnLmRvY3VtZW50JyxcbiAgRlVMTF9TQ1JFRU46ICdqaWcuZnVsbC1zY3JlZW4nLFxuICBHQUxMRVJZOiAnamlnLmdhbGxlcnknLFxuICBHUklEOiAnamlnLmdyaWQnLFxuICBMSVNUOiAnamlnLmxpc3QnLFxuICBUQUJMRTogJ2ppZy50YWJsZScsXG4gIFRBQlM6ICdqaWcudGFicycsXG4gIFdJWkFSRDogJ2ppZy53aXphcmQnLFxufSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgU0NSRUVOX1RZUEVTID0gT2JqZWN0LnZhbHVlcyhTQ1JFRU5fVFlQRSlcbi8qKlxuICogU2NyZWVuIHR5cGUgZW51bWVyYXRpb24uXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvU2NyZWVuVHlwZVxuICovXG5leHBvcnQgdHlwZSBTY3JlZW5UeXBlID0gKHR5cGVvZiBTQ1JFRU5fVFlQRSlba2V5b2YgdHlwZW9mIFNDUkVFTl9UWVBFXVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JlZW5UeXBlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgU2NyZWVuVHlwZSB7XG4gIHJldHVybiBTQ1JFRU5fVFlQRVMuaW5jbHVkZXModmFsdWUgYXMgU2NyZWVuVHlwZSlcbn1cblxuLy8gUmVjdXJzaXZlIChkaWZmaWN1bHQgdG8gZXhwcmVzcyBpbiBab2QpXG5leHBvcnQgY29uc3QgUGFyYW1ldGVyVmFsdWVTY2hlbWEgPSB6LnVuaW9uKFtcbiAgUHJpbWl0aXZlU2NoZW1hLFxuICB6LmFycmF5KFByaW1pdGl2ZVNjaGVtYSksXG4gIHoucmVjb3JkKHouc3RyaW5nKCksIFByaW1pdGl2ZVNjaGVtYSksXG5dKVxuXG5leHBvcnQgY29uc3QgV0lER0VUX1RZUEUgPSB7XG4gIEFDVElPTlM6ICd3aWRnZXQuYWN0aW9ucycsXG4gIEFWQVRBUjogJ3dpZGdldC5hdmF0YXInLFxuICBDSEFSVDogJ3dpZGdldC5jaGFydCcsXG4gIEdST1VQOiAnd2lkZ2V0Lmdyb3VwJyxcbiAgSU1BR0U6ICd3aWRnZXQuaW1hZ2UnLFxuICBMSVNUOiAnd2lkZ2V0Lmxpc3QnLFxuICBMT0NBVElPTjogJ3dpZGdldC5sb2NhdGlvbicsXG4gIFNUQVRVUzogJ3dpZGdldC5zdGF0dXMnLFxuICBWQUxVRTogJ3dpZGdldC52YWx1ZScsXG59IGFzIGNvbnN0XG5cbmNvbnN0IFdJREdFVF9UWVBFUyA9IE9iamVjdC52YWx1ZXMoV0lER0VUX1RZUEUpXG5leHBvcnQgY29uc3QgV2lkZ2V0VHlwZUVudW0gPSB6LmVudW0oV0lER0VUX1RZUEVTLCB7XG4gIG1lc3NhZ2U6IGBNdXN0IGJlIG9uZSBvZjogJHtXSURHRVRfVFlQRVMuam9pbignLCAnKX1gLFxufSlcbi8qKlxuICogV2lkZ2V0IHR5cGUgZW51bWVyYXRpb24uXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvV2lkZ2V0VHlwZVxuICovXG5leHBvcnQgdHlwZSBXaWRnZXRUeXBlID0gei5pbmZlcjx0eXBlb2YgV2lkZ2V0VHlwZUVudW0+XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dpZGdldFR5cGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBXaWRnZXRUeXBlIHtcbiAgcmV0dXJuIFdpZGdldFR5cGVFbnVtLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIFBhcmFtZXRlciB2YWx1ZS4gU3RyaW5nLCBudW1iZXIsIGJvb2xlYW4sIG51bGwsIGFycmF5LCBvciBvYmplY3QuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvUGFyYW1ldGVyVmFsdWVcbiAqL1xuZXhwb3J0IHR5cGUgUGFyYW1ldGVyVmFsdWUgPSB6LmluZmVyPHR5cGVvZiBQYXJhbWV0ZXJWYWx1ZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFBhcmFtZXRlckRlZmluaXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHR5cGU6IE5vbkV4cHJlc3Npb25TY2hlbWEuZGVzY3JpYmUoJ1R5cGUgZnJvbSBkYXRhc291cmNlJyksXG4gIGRlZmF1bHQ6IFBhcmFtZXRlclZhbHVlU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0RlZmF1bHQgdmFsdWUnKSxcbiAgcmVxdWlyZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1JlcXVpcmVkIGZsYWcnKSxcbn0pXG5cbi8qKlxuICogUGFyYW1ldGVyIGRlZmluaXRpb24gd2l0aCB0eXBlLCBkZWZhdWx0IHZhbHVlLCBhbmQgcmVxdWlyZWQgZmxhZy5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9QYXJhbWV0ZXJEZWZpbml0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFBhcmFtZXRlckRlZmluaXRpb24gPSB6LmluZmVyPHR5cGVvZiBQYXJhbWV0ZXJEZWZpbml0aW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgUGFyYW1ldGVyRGVmaW5pdGlvbnNTY2hlbWEgPSB6LnJlY29yZChcbiAgUGFyYW1ldGVyTmFtZURvbGxhclNjaGVtYSxcbiAgUGFyYW1ldGVyRGVmaW5pdGlvblNjaGVtYSxcbilcblxuLyoqXG4gKiBNYXAgb2YgcGFyYW1ldGVyIG5hbWVzICh3aXRoICQpIHRvIHBhcmFtZXRlciBkZWZpbml0aW9ucy5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9QYXJhbWV0ZXJEZWZpbml0aW9uc1xuICovXG5leHBvcnQgdHlwZSBQYXJhbWV0ZXJEZWZpbml0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFBhcmFtZXRlckRlZmluaXRpb25zU2NoZW1hPlxuXG5jb25zdCBDb252ZXJ0RnJvbVRvRW51bSA9IHpcbiAgLmVudW0oWydidWZmZXInLCAnbG9jYWwtdXJpJywgJ2Jhc2U2NCcsICdkYXRhLXVyaSddKVxuICAuZGVzY3JpYmUoXG4gICAgJ1NwZWNpZmllcyB0aGUgdHlwZSBvZiBkYXRhIHRvIGNvbnZlcnQgZnJvbSBvciB0bzogYnVmZmVyLCBsb2NhbC11cmksIGJhc2U2NCwgZGF0YS11cmkuJyxcbiAgKVxuXG4vKipcbiAqIERhdGEgY29udmVyc2lvbiB0eXBlOiBidWZmZXIsIGxvY2FsLXVyaSwgYmFzZTY0LCBvciBkYXRhLXVyaS5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9Db252ZXJ0VG9cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9Db252ZXJ0RnJvbVRvXG4gKi9cbmV4cG9ydCB0eXBlIENvbnZlcnRGcm9tVG8gPSB6LmluZmVyPHR5cGVvZiBDb252ZXJ0RnJvbVRvRW51bT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgQ29udmVydEZyb21Uby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udmVydEZyb21Ubyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIENvbnZlcnRGcm9tVG8ge1xuICByZXR1cm4gQ29udmVydEZyb21Ub0VudW0uc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIENvbnZlcnRGcm9tVG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NvbnZlcnRGcm9tVG8odmFsdWU6IHN0cmluZyk6IENvbnZlcnRGcm9tVG8ge1xuICByZXR1cm4gQ29udmVydEZyb21Ub0VudW0ucGFyc2UodmFsdWUpXG59XG5cbmNvbnN0IENvbnZlcnNpb25EZWZpbml0aW9uQmFzZSA9IHoub2JqZWN0KHtcbiAgcHJvcGVydHk6IENvbW1vbk5hbWVNaXhlZFNjaGVtYS5kZXNjcmliZSgnTmFtZSBvZiBwcm9wZXJ0eSB0byBwcm9jZXNzIGNvbnZlcnNpb24gb24nKSxcbiAgZnJvbTogQ29udmVydEZyb21Ub0VudW0sXG4gIGNvbnZlcnRIZWljVG9KcGc6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0NvbnZlcnQgSEVJQyB0byBKUEcnKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBDb252ZXJzaW9uRGVmaW5pdGlvblNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKCd0bycsIFtcbiAgQ29udmVyc2lvbkRlZmluaXRpb25CYXNlLmV4dGVuZCh7XG4gICAgdG86IHouZW51bShbJ2J1ZmZlcicsICdiYXNlNjQnLCAnZGF0YS11cmknXSksXG4gIH0pLFxuICBDb252ZXJzaW9uRGVmaW5pdGlvbkJhc2UuZXh0ZW5kKHtcbiAgICB0bzogei5saXRlcmFsKCdsb2NhbC11cmknKSxcbiAgICBsb2NhbEZpbGVuYW1lOiBOb25FeHByZXNzaW9uU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0xvY2FsIGZpbGVuYW1lIChvcHRpb25hbCknKSxcbiAgfSksXG5dKVxuXG4vKipcbiAqIERhdGEgY29udmVyc2lvbiBkZWZpbml0aW9uIHdpdGggcHJvcGVydHksIGZyb20vdG8gdHlwZXMsIGFuZCBvcHRpb25hbCBzZXR0aW5ncy5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9Db252ZXJzaW9uRGVmaW5pdGlvblxuICovXG5leHBvcnQgdHlwZSBDb252ZXJzaW9uRGVmaW5pdGlvbiA9IHouaW5mZXI8dHlwZW9mIENvbnZlcnNpb25EZWZpbml0aW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgVGFibGVOYW1lU2NoZW1hID0gQ29tbW9uTmFtZU1peGVkU2NoZW1hXG4gIC8vIC5icmFuZCA8ICdUYWJsZU5hbWUnXG4gIC5kZXNjcmliZSgnVGFibGUgTmFtZS4nKVxuLyoqXG4gKiBUYWJsZSBuYW1lLiBNaXhlZC1jYXNlIDItNTAgY2hhcnMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvRGF0YVRhYmxlc0RlZmluaXRpb24vcHJvcGVydGllcy9wcm9wZXJ0eU5hbWVzXG4gKi9cbmV4cG9ydCB0eXBlIFRhYmxlTmFtZSA9IHouaW5mZXI8dHlwZW9mIFRhYmxlTmFtZVNjaGVtYT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgVGFibGVOYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhYmFzZVRhYmxlTmFtZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRhYmxlTmFtZSB7XG4gIHJldHVybiBUYWJsZU5hbWVTY2hlbWEuc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIFRhYmxlTmFtZSwgcmVtb3ZpbmcgYGRlZmF1bHQvYCBwcmVmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGFiYXNlVGFibGVOYW1lKHZhbHVlOiBzdHJpbmcpOiBUYWJsZU5hbWUge1xuICAvLyBJZiBpdCBzdGFydHMgd2l0aCBkZWZhdWx0LywgcmVtb3ZlIGl0XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdkZWZhdWx0LycpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSg4KVxuICB9XG4gIHJldHVybiBUYWJsZU5hbWVTY2hlbWEucGFyc2UodmFsdWUpXG59XG5cbmV4cG9ydCBjb25zdCBDb21wb25lbnRJZFNjaGVtYSA9IENvbW1vbk5hbWVNaXhlZFNjaGVtYS5taW4oMSwgJ1JlcXVpcmVkJylcbi8vIC5icmFuZDwnQ29tcG9uZW50SWQnPigpXG5cbi8qKlxuICogQ29tcG9uZW50IGlkZW50aWZpZXIuIE1peGVkLWNhc2UgMi01MCBjaGFycy5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9Db21wb25lbnRJZERlZmluaXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50SWQgPSB6LmluZmVyPHR5cGVvZiBDb21wb25lbnRJZFNjaGVtYT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgQ29tcG9uZW50SWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXBvbmVudElkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ29tcG9uZW50SWQge1xuICByZXR1cm4gQ29tcG9uZW50SWRTY2hlbWEuc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIENvbXBvbmVudElkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Db21wb25lbnRJZCh2YWx1ZTogc3RyaW5nKTogQ29tcG9uZW50SWQge1xuICByZXR1cm4gQ29tcG9uZW50SWRTY2hlbWEucGFyc2UodmFsdWUpXG59XG5cbmV4cG9ydCBjb25zdCBBQ1RJT05fVFlQRSA9IHtcbiAgQUNUSU9OX0xJU1Q6ICdhY3Rpb24uYWN0aW9uLWxpc3QnLFxuICBDTEVBUl9RVUVVRTogJ2FjdGlvbi5jbGVhci1xdWV1ZScsXG4gIENPTkZJUk06ICdhY3Rpb24uY29uZmlybScsXG4gIERFTEVURV9RVUVVRV9DT01NQU5EOiAnYWN0aW9uLmRlbGV0ZS1xdWV1ZS1jb21tYW5kJyxcbiAgREVMRVRFX1NZTkNfU0NPUEU6ICdhY3Rpb24uZGVsZXRlLXN5bmMtc2NvcGUnLFxuICBERUxFVEVfU1lOQ19TVEFUVVM6ICdhY3Rpb24uZGVsZXRlLXN5bmMtc3RhdHVzJyxcbiAgRVhFQ1VURV9BQ1RJT046ICdhY3Rpb24uZXhlY3V0ZS1hY3Rpb24nLFxuICBFWEVDVVRFX0VOVElUSUVTOiAnYWN0aW9uLmV4ZWN1dGUtZW50aXRpZXMnLFxuICBFWEVDVVRFX0VOVElUWTogJ2FjdGlvbi5leGVjdXRlLWVudGl0eScsXG4gIEVYRUNVVEVfU1FMOiAnYWN0aW9uLmV4ZWN1dGUtc3FsJyxcbiAgRVZBTFVBVEU6ICdhY3Rpb24uZXZhbHVhdGUnLFxuICBGSU5EX1JFUExBQ0U6ICdhY3Rpb24uZmluZC1yZXBsYWNlJyxcbiAgR0VORVJBVEVfRklMRTogJ2FjdGlvbi5nZW5lcmF0ZS1maWxlJyxcbiAgR0VORVJBVEVfUERGOiAnYWN0aW9uLmdlbmVyYXRlLXBkZicsXG4gIEdPX0JBQ0s6ICdhY3Rpb24uZ28tYmFjaycsXG4gIEdPX1RPOiAnYWN0aW9uLmdvLXRvJyxcbiAgSU5GT19NT0RBTDogJ2FjdGlvbi5pbmZvLW1vZGFsJyxcbiAgT1BFTl9BUFBfU0VUVElOR1M6ICdhY3Rpb24ub3Blbi1hcHAtc2V0dGluZ3MnLFxuICBPUEVOX01BUDogJ2FjdGlvbi5vcGVuLW1hcCcsXG4gIE9QRU5fTUVESUFfUElDS0VSOiAnYWN0aW9uLm9wZW4tbWVkaWEtcGlja2VyJyxcbiAgT1BFTl9TQ0FOTkVSOiAnYWN0aW9uLm9wZW4tc2Nhbm5lcicsXG4gIE9QRU5fVVJMOiAnYWN0aW9uLm9wZW4tdXJsJyxcbiAgUFJJTlQ6ICdhY3Rpb24ucHJpbnQnLFxuICBSRVNFVF9DT01QT05FTlRfU1RBVEU6ICdhY3Rpb24ucmVzZXQtY29tcG9uZW50LXN0YXRlJyxcbiAgUkVTRVRfSklHX1NUQVRFOiAnYWN0aW9uLnJlc2V0LWppZy1zdGF0ZScsXG4gIFJFU0VUX1NPTFVUSU9OX1NUQVRFOiAnYWN0aW9uLnJlc2V0LXNvbHV0aW9uLXN0YXRlJyxcbiAgUkVTRVRfU1RBVEU6ICdhY3Rpb24ucmVzZXQtc3RhdGUnLFxuICBSRVRSWV9RVUVVRV9DT01NQU5EOiAnYWN0aW9uLnJldHJ5LXF1ZXVlLWNvbW1hbmQnLFxuICBTRVRfQUNUSVZFX1RBQjogJ2FjdGlvbi5zZXQtYWN0aXZlLXRhYicsXG4gIFNFVF9KSUdfU1RBVEU6ICdhY3Rpb24uc2V0LWppZy1zdGF0ZScsXG4gIFNFVF9TT0xVVElPTl9TVEFURTogJ2FjdGlvbi5zZXQtc29sdXRpb24tc3RhdGUnLFxuICBTRVRfU1RBVEU6ICdhY3Rpb24uc2V0LXN0YXRlJyxcbiAgU0hBUkU6ICdhY3Rpb24uc2hhcmUnLFxuICBTSE9XX0FMRVJUOiAnYWN0aW9uLnNob3ctYWxlcnQnLFxuICBTVEFSVF9MT0NBVElPTl9TSEFSSU5HOiAnYWN0aW9uLnN0YXJ0LWxvY2F0aW9uLXNoYXJpbmcnLFxuICBTVEFSVF9TWU5DX1NDT1BFOiAnYWN0aW9uLnN0YXJ0LXN5bmMtc2NvcGUnLFxuICBTVE9QX0xPQ0FUSU9OX1NIQVJJTkc6ICdhY3Rpb24uc3RvcC1sb2NhdGlvbi1zaGFyaW5nJyxcbiAgU1VCTUlUX0ZPUk06ICdhY3Rpb24uc3VibWl0LWZvcm0nLFxuICBTWU5DX0VOVElUSUVTOiAnYWN0aW9uLnN5bmMtZW50aXRpZXMnLFxuICBVUERBVEVfUFJPRklMRTogJ2FjdGlvbi51cGRhdGUtcHJvZmlsZScsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBBY3Rpb25UeXBlU2NoZW1hID0gei5lbnVtKEFDVElPTl9UWVBFLCB7XG4gIGVycm9yOiBgTXVzdCBiZSBvbmUgb2Y6ICR7T2JqZWN0LnZhbHVlcyhBQ1RJT05fVFlQRSkuam9pbignLCAnKX1gLFxufSlcblxuLyoqXG4gKiBBY3Rpb24gdHlwZSBlbnVtZXJhdGlvbi5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9BY3Rpb25UeXBlXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGUgPSB6LmluZmVyPHR5cGVvZiBBY3Rpb25UeXBlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgRGF0YWJhc2VJZFNjaGVtYSA9IHpcbiAgLmxpdGVyYWwoJ2RlZmF1bHQnKVxuICAvLy5icmFuZDwnRGF0YWJhc2VJZCc+KClcbiAgLmRlc2NyaWJlKCdOYW1lIG9mIGRhdGFiYXNlLiBBbHdheXMgbmFtZWQgYGRlZmF1bHRgLicpXG5cbi8qKlxuICogRGF0YWJhc2UgaWRlbnRpZmllci4gQWx3YXlzICdkZWZhdWx0Jy5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9EYXRhYmFzZUlkXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFiYXNlSWQgPSB6LmluZmVyPHR5cGVvZiBEYXRhYmFzZUlkU2NoZW1hPlxuXG4vKipcbiAqIENoZWNrcyBpZiB2YWx1ZSBpcyB2YWxpZCBEYXRhYmFzZUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhYmFzZUlkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRGF0YWJhc2VJZCB7XG4gIHJldHVybiBEYXRhYmFzZUlkU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBEYXRhYmFzZUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRhYmFzZUlkKHZhbHVlOiBzdHJpbmcpOiBEYXRhYmFzZUlkIHtcbiAgcmV0dXJuIERhdGFiYXNlSWRTY2hlbWEucGFyc2UodmFsdWUpXG59XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0RGF0YWJhc2VJZDogRGF0YWJhc2VJZCA9IHRvRGF0YWJhc2VJZCgnZGVmYXVsdCcpXG5cbi8vIGNvbnN0IERhdGFUYWJsZXNTY2hlbWEgPSB6LnJlY29yZChUYWJsZU5hbWVTY2hlbWEsIHoubnVsbCgpKVxuXG4vLyBleHBvcnQgY29uc3QgRGF0YWJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4vLyAgIGRhdGFiYXNlSWQ6IERhdGFiYXNlSWRTY2hlbWEsXG4vLyAgIHRhYmxlczogRGF0YVRhYmxlc1NjaGVtYVxuLy8gfSlcblxuLy8gZXhwb3J0IHR5cGUgRGF0YWJhc2UgPSB6LmluZmVyPHR5cGVvZiBEYXRhYmFzZVNjaGVtYT5cblxuLy8gZXhwb3J0IGNvbnN0IERhdGFiYXNlc1NjaGVtYSA9IHoub2JqZWN0KHtcbi8vICAgZGVmYXVsdDogRGF0YWJhc2VTY2hlbWFcbi8vIH0pXG5cbi8vIGV4cG9ydCB0eXBlIERhdGFiYXNlcyA9IHouaW5mZXI8dHlwZW9mIERhdGFiYXNlc1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IERhdGFzb3VyY2VJZFNjaGVtYSA9IENvbW1vbk5hbWVNaXhlZFNjaGVtYS5taW4oMSwgJ1JlcXVpcmVkJylcbi8vLmJyYW5kPCdEYXRhc291cmNlSWQnPigpXG5cbi8qKlxuICogRGF0YXNvdXJjZSBpZGVudGlmaWVyLiBNaXhlZC1jYXNlIDItNTAgY2hhcnMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvRGF0YXNvdXJjZUlkXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFzb3VyY2VJZCA9IHouaW5mZXI8dHlwZW9mIERhdGFzb3VyY2VJZFNjaGVtYT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgRGF0YXNvdXJjZUlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhc291cmNlSWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRhc291cmNlSWQge1xuICByZXR1cm4gRGF0YXNvdXJjZUlkU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHZhbHVlIHRvIERhdGFzb3VyY2VJZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0YXNvdXJjZUlkKHZhbHVlOiB1bmtub3duKTogRGF0YXNvdXJjZUlkIHtcbiAgcmV0dXJuIERhdGFzb3VyY2VJZFNjaGVtYS5wYXJzZSh2YWx1ZSlcbn1cblxuZXhwb3J0IGNvbnN0IERBVEFTT1VSQ0VfVFlQRSA9IHtcbiAgU1FMSVRFOiAnZGF0YXNvdXJjZS5zcWxpdGUnLFxuICBTVEFUSUM6ICdkYXRhc291cmNlLnN0YXRpYycsXG4gIFNZU1RFTTogJ2RhdGFzb3VyY2Uuc3lzdGVtJyxcbiAgUkVGRVJFTkNFOiAnZGF0YXNvdXJjZS5yZWZlcmVuY2UnLFxufSBhcyBjb25zdFxuXG5jb25zdCBEQVRBU09VUkNFX1RZUEVTID0gT2JqZWN0LnZhbHVlcyhEQVRBU09VUkNFX1RZUEUpXG5leHBvcnQgY29uc3QgRGF0YXNvdXJjZVR5cGVFbnVtID0gei5lbnVtKERBVEFTT1VSQ0VfVFlQRVMsIHtcbiAgZXJyb3I6IGBNdXN0IGJlIG9uZSBvZjogJHtEQVRBU09VUkNFX1RZUEVTLmpvaW4oJywgJyl9YCxcbn0pXG5cbi8qKlxuICogRGF0YXNvdXJjZSB0eXBlIGVudW1lcmF0aW9uLlxuICogQHNlZSAjL2RlZmluaXRpb25zL0RhdGFzb3VyY2VUeXBlXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFzb3VyY2VUeXBlID0gei5pbmZlcjx0eXBlb2YgRGF0YXNvdXJjZVR5cGVFbnVtPlxuXG5leHBvcnQgY29uc3QgRnVuY3Rpb25JZFNjaGVtYSA9IENvbW1vbk5hbWVNaXhlZFNjaGVtYS5taW4oMSwgJ1JlcXVpcmVkJykgLy8uYnJhbmQ8J0Z1bmN0aW9uSWQnPigpXG5cbi8qKlxuICogRnVuY3Rpb24gaWRlbnRpZmllci4gTWl4ZWQtY2FzZSAyLTUwIGNoYXJzLlxuICogQHNlZSAjL2RlZmluaXRpb25zL0Z1bmN0aW9uSWREZWZpbml0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uSWQgPSB6LmluZmVyPHR5cGVvZiBGdW5jdGlvbklkU2NoZW1hPlxuXG4vKipcbiAqIENoZWNrcyBpZiB2YWx1ZSBpcyB2YWxpZCBGdW5jdGlvbklkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbklkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRnVuY3Rpb25JZCB7XG4gIHJldHVybiBGdW5jdGlvbklkU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHZhbHVlIHRvIEZ1bmN0aW9uSWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Z1bmN0aW9uSWQodmFsdWU6IHVua25vd24pOiBGdW5jdGlvbklkIHtcbiAgcmV0dXJuIEZ1bmN0aW9uSWRTY2hlbWEucGFyc2UodmFsdWUpXG59XG5cbi8qKlxuICogRGF0YSBwcm92aWRlciB0eXBlIGNvbnN0YW50cyBmb3IgZXhlY3V0ZSBhY3Rpb25zLlxuICovXG5leHBvcnQgY29uc3QgREFUQV9QUk9WSURFUiA9IHtcbiAgT05FRFJJVkU6ICdEQVRBX1BST1ZJREVSX09ORURSSVZFJyxcbiAgU0FMRVNGT1JDRTogJ0RBVEFfUFJPVklERVJfU0FMRVNGT1JDRScsXG4gIFNRTDogJ0RBVEFfUFJPVklERVJfU1FMJyxcbiAgUkVTVDogJ0RBVEFfUFJPVklERVJfUkVTVCcsXG4gIFNPQVA6ICdEQVRBX1BST1ZJREVSX1NPQVAnLFxuICBEWU5BTUlDOiAnREFUQV9QUk9WSURFUl9EWU5BTUlDJyxcbiAgTE9DQUw6ICdEQVRBX1BST1ZJREVSX0xPQ0FMJyxcbiAgRFlOQU1JQ19GSUxFOiAnREFUQV9QUk9WSURFUl9EWU5BTUlDX0ZJTEUnLFxufSBhcyBjb25zdFxuXG5jb25zdCBEQVRBX1BST1ZJREVSUyA9IE9iamVjdC52YWx1ZXMoREFUQV9QUk9WSURFUilcbmV4cG9ydCBjb25zdCBEYXRhUHJvdmlkZXJFbnVtID0gei5lbnVtKERBVEFfUFJPVklERVJTLCB7XG4gIGVycm9yOiBgTXVzdCBiZSBvbmUgb2Y6ICR7REFUQV9QUk9WSURFUlMuam9pbignLCAnKX1gLFxufSlcblxuLyoqXG4gKiBEYXRhIHByb3ZpZGVyIHR5cGUgZW51bWVyYXRpb24uXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvUHJvdmlkZXJUeXBlXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFQcm92aWRlciA9IHouaW5mZXI8dHlwZW9mIERhdGFQcm92aWRlckVudW0+XG5cbi8qKlxuICogQ2hlY2tzIGlmIHZhbHVlIGlzIHZhbGlkIERhdGFQcm92aWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YVByb3ZpZGVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRGF0YVByb3ZpZGVyIHtcbiAgcmV0dXJuIERhdGFQcm92aWRlckVudW0uc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbmV4cG9ydCBjb25zdCBDb21tb25OYW1lTG93ZXIgPSB6XG4gIC5zdHJpbmcoKVxuICAucmVnZXgoXG4gICAgL15bYS16XVthLXowLTlfLV17MCw0OH1bYS16MC05XSQvLFxuICAgICdMb3dlcmNhc2UgMi01MCwgcHJlZmVyIGtlYmFiLWNhc2UsIHN0YXJ0cyBhbHBoYSwgY29udGFpbnMgYWxwaGFudW0gYW5kIGAtYCwgZW5kcyBhbHBoYW51bS4nLFxuICApXG5cbi8qKlxuICogTG93ZXJjYXNlIGlkZW50aWZpZXIuIDItNTAgY2hhcnMsIHN0YXJ0cyB3aXRoIGxldHRlciwgY29udGFpbnMgbGV0dGVycy9udW1iZXJzL3VuZGVyc2NvcmUvaHlwaGVuLlxuICovXG5leHBvcnQgdHlwZSBDb21tb25OYW1lTG93ZXIgPSB6LmluZmVyPHR5cGVvZiBDb21tb25OYW1lTG93ZXI+XG5cbmV4cG9ydCBjb25zdCBDb21tb25OYW1lID0gelxuICAuc3RyaW5nKClcbiAgLnJlZ2V4KFxuICAgIC9eW2EtekEtWl1bYS16QS1aMC05Xy1dezAsNDh9W2EtekEtWjAtOV0kLyxcbiAgICAnMi01MCBjaGFycywgc3RhcnRzIHdpdGggbGV0dGVyLCBjb250YWlucyBsZXR0ZXJzL251bWJlcnMvdW5kZXJzY29yZS9oeXBoZW4uJyxcbiAgKVxuXG4vKipcbiAqIDItNTAgY2hhcnMsIHN0YXJ0cyB3aXRoIGxldHRlciwgY29udGFpbnMgbGV0dGVycy9udW1iZXJzL3VuZGVyc2NvcmUvaHlwaGVuLlxuICovXG5leHBvcnQgdHlwZSBDb21tb25OYW1lID0gei5pbmZlcjx0eXBlb2YgQ29tbW9uTmFtZT5cblxuLyoqXG4gKiBNYXAgb2YgbG93ZXJjYXNlIG5hbWVzIHRvIGV4cHJlc3Npb25zLlxuICovXG5leHBvcnQgY29uc3QgRXhwcmVzc2lvbnNTY2hlbWEgPSB6LnJlY29yZChDb21tb25OYW1lTG93ZXIsIEV4cHJlc3Npb25TY2hlbWEpLmRlZmF1bHQoe30pXG5cbmV4cG9ydCBjb25zdCBJbnB1dEV4cHJlc3Npb25zU2NoZW1hID0gelxuICAucmVjb3JkKENvbW1vbk5hbWVMb3dlciwgei51bmlvbihbUHJpbWl0aXZlU2NoZW1hLCBFeHByZXNzaW9uU2NoZW1hLCB6LmFueSgpXSkpXG4gIC5kZXNjcmliZSgnTmFtZWQgSW5wdXRzIHdpdGggdmFsdWVzIG9yIGV4cHJlc3Npb25zJylcblxuLyoqXG4gKiBNYXAgb2YgbG93ZXJjYXNlIG5hbWVzIHRvIHByaW1pdGl2ZSB2YWx1ZXMgb3IgZXhwcmVzc2lvbnMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvSW5wdXRFeHByZXNzaW9uc1xuICovXG5leHBvcnQgdHlwZSBJbnB1dEV4cHJlc3Npb25zID0gei5pbmZlcjx0eXBlb2YgSW5wdXRFeHByZXNzaW9uc1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFBhcmFtZXRlckV4cHJlc3Npb25zU2NoZW1hID0gelxuICAucmVjb3JkKFxuICAgIFBhcmFtZXRlck5hbWVEb2xsYXJTY2hlbWEsXG4gICAgLy8gZGlmZmVyZW5jZSBmcm9tIG1vYmlsZS1ydW50aW1lIHNjaGVtYXMsIGJ1dCBydW50aW1lIHN1cHBvcnRzIG9iamVjdCBhcyBwYXJhbWV0ZXIgdmFsdWVcbiAgICB6LnVuaW9uKFtQcmltaXRpdmVPckV4cHJlc3Npb25TY2hlbWEsIHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKV0pLFxuICApXG4gIC5kZXNjcmliZSgnTmFtZWQgcGFyYW1ldGVycyB3aXRoIHZhbHVlcywgZXhwcmVzc2lvbnMsIG9yIG9iamVjdHMnKVxuXG4vKipcbiAqIE1hcCBvZiBwYXJhbWV0ZXIgbmFtZXMgKHdpdGggJCkgdG8gcHJpbWl0aXZlIHZhbHVlcywgZXhwcmVzc2lvbnMsIG9yIG9iamVjdHMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvUGFyYW1ldGVyRXhwcmVzc2lvbnNcbiAqL1xuZXhwb3J0IHR5cGUgUGFyYW1ldGVyRXhwcmVzc2lvbnMgPSB6LmluZmVyPHR5cGVvZiBQYXJhbWV0ZXJFeHByZXNzaW9uc1NjaGVtYT5cblxuY29uc3QgQmFzaWNDb2xvclNjaGVtYSA9IHouZW51bShbXG4gICdjb2xvcjEnLFxuICAnY29sb3IyJyxcbiAgJ2NvbG9yMycsXG4gICdjb2xvcjQnLFxuICAnY29sb3I1JyxcbiAgJ2NvbG9yNicsXG4gICdjb2xvcjcnLFxuICAnY29sb3I4JyxcbiAgJ2NvbG9yOScsXG4gICdjb2xvcjEwJyxcbiAgJ2NvbG9yMTEnLFxuICAnY29sb3IxMicsXG4gICdjb2xvcjEzJyxcbiAgJ2NvbG9yMTQnLFxuXSlcblxuLyoqXG4gKiBCYXNpYyBjb2xvciBwYWxldHRlOiBjb2xvcjEgdGhyb3VnaCBjb2xvcjE0LlxuICogQHNlZSAjL2RlZmluaXRpb25zL0Jhc2ljQ29sb3JcbiAqL1xuLy8gZXhwb3J0IHR5cGUgQmFzaWNDb2xvciA9IHouaW5mZXI8dHlwZW9mIEJhc2ljQ29sb3JTY2hlbWE+XG5cbmNvbnN0IFN0YXR1c0NvbG9yU2NoZW1hID0gei5lbnVtKFsncG9zaXRpdmUnLCAnbmVnYXRpdmUnLCAnd2FybmluZyddKVxuXG4vKipcbiAqIFN0YXR1cyBjb2xvcjogcG9zaXRpdmUsIG5lZ2F0aXZlLCBvciB3YXJuaW5nLlxuICogQHNlZSAjL2RlZmluaXRpb25zL1N0YXR1c0NvbG9yXG4gKi9cbi8vIGV4cG9ydCB0eXBlIFN0YXR1c0NvbG9yID0gei5pbmZlcjx0eXBlb2YgU3RhdHVzQ29sb3JTY2hlbWE+XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmNvbnN0IENvbXBvbmVudENvbG9yU2NoZW1hID0gei51bmlvbihbQmFzaWNDb2xvclNjaGVtYSwgU3RhdHVzQ29sb3JTY2hlbWFdKVxuXG4vKipcbiAqIENvbXBvbmVudCBjb2xvci4gQmFzaWMgcGFsZXR0ZSBvciBzdGF0dXMgY29sb3IuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvQ29tcG9uZW50Q29sb3JcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50Q29sb3IgPSB6LmluZmVyPHR5cGVvZiBDb21wb25lbnRDb2xvclNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IENvbG9yVmFsdWVTY2hlbWEgPSB6LnVuaW9uKFtcbiAgei5saXRlcmFsKCdwcmltYXJ5JyksXG4gIEJhc2ljQ29sb3JTY2hlbWEsXG4gIFN0YXR1c0NvbG9yU2NoZW1hLFxuICBFeHByZXNzaW9uU2NoZW1hLFxuXSlcblxuLyoqXG4gKiBDb2xvciB2YWx1ZSBzdHJpbmcuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvQ29sb3JWYWx1ZVxuICovXG5leHBvcnQgdHlwZSBDb2xvclZhbHVlID0gei5pbmZlcjx0eXBlb2YgQ29sb3JWYWx1ZVNjaGVtYT5cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ29sb3JWYWx1ZSh2YWx1ZTogdW5rbm93bik6IENvbG9yVmFsdWUge1xuICByZXR1cm4gQ29sb3JWYWx1ZVNjaGVtYS5wYXJzZSh2YWx1ZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ29sb3JWYWx1ZU9yQ29uZGl0aW9ucyh2YWx1ZTogdW5rbm93bik6IENvbG9yVmFsdWVPckNvbmRpdGlvbnMge1xuICByZXR1cm4gQ29sb3JWYWx1ZU9yQ29uZGl0aW9uc1NjaGVtYS5wYXJzZSh2YWx1ZSlcbn1cblxuZXhwb3J0IGNvbnN0IENvbG9yQ29uZGl0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICB3aGVuOiB6LnVuaW9uKFt6LnN0cmluZygpLCB6LmJvb2xlYW4oKV0pLFxuICBjb2xvcjogQ29sb3JWYWx1ZVNjaGVtYSxcbn0pXG5cbi8qKlxuICogQ29sb3IgY29uZGl0aW9uIHdpdGggd2hlbiBjbGF1c2UgYW5kIGNvbG9yIHZhbHVlLlxuICogQHNlZSAjL2RlZmluaXRpb25zL0NvbG9yQ29uZGl0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENvbG9yQ29uZGl0aW9uID0gei5pbmZlcjx0eXBlb2YgQ29sb3JDb25kaXRpb25TY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBDb2xvclZhbHVlT3JDb25kaXRpb25zU2NoZW1hID0gelxuICAudW5pb24oW0NvbG9yVmFsdWVTY2hlbWEsIHouYXJyYXkoQ29sb3JDb25kaXRpb25TY2hlbWEpXSlcbiAgLmRlc2NyaWJlKCdDb2xvciBkZWZpbml0aW9uIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIGNvbmRpdGlvbnMgb3IgYSBzaW5nbGUgY29sb3IgdmFsdWUnKVxuXG4vKipcbiAqIENvbG9yIHZhbHVlIG9yIGFycmF5IG9mIGNvbG9yIGNvbmRpdGlvbnMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvQ29sb3JWYWx1ZU9yQ29uZGl0aW9uc1xuICovXG5leHBvcnQgdHlwZSBDb2xvclZhbHVlT3JDb25kaXRpb25zID0gei5pbmZlcjx0eXBlb2YgQ29sb3JWYWx1ZU9yQ29uZGl0aW9uc1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IEppZ1ByZXZpZXdDb25maWd1cmF0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICB0aXRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdQcmV2aWV3IHRpdGxlJyksXG4gIHN1YnRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1ByZXZpZXcgc3VidGl0bGUnKSxcbiAgaW1hZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnUHJldmlldyBpbWFnZSBVUkwnKSxcbn0pXG5cbi8qKlxuICogSmlnIHByZXZpZXcgd2l0aCB0aXRsZSwgc3VidGl0bGUsIGFuZCBpbWFnZS5cbiAqL1xuZXhwb3J0IHR5cGUgSmlnUHJldmlld1R5cGUgPSB6LmluZmVyPHR5cGVvZiBKaWdQcmV2aWV3Q29uZmlndXJhdGlvblNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFBhbGV0dGVDb2xvclNjaGVtYSA9IHouZW51bShbXG4gICdlbGVtZW50JyxcbiAgJ2JhY2tncm91bmQnLFxuICAnb25CYWNrZ3JvdW5kJyxcbiAgJ3NjcmVlbicsXG4gICdjYXJkJyxcbiAgJ2NvbG9yMTAnLFxuICAnY29sb3IxMScsXG4gICdjb2xvcjEyJyxcbiAgJ2NvbG9yMTMnLFxuICAnY29sb3IxNCcsXG4gICdjb2xvcjEnLFxuICAnY29sb3IyJyxcbiAgJ2NvbG9yMycsXG4gICdjb2xvcjQnLFxuICAnY29sb3I1JyxcbiAgJ2NvbG9yNicsXG4gICdjb2xvcjcnLFxuICAnY29sb3I4JyxcbiAgJ2NvbG9yOScsXG4gICdvdmVybGF5JyxcbiAgJ29uT3ZlcmxheScsXG4gICdsaW5rJyxcbiAgJ25hdmlnYXRpb24nLFxuICAnb25OYXZpZ2F0aW9uJyxcbiAgJ25lZ2F0aXZlJyxcbiAgJ29uU2NyZWVuJyxcbiAgJ29uQ2FyZCcsXG4gICdvbkNvbG9yMTAnLFxuICAnb25Db2xvcjExJyxcbiAgJ29uQ29sb3IxMicsXG4gICdvbkNvbG9yMTMnLFxuICAnb25Db2xvcjE0JyxcbiAgJ29uQ29sb3IxJyxcbiAgJ29uQ29sb3IyJyxcbiAgJ29uQ29sb3IzJyxcbiAgJ29uQ29sb3I0JyxcbiAgJ29uQ29sb3I1JyxcbiAgJ29uQ29sb3I2JyxcbiAgJ29uQ29sb3I3JyxcbiAgJ29uQ29sb3I4JyxcbiAgJ29uQ29sb3I5JyxcbiAgJ29uRWxlbWVudCcsXG4gICdvbk5lZ2F0aXZlJyxcbiAgJ29uUG9zaXRpdmUnLFxuICAnb25QcmltYXJ5JyxcbiAgJ29uU2Vjb25kYXJ5JyxcbiAgJ29uU3BsYXNoJyxcbiAgJ29uVG9hc3QnLFxuICAnb25XYXJuaW5nJyxcbiAgJ3Bvc2l0aXZlJyxcbiAgJ3ByaW1hcnknLFxuICAnc2Vjb25kYXJ5JyxcbiAgJ3NwbGFzaCcsXG4gICd0b2FzdCcsXG4gICd0cmFuc3BhcmVudCcsXG4gICd3YXJuaW5nJyxcbl0pXG5cbi8qKlxuICogRnVsbCBwYWxldHRlIGNvbG9yIGluY2x1ZGluZyBzZW1hbnRpYyBhbmQgbnVtYmVyZWQgY29sb3JzLlxuICogQHNlZSAjL2RlZmluaXRpb25zL1BhbGV0dGVDb2xvclxuICovXG5leHBvcnQgdHlwZSBQYWxldHRlQ29sb3IgPSB6LmluZmVyPHR5cGVvZiBQYWxldHRlQ29sb3JTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBUZXh0TnVtYmVyU3R5bGVTY2hlbWEgPSB6LmVudW0oWydkZWNpbWFsJywgJ2N1cnJlbmN5JywgJ3BlcmNlbnQnLCAndW5pdCddKVxuZXhwb3J0IHR5cGUgVGV4dE51bWJlclN0eWxlID0gei5pbmZlcjx0eXBlb2YgVGV4dE51bWJlclN0eWxlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgVGV4dFNpZ25EaXNwbGF5U2NoZW1hID0gei5lbnVtKFsnYXV0bycsICdhbHdheXMnLCAnbmV2ZXInXSlcbmV4cG9ydCB0eXBlIFRleHRTaWduRGlzcGxheSA9IHouaW5mZXI8dHlwZW9mIFRleHRTaWduRGlzcGxheVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFRleHRVbml0RGlzcGxheVNjaGVtYSA9IHouZW51bShbJ2xvbmcnLCAnc2hvcnQnLCAnbmFycm93J10pXG5leHBvcnQgdHlwZSBUZXh0VW5pdERpc3BsYXkgPSB6LmluZmVyPHR5cGVvZiBUZXh0VW5pdERpc3BsYXlTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBUZXh0TnVtYmVyaW5nU3lzdGVtU2NoZW1hID0gei5lbnVtKFtcbiAgJ2FyYWInLFxuICAnYXJhYmV4dCcsXG4gICdiYWxpJyxcbiAgJ2JlbmcnLFxuICAnZGV2YScsXG4gICdmdWxsd2lkZScsXG4gICdndWpyJyxcbiAgJ2d1cnUnLFxuICAnaGFuaWRlYycsXG4gICdraG1yJyxcbiAgJ2tuZGEnLFxuICAnbGFvbycsXG4gICdsYXRuJyxcbiAgJ2xpbWInLFxuICAnbWx5bScsXG4gICdtb25nJyxcbiAgJ215bXInLFxuICAnb3J5YScsXG4gICd0YW1sZGVjJyxcbiAgJ3RlbHUnLFxuICAndGhhaScsXG4gICd0aWJ0Jyxcbl0pXG5leHBvcnQgdHlwZSBUZXh0TnVtYmVyaW5nU3lzdGVtID0gei5pbmZlcjx0eXBlb2YgVGV4dE51bWJlcmluZ1N5c3RlbVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFRleHROb3RhdGlvblNjaGVtYSA9IHouZW51bShbJ3N0YW5kYXJkJywgJ3NjaWVudGlmaWMnLCAnZW5naW5lZXJpbmcnLCAnY29tcGFjdCddKVxuZXhwb3J0IHR5cGUgVGV4dE5vdGF0aW9uID0gei5pbmZlcjx0eXBlb2YgVGV4dE5vdGF0aW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgVGV4dENvbXBhY3REaXNwbGF5U2NoZW1hID0gei5lbnVtKFsnc2hvcnQnLCAnbG9uZyddKVxuZXhwb3J0IHR5cGUgVGV4dENvbXBhY3REaXNwbGF5ID0gei5pbmZlcjx0eXBlb2YgVGV4dENvbXBhY3REaXNwbGF5U2NoZW1hPlxuXG5leHBvcnQgY29uc3QgVGV4dEN1cnJlbmN5RGlzcGxheVNjaGVtYSA9IHouZW51bShbJ3N5bWJvbCcsICdjb2RlJywgJ25hbWUnLCAnbmFycm93U3ltYm9sJ10pXG5leHBvcnQgdHlwZSBUZXh0Q3VycmVuY3lEaXNwbGF5ID0gei5pbmZlcjx0eXBlb2YgVGV4dEN1cnJlbmN5RGlzcGxheVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFRleHRDdXJyZW5jeVNpZ25TY2hlbWEgPSB6LmVudW0oWydzdGFuZGFyZCcsICdhY2NvdW50aW5nJ10pXG5leHBvcnQgdHlwZSBUZXh0Q3VycmVuY3lTaWduID0gei5pbmZlcjx0eXBlb2YgVGV4dEN1cnJlbmN5U2lnblNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFRleHREYXRlRm9ybWF0U2NoZW1hID0gei51bmlvbihbei5zdHJpbmcoKSwgei5lbnVtKFsnZGVmYXVsdCcsICdmcm9tTm93JywgJ3RvTm93J10pXSlcbmV4cG9ydCB0eXBlIFRleHREYXRlRm9ybWF0ID0gei5pbmZlcjx0eXBlb2YgVGV4dERhdGVGb3JtYXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBDdXJyZW5jeUNvZGVzU2NoZW1hID0gei5lbnVtKFtcbiAgJ0FFRCcsIC8vICdVbml0ZWQgQXJhYiBFbWlyYXRlcyBEaXJoYW0nXG4gICdBRk4nLCAvLyAnQWZnaGFuIEFmZ2hhbmknXG4gICdBTEwnLCAvLyAnQWxiYW5pYW4gTGVrJ1xuICAnQU1EJywgLy8gJ0FybWVuaWFuIERyYW0nXG4gICdBTkcnLCAvLyAnTmV0aGVybGFuZHMgQW50aWxsZWFuIEd1aWxkZXInXG4gICdBT0EnLCAvLyAnQW5nb2xhbiBLd2FuemEnXG4gICdBUlMnLCAvLyAnQXJnZW50aW5lIFBlc28nXG4gICdBVUQnLCAvLyAnQXVzdHJhbGlhbiBEb2xsYXInXG4gICdBV0cnLCAvLyAnQXJ1YmFuIEZsb3JpbidcbiAgJ0FaTicsIC8vICdBemVyYmFpamFuaSBNYW5hdCdcbiAgJ0JBTScsIC8vICdCb3NuaWEtSGVyemVnb3ZpbmEgQ29udmVydGlibGUgTWFyaydcbiAgJ0JCRCcsIC8vICdCYXJiYWRpYW4gRG9sbGFyJ1xuICAnQkRUJywgLy8gJ0JhbmdsYWRlc2hpIFRha2EnXG4gICdCR04nLCAvLyAnQnVsZ2FyaWFuIExldidcbiAgJ0JIRCcsIC8vICdCYWhyYWluaSBEaW5hcidcbiAgJ0JJRicsIC8vICdCdXJ1bmRpYW4gRnJhbmMnXG4gICdCTUQnLCAvLyAnQmVybXVkaWFuIERvbGxhcidcbiAgJ0JORCcsIC8vICdCcnVuZWkgRG9sbGFyJ1xuICAnQk9CJywgLy8gJ0JvbGl2aWFuIEJvbGl2aWFubydcbiAgJ0JSTCcsIC8vICdCcmF6aWxpYW4gUmVhbCdcbiAgJ0JTRCcsIC8vICdCYWhhbWlhbiBEb2xsYXInXG4gICdCVE4nLCAvLyAnQmh1dGFuZXNlIE5ndWx0cnVtJ1xuICAnQldQJywgLy8gJ0JvdHN3YW5hbiBQdWxhJ1xuICAnQllOJywgLy8gJ0JlbGFydXNpYW4gUnVibGUnXG4gICdCWkQnLCAvLyAnQmVsaXplIERvbGxhcidcbiAgJ0NBRCcsIC8vICdDYW5hZGlhbiBEb2xsYXInXG4gICdDREYnLCAvLyAnQ29uZ29sZXNlIEZyYW5jJ1xuICAnQ0hGJywgLy8gJ1N3aXNzIEZyYW5jJ1xuICAnQ0xQJywgLy8gJ0NoaWxlYW4gUGVzbydcbiAgJ0NOWScsIC8vICdDaGluZXNlIFl1YW4nXG4gICdDT1AnLCAvLyAnQ29sb21iaWFuIFBlc28nXG4gICdDUkMnLCAvLyAnQ29zdGEgUmljYW4gQ29sw7NuJ1xuICAnQ1VQJywgLy8gJ0N1YmFuIFBlc28nXG4gICdDVkUnLCAvLyAnQ2FwZSBWZXJkZWFuIEVzY3VkbydcbiAgJ0NaSycsIC8vICdDemVjaCBLb3J1bmEnXG4gICdESkYnLCAvLyAnRGppYm91dGlhbiBGcmFuYydcbiAgJ0RLSycsIC8vICdEYW5pc2ggS3JvbmUnXG4gICdET1AnLCAvLyAnRG9taW5pY2FuIFBlc28nXG4gICdEWkQnLCAvLyAnQWxnZXJpYW4gRGluYXInXG4gICdFR1AnLCAvLyAnRWd5cHRpYW4gUG91bmQnXG4gICdFUk4nLCAvLyAnRXJpdHJlYW4gTmFrZmEnXG4gICdFVEInLCAvLyAnRXRoaW9waWFuIEJpcnInXG4gICdFVVInLCAvLyAnRXVybydcbiAgJ0ZKRCcsIC8vICdGaWppYW4gRG9sbGFyJ1xuICAnRktQJywgLy8gJ0ZhbGtsYW5kIElzbGFuZHMgUG91bmQnXG4gICdGT0snLCAvLyAnRmFyb2VzZSBLcsOzbmEnXG4gICdHQlAnLCAvLyAnQnJpdGlzaCBQb3VuZCBTdGVybGluZydcbiAgJ0dFTCcsIC8vICdHZW9yZ2lhbiBMYXJpJ1xuICAnR0dQJywgLy8gJ0d1ZXJuc2V5IFBvdW5kJ1xuICAnR0hTJywgLy8gJ0doYW5haWFuIENlZGknXG4gICdHSVAnLCAvLyAnR2licmFsdGFyIFBvdW5kJ1xuICAnR01EJywgLy8gJ0dhbWJpYW4gRGFsYXNpJ1xuICAnR05GJywgLy8gJ0d1aW5lYW4gRnJhbmMnXG4gICdHVFEnLCAvLyAnR3VhdGVtYWxhbiBRdWV0emFsJ1xuICAnR1lEJywgLy8gJ0d1eWFuYWVzZSBEb2xsYXInXG4gICdIS0QnLCAvLyAnSG9uZyBLb25nIERvbGxhcidcbiAgJ0hOTCcsIC8vICdIb25kdXJhbiBMZW1waXJhJ1xuICAnSFJLJywgLy8gJ0Nyb2F0aWFuIEt1bmEnXG4gICdIVEcnLCAvLyAnSGFpdGlhbiBHb3VyZGUnXG4gICdIVUYnLCAvLyAnSHVuZ2FyaWFuIEZvcmludCdcbiAgJ0lEUicsIC8vICdJbmRvbmVzaWFuIFJ1cGlhaCdcbiAgJ0lMUycsIC8vICdJc3JhZWxpIE5ldyBTaGVrZWwnXG4gICdJTVAnLCAvLyAnSXNsZSBvZiBNYW4gUG91bmQnXG4gICdJTlInLCAvLyAnSW5kaWFuIFJ1cGVlJ1xuICAnSVFEJywgLy8gJ0lyYXFpIERpbmFyJ1xuICAnSVJSJywgLy8gJ0lyYW5pYW4gUmlhbCdcbiAgJ0lTSycsIC8vICdJY2VsYW5kaWMgS3LDs25hJ1xuICAnSkVQJywgLy8gJ0plcnNleSBQb3VuZCdcbiAgJ0pNRCcsIC8vICdKYW1haWNhbiBEb2xsYXInXG4gICdKT0QnLCAvLyAnSm9yZGFuaWFuIERpbmFyJ1xuICAnSlBZJywgLy8gJ0phcGFuZXNlIFllbidcbiAgJ0tFUycsIC8vICdLZW55YW4gU2hpbGxpbmcnXG4gICdLR1MnLCAvLyAnS3lyZ3lzdGFuaSBTb20nXG4gICdLSFInLCAvLyAnQ2FtYm9kaWFuIFJpZWwnXG4gICdLSUQnLCAvLyAnS2lyaWJhdGkgRG9sbGFyJ1xuICAnS01GJywgLy8gJ0NvbW9yaWFuIEZyYW5jJ1xuICAnS1JXJywgLy8gJ1NvdXRoIEtvcmVhbiBXb24nXG4gICdLV0QnLCAvLyAnS3V3YWl0aSBEaW5hcidcbiAgJ0tZRCcsIC8vICdDYXltYW4gSXNsYW5kcyBEb2xsYXInXG4gICdLWlQnLCAvLyAnS2F6YWtoc3RhbmkgVGVuZ2UnXG4gICdMQUsnLCAvLyAnTGFvdGlhbiBLaXAnXG4gICdMQlAnLCAvLyAnTGViYW5lc2UgUG91bmQnXG4gICdMS1InLCAvLyAnU3JpIExhbmthbiBSdXBlZSdcbiAgJ0xSRCcsIC8vICdMaWJlcmlhbiBEb2xsYXInXG4gICdMU0wnLCAvLyAnTGVzb3RobyBMb3RpJ1xuICAnTFlEJywgLy8gJ0xpYnlhbiBEaW5hcidcbiAgJ01BRCcsIC8vICdNb3JvY2NhbiBEaXJoYW0nXG4gICdNREwnLCAvLyAnTW9sZG92YW4gTGV1J1xuICAnTUdBJywgLy8gJ01hbGFnYXN5IEFyaWFyeSdcbiAgJ01LRCcsIC8vICdNYWNlZG9uaWFuIERlbmFyJ1xuICAnTU1LJywgLy8gJ015YW5tYSBLeWF0J1xuICAnTU5UJywgLy8gJ01vbmdvbGlhbiBUdWdyaWsnXG4gICdNT1AnLCAvLyAnTWFjYW5lc2UgUGF0YWNhJ1xuICAnTVJVJywgLy8gJ01hdXJpdGFuaWFuIE91Z3VpeWEnXG4gICdNVVInLCAvLyAnTWF1cml0aWFuIFJ1cGVlJ1xuICAnTVZSJywgLy8gJ01hbGRpdmlhbiBSdWZpeWFhJ1xuICAnTVdLJywgLy8gJ01hbGF3aWFuIEt3YWNoYSdcbiAgJ01YTicsIC8vICdNZXhpY2FuIFBlc28nXG4gICdNWVInLCAvLyAnTWFsYXlzaWFuIFJpbmdnaXQnXG4gICdNWk4nLCAvLyAnTW96YW1iaWNhbiBNZXRpY2FsJ1xuICAnTkFEJywgLy8gJ05hbWliaWFuIERvbGxhcidcbiAgJ05HTicsIC8vICdOaWdlcmlhbiBOYWlyYSdcbiAgJ05JTycsIC8vICdOaWNhcmFndWFuIEPDs3Jkb2JhJ1xuICAnTk9LJywgLy8gJ05vcndlZ2lhbiBLcm9uZSdcbiAgJ05QUicsIC8vICdOZXBhbGVzZSBSdXBlZSdcbiAgJ05aRCcsIC8vICdOZXcgWmVhbGFuZCBEb2xsYXInXG4gICdPTVInLCAvLyAnT21hbmkgUmlhbCdcbiAgJ1BBQicsIC8vICdQYW5hbWFuaWFuIEJhbGJvYSdcbiAgJ1BFTicsIC8vICdQZXJ1dmlhbiBTb2wnXG4gICdQR0snLCAvLyAnUGFwdWEgTmV3IEd1aW5lYW4gS2luYSdcbiAgJ1BIUCcsIC8vICdQaGlsaXBwaW5lIFBlc28nXG4gICdQS1InLCAvLyAnUGFraXN0YW5pIFJ1cGVlJ1xuICAnUExOJywgLy8gJ1BvbGlzaCBabG90eSdcbiAgJ1BZRycsIC8vICdQYXJhZ3VheWFuIEd1YXJhbmknXG4gICdRQVInLCAvLyAnUWF0YXJpIFJpYWwnXG4gICdST04nLCAvLyAnUm9tYW5pYW4gTGV1J1xuICAnUlNEJywgLy8gJ1NlcmJpYW4gRGluYXInXG4gICdSVUInLCAvLyAnUnVzc2lhbiBSdWJsZSdcbiAgJ1JXRicsIC8vICdSd2FuZGFuIEZyYW5jJ1xuICAnU0FSJywgLy8gJ1NhdWRpIFJpeWFsJ1xuICAnU0JEJywgLy8gJ1NvbG9tb24gSXNsYW5kcyBEb2xsYXInXG4gICdTQ1InLCAvLyAnU2V5Y2hlbGxvaXMgUnVwZWUnXG4gICdTREcnLCAvLyAnU3VkYW5lc2UgUG91bmQnXG4gICdTRUsnLCAvLyAnU3dlZGlzaCBLcm9uYSdcbiAgJ1NHRCcsIC8vICdTaW5nYXBvcmUgRG9sbGFyJ1xuICAnU0hQJywgLy8gJ1NhaW50IEhlbGVuYSBQb3VuZCdcbiAgJ1NMTCcsIC8vICdTaWVycmEgTGVvbmVhbiBMZW9uZSdcbiAgJ1NPUycsIC8vICdTb21hbGkgU2hpbGxpbmcnXG4gICdTUkQnLCAvLyAnU3VyaW5hbWVzZSBEb2xsYXInXG4gICdTU1AnLCAvLyAnU291dGggU3VkYW5lc2UgUG91bmQnXG4gICdTVE4nLCAvLyAnU8OjbyBUb23DqSAmIFByw61uY2lwZSBEb2JyYSdcbiAgJ1NZUCcsIC8vICdTeXJpYW4gUG91bmQnXG4gICdTWkwnLCAvLyAnRXN3YXRpbmkgTGlsYW5nZW5pJ1xuICAnVEhCJywgLy8gJ1RoYWkgQmFodCdcbiAgJ1RKUycsIC8vICdUYWppa2lzdGFuaSBTb21vbmknXG4gICdUTVQnLCAvLyAnVHVya21lbmlzdGFuIE1hbmF0J1xuICAnVE5EJywgLy8gJ1R1bmlzaWFuIERpbmFyJ1xuICAnVE9QJywgLy8gXCJUb25nYW4gUGEnYW5nYVwiXG4gICdUUlknLCAvLyAnVHVya2lzaCBMaXJhJ1xuICAnVFREJywgLy8gJ1RyaW5pZGFkICYgVG9iYWdvIERvbGxhcidcbiAgJ1RWRCcsIC8vICdUdXZhbHVhbiBEb2xsYXInXG4gICdUV0QnLCAvLyAnTmV3IFRhaXdhbiBEb2xsYXInXG4gICdUWlMnLCAvLyAnVGFuemFuaWFuIFNoaWxsaW5nJ1xuICAnVUFIJywgLy8gJ1VrcmFpbmlhbiBIcnl2bmlhJ1xuICAnVUdYJywgLy8gJ1VnYW5kYW4gU2hpbGxpbmcnXG4gICdVU0QnLCAvLyAnVW5pdGVkIFN0YXRlcyBEb2xsYXInXG4gICdVWVUnLCAvLyAnVXJ1Z3VheWFuIFBlc28nXG4gICdVWlMnLCAvLyAnVXpiZWtpc3RhbmkgU29tJ1xuICAnVkVTJywgLy8gJ1ZlbmV6dWVsYW4gQm9sw612YXInXG4gICdWTkQnLCAvLyAnVmlldG5hbWVzZSBEb25nJ1xuICAnVlVWJywgLy8gJ1ZhbnVhdHUgVmF0dSdcbiAgJ1dTVCcsIC8vICdTYW1vYW4gVGFsYSdcbiAgJ1hBRicsIC8vICdDZW50cmFsIEFmcmljYW4gQ0ZBIEZyYW5jJ1xuICAnWENEJywgLy8gJ0Vhc3QgQ2FyaWJiZWFuIERvbGxhcidcbiAgJ1hEUicsIC8vICdTcGVjaWFsIERyYXdpbmcgUmlnaHRzJ1xuICAnWE9GJywgLy8gJ1dlc3QgQWZyaWNhbiBDRkEgRnJhbmMnXG4gICdYUEYnLCAvLyAnQ0ZQIEZyYW5jJ1xuICAnWUVSJywgLy8gJ1llbWVuaSBSaWFsJ1xuICAnWkFSJywgLy8gJ1NvdXRoIEFmcmljYW4gUmFuZCdcbiAgJ1pNVycsIC8vICdaYW1iaWFuIEt3YWNoYSdcbl0pXG5leHBvcnQgdHlwZSBDdXJyZW5jeUNvZGVzS2V5cyA9IHouaW5mZXI8dHlwZW9mIEN1cnJlbmN5Q29kZXNTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBOdW1iZXJVbml0U2NoZW1hID0gei5lbnVtKFtcbiAgJ2FjcmUnLFxuICAnYml0JyxcbiAgJ2J5dGUnLFxuICAnY2Vsc2l1cycsXG4gICdjZW50aW1ldGVyJyxcbiAgJ2RheScsXG4gICdkZWdyZWUnLFxuICAnZmFocmVuaGVpdCcsXG4gICdmbHVpZC1vdW5jZScsXG4gICdmb290JyxcbiAgJ2dhbGxvbicsXG4gICdnaWdhYml0JyxcbiAgJ2dpZ2FieXRlJyxcbiAgJ2dyYW0nLFxuICAnaGVjdGFyZScsXG4gICdob3VyJyxcbiAgJ2luY2gnLFxuICAna2lsb2JpdCcsXG4gICdraWxvYnl0ZScsXG4gICdraWxvZ3JhbScsXG4gICdraWxvbWV0ZXInLFxuICAnbGl0ZXInLFxuICAnbWVnYWJpdCcsXG4gICdtZWdhYnl0ZScsXG4gICdtZXRlcicsXG4gICdtaWxlJyxcbiAgJ21pbGUtc2NhbmRpbmF2aWFuJyxcbiAgJ21pbGxpbGl0ZXInLFxuICAnbWlsbGltZXRlcicsXG4gICdtaWxsaXNlY29uZCcsXG4gICdtaW51dGUnLFxuICAnbW9udGgnLFxuICAnb3VuY2UnLFxuICAncGVyY2VudCcsXG4gICdwZXRhYnl0ZScsXG4gICdwb3VuZCcsXG4gICdzZWNvbmQnLFxuICAnc3RvbmUnLFxuICAndGVyYWJpdCcsXG4gICd0ZXJhYnl0ZScsXG4gICd3ZWVrJyxcbiAgJ3lhcmQnLFxuICAneWVhcicsXG5dKVxuZXhwb3J0IHR5cGUgTnVtYmVyVW5pdCA9IHouaW5mZXI8dHlwZW9mIE51bWJlclVuaXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBOdW1iZXJGb3JtYXRFeHByZXNzaW9uc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgbnVtYmVyU3R5bGU6IHpcbiAgICAudW5pb24oW1RleHROdW1iZXJTdHlsZVNjaGVtYSwgU3RyaW5nT3JFeHByZXNzaW9uU2NoZW1hXSlcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcbiAgICAgICdkZWNpbWFsLCBjdXJyZW5jeSwgcGVyY2VudCBvciB1bml0IC0gaWRlbnRpZnlpbmcgdGhlIHR5cGUgb2YgcXVhbnRpdHkgYmVpbmcgbWVhc3VyZWQnLFxuICAgICksXG4gIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiBOdW1iZXJPckV4cHJlc3Npb25TY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICAnTWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgKDEtMjEpLiBOdW1iZXJzIHBhZGRlZCB3aXRoIGxlYWRpbmcgemVyb2VzIGlmIG5lY2Vzc2FyeScsXG4gICksXG4gIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogTnVtYmVyT3JFeHByZXNzaW9uU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG4gICAgJ01pbmltdW0gZnJhY3Rpb24gZGlnaXRzLiBOdW1iZXJzIHJvdW5kZWQgb3IgcGFkZGVkIHdpdGggdHJhaWxpbmcgemVyb2VzIGlmIG5lY2Vzc2FyeScsXG4gICksXG4gIG1heGltdW1GcmFjdGlvbkRpZ2l0czogTnVtYmVyT3JFeHByZXNzaW9uU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG4gICAgJ01heGltdW0gZnJhY3Rpb24gZGlnaXRzLiBOdW1iZXJzIHJvdW5kZWQgb3IgcGFkZGVkIHdpdGggdHJhaWxpbmcgemVyb2VzIGlmIG5lY2Vzc2FyeScsXG4gICksXG4gIG1pbmltdW1TaWduaWZpY2FudERpZ2l0czogTnVtYmVyT3JFeHByZXNzaW9uU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG4gICAgJ01pbmltdW0gc2lnbmlmaWNhbnQgZGlnaXRzIHRvIHNob3cnLFxuICApLFxuICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IE51bWJlck9yRXhwcmVzc2lvblNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICdNYXhpbXVtIHNpZ25pZmljYW50IGRpZ2l0cyB0byBzaG93JyxcbiAgKSxcbiAgc2lnbkRpc3BsYXk6IHpcbiAgICAudW5pb24oW1RleHRTaWduRGlzcGxheVNjaGVtYSwgU3RyaW5nT3JFeHByZXNzaW9uU2NoZW1hXSlcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZSgnYXV0bywgYWx3YXlzLCBuZXZlciwgb3IgZXhjZXB0WmVybyAtIHdoZXRoZXIgdG8gc2hvdyBzaWduJyksXG4gIHVuaXQ6IFByaW1pdGl2ZU9yRXhwcmVzc2lvblNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICdVbml0IGZvciB1bml0IGZvcm1hdHRpbmcgKGUuZy4ga2lsb21ldGVyLCBtaWxlLXBlci1ob3VyKScsXG4gICksXG4gIHVuaXREaXNwbGF5OiB6XG4gICAgLnVuaW9uKFtUZXh0VW5pdERpc3BsYXlTY2hlbWEsIFN0cmluZ09yRXhwcmVzc2lvblNjaGVtYV0pXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoJ2xvbmcsIHNob3J0LCBvciBuYXJyb3cgLSB1bml0IGRpc3BsYXkgc3R5bGUnKSxcbiAgbnVtYmVyaW5nU3lzdGVtOiB6XG4gICAgLnVuaW9uKFtUZXh0TnVtYmVyaW5nU3lzdGVtU2NoZW1hLCBTdHJpbmdPckV4cHJlc3Npb25TY2hlbWFdKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKCdOdW1iZXJpbmcgc3lzdGVtIGZvciBmb3JtYXR0aW5nJyksXG4gIGN1cnJlbmN5OiB6XG4gICAgLnVuaW9uKFtDdXJyZW5jeUNvZGVzU2NoZW1hLCBTdHJpbmdPckV4cHJlc3Npb25TY2hlbWFdKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKCdDdXJyZW5jeSBjb2RlIChlLmcuIFVTRCwgRVVSKSBmb3IgY3VycmVuY3kgZm9ybWF0dGluZycpLFxuICBub3RhdGlvbjogelxuICAgIC51bmlvbihbVGV4dE5vdGF0aW9uU2NoZW1hLCBTdHJpbmdPckV4cHJlc3Npb25TY2hlbWFdKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKCdzdGFuZGFyZCwgc2NpZW50aWZpYywgZW5naW5lZXJpbmcsIG9yIGNvbXBhY3QnKSxcbiAgY29tcGFjdERpc3BsYXk6IHpcbiAgICAudW5pb24oW1RleHRDb21wYWN0RGlzcGxheVNjaGVtYSwgU3RyaW5nT3JFeHByZXNzaW9uU2NoZW1hXSlcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZSgnc2hvcnQgb3IgbG9uZyAtIG9ubHkgdXNlZCB3aGVuIG5vdGF0aW9uIGlzIGNvbXBhY3QnKSxcbiAgY3VycmVuY3lEaXNwbGF5OiB6XG4gICAgLnVuaW9uKFtUZXh0Q3VycmVuY3lEaXNwbGF5U2NoZW1hLCBTdHJpbmdPckV4cHJlc3Npb25TY2hlbWFdKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKCdzeW1ib2wsIGNvZGUsIG5hbWUsIG9yIG5hcnJvd1N5bWJvbCAtIGN1cnJlbmN5IGRpc3BsYXkgc3R5bGUnKSxcbiAgY3VycmVuY3lTaWduOiB6XG4gICAgLnVuaW9uKFtUZXh0Q3VycmVuY3lTaWduU2NoZW1hLCBTdHJpbmdPckV4cHJlc3Npb25TY2hlbWFdKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKCdzdGFuZGFyZCBvciBhY2NvdW50aW5nIC0gZm9yIG5lZ2F0aXZlIGN1cnJlbmN5IHJlbmRlcmluZycpLFxufSlcblxuLyoqXG4gKiBOdW1iZXIgZm9ybWF0dGluZyBvcHRpb25zIHdpdGggc3R5bGUsIGRpc3BsYXksIGFuZCBwcmVjaXNpb24gc2V0dGluZ3MuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvTnVtYmVyRm9ybWF0RXhwcmVzc2lvbnNcbiAqL1xuZXhwb3J0IHR5cGUgTnVtYmVyRm9ybWF0RXhwcmVzc2lvbnMgPSB6LmluZmVyPHR5cGVvZiBOdW1iZXJGb3JtYXRFeHByZXNzaW9uc1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IFRleHRGb3JtYXRFeHByZXNzaW9uc1NjaGVtYSA9IE51bWJlckZvcm1hdEV4cHJlc3Npb25zU2NoZW1hLmV4dGVuZCh7XG4gIGRhdGVGb3JtYXQ6IHpcbiAgICAudW5pb24oW1RleHREYXRlRm9ybWF0U2NoZW1hLCBTdHJpbmdPckV4cHJlc3Npb25TY2hlbWFdKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKCdEYXRlIGZvcm1hdCBwYXR0ZXJuIG9yIHByZXNldCcpLFxufSkuZGVzY3JpYmUoJ0RhdGUgJiBOdW1iZXIgRm9ybWF0JylcblxuLyoqXG4gKiBUZXh0IGZvcm1hdHRpbmcgb3B0aW9ucyBmb3IgZGF0ZXMgYW5kIG51bWJlcnMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvVGV4dEZvcm1hdEV4cHJlc3Npb25zXG4gKi9cbmV4cG9ydCB0eXBlIFRleHRGb3JtYXRFeHByZXNzaW9ucyA9IHouaW5mZXI8dHlwZW9mIFRleHRGb3JtYXRFeHByZXNzaW9uc1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IEVtcGhhc2lzRGVmaW5pdGlvblNjaGVtYSA9IHpcbiAgLnVuaW9uKFtcbiAgICB6LmxpdGVyYWwoJ2V4dHJhLWxvdycpLFxuICAgIHoubGl0ZXJhbCgnbG93JyksXG4gICAgei5saXRlcmFsKCdsb3ctbWVkaXVtJyksXG4gICAgei5saXRlcmFsKCdtZWRpdW0nKSxcbiAgICB6LmxpdGVyYWwoJ2hpZ2gnKSxcbiAgICB6LmxpdGVyYWwoJ2NvbG9yJyksXG4gICAgRXhwcmVzc2lvblNjaGVtYSxcbiAgXSlcbiAgLmRlc2NyaWJlKCdFbXBoYXNpcyBkZWZpbml0aW9uJylcblxuLyoqXG4gKiBFbXBoYXNpcyBsZXZlbCBmcm9tIGV4dHJhLWxvdyB0byBoaWdoLCBjb2xvciwgb3IgZXhwcmVzc2lvbi5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9FbXBoYXNpc0RlZmluaXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgRW1waGFzaXNEZWZpbml0aW9uID0gei5pbmZlcjx0eXBlb2YgRW1waGFzaXNEZWZpbml0aW9uU2NoZW1hPlxuXG4vKipcbiAqIFRleHQgd2l0aCBmb3JtYXR0aW5nIG9wdGlvbnMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvVGV4dFdpdGhGb3JtYXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXh0V2l0aEZvcm1hdCB7XG4gIHRleHQ6IFN0cmluZ09yRXhwcmVzc2lvbiB8IFRleHRMb2NhbGVcbiAgZm9ybWF0PzogVGV4dEZvcm1hdEV4cHJlc3Npb25zXG59XG5cbmNvbnN0IF9UZXh0V2l0aEZvcm1hdFNjaGVtYUJhc2UgPSB6Lm9iamVjdCh7XG4gIHRleHQ6IHoudW5pb24oW1N0cmluZ09yRXhwcmVzc2lvblNjaGVtYSwgei5sYXp5KCgpID0+IFRleHRMb2NhbGVTY2hlbWEpXSksXG4gIGZvcm1hdDogVGV4dEZvcm1hdEV4cHJlc3Npb25zU2NoZW1hLm9wdGlvbmFsKCksXG59KVxuXG5leHBvcnQgY29uc3QgVGV4dFdpdGhGb3JtYXRTY2hlbWE6IHouWm9kVHlwZTxUZXh0V2l0aEZvcm1hdD4gPSBfVGV4dFdpdGhGb3JtYXRTY2hlbWFCYXNlXG5cbi8qKlxuICogQ2hlY2tzIGlmIHZhbHVlIGlzIHZhbGlkIFRleHRXaXRoRm9ybWF0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0V2l0aEZvcm1hdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRleHRXaXRoRm9ybWF0IHtcbiAgcmV0dXJuIFRleHRXaXRoRm9ybWF0U2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIFRleHQgbG9jYWxlIHdpdGggaWQsIGRlZmF1bHQgbWVzc2FnZSwgYW5kIHZhbHVlcy5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9UZXh0TG9jYWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dExvY2FsZSB7XG4gIGlkOiBQcmltaXRpdmVPckV4cHJlc3Npb25cbiAgZGVmYXVsdE1lc3NhZ2U/OiBQcmltaXRpdmVPckV4cHJlc3Npb25cbiAgdmFsdWVzPzogUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlT3JFeHByZXNzaW9uIHwgVGV4dFdpdGhGb3JtYXQgfCBUZXh0TG9jYWxlPlxufVxuXG5leHBvcnQgY29uc3QgVGV4dExvY2FsZVNjaGVtYTogei5ab2RUeXBlPFRleHRMb2NhbGU+ID0gei5vYmplY3Qoe1xuICBpZDogUHJpbWl0aXZlT3JFeHByZXNzaW9uU2NoZW1hLmRlc2NyaWJlKCdMb2NhbGUgSWQnKSxcbiAgZGVmYXVsdE1lc3NhZ2U6IFByaW1pdGl2ZU9yRXhwcmVzc2lvblNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKCdEZWZhdWx0IG1lc3NhZ2UnKSxcbiAgdmFsdWVzOiB6XG4gICAgLnJlY29yZChcbiAgICAgIENvbW1vbk5hbWUsXG4gICAgICAvLyB6LmxhenkgdG8gYWxsb3cgZm9yIHJlY3Vyc2l2ZSBkZWZpbml0aW9uXG4gICAgICAvLyB0aGVyZSBoYXMgdG8gYmUgYSBzcGVjaWFsIG1vZGlmaWNhdGlvbiBpbiB6b2QudXRpbHMgYW5kIGV4dHJhY3QtdHlwZSB0byBzdXBwb3J0IHRoaXMgbGF6eSByZWN1cnNpb25cbiAgICAgIHoudW5pb24oW1ByaW1pdGl2ZU9yRXhwcmVzc2lvblNjaGVtYSwgVGV4dFdpdGhGb3JtYXRTY2hlbWEsIHoubGF6eSgoKSA9PiBUZXh0TG9jYWxlU2NoZW1hKV0pLFxuICAgIClcbiAgICAub3B0aW9uYWwoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBUZXh0TG9jYWxlVmFsdWVzU2NoZW1hID0gei5yZWNvcmQoXG4gIENvbW1vbk5hbWUsXG4gIHoudW5pb24oW1ByaW1pdGl2ZU9yRXhwcmVzc2lvblNjaGVtYSwgVGV4dFdpdGhGb3JtYXRTY2hlbWEsIFRleHRMb2NhbGVTY2hlbWFdKSxcbilcblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgVGV4dExvY2FsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dExvY2FsZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRleHRMb2NhbGUge1xuICByZXR1cm4gVGV4dExvY2FsZVNjaGVtYS5zYWZlUGFyc2UodmFsdWUpLnN1Y2Nlc3Ncbn1cblxuZXhwb3J0IGNvbnN0IFRleHRWYWx1ZVNjaGVtYSA9IHoudW5pb24oW1xuICBQcmltaXRpdmVPckV4cHJlc3Npb25TY2hlbWEsXG4gIFRleHRXaXRoRm9ybWF0U2NoZW1hLFxuICBUZXh0TG9jYWxlU2NoZW1hLFxuXSlcblxuLyoqXG4gKiBUZXh0IHZhbHVlLiBQcmltaXRpdmUsIGZvcm1hdHRlZCB0ZXh0LCBvciBsb2NhbGl6ZWQgdGV4dC5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9UZXh0VmFsdWVcbiAqL1xuZXhwb3J0IHR5cGUgVGV4dFZhbHVlID0gei5pbmZlcjx0eXBlb2YgVGV4dFZhbHVlU2NoZW1hPlxuXG4vKipcbiAqIENoZWNrcyBpZiB2YWx1ZSBpcyB2YWxpZCBUZXh0VmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRleHRWYWx1ZSB7XG4gIHJldHVybiBUZXh0VmFsdWVTY2hlbWEuc2FmZVBhcnNlKHZhbHVlKS5zdWNjZXNzXG59XG5cbi8qKlxuICogQ29udmVydHMgdmFsdWUgdG8gVGV4dFZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9UZXh0VmFsdWUodmFsdWU6IHN0cmluZyB8IHouaW5mZXI8dHlwZW9mIFRleHRWYWx1ZVNjaGVtYT4pOiBUZXh0VmFsdWUge1xuICByZXR1cm4gVGV4dFZhbHVlU2NoZW1hLnBhcnNlKHZhbHVlKVxufVxuXG5leHBvcnQgY29uc3QgVGV4dFN0eWxlT3B0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBmb250U2l6ZTogei5lbnVtKFsncmVndWxhcicsICdzbWFsbCcsICdtZWRpdW0nXSkub3B0aW9uYWwoKS5kZXNjcmliZSgnRm9udCBzaXplJyksXG4gIGNvbG9yOiBDb2xvclZhbHVlT3JDb25kaXRpb25zU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ1RleHQgY29sb3InKSxcbiAgaXNTdWJ0bGU6IHoudW5pb24oW3ouYm9vbGVhbigpLCBFeHByZXNzaW9uU2NoZW1hXSkub3B0aW9uYWwoKS5kZXNjcmliZSgnSXMgdGV4dCBzdWJ0bGUnKSxcbiAgaXNCb2xkOiB6LnVuaW9uKFt6LmJvb2xlYW4oKSwgRXhwcmVzc2lvblNjaGVtYV0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0lzIHRleHQgYm9sZCcpLFxuICBudW1iZXJPZkxpbmVzOiBOdW1iZXJPckV4cHJlc3Npb25TY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICAnTnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgYmVmb3JlIHRydW5jYXRpbmcgd2l0aCBlbGxpcHNpcycsXG4gICksXG59KVxuXG4vKipcbiAqIFRleHQgc3R5bGUgb3B0aW9ucyBmb3IgZm9udFNpemUsIGNvbG9yLCBpc1N1YnRsZSwgaXNCb2xkLCBudW1iZXJPZkxpbmVzLlxuICogQHNlZSAjL2RlZmluaXRpb25zL1RleHRTdHlsZU9wdGlvblxuICovXG5leHBvcnQgdHlwZSBUZXh0U3R5bGVPcHRpb24gPSB6LmluZmVyPHR5cGVvZiBUZXh0U3R5bGVPcHRpb25TY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBUZXh0V2l0aFN0eWxlU2NoZW1hID0gX1RleHRXaXRoRm9ybWF0U2NoZW1hQmFzZS5leHRlbmQoVGV4dFN0eWxlT3B0aW9uU2NoZW1hLnNoYXBlKVxuXG4vKipcbiAqIFRleHQgd2l0aCBmb3JtYXQgYW5kIHN0eWxlIG9wdGlvbnMuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvVGV4dFdpdGhTdHlsZVxuICovXG5leHBvcnQgdHlwZSBUZXh0V2l0aFN0eWxlID0gei5pbmZlcjx0eXBlb2YgVGV4dFdpdGhTdHlsZVNjaGVtYT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgVGV4dFdpdGhTdHlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dFdpdGhTdHlsZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRleHRXaXRoU3R5bGUge1xuICByZXR1cm4gVGV4dFdpdGhTdHlsZVNjaGVtYS5zYWZlUGFyc2UodmFsdWUpLnN1Y2Nlc3Ncbn1cblxuZXhwb3J0IGNvbnN0IFRleHRWYWx1ZVdpdGhTdHlsZVNjaGVtYSA9IHoudW5pb24oW1xuICBQcmltaXRpdmVPckV4cHJlc3Npb25TY2hlbWEsXG4gIFRleHRXaXRoU3R5bGVTY2hlbWEsXG4gIFRleHRMb2NhbGVTY2hlbWEsXG5dKVxuXG4vKipcbiAqIFRleHQgdmFsdWUgd2l0aCBzdHlsZSBzdXBwb3J0LiBQcmltaXRpdmUsIHN0eWxlZC9mb3JtYXR0ZWQgdGV4dCwgb3IgbG9jYWxpemVkIHRleHQuXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvVGV4dFZhbHVlV2l0aFN0eWxlXG4gKi9cbmV4cG9ydCB0eXBlIFRleHRWYWx1ZVdpdGhTdHlsZSA9IHouaW5mZXI8dHlwZW9mIFRleHRWYWx1ZVdpdGhTdHlsZVNjaGVtYT5cblxuLyoqXG4gKiBDaGVja3MgaWYgdmFsdWUgaXMgdmFsaWQgVGV4dFZhbHVlV2l0aFN0eWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0VmFsdWVXaXRoU3R5bGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUZXh0VmFsdWVXaXRoU3R5bGUge1xuICByZXR1cm4gVGV4dFZhbHVlV2l0aFN0eWxlU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSkuc3VjY2Vzc1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHZhbHVlIHRvIFRleHRWYWx1ZVdpdGhTdHlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVGV4dFZhbHVlV2l0aFN0eWxlKFxuICB2YWx1ZTogc3RyaW5nIHwgei5pbmZlcjx0eXBlb2YgVGV4dFZhbHVlV2l0aFN0eWxlU2NoZW1hPixcbik6IFRleHRWYWx1ZVdpdGhTdHlsZSB7XG4gIHJldHVybiBUZXh0VmFsdWVXaXRoU3R5bGVTY2hlbWEucGFyc2UodmFsdWUpXG59XG5cbmV4cG9ydCBjb25zdCBCYXNlNjRTY2hlbWEgPSB6LmJhc2U2NCgpXG5leHBvcnQgY29uc3QgQmFzZTY0VXJsU2NoZW1hID0gei5iYXNlNjR1cmwoKVxuZXhwb3J0IGNvbnN0IEJhc2U2NE9yVXJsU2NoZW1hID0gei51bmlvbihbQmFzZTY0U2NoZW1hLCBCYXNlNjRVcmxTY2hlbWFdKVxuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBCYXNlNjQgb3IgQmFzZTY0VXJsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9CYXNlNjRPclVybCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIEJhc2U2NE9yVXJsU2NoZW1hLnBhcnNlKHZhbHVlKVxufVxuXG5leHBvcnQgY29uc3QgU2VsZWN0YWJsZU1lZGlhVHlwZVNjaGVtYSA9IHoudW5pb24oW1xuICB6LmxpdGVyYWwoJ2ltYWdlJyksXG4gIHoubGl0ZXJhbCgndmlkZW8nKSxcbiAgei5saXRlcmFsKCdpbWFnZUFuZFZpZGVvJyksXG4gIHoubGl0ZXJhbCgncGRmJyksXG4gIHoubGl0ZXJhbCgnZG9jJyksXG4gIHoubGl0ZXJhbCgncHB0JyksXG4gIHoubGl0ZXJhbCgneGxzJyksXG4gIHoubGl0ZXJhbCgnY3N2JyksXG4gIHoubGl0ZXJhbCgncGxhaW5UZXh0JyksXG4gIHoubGl0ZXJhbCgnYW55JyksXG5dKVxuXG4vKipcbiAqIE1lZGlhIHR5cGUgZm9yIGZpbGUgc2VsZWN0aW9uLlxuICogQHNlZSAjL2RlZmluaXRpb25zL1NlbGVjdGFibGVNZWRpYVR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0YWJsZU1lZGlhVHlwZSA9IHouaW5mZXI8dHlwZW9mIFNlbGVjdGFibGVNZWRpYVR5cGVTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBTZXRTdGF0ZUNoYW5nZXNTY2hlbWEgPSB6LnJlY29yZChcbiAgei5zdHJpbmcoKSxcbiAgei51bmlvbihbXG4gICAgRXhwcmVzc2lvblNjaGVtYSxcbiAgICB6LnN0cmluZygpLFxuICAgIHoubnVtYmVyKCksXG4gICAgei5ib29sZWFuKCksXG4gICAgei5udWxsKCksXG4gICAgei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICAgIHouYXJyYXkoei5hbnkoKSksXG4gIF0pLFxuKVxuXG4vKipcbiAqIE1hcCBvZiBzdGF0ZSBwcm9wZXJ0eSBuYW1lcyB0byBuZXcgdmFsdWVzLlxuICogQHNlZSAjL2RlZmluaXRpb25zL1NldFN0YXRlQ2hhbmdlc1xuICovXG5leHBvcnQgdHlwZSBTZXRTdGF0ZUNoYW5nZXMgPSB6LmluZmVyPHR5cGVvZiBTZXRTdGF0ZUNoYW5nZXNTY2hlbWE+XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1NldFN0YXRlQ2hhbmdlcyh2YWx1ZTogdW5rbm93bik6IFNldFN0YXRlQ2hhbmdlcyB7XG4gIHJldHVybiBTZXRTdGF0ZUNoYW5nZXNTY2hlbWEucGFyc2UodmFsdWUpXG59XG5cbmV4cG9ydCBjb25zdCBJbWFnZVJlc2l6ZU1vZGVTY2hlbWEgPSB6XG4gIC5lbnVtKFsnY292ZXInLCAnY29udGFpbicsICdzdHJldGNoJywgJ3JlcGVhdCcsICdjZW50ZXInXSlcbiAgLmRlc2NyaWJlKCdJbWFnZSByZXNpemUgbW9kZScpXG5cbi8qKlxuICogSW1hZ2UgcmVzaXplIG1vZGU6IGNvdmVyLCBjb250YWluLCBzdHJldGNoLCByZXBlYXQsIG9yIGNlbnRlci5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9JbWFnZVJlc2l6ZU1vZGVcbiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VSZXNpemVNb2RlID0gei5pbmZlcjx0eXBlb2YgSW1hZ2VSZXNpemVNb2RlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgSW1hZ2VTaGFwZVNjaGVtYSA9IHpcbiAgLmVudW0oWydsYW5kc2NhcGUnLCAncG9ydHJhaXQnLCAnc3F1YXJlJ10pXG4gIC5kZXNjcmliZSgnSW1hZ2Ugc2hhcGUgZm9yIGxpc3QgaXRlbScpXG5cbi8qKlxuICogSW1hZ2Ugc2hhcGU6IGxhbmRzY2FwZSwgcG9ydHJhaXQsIG9yIHNxdWFyZS5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9JbWFnZVNoYXBlXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlU2hhcGUgPSB6LmluZmVyPHR5cGVvZiBJbWFnZVNoYXBlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgSW1hZ2VTaXplU2NoZW1hID0gelxuICAuZW51bShbJ3NtYWxsJywgJ3JlZ3VsYXInLCAnbGFyZ2UnXSlcbiAgLmRlc2NyaWJlKCdJbWFnZSBzaXplIGZvciBsaXN0IGl0ZW0nKVxuXG4vKipcbiAqIEltYWdlIHNpemU6IHNtYWxsLCByZWd1bGFyLCBvciBsYXJnZS5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9JbWFnZVNpemVcbiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VTaXplID0gei5pbmZlcjx0eXBlb2YgSW1hZ2VTaXplU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgSG9yaXpvbnRhbEFsaWduU2NoZW1hID0gei5lbnVtKFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXSlcblxuLyoqXG4gKiBIb3Jpem9udGFsIGFsaWdubWVudDogbGVmdCwgY2VudGVyLCBvciByaWdodC5cbiAqIEBzZWUgIy9kZWZpbml0aW9ucy9Ib3Jpem9udGFsQWxpZ25cbiAqL1xuZXhwb3J0IHR5cGUgSG9yaXpvbnRhbEFsaWduID0gei5pbmZlcjx0eXBlb2YgSG9yaXpvbnRhbEFsaWduU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgVmVydGljYWxBbGlnblNjaGVtYSA9IHouZW51bShbJ3RvcCcsICdjZW50ZXInLCAnYm90dG9tJ10pXG5cbi8qKlxuICogVmVydGljYWwgYWxpZ25tZW50OiB0b3AsIGNlbnRlciwgb3IgYm90dG9tLlxuICogQHNlZSAjL2RlZmluaXRpb25zL1ZlcnRpY2FsQWxpZ25cbiAqL1xuZXhwb3J0IHR5cGUgVmVydGljYWxBbGlnbiA9IHouaW5mZXI8dHlwZW9mIFZlcnRpY2FsQWxpZ25TY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBEYXRhUm93SWQgPSB6LnN0cmluZygpLnJlZ2V4KC9eWyEkKi06PUAtX2Etfl17MSw2NH0kLylcbi8vLmJyYW5kPCdEYXRhUm93SWQnPigpXG5cbi8qKlxuICogRGF0YSByb3cgaWRlbnRpZmllci4gMS02NCBjaGFycywgY29udGFpbnMgcHJpbnRhYmxlIEFTQ0lJIGV4Y2VwdCBzcGFjZS9jb21tYS9zZW1pY29sb24uXG4gKiBAc2VlICMvZGVmaW5pdGlvbnMvRGF0YVJvd0lkXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFSb3dJZCA9IHouaW5mZXI8dHlwZW9mIERhdGFSb3dJZD5cblxuZXhwb3J0IHR5cGUgUHJvdmlkZXJNZXRob2QgPVxuICB8ICdjcmVhdGUnXG4gIHwgJ3VwZGF0ZSdcbiAgfCAnc2F2ZSdcbiAgfCAnZGVsZXRlJ1xuICB8ICdkb3dubG9hZCdcbiAgfCAnZnVuY3Rpb25DYWxsJ1xuICB8IEV4cHJlc3Npb25cbiJdfQ==
|