nuxeo-development-framework 0.0.2 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/bundles/nuxeo-development-framework.umd.js +18534 -50
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/Core/adapters/adapter.service.js +50 -0
- package/esm2015/lib/Core/core.module.js +104 -0
- package/esm2015/lib/Core/enums/language.enum.js +6 -0
- package/esm2015/lib/Core/models/component.model.js +8 -0
- package/esm2015/lib/Core/services/callApi/call-api.service.js +33 -0
- package/esm2015/lib/Core/services/initialization/initialization.service.js +57 -0
- package/esm2015/lib/Core/services/localStorag/local-storag.service.js +123 -0
- package/esm2015/lib/Core/services/nuxeo/nuxeo-override.js +82 -0
- package/esm2015/lib/Core/services/nuxeo/nuxeo.service.js +120 -0
- package/esm2015/lib/Core/services/roles/roles.service.js +103 -0
- package/esm2015/lib/Core/services/translation/translate-loader.service.js +150 -0
- package/esm2015/lib/Core/services/translation/translation.service.js +171 -0
- package/esm2015/lib/Core/services/user/user-preferences.service.js +153 -0
- package/esm2015/lib/Core/utilities/moment-date-adapter.js +178 -0
- package/esm2015/lib/Core/utilities/utility.service.js +81 -0
- package/esm2015/lib/components/activity/activity/activity.component.js +28 -0
- package/esm2015/lib/components/activity/activity.module.js +37 -0
- package/esm2015/lib/components/avatar/avatar/avatar.component.js +55 -0
- package/esm2015/lib/components/avatar/avatar.module.js +32 -0
- package/esm2015/lib/components/card/card.component.js +48 -0
- package/esm2015/lib/components/card/card.module.js +23 -0
- package/esm2015/lib/components/comments/comments.module.js +76 -0
- package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +33 -0
- package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +78 -0
- package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +68 -0
- package/esm2015/lib/components/comments/constants/comment.js +25 -0
- package/esm2015/lib/components/comments/services/comment-api.service.js +49 -0
- package/esm2015/lib/components/confirm-caller/confirm-caller.dialog.js +73 -0
- package/esm2015/lib/components/confirm-caller/confirm-caller.module.js +27 -0
- package/esm2015/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.js +29 -0
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +134 -0
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +133 -0
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +110 -0
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.js +49 -0
- package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +61 -0
- package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +111 -0
- package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +115 -0
- package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +50 -0
- package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +62 -0
- package/esm2015/lib/components/create-entity/create-entity.module.js +36 -0
- package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +73 -0
- package/esm2015/lib/components/cts-tags/cts-tags.module.js +65 -0
- package/esm2015/lib/components/cts-tags/services/tags-api.service.js +61 -0
- package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +82 -0
- package/esm2015/lib/components/custom-toastr/custom-toastr.module.js +36 -0
- package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +2 -0
- package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +41 -0
- package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +156 -0
- package/esm2015/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.js +72 -0
- package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +255 -0
- package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +929 -0
- package/esm2015/lib/components/documents/components/document-upload/document-upload.component.js +159 -0
- package/esm2015/lib/components/documents/components/documents/documents.component.js +61 -0
- package/esm2015/lib/components/documents/constants/document-templates.js +32 -0
- package/esm2015/lib/components/documents/constants/documents.js +86 -0
- package/esm2015/lib/components/documents/documents.module.js +123 -0
- package/esm2015/lib/components/documents/services/document-templates.service.js +115 -0
- package/esm2015/lib/components/documents/services/documents.service.js +217 -0
- package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +342 -0
- package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +34 -0
- package/esm2015/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.js +164 -0
- package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +542 -0
- package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +106 -0
- package/esm2015/lib/components/dynamic-filter/dynamic-filter.module.js +26 -0
- package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +124 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.js +94 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form/fields.adapter.js +127 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +102 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.js +35 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.js +165 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.js +71 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +202 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +78 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/constants/department.js +13 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +185 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +207 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +94 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.js +85 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +128 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.js +81 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.js +36 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +106 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +93 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +207 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +302 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +44 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +176 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +76 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +180 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +250 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +63 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +269 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +47 -0
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +172 -0
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.js +768 -0
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +35 -0
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.js +17 -0
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.js +34 -0
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.js +17 -0
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.js +38 -0
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.js +30 -0
- package/esm2015/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.js +17 -0
- package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +289 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.js +2 -0
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.js +10 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-baseitem.model.js +63 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-boolitem.model.js +20 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-dateitem.model.js +24 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.js +12 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-mapitem.model.js +16 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-selectitem.model.js +17 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-textitem.model.js +32 -0
- package/esm2015/lib/components/dynamic-form/models/dynamic-form.models.js +8 -0
- package/esm2015/lib/components/dynamic-form/services/card-item-types.service.js +46 -0
- package/esm2015/lib/components/dynamic-form/services/dynamic-component-mapper.service.js +60 -0
- package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +74 -0
- package/esm2015/lib/components/dynamic-form/validators/length-validator.js +15 -0
- package/esm2015/lib/components/dynamic-form/validators/regex-validator.js +15 -0
- package/esm2015/lib/components/dynamic-form/validators/required-validator.js +9 -0
- package/esm2015/lib/components/dynamic-form/validators/value-validator.js +15 -0
- package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +148 -0
- package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +57 -0
- package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +204 -0
- package/esm2015/lib/components/dynamic-table/dynamic-table.module.js +44 -0
- package/esm2015/lib/components/dynamic-table/services/dynamic-table.service.js +16 -0
- package/esm2015/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.js +36 -0
- package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +32 -0
- package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +49 -0
- package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +71 -0
- package/esm2015/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.js +60 -0
- package/esm2015/lib/components/dynamic-view/dynamic-view.module.js +54 -0
- package/esm2015/lib/components/dynamic-view/list-viewer/list-viewer.component.js +40 -0
- package/esm2015/lib/components/filter/filter/filter.component.js +94 -0
- package/esm2015/lib/components/filter/filter.module.js +45 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +114 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +111 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +165 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.js +32 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.js +54 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.js +71 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-helper.service.js +25 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.js +43 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +26 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/utils/consts.js +5 -0
- package/esm2015/lib/components/latest-activity/components/activity-line/activity-line.component.js +75 -0
- package/esm2015/lib/components/latest-activity/components/latest-activity/latest-activity.component.js +70 -0
- package/esm2015/lib/components/latest-activity/components/single-activity/single-activity.component.js +27 -0
- package/esm2015/lib/components/latest-activity/constants/activitylog.js +80 -0
- package/esm2015/lib/components/latest-activity/latest-activity.module.js +53 -0
- package/esm2015/lib/components/latest-activity/services/activity-log.service.js +33 -0
- package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +69 -0
- package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +22 -0
- package/esm2015/lib/components/notifications/components/notification-toast/notification-toast.component.js +57 -0
- package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +129 -0
- package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +149 -0
- package/esm2015/lib/components/notifications/notifications.module.js +109 -0
- package/esm2015/lib/components/notifications/notifications.service.js +277 -0
- package/esm2015/lib/components/pagination/pagination/pagination.component.js +123 -0
- package/esm2015/lib/components/pagination/pagination.module.js +32 -0
- package/esm2015/lib/components/pdf-tron/pdf-tron.module.js +24 -0
- package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +228 -0
- package/esm2015/lib/components/pdf-tron/pdftron/pdftron.service.js +181 -0
- package/esm2015/lib/components/select/select/select.component.js +130 -0
- package/esm2015/lib/components/select/select.module.js +37 -0
- package/esm2015/lib/components/table/table/table.component.js +174 -0
- package/esm2015/lib/components/table/table.module.js +57 -0
- package/esm2015/lib/components/users-card/users-card.component.js +43 -0
- package/esm2015/lib/components/users-card/users-card.module.js +28 -0
- package/esm2015/lib/components/viewer-log/components/viewer-log/viewer-log.component.js +33 -0
- package/esm2015/lib/components/viewer-log/viewer-log.module.js +20 -0
- package/esm2015/lib/components/vocabulary/interfaces/op-type.interface.js +2 -0
- package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +49 -0
- package/esm2015/lib/components/vocabulary/vocabulary/vocabulary.component.js +106 -0
- package/esm2015/lib/components/vocabulary/vocabulary.module.js +34 -0
- package/esm2015/lib/configuration/app-config.service.js +26 -0
- package/esm2015/lib/configuration/helpers/app-initializer.js +4 -0
- package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +61 -0
- package/esm2015/lib/directive/clickOutSide/click-outside.directive.js +29 -0
- package/esm2015/lib/directive/directive.module.js +48 -0
- package/esm2015/lib/directive/permissions/evaluators.service.js +118 -0
- package/esm2015/lib/directive/permissions/permissions.directive.js +106 -0
- package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +28 -0
- package/esm2015/lib/directive/rtl/set-rtl.directive.js +29 -0
- package/esm2015/lib/nuxeo-development-framework.component.js +26 -18
- package/esm2015/lib/nuxeo-development-framework.module.js +45 -16
- package/esm2015/lib/nuxeo-development-framework.service.js +14 -13
- package/esm2015/lib/pipes/file-size.pipe.js +57 -0
- package/esm2015/lib/pipes/hijri-date.pipe.js +46 -0
- package/esm2015/lib/pipes/localized-date.pipe.js +81 -0
- package/esm2015/lib/pipes/multi-value.pipe.js +42 -0
- package/esm2015/lib/pipes/pipes.module.js +29 -0
- package/esm2015/lib/pipes/secure-html.pipe.js +34 -0
- package/esm2015/lib/pipes/secure.pipe.js +40 -0
- package/esm2015/lib/pipes/time-ago.pipe.js +68 -0
- package/esm2015/lib/shared/components/button/button.component.js +87 -0
- package/esm2015/lib/shared/components/item-list/item-list.component.js +76 -0
- package/esm2015/lib/shared/components/no-data/no-data.component.js +37 -0
- package/esm2015/lib/shared/components/read-more/read-more.component.js +107 -0
- package/esm2015/lib/shared/components/search-autocomplete/search-autocomplete.component.js +144 -0
- package/esm2015/lib/shared/components/spinner/spinner.component.js +29 -0
- package/esm2015/lib/shared/components/user-card/user-card.component.js +49 -0
- package/esm2015/lib/shared/libraryShared.module.js +80 -0
- package/esm2015/nuxeo-development-framework.js +4 -4
- package/esm2015/public-api.js +156 -7
- package/fesm2015/nuxeo-development-framework.js +17027 -49
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/Core/adapters/adapter.service.d.ts +11 -0
- package/lib/Core/core.module.d.ts +14 -0
- package/lib/Core/enums/language.enum.d.ts +4 -0
- package/lib/Core/models/component.model.d.ts +6 -0
- package/lib/Core/services/callApi/call-api.service.d.ts +11 -0
- package/lib/Core/services/initialization/initialization.service.d.ts +14 -0
- package/lib/Core/services/localStorag/local-storag.service.d.ts +41 -0
- package/lib/Core/services/nuxeo/nuxeo-override.d.ts +8 -0
- package/lib/Core/services/nuxeo/nuxeo.service.d.ts +33 -0
- package/lib/Core/services/roles/roles.service.d.ts +11 -0
- package/lib/Core/services/translation/translate-loader.service.d.ts +26 -0
- package/lib/Core/services/translation/translation.service.d.ts +71 -0
- package/lib/Core/services/user/user-preferences.service.d.ts +80 -0
- package/lib/Core/utilities/moment-date-adapter.d.ts +37 -0
- package/lib/Core/utilities/utility.service.d.ts +11 -0
- package/lib/components/activity/activity/activity.component.d.ts +13 -0
- package/lib/components/activity/activity.module.d.ts +13 -0
- package/lib/components/avatar/avatar/avatar.component.d.ts +23 -0
- package/lib/components/avatar/avatar.module.d.ts +13 -0
- package/lib/components/card/card.component.d.ts +32 -0
- package/lib/components/card/card.module.d.ts +12 -0
- package/lib/components/comments/comments.module.d.ts +25 -0
- package/lib/components/comments/components/comment-item/comment-item.component.d.ts +13 -0
- package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +45 -0
- package/lib/components/comments/components/comments-list/comments-list.component.d.ts +26 -0
- package/lib/components/comments/constants/comment.d.ts +25 -0
- package/lib/components/comments/services/comment-api.service.d.ts +14 -0
- package/lib/components/confirm-caller/confirm-caller.dialog.d.ts +46 -0
- package/lib/components/confirm-caller/confirm-caller.module.d.ts +16 -0
- package/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.d.ts +12 -0
- package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +34 -0
- package/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.d.ts +42 -0
- package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +31 -0
- package/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.d.ts +18 -0
- package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +31 -0
- package/lib/components/correspondence-relation/correspondence-relation.module.d.ts +30 -0
- package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +24 -0
- package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +18 -0
- package/lib/components/create-entity/create-entity/create-entity.component.d.ts +17 -0
- package/lib/components/create-entity/create-entity.module.d.ts +11 -0
- package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +28 -0
- package/lib/components/cts-tags/cts-tags.module.d.ts +21 -0
- package/lib/components/cts-tags/services/tags-api.service.d.ts +15 -0
- package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +30 -0
- package/lib/components/custom-toastr/custom-toastr.module.d.ts +12 -0
- package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +1 -0
- package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +18 -0
- package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +54 -0
- package/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.d.ts +37 -0
- package/lib/components/documents/components/document-list/documents-list.component.d.ts +81 -0
- package/lib/components/documents/components/document-scan/document-scan.component.d.ts +103 -0
- package/lib/components/documents/components/document-upload/document-upload.component.d.ts +58 -0
- package/lib/components/documents/components/documents/documents.component.d.ts +27 -0
- package/lib/components/documents/constants/document-templates.d.ts +33 -0
- package/lib/components/documents/constants/documents.d.ts +95 -0
- package/lib/components/documents/documents.module.d.ts +33 -0
- package/lib/components/documents/services/document-templates.service.d.ts +24 -0
- package/lib/components/documents/services/documents.service.d.ts +36 -0
- package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +63 -0
- package/lib/components/dynamic-chart/dynamic-chart.module.d.ts +16 -0
- package/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.d.ts +33 -0
- package/lib/components/dynamic-chart/services/chart-data.service.d.ts +37 -0
- package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +45 -0
- package/lib/components/dynamic-filter/dynamic-filter.module.d.ts +16 -0
- package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts +28 -0
- package/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +26 -0
- package/lib/components/dynamic-form/components/dynamic-form/fields.adapter.d.ts +6 -0
- package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +21 -0
- package/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.d.ts +17 -0
- package/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.d.ts +57 -0
- package/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.d.ts +35 -0
- package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +70 -0
- package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +52 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/constants/department.d.ts +12 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +65 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +29 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +21 -0
- package/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +30 -0
- package/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.d.ts +61 -0
- package/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.d.ts +25 -0
- package/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.d.ts +15 -0
- package/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.d.ts +45 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.d.ts +41 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.d.ts +65 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +83 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +13 -0
- package/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.d.ts +79 -0
- package/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.d.ts +37 -0
- package/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.d.ts +71 -0
- package/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.d.ts +86 -0
- package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +19 -0
- package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +88 -0
- package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +16 -0
- package/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.d.ts +76 -0
- package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts +599 -0
- package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.d.ts +13 -0
- package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.d.ts +2 -0
- package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.d.ts +13 -0
- package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.d.ts +2 -0
- package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.d.ts +16 -0
- package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.d.ts +2 -0
- package/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.d.ts +9 -0
- package/lib/components/dynamic-form/dynamic-form.module.d.ts +64 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.d.ts +5 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.d.ts +5 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.d.ts +15 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.d.ts +4 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.d.ts +12 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.d.ts +8 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.d.ts +10 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.d.ts +5 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.d.ts +8 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.d.ts +9 -0
- package/lib/components/dynamic-form/models/dynamic-form-baseitem.model.d.ts +21 -0
- package/lib/components/dynamic-form/models/dynamic-form-boolitem.model.d.ts +11 -0
- package/lib/components/dynamic-form/models/dynamic-form-dateitem.model.d.ts +13 -0
- package/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.d.ts +9 -0
- package/lib/components/dynamic-form/models/dynamic-form-mapitem.model.d.ts +8 -0
- package/lib/components/dynamic-form/models/dynamic-form-selectitem.model.d.ts +11 -0
- package/lib/components/dynamic-form/models/dynamic-form-textitem.model.d.ts +15 -0
- package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +7 -0
- package/lib/components/dynamic-form/services/card-item-types.service.d.ts +13 -0
- package/lib/components/dynamic-form/services/dynamic-component-mapper.service.d.ts +36 -0
- package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +30 -0
- package/lib/components/dynamic-form/validators/length-validator.d.ts +7 -0
- package/lib/components/dynamic-form/validators/regex-validator.d.ts +7 -0
- package/lib/components/dynamic-form/validators/required-validator.d.ts +5 -0
- package/lib/components/dynamic-form/validators/value-validator.d.ts +7 -0
- package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +71 -0
- package/lib/components/dynamic-search/dynamic-search.module.d.ts +19 -0
- package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +96 -0
- package/lib/components/dynamic-table/dynamic-table.module.d.ts +16 -0
- package/lib/components/dynamic-table/services/dynamic-table.service.d.ts +8 -0
- package/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.d.ts +13 -0
- package/lib/components/dynamic-view/data-viewer/data-viewer.component.d.ts +12 -0
- package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +17 -0
- package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +29 -0
- package/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.d.ts +37 -0
- package/lib/components/dynamic-view/dynamic-view.module.d.ts +20 -0
- package/lib/components/dynamic-view/list-viewer/list-viewer.component.d.ts +20 -0
- package/lib/components/filter/filter/filter.component.d.ts +31 -0
- package/lib/components/filter/filter.module.d.ts +15 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +34 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +32 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.d.ts +39 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.d.ts +9 -0
- package/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.d.ts +14 -0
- package/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.d.ts +15 -0
- package/lib/components/hijri-gregorian-datepicker/services/date-helper.service.d.ts +8 -0
- package/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.d.ts +11 -0
- package/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.d.ts +10 -0
- package/lib/components/hijri-gregorian-datepicker/utils/consts.d.ts +4 -0
- package/lib/components/latest-activity/components/activity-line/activity-line.component.d.ts +19 -0
- package/lib/components/latest-activity/components/latest-activity/latest-activity.component.d.ts +22 -0
- package/lib/components/latest-activity/components/single-activity/single-activity.component.d.ts +10 -0
- package/lib/components/latest-activity/constants/activitylog.d.ts +82 -0
- package/lib/components/latest-activity/latest-activity.module.d.ts +19 -0
- package/lib/components/latest-activity/services/activity-log.service.d.ts +12 -0
- package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +15 -0
- package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +10 -0
- package/lib/components/notifications/components/notification-toast/notification-toast.component.d.ts +19 -0
- package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +25 -0
- package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +45 -0
- package/lib/components/notifications/notifications.module.d.ts +24 -0
- package/lib/components/notifications/notifications.service.d.ts +61 -0
- package/lib/components/pagination/pagination/pagination.component.d.ts +46 -0
- package/lib/components/pagination/pagination.module.d.ts +13 -0
- package/lib/components/pdf-tron/pdf-tron.module.d.ts +8 -0
- package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +54 -0
- package/lib/components/pdf-tron/pdftron/pdftron.service.d.ts +30 -0
- package/lib/components/select/select/select.component.d.ts +43 -0
- package/lib/components/select/select.module.d.ts +12 -0
- package/lib/components/table/table/table.component.d.ts +89 -0
- package/lib/components/table/table.module.d.ts +18 -0
- package/lib/components/users-card/users-card.component.d.ts +22 -0
- package/lib/components/users-card/users-card.module.d.ts +17 -0
- package/lib/components/viewer-log/components/viewer-log/viewer-log.component.d.ts +12 -0
- package/lib/components/viewer-log/viewer-log.module.d.ts +10 -0
- package/lib/components/vocabulary/interfaces/op-type.interface.d.ts +1 -0
- package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +16 -0
- package/lib/components/vocabulary/vocabulary/vocabulary.component.d.ts +37 -0
- package/lib/components/vocabulary/vocabulary.module.d.ts +11 -0
- package/lib/configuration/app-config.service.d.ts +11 -0
- package/lib/configuration/helpers/app-initializer.d.ts +2 -0
- package/lib/directive/app-has-role/app-has-role.directive.d.ts +18 -0
- package/lib/directive/clickOutSide/click-outside.directive.d.ts +11 -0
- package/lib/directive/directive.module.d.ts +16 -0
- package/lib/directive/permissions/evaluators.service.d.ts +26 -0
- package/lib/directive/permissions/permissions.directive.d.ts +46 -0
- package/lib/directive/rtl/set-dir-rtl.directive.d.ts +13 -0
- package/lib/directive/rtl/set-rtl.directive.d.ts +13 -0
- package/lib/nuxeo-development-framework.component.d.ts +8 -5
- package/lib/nuxeo-development-framework.module.d.ts +12 -2
- package/lib/nuxeo-development-framework.service.d.ts +6 -3
- package/lib/pipes/file-size.pipe.d.ts +34 -0
- package/lib/pipes/hijri-date.pipe.d.ts +32 -0
- package/lib/pipes/localized-date.pipe.d.ts +44 -0
- package/lib/pipes/multi-value.pipe.d.ts +32 -0
- package/lib/pipes/pipes.module.d.ts +18 -0
- package/lib/pipes/secure-html.pipe.d.ts +26 -0
- package/lib/pipes/secure.pipe.d.ts +29 -0
- package/lib/pipes/time-ago.pipe.d.ts +34 -0
- package/lib/shared/components/button/button.component.d.ts +38 -0
- package/lib/shared/components/item-list/item-list.component.d.ts +45 -0
- package/lib/shared/components/no-data/no-data.component.d.ts +21 -0
- package/lib/shared/components/read-more/read-more.component.d.ts +37 -0
- package/lib/shared/components/search-autocomplete/search-autocomplete.component.d.ts +49 -0
- package/lib/shared/components/spinner/spinner.component.d.ts +18 -0
- package/lib/shared/components/user-card/user-card.component.d.ts +30 -0
- package/lib/shared/libraryShared.module.d.ts +25 -0
- package/nuxeo-development-framework.d.ts +5 -4
- package/package.json +57 -16
- package/public-api.d.ts +145 -3
- package/bundles/nuxeo-development-framework.umd.min.js +0 -2
- package/bundles/nuxeo-development-framework.umd.min.js.map +0 -1
- package/nuxeo-development-framework.metadata.json +0 -1
|
@@ -0,0 +1,768 @@
|
|
|
1
|
+
import { cloneDeep, unionWith, each, filter, sortBy, isEqual } from 'lodash';
|
|
2
|
+
export const baseDisplay = [
|
|
3
|
+
{
|
|
4
|
+
weight: 0,
|
|
5
|
+
type: 'textfield',
|
|
6
|
+
input: true,
|
|
7
|
+
hidden: true,
|
|
8
|
+
key: 'key',
|
|
9
|
+
label: 'Property Name',
|
|
10
|
+
tooltip: 'The name of this field in the API endpoint.',
|
|
11
|
+
validate: {
|
|
12
|
+
pattern: '(\\w|\\w[\\w-.]*\\w)',
|
|
13
|
+
patternMessage: 'The property name must only contain alphanumeric characters, underscores, dots and dashes and should not be ended by dash or dot.',
|
|
14
|
+
required: true
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
weight: 0,
|
|
19
|
+
type: 'textfield',
|
|
20
|
+
input: true,
|
|
21
|
+
key: 'label',
|
|
22
|
+
label: 'Label - English',
|
|
23
|
+
placeholder: 'Field Label',
|
|
24
|
+
tooltip: 'The label for this field that will appear next to it.',
|
|
25
|
+
validate: {
|
|
26
|
+
required: true
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
weight: 10,
|
|
31
|
+
type: 'textfield',
|
|
32
|
+
input: true,
|
|
33
|
+
key: 'labelAr',
|
|
34
|
+
label: 'Label - Arabic',
|
|
35
|
+
placeholder: 'Field Label',
|
|
36
|
+
tooltip: 'The label for this field that will appear next to it.',
|
|
37
|
+
validate: {
|
|
38
|
+
required: true
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'select',
|
|
43
|
+
input: true,
|
|
44
|
+
key: 'labelPosition',
|
|
45
|
+
label: 'Label Position',
|
|
46
|
+
tooltip: 'Position for the label for this field.',
|
|
47
|
+
weight: 20,
|
|
48
|
+
defaultValue: 'top',
|
|
49
|
+
dataSrc: 'values',
|
|
50
|
+
data: {
|
|
51
|
+
values: [
|
|
52
|
+
{
|
|
53
|
+
label: 'Top',
|
|
54
|
+
value: 'top'
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
label: 'Left (Left-aligned)',
|
|
58
|
+
value: 'left-left'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
label: 'Left (Right-aligned)',
|
|
62
|
+
value: 'left-right'
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
label: 'Right (Left-aligned)',
|
|
66
|
+
value: 'right-left'
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
label: 'Right (Right-aligned)',
|
|
70
|
+
value: 'right-right'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: 'Bottom',
|
|
74
|
+
value: 'bottom'
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'number',
|
|
81
|
+
input: true,
|
|
82
|
+
key: 'labelWidth',
|
|
83
|
+
label: 'Label Width',
|
|
84
|
+
tooltip: 'The width of label on line in percentages.',
|
|
85
|
+
clearOnHide: false,
|
|
86
|
+
weight: 30,
|
|
87
|
+
placeholder: '30',
|
|
88
|
+
suffix: '%',
|
|
89
|
+
validate: {
|
|
90
|
+
min: 0,
|
|
91
|
+
max: 100
|
|
92
|
+
},
|
|
93
|
+
conditional: {
|
|
94
|
+
json: {
|
|
95
|
+
and: [
|
|
96
|
+
{
|
|
97
|
+
'!==': [
|
|
98
|
+
{
|
|
99
|
+
var: 'data.labelPosition'
|
|
100
|
+
},
|
|
101
|
+
'top'
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
'!==': [
|
|
106
|
+
{
|
|
107
|
+
var: 'data.labelPosition'
|
|
108
|
+
},
|
|
109
|
+
'bottom'
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: 'number',
|
|
118
|
+
input: true,
|
|
119
|
+
key: 'labelMargin',
|
|
120
|
+
label: 'Label Margin',
|
|
121
|
+
tooltip: 'The width of label margin on line in percentages.',
|
|
122
|
+
clearOnHide: false,
|
|
123
|
+
weight: 30,
|
|
124
|
+
placeholder: '3',
|
|
125
|
+
suffix: '%',
|
|
126
|
+
validate: {
|
|
127
|
+
min: 0,
|
|
128
|
+
max: 100
|
|
129
|
+
},
|
|
130
|
+
conditional: {
|
|
131
|
+
json: {
|
|
132
|
+
and: [
|
|
133
|
+
{
|
|
134
|
+
'!==': [
|
|
135
|
+
{
|
|
136
|
+
var: 'data.labelPosition'
|
|
137
|
+
},
|
|
138
|
+
'top'
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
'!==': [
|
|
143
|
+
{
|
|
144
|
+
var: 'data.labelPosition'
|
|
145
|
+
},
|
|
146
|
+
'bottom'
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
weight: 200,
|
|
155
|
+
type: 'textarea',
|
|
156
|
+
input: true,
|
|
157
|
+
key: 'description',
|
|
158
|
+
label: 'Description - English',
|
|
159
|
+
placeholder: 'Description for this field.',
|
|
160
|
+
tooltip: 'The description is text that will appear below the input field.',
|
|
161
|
+
editor: 'ace',
|
|
162
|
+
as: 'html',
|
|
163
|
+
wysiwyg: {
|
|
164
|
+
minLines: 3,
|
|
165
|
+
isUseWorkerDisabled: true
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
weight: 200,
|
|
170
|
+
type: 'textarea',
|
|
171
|
+
input: true,
|
|
172
|
+
key: 'descriptionAr',
|
|
173
|
+
label: 'Description - Arabic',
|
|
174
|
+
placeholder: 'Description for this field.',
|
|
175
|
+
tooltip: 'The description is text that will appear below the input field.',
|
|
176
|
+
editor: 'ace',
|
|
177
|
+
as: 'html',
|
|
178
|
+
wysiwyg: {
|
|
179
|
+
minLines: 3,
|
|
180
|
+
isUseWorkerDisabled: true
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
weight: 300,
|
|
185
|
+
type: 'textarea',
|
|
186
|
+
input: true,
|
|
187
|
+
key: 'tooltip',
|
|
188
|
+
label: 'Tooltip - English',
|
|
189
|
+
placeholder: 'To add a tooltip to this field, enter text here.',
|
|
190
|
+
tooltip: 'Adds a tooltip to the side of this field.',
|
|
191
|
+
editor: 'ace',
|
|
192
|
+
as: 'html',
|
|
193
|
+
wysiwyg: {
|
|
194
|
+
minLines: 3,
|
|
195
|
+
isUseWorkerDisabled: true
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
weight: 300,
|
|
200
|
+
type: 'textarea',
|
|
201
|
+
input: true,
|
|
202
|
+
key: 'tooltipAr',
|
|
203
|
+
label: 'Tooltip - Arabic',
|
|
204
|
+
placeholder: 'To add a tooltip to this field, enter text here.',
|
|
205
|
+
tooltip: 'Adds a tooltip to the side of this field.',
|
|
206
|
+
editor: 'ace',
|
|
207
|
+
as: 'html',
|
|
208
|
+
wysiwyg: {
|
|
209
|
+
minLines: 3,
|
|
210
|
+
isUseWorkerDisabled: true
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
weight: 410,
|
|
215
|
+
type: 'textfield',
|
|
216
|
+
input: true,
|
|
217
|
+
key: 'inputMask',
|
|
218
|
+
label: 'Input Mask',
|
|
219
|
+
tooltip: 'An input mask helps the user with input by ensuring a predefined format.<br><br>9: numeric<br>a: alphabetical<br>*: alphanumeric<br><br>Example telephone mask: (999) 999-9999<br><br>See the <a target=\'_blank\' href=\'https://github.com/RobinHerbots/jquery.inputmask\'>jquery.inputmask documentation</a> for more information.</a>'
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
weight: 411,
|
|
223
|
+
type: 'textfield',
|
|
224
|
+
input: true,
|
|
225
|
+
key: 'inputMaskPlaceholderChar',
|
|
226
|
+
label: 'Input Mask Placeholder Char',
|
|
227
|
+
tooltip: 'You can specify a char which will be used as a placeholder in the field. <br>E.g., ˍ<br>Make note that placeholder char will be replaced by a space if it is used inside the mask',
|
|
228
|
+
validation: {
|
|
229
|
+
maxLength: 1
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
weight: 1100,
|
|
234
|
+
type: 'checkbox',
|
|
235
|
+
label: 'Hidden',
|
|
236
|
+
tooltip: 'A hidden field is still a part of the form, but is hidden from view.',
|
|
237
|
+
key: 'hidden',
|
|
238
|
+
input: true
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
weight: 1200,
|
|
242
|
+
type: 'checkbox',
|
|
243
|
+
label: 'Hide Label',
|
|
244
|
+
tooltip: 'Hide the label (title, if no label) of this component. This allows you to show the label in the form builder, but not when it is rendered.',
|
|
245
|
+
key: 'hideLabel',
|
|
246
|
+
input: true
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
weight: 1400,
|
|
250
|
+
type: 'checkbox',
|
|
251
|
+
label: 'Disabled',
|
|
252
|
+
tooltip: 'Disable the form input.',
|
|
253
|
+
key: 'disabled',
|
|
254
|
+
input: true
|
|
255
|
+
}
|
|
256
|
+
];
|
|
257
|
+
export const baseData = [
|
|
258
|
+
{
|
|
259
|
+
weight: 0,
|
|
260
|
+
type: 'checkbox',
|
|
261
|
+
label: 'Multiple Values',
|
|
262
|
+
tooltip: 'Allows multiple values to be entered for this field.',
|
|
263
|
+
key: 'multiple',
|
|
264
|
+
input: true
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
type: 'textfield',
|
|
268
|
+
label: 'Default Value',
|
|
269
|
+
key: 'defaultValue',
|
|
270
|
+
weight: 5,
|
|
271
|
+
placeholder: 'Default Value',
|
|
272
|
+
tooltip: 'The will be the value for this field, before user interaction. Having a default value will override the placeholder text.',
|
|
273
|
+
input: true
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
type: 'select',
|
|
277
|
+
input: true,
|
|
278
|
+
key: 'redrawOn',
|
|
279
|
+
label: 'Redraw On',
|
|
280
|
+
weight: 600,
|
|
281
|
+
tooltip: 'Redraw this component if another component changes. This is useful if interpolating parts of the component like the label.',
|
|
282
|
+
dataSrc: 'custom',
|
|
283
|
+
valueProperty: 'value',
|
|
284
|
+
data: {},
|
|
285
|
+
conditional: {
|
|
286
|
+
json: {
|
|
287
|
+
'!': [
|
|
288
|
+
{
|
|
289
|
+
var: 'data.dataSrc'
|
|
290
|
+
}
|
|
291
|
+
]
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
weight: 700,
|
|
297
|
+
type: 'checkbox',
|
|
298
|
+
label: 'Clear Value When Hidden',
|
|
299
|
+
key: 'clearOnHide',
|
|
300
|
+
defaultValue: true,
|
|
301
|
+
tooltip: 'When a field is hidden, clear the value.',
|
|
302
|
+
input: true
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
type: 'panel',
|
|
306
|
+
title: 'Custom Default Value',
|
|
307
|
+
theme: 'default',
|
|
308
|
+
collapsible: true,
|
|
309
|
+
collapsed: true,
|
|
310
|
+
key: 'customDefaultValuePanel',
|
|
311
|
+
weight: 1000,
|
|
312
|
+
components: [
|
|
313
|
+
{
|
|
314
|
+
type: 'htmlelement',
|
|
315
|
+
tag: 'div',
|
|
316
|
+
content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
type: 'panel',
|
|
320
|
+
title: 'JavaScript',
|
|
321
|
+
collapsible: true,
|
|
322
|
+
collapsed: false,
|
|
323
|
+
style: {
|
|
324
|
+
'margin-bottom': '10px'
|
|
325
|
+
},
|
|
326
|
+
key: 'customDefaultValue-js',
|
|
327
|
+
components: [
|
|
328
|
+
{
|
|
329
|
+
type: 'textarea',
|
|
330
|
+
key: 'customDefaultValue',
|
|
331
|
+
rows: 5,
|
|
332
|
+
editor: 'ace',
|
|
333
|
+
hideLabel: true,
|
|
334
|
+
as: 'javascript',
|
|
335
|
+
input: true
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
type: 'htmlelement',
|
|
339
|
+
tag: 'div',
|
|
340
|
+
content: '<p>Enter custom javascript code.</p><p><h4>Example:</h4><pre>value = data.firstName + " " + data.lastName;</pre></p>'
|
|
341
|
+
}
|
|
342
|
+
]
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
type: 'panel',
|
|
346
|
+
title: 'JSONLogic',
|
|
347
|
+
collapsible: true,
|
|
348
|
+
collapsed: true,
|
|
349
|
+
key: 'customDefaultValue-json',
|
|
350
|
+
components: [
|
|
351
|
+
{
|
|
352
|
+
type: 'htmlelement',
|
|
353
|
+
tag: 'div',
|
|
354
|
+
content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><p>Full <a href="https://lodash.com/docs" target="_blank">Lodash</a> support is provided using an "_" before each operation, such as <code>{"_sum": {var: "data.a"}}</code></p><p><h4>Example:</h4><pre>{"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}</pre>'
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
type: 'textarea',
|
|
358
|
+
key: 'customDefaultValue',
|
|
359
|
+
rows: 5,
|
|
360
|
+
editor: 'ace',
|
|
361
|
+
hideLabel: true,
|
|
362
|
+
as: 'json',
|
|
363
|
+
input: true
|
|
364
|
+
}
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
type: 'panel',
|
|
371
|
+
title: 'Calculated Value',
|
|
372
|
+
theme: 'default',
|
|
373
|
+
collapsible: true,
|
|
374
|
+
collapsed: true,
|
|
375
|
+
key: 'calculateValuePanel',
|
|
376
|
+
weight: 1100,
|
|
377
|
+
components: [
|
|
378
|
+
{
|
|
379
|
+
type: 'htmlelement',
|
|
380
|
+
tag: 'div',
|
|
381
|
+
content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>token</th><td>The decoded JWT token for the authenticated user.</td></tr><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
type: 'panel',
|
|
385
|
+
title: 'JavaScript',
|
|
386
|
+
collapsible: true,
|
|
387
|
+
collapsed: false,
|
|
388
|
+
style: {
|
|
389
|
+
'margin-bottom': '10px'
|
|
390
|
+
},
|
|
391
|
+
key: 'calculateValue-js',
|
|
392
|
+
components: [
|
|
393
|
+
{
|
|
394
|
+
type: 'textarea',
|
|
395
|
+
key: 'calculateValue',
|
|
396
|
+
rows: 5,
|
|
397
|
+
editor: 'ace',
|
|
398
|
+
hideLabel: true,
|
|
399
|
+
as: 'javascript',
|
|
400
|
+
input: true
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
type: 'htmlelement',
|
|
404
|
+
tag: 'div',
|
|
405
|
+
content: '<p>Enter custom javascript code.</p><p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>'
|
|
406
|
+
}
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
type: 'panel',
|
|
411
|
+
title: 'JSONLogic',
|
|
412
|
+
collapsible: true,
|
|
413
|
+
collapsed: true,
|
|
414
|
+
key: 'calculateValue-json',
|
|
415
|
+
components: [
|
|
416
|
+
{
|
|
417
|
+
type: 'htmlelement',
|
|
418
|
+
tag: 'div',
|
|
419
|
+
content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><p>Full <a href="https://lodash.com/docs" target="_blank">Lodash</a> support is provided using an "_" before each operation, such as <code>{"_sum": {var: "data.a"}}</code></p><p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a target="_blank" href="http://formio.github.io/formio.js/app/examples/calculated.html">Click here for an example</a></p>'
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
type: 'textarea',
|
|
423
|
+
key: 'calculateValue',
|
|
424
|
+
rows: 5,
|
|
425
|
+
editor: 'ace',
|
|
426
|
+
hideLabel: true,
|
|
427
|
+
as: 'json',
|
|
428
|
+
input: true
|
|
429
|
+
}
|
|
430
|
+
]
|
|
431
|
+
}
|
|
432
|
+
]
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
type: 'checkbox',
|
|
436
|
+
input: true,
|
|
437
|
+
weight: 1200,
|
|
438
|
+
key: 'allowCalculateOverride',
|
|
439
|
+
label: 'Allow Manual Override of Calculated Value',
|
|
440
|
+
tooltip: 'When checked, this will allow the user to manually override the calculated value.'
|
|
441
|
+
}
|
|
442
|
+
];
|
|
443
|
+
export const baseValidation = [
|
|
444
|
+
{
|
|
445
|
+
weight: 0,
|
|
446
|
+
type: 'select',
|
|
447
|
+
key: 'validateOn',
|
|
448
|
+
defaultValue: 'change',
|
|
449
|
+
input: true,
|
|
450
|
+
label: 'Validate On',
|
|
451
|
+
tooltip: 'Determines when this component should trigger front-end validation.',
|
|
452
|
+
dataSrc: 'values',
|
|
453
|
+
data: {
|
|
454
|
+
values: [
|
|
455
|
+
{
|
|
456
|
+
label: 'Change',
|
|
457
|
+
value: 'change'
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
label: 'Blur',
|
|
461
|
+
value: 'blur'
|
|
462
|
+
}
|
|
463
|
+
]
|
|
464
|
+
}
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
weight: 10,
|
|
468
|
+
type: 'checkbox',
|
|
469
|
+
label: 'Required',
|
|
470
|
+
tooltip: 'A required field must be filled in before the form can be submitted.',
|
|
471
|
+
key: 'validate.required',
|
|
472
|
+
input: true
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
weight: 110,
|
|
476
|
+
key: 'validate.minLength',
|
|
477
|
+
label: 'Minimum Length',
|
|
478
|
+
placeholder: 'Minimum Length',
|
|
479
|
+
type: 'number',
|
|
480
|
+
tooltip: 'The minimum length requirement this field must meet.',
|
|
481
|
+
input: true
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
weight: 120,
|
|
485
|
+
key: 'validate.maxLength',
|
|
486
|
+
label: 'Maximum Length',
|
|
487
|
+
placeholder: 'Maximum Length',
|
|
488
|
+
type: 'number',
|
|
489
|
+
tooltip: 'The maximum length requirement this field must meet.',
|
|
490
|
+
input: true
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
weight: 125,
|
|
494
|
+
key: 'validate.minWords',
|
|
495
|
+
label: 'Minimum Word Length',
|
|
496
|
+
placeholder: 'Minimum Word Length',
|
|
497
|
+
type: 'number',
|
|
498
|
+
tooltip: 'The minimum amount of words that can be added to this field.',
|
|
499
|
+
input: true
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
weight: 126,
|
|
503
|
+
key: 'validate.maxWords',
|
|
504
|
+
label: 'Maximum Word Length',
|
|
505
|
+
placeholder: 'Maximum Word Length',
|
|
506
|
+
type: 'number',
|
|
507
|
+
tooltip: 'The maximum amount of words that can be added to this field.',
|
|
508
|
+
input: true
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
weight: 130,
|
|
512
|
+
key: 'validate.pattern',
|
|
513
|
+
label: 'Regular Expression Pattern',
|
|
514
|
+
placeholder: 'Regular Expression Pattern',
|
|
515
|
+
type: 'textfield',
|
|
516
|
+
tooltip: 'The regular expression pattern test that the field value must pass before the form can be submitted.',
|
|
517
|
+
input: true
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
weight: 200,
|
|
521
|
+
key: 'validate.customMessage',
|
|
522
|
+
label: 'Custom Error Message',
|
|
523
|
+
placeholder: 'Custom Error Message',
|
|
524
|
+
type: 'textfield',
|
|
525
|
+
tooltip: 'Error message displayed if any error occurred.',
|
|
526
|
+
input: true
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
type: 'panel',
|
|
530
|
+
title: 'Custom Validation',
|
|
531
|
+
collapsible: true,
|
|
532
|
+
collapsed: true,
|
|
533
|
+
style: {
|
|
534
|
+
'margin-bottom': '10px'
|
|
535
|
+
},
|
|
536
|
+
key: 'custom-validation-js',
|
|
537
|
+
weight: 300,
|
|
538
|
+
components: [
|
|
539
|
+
{
|
|
540
|
+
type: 'htmlelement',
|
|
541
|
+
tag: 'div',
|
|
542
|
+
content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>input</th><td>The value that was input into this component</td></tr><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
type: 'textarea',
|
|
546
|
+
key: 'validate.custom',
|
|
547
|
+
rows: 5,
|
|
548
|
+
editor: 'ace',
|
|
549
|
+
hideLabel: true,
|
|
550
|
+
as: 'javascript',
|
|
551
|
+
input: true
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
type: 'htmlelement',
|
|
555
|
+
tag: 'div',
|
|
556
|
+
content: '\n <small>\n <p>Enter custom validation code.</p>\n <p>You must assign the <strong>valid</strong> variable as either <strong>true</strong> or an error message if validation fails.</p>\n <h5>Example:</h5>\n <pre>valid = (input === \'Joe\') ? true : \'Your name must be "Joe"\';</pre>\n </small>'
|
|
557
|
+
}
|
|
558
|
+
]
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
type: 'panel',
|
|
562
|
+
title: 'JSONLogic Validation',
|
|
563
|
+
collapsible: true,
|
|
564
|
+
collapsed: true,
|
|
565
|
+
key: 'json-validation-json',
|
|
566
|
+
weight: 400,
|
|
567
|
+
components: [
|
|
568
|
+
{
|
|
569
|
+
type: 'htmlelement',
|
|
570
|
+
tag: 'div',
|
|
571
|
+
content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><h5>Example:</h5><pre>{\n "if": [\n {\n "===": [\n {\n "var": "input"\n },\n "Bob"\n ]\n },\n true,\n "Your name must be \'Bob\'!"\n ]\n}</pre>'
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
type: 'textarea',
|
|
575
|
+
key: 'validate.json',
|
|
576
|
+
hideLabel: true,
|
|
577
|
+
rows: 5,
|
|
578
|
+
editor: 'ace',
|
|
579
|
+
as: 'json',
|
|
580
|
+
input: true
|
|
581
|
+
}
|
|
582
|
+
]
|
|
583
|
+
}
|
|
584
|
+
];
|
|
585
|
+
export const baseConditional = [
|
|
586
|
+
{
|
|
587
|
+
type: 'panel',
|
|
588
|
+
title: 'Simple',
|
|
589
|
+
key: 'simple-conditional',
|
|
590
|
+
theme: 'default',
|
|
591
|
+
components: [
|
|
592
|
+
{
|
|
593
|
+
type: 'select',
|
|
594
|
+
input: true,
|
|
595
|
+
label: 'This component should Display:',
|
|
596
|
+
key: 'conditional.show',
|
|
597
|
+
dataSrc: 'values',
|
|
598
|
+
data: {
|
|
599
|
+
values: [
|
|
600
|
+
{
|
|
601
|
+
label: 'True',
|
|
602
|
+
value: 'true'
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
label: 'False',
|
|
606
|
+
value: 'false'
|
|
607
|
+
}
|
|
608
|
+
]
|
|
609
|
+
}
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
type: 'select',
|
|
613
|
+
input: true,
|
|
614
|
+
label: 'When the form component:',
|
|
615
|
+
key: 'conditional.when',
|
|
616
|
+
dataSrc: 'custom',
|
|
617
|
+
valueProperty: 'value',
|
|
618
|
+
data: {}
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
type: 'textfield',
|
|
622
|
+
input: true,
|
|
623
|
+
label: 'Has the value:',
|
|
624
|
+
key: 'conditional.eq'
|
|
625
|
+
}
|
|
626
|
+
]
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
type: 'panel',
|
|
630
|
+
title: 'Advanced Conditions',
|
|
631
|
+
theme: 'default',
|
|
632
|
+
collapsible: true,
|
|
633
|
+
collapsed: true,
|
|
634
|
+
key: 'customConditionalPanel',
|
|
635
|
+
weight: 110,
|
|
636
|
+
components: [
|
|
637
|
+
{
|
|
638
|
+
type: 'htmlelement',
|
|
639
|
+
tag: 'div',
|
|
640
|
+
content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
type: 'panel',
|
|
644
|
+
title: 'JavaScript',
|
|
645
|
+
collapsible: true,
|
|
646
|
+
collapsed: false,
|
|
647
|
+
style: {
|
|
648
|
+
'margin-bottom': '10px'
|
|
649
|
+
},
|
|
650
|
+
key: 'customConditional-js',
|
|
651
|
+
components: [
|
|
652
|
+
{
|
|
653
|
+
type: 'textarea',
|
|
654
|
+
key: 'customConditional',
|
|
655
|
+
rows: 5,
|
|
656
|
+
editor: 'ace',
|
|
657
|
+
hideLabel: true,
|
|
658
|
+
as: 'javascript',
|
|
659
|
+
input: true
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
type: 'htmlelement',
|
|
663
|
+
tag: 'div',
|
|
664
|
+
content: '<p>Enter custom javascript code.</p><p>You must assign the <strong>show</strong> variable a boolean result.</p><p><strong>Note: Advanced Conditional logic will override the results of the Simple Conditional logic.</strong></p><h5>Example</h5><pre>show = !!data.showMe;</pre>'
|
|
665
|
+
}
|
|
666
|
+
]
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
type: 'panel',
|
|
670
|
+
title: 'JSONLogic',
|
|
671
|
+
collapsible: true,
|
|
672
|
+
collapsed: true,
|
|
673
|
+
key: 'customConditional-json',
|
|
674
|
+
components: [
|
|
675
|
+
{
|
|
676
|
+
type: 'htmlelement',
|
|
677
|
+
tag: 'div',
|
|
678
|
+
content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><p>Full <a href="https://lodash.com/docs" target="_blank">Lodash</a> support is provided using an "_" before each operation, such as <code>{"_sum": {var: "data.a"}}</code></p><p><a href="http://formio.github.io/formio.js/app/examples/conditions.html" target="_blank">Click here for an example</a></p>'
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
type: 'textarea',
|
|
682
|
+
key: 'conditional.json',
|
|
683
|
+
rows: 5,
|
|
684
|
+
editor: 'ace',
|
|
685
|
+
hideLabel: true,
|
|
686
|
+
as: 'json',
|
|
687
|
+
input: true
|
|
688
|
+
}
|
|
689
|
+
]
|
|
690
|
+
}
|
|
691
|
+
]
|
|
692
|
+
}
|
|
693
|
+
];
|
|
694
|
+
const sortAndFilterComponents = (components) => {
|
|
695
|
+
return filter(sortBy(components, 'weight'), (item) => !item.ignore);
|
|
696
|
+
};
|
|
697
|
+
const unifyComponents = (objValue, srcValue) => {
|
|
698
|
+
if (objValue.key && srcValue.key) {
|
|
699
|
+
if (objValue.skipMerge || srcValue.skipMerge) {
|
|
700
|
+
return false;
|
|
701
|
+
}
|
|
702
|
+
if (objValue.key === srcValue.key) {
|
|
703
|
+
// Create complete objects by including missing keys.
|
|
704
|
+
each(objValue, (value, prop) => {
|
|
705
|
+
if (objValue.overrideEditForm || !srcValue.hasOwnProperty(prop)) {
|
|
706
|
+
srcValue[prop] = value;
|
|
707
|
+
}
|
|
708
|
+
});
|
|
709
|
+
each(srcValue, (value, prop) => {
|
|
710
|
+
if (srcValue.overrideEditForm || !objValue.hasOwnProperty(prop)) {
|
|
711
|
+
objValue[prop] = value;
|
|
712
|
+
}
|
|
713
|
+
});
|
|
714
|
+
if (objValue.components) {
|
|
715
|
+
srcValue.components = sortAndFilterComponents(unionWith(objValue.components, srcValue.components, unifyComponents));
|
|
716
|
+
}
|
|
717
|
+
return true;
|
|
718
|
+
}
|
|
719
|
+
else {
|
|
720
|
+
return false;
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
return isEqual(objValue, srcValue);
|
|
724
|
+
};
|
|
725
|
+
export const baseEditForm = (...extend) => {
|
|
726
|
+
const components = cloneDeep([
|
|
727
|
+
{
|
|
728
|
+
type: 'tabs',
|
|
729
|
+
key: 'tabs',
|
|
730
|
+
components: [{
|
|
731
|
+
key: 'display',
|
|
732
|
+
components: baseDisplay,
|
|
733
|
+
label: 'Display',
|
|
734
|
+
weight: 0
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
key: 'data',
|
|
738
|
+
components: baseData,
|
|
739
|
+
label: 'Data',
|
|
740
|
+
weight: 10
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
key: 'validation',
|
|
744
|
+
components: baseValidation,
|
|
745
|
+
label: 'Validation',
|
|
746
|
+
weight: 20
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
label: 'Conditional',
|
|
750
|
+
key: 'conditional',
|
|
751
|
+
weight: 40,
|
|
752
|
+
components: baseConditional
|
|
753
|
+
}
|
|
754
|
+
]
|
|
755
|
+
}
|
|
756
|
+
]).concat(extend.map((items) => ({
|
|
757
|
+
type: 'tabs',
|
|
758
|
+
key: 'tabs',
|
|
759
|
+
components: cloneDeep(items),
|
|
760
|
+
})));
|
|
761
|
+
return {
|
|
762
|
+
components: unionWith(components, unifyComponents).concat({
|
|
763
|
+
type: 'hidden',
|
|
764
|
+
key: 'type'
|
|
765
|
+
})
|
|
766
|
+
};
|
|
767
|
+
};
|
|
768
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lZGl0LWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2Zvcm0td3JhcHBlcnMvYmFzZS1lZGl0LWZvcm0vYmFzZS1lZGl0LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QjtRQUNFLE1BQU0sRUFBRSxDQUFDO1FBQ1QsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLEdBQUcsRUFBRSxLQUFLO1FBQ1YsS0FBSyxFQUFFLGVBQWU7UUFDdEIsT0FBTyxFQUFFLDZDQUE2QztRQUN0RCxRQUFRLEVBQUU7WUFDUixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLGNBQWMsRUFBRSxtSUFBbUk7WUFDbkosUUFBUSxFQUFFLElBQUk7U0FDZjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsQ0FBQztRQUNULElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxFQUFFLE9BQU87UUFDWixLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLFdBQVcsRUFBRSxhQUFhO1FBQzFCLE9BQU8sRUFBRSx1REFBdUQ7UUFDaEUsUUFBUSxFQUFFO1lBQ1IsUUFBUSxFQUFFLElBQUk7U0FDZjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxFQUFFLFNBQVM7UUFDZCxL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bnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50cyB9IGZyb20gJ2Zvcm1pb2pzJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCB1bmlvbldpdGgsIGVhY2gsIGZpbHRlciwgc29ydEJ5LCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcclxuXHJcbmV4cG9ydCBjb25zdCBiYXNlRGlzcGxheSA9IFtcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDAsXHJcbiAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgIGlucHV0OiB0cnVlLFxyXG4gICAgaGlkZGVuOiB0cnVlLFxyXG4gICAga2V5OiAna2V5JyxcclxuICAgIGxhYmVsOiAnUHJvcGVydHkgTmFtZScsXHJcbiAgICB0b29sdGlwOiAnVGhlIG5hbWUgb2YgdGhpcyBmaWVsZCBpbiB0aGUgQVBJIGVuZHBvaW50LicsXHJcbiAgICB2YWxpZGF0ZToge1xyXG4gICAgICBwYXR0ZXJuOiAnKFxcXFx3fFxcXFx3W1xcXFx3LS5dKlxcXFx3KScsXHJcbiAgICAgIHBhdHRlcm5NZXNzYWdlOiAnVGhlIHByb3BlcnR5IG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHVuZGVyc2NvcmVzLCBkb3RzIGFuZCBkYXNoZXMgYW5kIHNob3VsZCBub3QgYmUgZW5kZWQgYnkgZGFzaCBvciBkb3QuJyxcclxuICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogMCxcclxuICAgIHR5cGU6ICd0ZXh0ZmllbGQnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbCcsXHJcbiAgICBsYWJlbDogJ0xhYmVsIC0gRW5nbGlzaCcsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0ZpZWxkIExhYmVsJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgbGFiZWwgZm9yIHRoaXMgZmllbGQgdGhhdCB3aWxsIGFwcGVhciBuZXh0IHRvIGl0LicsXHJcbiAgICB2YWxpZGF0ZToge1xyXG4gICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMCxcclxuICAgIHR5cGU6ICd0ZXh0ZmllbGQnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbEFyJyxcclxuICAgIGxhYmVsOiAnTGFiZWwgLSBBcmFiaWMnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdGaWVsZCBMYWJlbCcsXHJcbiAgICB0b29sdGlwOiAnVGhlIGxhYmVsIGZvciB0aGlzIGZpZWxkIHRoYXQgd2lsbCBhcHBlYXIgbmV4dCB0byBpdC4nLFxyXG4gICAgdmFsaWRhdGU6IHtcclxuICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbFBvc2l0aW9uJyxcclxuICAgIGxhYmVsOiAnTGFiZWwgUG9zaXRpb24nLFxyXG4gICAgdG9vbHRpcDogJ1Bvc2l0aW9uIGZvciB0aGUgbGFiZWwgZm9yIHRoaXMgZmllbGQuJyxcclxuICAgIHdlaWdodDogMjAsXHJcbiAgICBkZWZhdWx0VmFsdWU6ICd0b3AnLFxyXG4gICAgZGF0YVNyYzogJ3ZhbHVlcycsXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgIHZhbHVlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnVG9wJyxcclxuICAgICAgICAgIHZhbHVlOiAndG9wJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdMZWZ0IChMZWZ0LWFsaWduZWQpJyxcclxuICAgICAgICAgIHZhbHVlOiAnbGVmdC1sZWZ0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdMZWZ0IChSaWdodC1hbGlnbmVkKScsXHJcbiAgICAgICAgICB2YWx1ZTogJ2xlZnQtcmlnaHQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ1JpZ2h0IChMZWZ0LWFsaWduZWQpJyxcclxuICAgICAgICAgIHZhbHVlOiAncmlnaHQtbGVmdCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnUmlnaHQgKFJpZ2h0LWFsaWduZWQpJyxcclxuICAgICAgICAgIHZhbHVlOiAncmlnaHQtcmlnaHQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ0JvdHRvbScsXHJcbiAgICAgICAgICB2YWx1ZTogJ2JvdHRvbSdcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbFdpZHRoJyxcclxuICAgIGxhYmVsOiAnTGFiZWwgV2lkdGgnLFxyXG4gICAgdG9vbHRpcDogJ1RoZSB3aWR0aCBvZiBsYWJlbCBvbiBsaW5lIGluIHBlcmNlbnRhZ2VzLicsXHJcbiAgICBjbGVhck9uSGlkZTogZmFsc2UsXHJcbiAgICB3ZWlnaHQ6IDMwLFxyXG4gICAgcGxhY2Vob2xkZXI6ICczMCcsXHJcbiAgICBzdWZmaXg6ICclJyxcclxuICAgIHZhbGlkYXRlOiB7XHJcbiAgICAgIG1pbjogMCxcclxuICAgICAgbWF4OiAxMDBcclxuICAgIH0sXHJcbiAgICBjb25kaXRpb25hbDoge1xyXG4gICAgICBqc29uOiB7XHJcbiAgICAgICAgYW5kOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICchPT0nOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyOiAnZGF0YS5sYWJlbFBvc2l0aW9uJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgJ3RvcCdcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJyE9PSc6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YXI6ICdkYXRhLmxhYmVsUG9zaXRpb24nXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAnYm90dG9tJ1xyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgIGlucHV0OiB0cnVlLFxyXG4gICAga2V5OiAnbGFiZWxNYXJnaW4nLFxyXG4gICAgbGFiZWw6ICdMYWJlbCBNYXJnaW4nLFxyXG4gICAgdG9vbHRpcDogJ1RoZSB3aWR0aCBvZiBsYWJlbCBtYXJnaW4gb24gbGluZSBpbiBwZXJjZW50YWdlcy4nLFxyXG4gICAgY2xlYXJPbkhpZGU6IGZhbHNlLFxyXG4gICAgd2VpZ2h0OiAzMCxcclxuICAgIHBsYWNlaG9sZGVyOiAnMycsXHJcbiAgICBzdWZmaXg6ICclJyxcclxuICAgIHZhbGlkYXRlOiB7XHJcbiAgICAgIG1pbjogMCxcclxuICAgICAgbWF4OiAxMDBcclxuICAgIH0sXHJcbiAgICBjb25kaXRpb25hbDoge1xyXG4gICAgICBqc29uOiB7XHJcbiAgICAgICAgYW5kOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICchPT0nOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyOiAnZGF0YS5sYWJlbFBvc2l0aW9uJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgJ3RvcCdcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJyE9PSc6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YXI6ICdkYXRhLmxhYmVsUG9zaXRpb24nXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAnYm90dG9tJ1xyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDIwMCxcclxuICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2Rlc2NyaXB0aW9uJyxcclxuICAgIGxhYmVsOiAnRGVzY3JpcHRpb24gLSBFbmdsaXNoJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVzY3JpcHRpb24gZm9yIHRoaXMgZmllbGQuJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgZGVzY3JpcHRpb24gaXMgdGV4dCB0aGF0IHdpbGwgYXBwZWFyIGJlbG93IHRoZSBpbnB1dCBmaWVsZC4nLFxyXG4gICAgZWRpdG9yOiAnYWNlJyxcclxuICAgIGFzOiAnaHRtbCcsXHJcbiAgICB3eXNpd3lnOiB7XHJcbiAgICAgIG1pbkxpbmVzOiAzLFxyXG4gICAgICBpc1VzZVdvcmtlckRpc2FibGVkOiB0cnVlXHJcbiAgICB9XHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDIwMCxcclxuICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2Rlc2NyaXB0aW9uQXInLFxyXG4gICAgbGFiZWw6ICdEZXNjcmlwdGlvbiAtIEFyYWJpYycsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0Rlc2NyaXB0aW9uIGZvciB0aGlzIGZpZWxkLicsXHJcbiAgICB0b29sdGlwOiAnVGhlIGRlc2NyaXB0aW9uIGlzIHRleHQgdGhhdCB3aWxsIGFwcGVhciBiZWxvdyB0aGUgaW5wdXQgZmllbGQuJyxcclxuICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICBhczogJ2h0bWwnLFxyXG4gICAgd3lzaXd5Zzoge1xyXG4gICAgICBtaW5MaW5lczogMyxcclxuICAgICAgaXNVc2VXb3JrZXJEaXNhYmxlZDogdHJ1ZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAzMDAsXHJcbiAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICd0b29sdGlwJyxcclxuICAgIGxhYmVsOiAnVG9vbHRpcCAtIEVuZ2xpc2gnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdUbyBhZGQgYSB0b29sdGlwIHRvIHRoaXMgZmllbGQsIGVudGVyIHRleHQgaGVyZS4nLFxyXG4gICAgdG9vbHRpcDogJ0FkZHMgYSB0b29sdGlwIHRvIHRoZSBzaWRlIG9mIHRoaXMgZmllbGQuJyxcclxuICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICBhczogJ2h0bWwnLFxyXG4gICAgd3lzaXd5Zzoge1xyXG4gICAgICBtaW5MaW5lczogMyxcclxuICAgICAgaXNVc2VXb3JrZXJEaXNhYmxlZDogdHJ1ZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAzMDAsXHJcbiAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICd0b29sdGlwQXInLFxyXG4gICAgbGFiZWw6ICdUb29sdGlwIC0gQXJhYmljJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnVG8gYWRkIGEgdG9vbHRpcCB0byB0aGlzIGZpZWxkLCBlbnRlciB0ZXh0IGhlcmUuJyxcclxuICAgIHRvb2x0aXA6ICdBZGRzIGEgdG9vbHRpcCB0byB0aGUgc2lkZSBvZiB0aGlzIGZpZWxkLicsXHJcbiAgICBlZGl0b3I6ICdhY2UnLFxyXG4gICAgYXM6ICdodG1sJyxcclxuICAgIHd5c2l3eWc6IHtcclxuICAgICAgbWluTGluZXM6IDMsXHJcbiAgICAgIGlzVXNlV29ya2VyRGlzYWJsZWQ6IHRydWVcclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogNDEwLFxyXG4gICAgdHlwZTogJ3RleHRmaWVsZCcsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2lucHV0TWFzaycsXHJcbiAgICBsYWJlbDogJ0lucHV0IE1hc2snLFxyXG4gICAgdG9vbHRpcDogJ0FuIGlucHV0IG1hc2sgaGVscHMgdGhlIHVzZXIgd2l0aCBpbnB1dCBieSBlbnN1cmluZyBhIHByZWRlZmluZWQgZm9ybWF0Ljxicj48YnI+OTogbnVtZXJpYzxicj5hOiBhbHBoYWJldGljYWw8YnI+KjogYWxwaGFudW1lcmljPGJyPjxicj5FeGFtcGxlIHRlbGVwaG9uZSBtYXNrOiAoOTk5KSA5OTktOTk5OTxicj48YnI+U2VlIHRoZSA8YSB0YXJnZXQ9XFwnX2JsYW5rXFwnIGhyZWY9XFwnaHR0cHM6Ly9naXRodWIuY29tL1JvYmluSGVyYm90cy9qcXVlcnkuaW5wdXRtYXNrXFwnPmpxdWVyeS5pbnB1dG1hc2sgZG9jdW1lbnRhdGlvbjwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9hPidcclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogNDExLFxyXG4gICAgdHlwZTogJ3RleHRmaWVsZCcsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2lucHV0TWFza1BsYWNlaG9sZGVyQ2hhcicsXHJcbiAgICBsYWJlbDogJ0lucHV0IE1hc2sgUGxhY2Vob2xkZXIgQ2hhcicsXHJcbiAgICB0b29sdGlwOiAnWW91IGNhbiBzcGVjaWZ5IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBpbiB0aGUgZmllbGQuIDxicj5FLmcuLCDLjTxicj5NYWtlIG5vdGUgdGhhdCBwbGFjZWhvbGRlciBjaGFyIHdpbGwgYmUgcmVwbGFjZWQgYnkgYSBzcGFjZSBpZiBpdCBpcyB1c2VkIGluc2lkZSB0aGUgbWFzaycsXHJcbiAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgIG1heExlbmd0aDogMVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIHtcclxuICAgIHdlaWdodDogMTEwMCxcclxuICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICBsYWJlbDogJ0hpZGRlbicsXHJcbiAgICB0b29sdGlwOiAnQSBoaWRkZW4gZmllbGQgaXMgc3RpbGwgYSBwYXJ0IG9mIHRoZSBmb3JtLCBidXQgaXMgaGlkZGVuIGZyb20gdmlldy4nLFxyXG4gICAga2V5OiAnaGlkZGVuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDEyMDAsXHJcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgbGFiZWw6ICdIaWRlIExhYmVsJyxcclxuICAgIHRvb2x0aXA6ICdIaWRlIHRoZSBsYWJlbCAodGl0bGUsIGlmIG5vIGxhYmVsKSBvZiB0aGlzIGNvbXBvbmVudC4gVGhpcyBhbGxvd3MgeW91IHRvIHNob3cgdGhlIGxhYmVsIGluIHRoZSBmb3JtIGJ1aWxkZXIsIGJ1dCBub3Qgd2hlbiBpdCBpcyByZW5kZXJlZC4nLFxyXG4gICAga2V5OiAnaGlkZUxhYmVsJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxNDAwLFxyXG4gICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgIGxhYmVsOiAnRGlzYWJsZWQnLFxyXG4gICAgdG9vbHRpcDogJ0Rpc2FibGUgdGhlIGZvcm0gaW5wdXQuJyxcclxuICAgIGtleTogJ2Rpc2FibGVkJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfVxyXG5cclxuXTtcclxuZXhwb3J0IGNvbnN0IGJhc2VEYXRhID0gW1xyXG4gIHtcclxuICAgIHdlaWdodDogMCxcclxuICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICBsYWJlbDogJ011bHRpcGxlIFZhbHVlcycsXHJcbiAgICB0b29sdGlwOiAnQWxsb3dzIG11bHRpcGxlIHZhbHVlcyB0byBiZSBlbnRlcmVkIGZvciB0aGlzIGZpZWxkLicsXHJcbiAgICBrZXk6ICdtdWx0aXBsZScsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogJ3RleHRmaWVsZCcsXHJcbiAgICBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLFxyXG4gICAga2V5OiAnZGVmYXVsdFZhbHVlJyxcclxuICAgIHdlaWdodDogNSxcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVmYXVsdCBWYWx1ZScsXHJcbiAgICB0b29sdGlwOiAnVGhlIHdpbGwgYmUgdGhlIHZhbHVlIGZvciB0aGlzIGZpZWxkLCBiZWZvcmUgdXNlciBpbnRlcmFjdGlvbi4gSGF2aW5nIGEgZGVmYXVsdCB2YWx1ZSB3aWxsIG92ZXJyaWRlIHRoZSBwbGFjZWhvbGRlciB0ZXh0LicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcblxyXG4gIHtcclxuICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdyZWRyYXdPbicsXHJcbiAgICBsYWJlbDogJ1JlZHJhdyBPbicsXHJcbiAgICB3ZWlnaHQ6IDYwMCxcclxuICAgIHRvb2x0aXA6ICdSZWRyYXcgdGhpcyBjb21wb25lbnQgaWYgYW5vdGhlciBjb21wb25lbnQgY2hhbmdlcy4gVGhpcyBpcyB1c2VmdWwgaWYgaW50ZXJwb2xhdGluZyBwYXJ0cyBvZiB0aGUgY29tcG9uZW50IGxpa2UgdGhlIGxhYmVsLicsXHJcbiAgICBkYXRhU3JjOiAnY3VzdG9tJyxcclxuICAgIHZhbHVlUHJvcGVydHk6ICd2YWx1ZScsXHJcbiAgICBkYXRhOiB7fSxcclxuICAgIGNvbmRpdGlvbmFsOiB7XHJcbiAgICAgIGpzb246IHtcclxuICAgICAgICAnISc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFyOiAnZGF0YS5kYXRhU3JjJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiA3MDAsXHJcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgbGFiZWw6ICdDbGVhciBWYWx1ZSBXaGVuIEhpZGRlbicsXHJcbiAgICBrZXk6ICdjbGVhck9uSGlkZScsXHJcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXHJcbiAgICB0b29sdGlwOiAnV2hlbiBhIGZpZWxkIGlzIGhpZGRlbiwgY2xlYXIgdGhlIHZhbHVlLicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogJ3BhbmVsJyxcclxuICAgIHRpdGxlOiAnQ3VzdG9tIERlZmF1bHQgVmFsdWUnLFxyXG4gICAgdGhlbWU6ICdkZWZhdWx0JyxcclxuICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgY29sbGFwc2VkOiB0cnVlLFxyXG4gICAga2V5OiAnY3VzdG9tRGVmYXVsdFZhbHVlUGFuZWwnLFxyXG4gICAgd2VpZ2h0OiAxMDAwLFxyXG4gICAgY29tcG9uZW50czogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICc8cD5UaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIGluIGFsbCBzY3JpcHRzLjwvcD48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1jb25kZW5zZWQgdGFibGUtc3RyaXBlZFwiPjx0cj48dGg+Zm9ybTwvdGg+PHRkPlRoZSBjb21wbGV0ZSBmb3JtIEpTT04gb2JqZWN0PC90ZD48L3RyPjx0cj48dGg+c3VibWlzc2lvbjwvdGg+PHRkPlRoZSBjb21wbGV0ZSBzdWJtaXNzaW9uIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5kYXRhPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gZGF0YSBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+cm93PC90aD48dGQ+Q29udGV4dHVhbCBcInJvd1wiIGRhdGEsIHVzZWQgd2l0aGluIERhdGFHcmlkLCBFZGl0R3JpZCwgYW5kIENvbnRhaW5lciBjb21wb25lbnRzPC90ZD48L3RyPjx0cj48dGg+Y29tcG9uZW50PC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IEpTT048L3RkPjwvdHI+PHRyPjx0aD5pbnN0YW5jZTwvdGg+PHRkPlRoZSBjdXJyZW50IGNvbXBvbmVudCBpbnN0YW5jZS48L3RkPjwvdHI+PHRyPjx0aD52YWx1ZTwvdGg+PHRkPlRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuPC90ZD48L3RyPjx0cj48dGg+bW9tZW50PC90aD48dGQ+VGhlIG1vbWVudC5qcyBsaWJyYXJ5IGZvciBkYXRlIG1hbmlwdWxhdGlvbi48L3RkPjwvdHI+PHRyPjx0aD5fPC90aD48dGQ+QW4gaW5zdGFuY2Ugb2YgPGEgaHJlZj1cImh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzL1wiIHRhcmdldD1cIl9ibGFua1wiPkxvZGFzaDwvYT4uPC90ZD48L3RyPjx0cj48dGg+dXRpbHM8L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9kb2NzL2lkZW50aWZpZXJzLmh0bWwjdXRpbHNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Gb3JtaW9VdGlsczwvYT4gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPnV0aWw8L3RoPjx0ZD5BbiBhbGlhcyBmb3IgXCJ1dGlsc1wiLjwvdGQ+PC90cj48L3RhYmxlPjxici8+J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3BhbmVsJyxcclxuICAgICAgICB0aXRsZTogJ0phdmFTY3JpcHQnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICdtYXJnaW4tYm90dG9tJzogJzEwcHgnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBrZXk6ICdjdXN0b21EZWZhdWx0VmFsdWUtanMnLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcclxuICAgICAgICAgICAga2V5OiAnY3VzdG9tRGVmYXVsdFZhbHVlJyxcclxuICAgICAgICAgICAgcm93czogNSxcclxuICAgICAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICAgICAgaGlkZUxhYmVsOiB0cnVlLFxyXG4gICAgICAgICAgICBhczogJ2phdmFzY3JpcHQnLFxyXG4gICAgICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICAgICAgdGFnOiAnZGl2JyxcclxuICAgICAgICAgICAgY29udGVudDogJzxwPkVudGVyIGN1c3RvbSBqYXZhc2NyaXB0IGNvZGUuPC9wPjxwPjxoND5FeGFtcGxlOjwvaDQ+PHByZT52YWx1ZSA9IGRhdGEuZmlyc3ROYW1lICsgXCIgXCIgKyBkYXRhLmxhc3ROYW1lOzwvcHJlPjwvcD4nXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3BhbmVsJyxcclxuICAgICAgICB0aXRsZTogJ0pTT05Mb2dpYycsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgY29sbGFwc2VkOiB0cnVlLFxyXG4gICAgICAgIGtleTogJ2N1c3RvbURlZmF1bHRWYWx1ZS1qc29uJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PHA+RnVsbCA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3NcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Mb2Rhc2g8L2E+IHN1cHBvcnQgaXMgcHJvdmlkZWQgdXNpbmcgYW4gXCJfXCIgYmVmb3JlIGVhY2ggb3BlcmF0aW9uLCBzdWNoIGFzIDxjb2RlPntcIl9zdW1cIjoge3ZhcjogXCJkYXRhLmFcIn19PC9jb2RlPjwvcD48cD48aDQ+RXhhbXBsZTo8L2g0PjxwcmU+e1wiY2F0XCI6IFt7XCJ2YXJcIjogXCJkYXRhLmZpcnN0TmFtZVwifSwgXCIgXCIsIHtcInZhclwiOiBcImRhdGEubGFzdE5hbWVcIn1dfTwvcHJlPidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICAgICAgICAgIGtleTogJ2N1c3RvbURlZmF1bHRWYWx1ZScsXHJcbiAgICAgICAgICAgIHJvd3M6IDUsXHJcbiAgICAgICAgICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICAgICAgICAgIGhpZGVMYWJlbDogdHJ1ZSxcclxuICAgICAgICAgICAgYXM6ICdqc29uJyxcclxuICAgICAgICAgICAgaW5wdXQ6IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICB0aXRsZTogJ0NhbGN1bGF0ZWQgVmFsdWUnLFxyXG4gICAgdGhlbWU6ICdkZWZhdWx0JyxcclxuICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgY29sbGFwc2VkOiB0cnVlLFxyXG4gICAga2V5OiAnY2FsY3VsYXRlVmFsdWVQYW5lbCcsXHJcbiAgICB3ZWlnaHQ6IDExMDAsXHJcbiAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAnaHRtbGVsZW1lbnQnLFxyXG4gICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgY29udGVudDogJzxwPlRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgaW4gYWxsIHNjcmlwdHMuPC9wPjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1zdHJpcGVkXCI+PHRyPjx0aD50b2tlbjwvdGg+PHRkPlRoZSBkZWNvZGVkIEpXVCB0b2tlbiBmb3IgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlci48L3RkPjwvdHI+PHRyPjx0aD5mb3JtPC90aD48dGQ+VGhlIGNvbXBsZXRlIGZvcm0gSlNPTiBvYmplY3Q8L3RkPjwvdHI+PHRyPjx0aD5zdWJtaXNzaW9uPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPmRhdGE8L3RoPjx0ZD5UaGUgY29tcGxldGUgc3VibWlzc2lvbiBkYXRhIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5yb3c8L3RoPjx0ZD5Db250ZXh0dWFsIFwicm93XCIgZGF0YSwgdXNlZCB3aXRoaW4gRGF0YUdyaWQsIEVkaXRHcmlkLCBhbmQgQ29udGFpbmVyIGNvbXBvbmVudHM8L3RkPjwvdHI+PHRyPjx0aD5jb21wb25lbnQ8L3RoPjx0ZD5UaGUgY3VycmVudCBjb21wb25lbnQgSlNPTjwvdGQ+PC90cj48dHI+PHRoPmluc3RhbmNlPC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IGluc3RhbmNlLjwvdGQ+PC90cj48dHI+PHRoPnZhbHVlPC90aD48dGQ+VGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC48L3RkPjwvdHI+PHRyPjx0aD5tb21lbnQ8L3RoPjx0ZD5UaGUgbW9tZW50LmpzIGxpYnJhcnkgZm9yIGRhdGUgbWFuaXB1bGF0aW9uLjwvdGQ+PC90cj48dHI+PHRoPl88L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+TG9kYXNoPC9hPi48L3RkPjwvdHI+PHRyPjx0aD51dGlsczwvdGg+PHRkPkFuIGluc3RhbmNlIG9mIHRoZSA8YSBocmVmPVwiaHR0cDovL2Zvcm1pby5naXRodWIuaW8vZm9ybWlvLmpzL2RvY3MvaWRlbnRpZmllcnMuaHRtbCN1dGlsc1wiIHRhcmdldD1cIl9ibGFua1wiPkZvcm1pb1V0aWxzPC9hPiBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+dXRpbDwvdGg+PHRkPkFuIGFsaWFzIGZvciBcInV0aWxzXCIuPC90ZD48L3RyPjwvdGFibGU+PGJyLz4nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAncGFuZWwnLFxyXG4gICAgICAgIHRpdGxlOiAnSmF2YVNjcmlwdCcsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgJ21hcmdpbi1ib3R0b20nOiAnMTBweCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGtleTogJ2NhbGN1bGF0ZVZhbHVlLWpzJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICAgICAgICAgIGtleTogJ2NhbGN1bGF0ZVZhbHVlJyxcclxuICAgICAgICAgICAgcm93czogNSxcclxuICAgICAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICAgICAgaGlkZUxhYmVsOiB0cnVlLFxyXG4gICAgICAgICAgICBhczogJ2phdmFzY3JpcHQnLFxyXG4gICAgICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICAgICAgdGFnOiAnZGl2JyxcclxuICAgICAgICAgICAgY29udGVudDogJzxwPkVudGVyIGN1c3RvbSBqYXZhc2NyaXB0IGNvZGUuPC9wPjxwPjxoND5FeGFtcGxlOjwvaDQ+PHByZT52YWx1ZSA9IGRhdGEuYSArIGRhdGEuYiArIGRhdGEuYzs8L3ByZT48L3A+J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICAgICAgdGl0bGU6ICdKU09OTG9naWMnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgICAgICBrZXk6ICdjYWxjdWxhdGVWYWx1ZS1qc29uJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PHA+RnVsbCA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3NcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Mb2Rhc2g8L2E+IHN1cHBvcnQgaXMgcHJvdmlkZWQgdXNpbmcgYW4gXCJfXCIgYmVmb3JlIGVhY2ggb3BlcmF0aW9uLCBzdWNoIGFzIDxjb2RlPntcIl9zdW1cIjoge3ZhcjogXCJkYXRhLmFcIn19PC9jb2RlPjwvcD48cD48aDQ+RXhhbXBsZTo8L2g0PjxwcmU+e1wiK1wiOiBbe1widmFyXCI6IFwiZGF0YS5hXCJ9LCB7XCJ2YXJcIjogXCJkYXRhLmJcIn0sIHtcInZhclwiOiBcImRhdGEuY1wifV19PC9wcmU+PHA+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9hcHAvZXhhbXBsZXMvY2FsY3VsYXRlZC5odG1sXCI+Q2xpY2sgaGVyZSBmb3IgYW4gZXhhbXBsZTwvYT48L3A+J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcclxuICAgICAgICAgICAga2V5OiAnY2FsY3VsYXRlVmFsdWUnLFxyXG4gICAgICAgICAgICByb3dzOiA1LFxyXG4gICAgICAgICAgICBlZGl0b3I6ICdhY2UnLFxyXG4gICAgICAgICAgICBoaWRlTGFiZWw6IHRydWUsXHJcbiAgICAgICAgICAgIGFzOiAnanNvbicsXHJcbiAgICAgICAgICAgIGlucHV0OiB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgIGlucHV0OiB0cnVlLFxyXG4gICAgd2VpZ2h0OiAxMjAwLFxyXG4gICAga2V5OiAnYWxsb3dDYWxjdWxhdGVPdmVycmlkZScsXHJcbiAgICBsYWJlbDogJ0FsbG93IE1hbnVhbCBPdmVycmlkZSBvZiBDYWxjdWxhdGVkIFZhbHVlJyxcclxuICAgIHRvb2x0aXA6ICdXaGVuIGNoZWNrZWQsIHRoaXMgd2lsbCBhbGxvdyB0aGUgdXNlciB0byBtYW51YWxseSBvdmVycmlkZSB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4nXHJcbiAgfVxyXG5dO1xyXG5leHBvcnQgY29uc3QgYmFzZVZhbGlkYXRpb24gPSBbXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAwLFxyXG4gICAgdHlwZTogJ3NlbGVjdCcsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZU9uJyxcclxuICAgIGRlZmF1bHRWYWx1ZTogJ2NoYW5nZScsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGxhYmVsOiAnVmFsaWRhdGUgT24nLFxyXG4gICAgdG9vbHRpcDogJ0RldGVybWluZXMgd2hlbiB0aGlzIGNvbXBvbmVudCBzaG91bGQgdHJpZ2dlciBmcm9udC1lbmQgdmFsaWRhdGlvbi4nLFxyXG4gICAgZGF0YVNyYzogJ3ZhbHVlcycsXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgIHZhbHVlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnQ2hhbmdlJyxcclxuICAgICAgICAgIHZhbHVlOiAnY2hhbmdlJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdCbHVyJyxcclxuICAgICAgICAgIHZhbHVlOiAnYmx1cidcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogMTAsXHJcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgbGFiZWw6ICdSZXF1aXJlZCcsXHJcbiAgICB0b29sdGlwOiAnQSByZXF1aXJlZCBmaWVsZCBtdXN0IGJlIGZpbGxlZCBpbiBiZWZvcmUgdGhlIGZvcm0gY2FuIGJlIHN1Ym1pdHRlZC4nLFxyXG4gICAga2V5OiAndmFsaWRhdGUucmVxdWlyZWQnLFxyXG4gICAgaW5wdXQ6IHRydWVcclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogMTEwLFxyXG4gICAga2V5OiAndmFsaWRhdGUubWluTGVuZ3RoJyxcclxuICAgIGxhYmVsOiAnTWluaW11bSBMZW5ndGgnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdNaW5pbXVtIExlbmd0aCcsXHJcbiAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgbWluaW11bSBsZW5ndGggcmVxdWlyZW1lbnQgdGhpcyBmaWVsZCBtdXN0IG1lZXQuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDEyMCxcclxuICAgIGtleTogJ3ZhbGlkYXRlLm1heExlbmd0aCcsXHJcbiAgICBsYWJlbDogJ01heGltdW0gTGVuZ3RoJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnTWF4aW11bSBMZW5ndGgnLFxyXG4gICAgdHlwZTogJ251bWJlcicsXHJcbiAgICB0b29sdGlwOiAnVGhlIG1heGltdW0gbGVuZ3RoIHJlcXVpcmVtZW50IHRoaXMgZmllbGQgbXVzdCBtZWV0LicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMjUsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5taW5Xb3JkcycsXHJcbiAgICBsYWJlbDogJ01pbmltdW0gV29yZCBMZW5ndGgnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdNaW5pbXVtIFdvcmQgTGVuZ3RoJyxcclxuICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgdG9vbHRpcDogJ1RoZSBtaW5pbXVtIGFtb3VudCBvZiB3b3JkcyB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGlzIGZpZWxkLicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMjYsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5tYXhXb3JkcycsXHJcbiAgICBsYWJlbDogJ01heGltdW0gV29yZCBMZW5ndGgnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdNYXhpbXVtIFdvcmQgTGVuZ3RoJyxcclxuICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgdG9vbHRpcDogJ1RoZSBtYXhpbXVtIGFtb3VudCBvZiB3b3JkcyB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGlzIGZpZWxkLicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMzAsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5wYXR0ZXJuJyxcclxuICAgIGxhYmVsOiAnUmVndWxhciBFeHByZXNzaW9uIFBhdHRlcm4nLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdSZWd1bGFyIEV4cHJlc3Npb24gUGF0dGVybicsXHJcbiAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdGVzdCB0aGF0IHRoZSBmaWVsZCB2YWx1ZSBtdXN0IHBhc3MgYmVmb3JlIHRoZSBmb3JtIGNhbiBiZSBzdWJtaXR0ZWQuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAyMDAsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5jdXN0b21NZXNzYWdlJyxcclxuICAgIGxhYmVsOiAnQ3VzdG9tIEVycm9yIE1lc3NhZ2UnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdDdXN0b20gRXJyb3IgTWVzc2FnZScsXHJcbiAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgIHRvb2x0aXA6ICdFcnJvciBtZXNzYWdlIGRpc3BsYXllZCBpZiBhbnkgZXJyb3Igb2NjdXJyZWQuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiAncGFuZWwnLFxyXG4gICAgdGl0bGU6ICdDdXN0b20gVmFsaWRhdGlvbicsXHJcbiAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgIHN0eWxlOiB7XHJcbiAgICAgICdtYXJnaW4tYm90dG9tJzogJzEwcHgnXHJcbiAgICB9LFxyXG4gICAga2V5OiAnY3VzdG9tLXZhbGlkYXRpb24tanMnLFxyXG4gICAgd2VpZ2h0OiAzMDAsXHJcbiAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAnaHRtbGVsZW1lbnQnLFxyXG4gICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgY29udGVudDogJzxwPlRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgaW4gYWxsIHNjcmlwdHMuPC9wPjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1zdHJpcGVkXCI+PHRyPjx0aD5pbnB1dDwvdGg+PHRkPlRoZSB2YWx1ZSB0aGF0IHdhcyBpbnB1dCBpbnRvIHRoaXMgY29tcG9uZW50PC90ZD48L3RyPjx0cj48dGg+Zm9ybTwvdGg+PHRkPlRoZSBjb21wbGV0ZSBmb3JtIEpTT04gb2JqZWN0PC90ZD48L3RyPjx0cj48dGg+c3VibWlzc2lvbjwvdGg+PHRkPlRoZSBjb21wbGV0ZSBzdWJtaXNzaW9uIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5kYXRhPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gZGF0YSBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+cm93PC90aD48dGQ+Q29udGV4dHVhbCBcInJvd1wiIGRhdGEsIHVzZWQgd2l0aGluIERhdGFHcmlkLCBFZGl0R3JpZCwgYW5kIENvbnRhaW5lciBjb21wb25lbnRzPC90ZD48L3RyPjx0cj48dGg+Y29tcG9uZW50PC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IEpTT048L3RkPjwvdHI+PHRyPjx0aD5pbnN0YW5jZTwvdGg+PHRkPlRoZSBjdXJyZW50IGNvbXBvbmVudCBpbnN0YW5jZS48L3RkPjwvdHI+PHRyPjx0aD52YWx1ZTwvdGg+PHRkPlRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuPC90ZD48L3RyPjx0cj48dGg+bW9tZW50PC90aD48dGQ+VGhlIG1vbWVudC5qcyBsaWJyYXJ5IGZvciBkYXRlIG1hbmlwdWxhdGlvbi48L3RkPjwvdHI+PHRyPjx0aD5fPC90aD48dGQ+QW4gaW5zdGFuY2Ugb2YgPGEgaHJlZj1cImh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzL1wiIHRhcmdldD1cIl9ibGFua1wiPkxvZGFzaDwvYT4uPC90ZD48L3RyPjx0cj48dGg+dXRpbHM8L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9kb2NzL2lkZW50aWZpZXJzLmh0bWwjdXRpbHNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Gb3JtaW9VdGlsczwvYT4gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPnV0aWw8L3RoPjx0ZD5BbiBhbGlhcyBmb3IgXCJ1dGlsc1wiLjwvdGQ+PC90cj48L3RhYmxlPjxici8+J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcclxuICAgICAgICBrZXk6ICd2YWxpZGF0ZS5jdXN0b20nLFxyXG4gICAgICAgIHJvd3M6IDUsXHJcbiAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICBoaWRlTGFiZWw6IHRydWUsXHJcbiAgICAgICAgYXM6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICdcXG4gICAgICAgICAgPHNtYWxsPlxcbiAgICAgICAgICAgIDxwPkVudGVyIGN1c3RvbSB2YWxpZGF0aW9uIGNvZGUuPC9wPlxcbiAgICAgICAgICAgIDxwPllvdSBtdXN0IGFzc2lnbiB0aGUgPHN0cm9uZz52YWxpZDwvc3Ryb25nPiB2YXJpYWJsZSBhcyBlaXRoZXIgPHN0cm9uZz50cnVlPC9zdHJvbmc+IG9yIGFuIGVycm9yIG1lc3NhZ2UgaWYgdmFsaWRhdGlvbiBmYWlscy48L3A+XFxuICAgICAgICAgICAgPGg1PkV4YW1wbGU6PC9oNT5cXG4gICAgICAgICAgICA8cHJlPnZhbGlkID0gKGlucHV0ID09PSBcXCdKb2VcXCcpID8gdHJ1ZSA6IFxcJ1lvdXIgbmFtZSBtdXN0IGJlIFwiSm9lXCJcXCc7PC9wcmU+XFxuICAgICAgICAgIDwvc21hbGw+J1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiAncGFuZWwnLFxyXG4gICAgdGl0bGU6ICdKU09OTG9naWMgVmFsaWRhdGlvbicsXHJcbiAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgIGtleTogJ2pzb24tdmFsaWRhdGlvbi1qc29uJyxcclxuICAgIHdlaWdodDogNDAwLFxyXG4gICAgY29tcG9uZW50czogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PGg1PkV4YW1wbGU6PC9oNT48cHJlPntcXG4gIFwiaWZcIjogW1xcbiAgICB7XFxuICAgICAgXCI9PT1cIjogW1xcbiAgICAgICAge1xcbiAgICAgICAgICBcInZhclwiOiBcImlucHV0XCJcXG4gICAgICAgIH0sXFxuICAgICAgICBcIkJvYlwiXFxuICAgICAgXVxcbiAgICB9LFxcbiAgICB0cnVlLFxcbiAgICBcIllvdXIgbmFtZSBtdXN0IGJlIFxcJ0JvYlxcJyFcIlxcbiAgXVxcbn08L3ByZT4nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgICAgIGtleTogJ3ZhbGlkYXRlLmpzb24nLFxyXG4gICAgICAgIGhpZGVMYWJlbDogdHJ1ZSxcclxuICAgICAgICByb3dzOiA1LFxyXG4gICAgICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICAgICAgYXM6ICdqc29uJyxcclxuICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG5dO1xyXG5leHBvcnQgY29uc3QgYmFzZUNvbmRpdGlvbmFsID0gW1xyXG4gIHtcclxuICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICB0aXRsZTogJ1NpbXBsZScsXHJcbiAgICBrZXk6ICdzaW1wbGUtY29uZGl0aW9uYWwnLFxyXG4gICAgdGhlbWU6ICdkZWZhdWx0JyxcclxuICAgIGNvbXBvbmVudHM6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICAgIGxhYmVsOiAnVGhpcyBjb21wb25lbnQgc2hvdWxkIERpc3BsYXk6JyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbC5zaG93JyxcclxuICAgICAgICBkYXRhU3JjOiAndmFsdWVzJyxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiAnVHJ1ZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICd0cnVlJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6ICdGYWxzZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdmYWxzZSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICAgIGxhYmVsOiAnV2hlbiB0aGUgZm9ybSBjb21wb25lbnQ6JyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbC53aGVuJyxcclxuICAgICAgICBkYXRhU3JjOiAnY3VzdG9tJyxcclxuICAgICAgICB2YWx1ZVByb3BlcnR5OiAndmFsdWUnLFxyXG4gICAgICAgIGRhdGE6IHt9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgICBsYWJlbDogJ0hhcyB0aGUgdmFsdWU6JyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbC5lcSdcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogJ3BhbmVsJyxcclxuICAgIHRpdGxlOiAnQWR2YW5jZWQgQ29uZGl0aW9ucycsXHJcbiAgICB0aGVtZTogJ2RlZmF1bHQnLFxyXG4gICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICBjb2xsYXBzZWQ6IHRydWUsXHJcbiAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbFBhbmVsJyxcclxuICAgIHdlaWdodDogMTEwLFxyXG4gICAgY29tcG9uZW50czogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICc8cD5UaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIGluIGFsbCBzY3JpcHRzLjwvcD48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1jb25kZW5zZWQgdGFibGUtc3RyaXBlZFwiPjx0cj48dGg+Zm9ybTwvdGg+PHRkPlRoZSBjb21wbGV0ZSBmb3JtIEpTT04gb2JqZWN0PC90ZD48L3RyPjx0cj48dGg+c3VibWlzc2lvbjwvdGg+PHRkPlRoZSBjb21wbGV0ZSBzdWJtaXNzaW9uIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5kYXRhPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gZGF0YSBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+cm93PC90aD48dGQ+Q29udGV4dHVhbCBcInJvd1wiIGRhdGEsIHVzZWQgd2l0aGluIERhdGFHcmlkLCBFZGl0R3JpZCwgYW5kIENvbnRhaW5lciBjb21wb25lbnRzPC90ZD48L3RyPjx0cj48dGg+Y29tcG9uZW50PC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IEpTT048L3RkPjwvdHI+PHRyPjx0aD5pbnN0YW5jZTwvdGg+PHRkPlRoZSBjdXJyZW50IGNvbXBvbmVudCBpbnN0YW5jZS48L3RkPjwvdHI+PHRyPjx0aD52YWx1ZTwvdGg+PHRkPlRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuPC90ZD48L3RyPjx0cj48dGg+bW9tZW50PC90aD48dGQ+VGhlIG1vbWVudC5qcyBsaWJyYXJ5IGZvciBkYXRlIG1hbmlwdWxhdGlvbi48L3RkPjwvdHI+PHRyPjx0aD5fPC90aD48dGQ+QW4gaW5zdGFuY2Ugb2YgPGEgaHJlZj1cImh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzL1wiIHRhcmdldD1cIl9ibGFua1wiPkxvZGFzaDwvYT4uPC90ZD48L3RyPjx0cj48dGg+dXRpbHM8L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9kb2NzL2lkZW50aWZpZXJzLmh0bWwjdXRpbHNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Gb3JtaW9VdGlsczwvYT4gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPnV0aWw8L3RoPjx0ZD5BbiBhbGlhcyBmb3IgXCJ1dGlsc1wiLjwvdGQ+PC90cj48L3RhYmxlPjxici8+J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3BhbmVsJyxcclxuICAgICAgICB0aXRsZTogJ0phdmFTY3JpcHQnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICdtYXJnaW4tYm90dG9tJzogJzEwcHgnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbC1qcycsXHJcbiAgICAgICAgY29tcG9uZW50czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgICAgICAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbCcsXHJcbiAgICAgICAgICAgIHJvd3M6IDUsXHJcbiAgICAgICAgICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICAgICAgICAgIGhpZGVMYWJlbDogdHJ1ZSxcclxuICAgICAgICAgICAgYXM6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICAgICAgaW5wdXQ6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FbnRlciBjdXN0b20gamF2YXNjcmlwdCBjb2RlLjwvcD48cD5Zb3UgbXVzdCBhc3NpZ24gdGhlIDxzdHJvbmc+c2hvdzwvc3Ryb25nPiB2YXJpYWJsZSBhIGJvb2xlYW4gcmVzdWx0LjwvcD48cD48c3Ryb25nPk5vdGU6IEFkdmFuY2VkIENvbmRpdGlvbmFsIGxvZ2ljIHdpbGwgb3ZlcnJpZGUgdGhlIHJlc3VsdHMgb2YgdGhlIFNpbXBsZSBDb25kaXRpb25hbCBsb2dpYy48L3N0cm9uZz48L3A+PGg1PkV4YW1wbGU8L2g1PjxwcmU+c2hvdyA9ICEhZGF0YS5zaG93TWU7PC9wcmU+J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICAgICAgdGl0bGU6ICdKU09OTG9naWMnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgICAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbC1qc29uJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PHA+RnVsbCA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3NcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Mb2Rhc2g8L2E+IHN1cHBvcnQgaXMgcHJvdmlkZWQgdXNpbmcgYW4gXCJfXCIgYmVmb3JlIGVhY2ggb3BlcmF0aW9uLCBzdWNoIGFzIDxjb2RlPntcIl9zdW1cIjoge3ZhcjogXCJkYXRhLmFcIn19PC9jb2RlPjwvcD48cD48YSBocmVmPVwiaHR0cDovL2Zvcm1pby5naXRodWIuaW8vZm9ybWlvLmpzL2FwcC9leGFtcGxlcy9jb25kaXRpb25zLmh0bWxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5DbGljayBoZXJlIGZvciBhbiBleGFtcGxlPC9hPjwvcD4nXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgICAgICAgICBrZXk6ICdjb25kaXRpb25hbC5qc29uJyxcclxuICAgICAgICAgICAgcm93czogNSxcclxuICAgICAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICAgICAgaGlkZUxhYmVsOiB0cnVlLFxyXG4gICAgICAgICAgICBhczogJ2pzb24nLFxyXG4gICAgICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH1cclxuXTtcclxuY29uc3Qgc29ydEFuZEZpbHRlckNvbXBvbmVudHMgPSAoY29tcG9uZW50cykgPT4ge1xyXG4gIHJldHVybiBmaWx0ZXIoc29ydEJ5KGNvbXBvbmVudHMsICd3ZWlnaHQnKSwgKGl0ZW0pID0+ICFpdGVtLmlnbm9yZSk7XHJcbn07XHJcbmNvbnN0IHVuaWZ5Q29tcG9uZW50cyA9IChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcclxuICBpZiAob2JqVmFsdWUua2V5ICYmIHNyY1ZhbHVlLmtleSkge1xyXG4gICAgaWYgKG9ialZhbHVlLnNraXBNZXJnZSB8fCBzcmNWYWx1ZS5za2lwTWVyZ2UpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9ialZhbHVlLmtleSA9PT0gc3JjVmFsdWUua2V5KSB7XHJcbiAgICAgIC8vIENyZWF0ZSBjb21wbGV0ZSBvYmplY3RzIGJ5IGluY2x1ZGluZyBtaXNzaW5nIGtleXMuXHJcbiAgICAgIGVhY2gob2JqVmFsdWUsICh2YWx1ZSwgcHJvcCkgPT4ge1xyXG4gICAgICAgIGlmIChvYmpWYWx1ZS5vdmVycmlkZUVkaXRGb3JtIHx8ICFzcmNWYWx1ZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xyXG4gICAgICAgICAgc3JjVmFsdWVbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBlYWNoKHNyY1ZhbHVlLCAodmFsdWUsIHByb3ApID0+IHtcclxuICAgICAgICBpZiAoc3JjVmFsdWUub3ZlcnJpZGVFZGl0Rm9ybSB8fCAhb2JqVmFsdWUuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgICAgIG9ialZhbHVlW3Byb3BdID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChvYmpWYWx1ZS5jb21wb25lbnRzKSB7XHJcbiAgICAgICAgc3JjVmFsdWUuY29tcG9uZW50cyA9IHNvcnRBbmRGaWx0ZXJDb21wb25lbnRzKFxyXG4gICAgICAgICAgdW5pb25XaXRoKG9ialZhbHVlLmNvbXBvbmVudHMsIHNyY1ZhbHVlLmNvbXBvbmVudHMsIHVuaWZ5Q29tcG9uZW50cylcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGlzRXF1YWwob2JqVmFsdWUsIHNyY1ZhbHVlKTtcclxufTtcclxuZXhwb3J0IGNvbnN0IGJhc2VFZGl0Rm9ybSA9ICguLi5leHRlbmQpID0+IHtcclxuXHJcbiAgY29uc3QgY29tcG9uZW50cyA9IGNsb25lRGVlcChbXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICd0YWJzJyxcclxuICAgICAga2V5OiAndGFicycsXHJcbiAgICAgIGNvbXBvbmVudHM6IFt7XHJcbiAgICAgICAga2V5OiAnZGlzcGxheScsXHJcbiAgICAgICAgY29tcG9uZW50czogYmFzZURpc3BsYXksXHJcbiAgICAgICAgbGFiZWw6ICdEaXNwbGF5JyxcclxuICAgICAgICB3ZWlnaHQ6IDBcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ2RhdGEnLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IGJhc2VEYXRhLFxyXG4gICAgICAgIGxhYmVsOiAnRGF0YScsXHJcbiAgICAgICAgd2VpZ2h0OiAxMFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiAndmFsaWRhdGlvbicsXHJcbiAgICAgICAgY29tcG9uZW50czogYmFzZVZhbGlkYXRpb24sXHJcbiAgICAgICAgbGFiZWw6ICdWYWxpZGF0aW9uJyxcclxuICAgICAgICB3ZWlnaHQ6IDIwXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ0NvbmRpdGlvbmFsJyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbCcsXHJcbiAgICAgICAgd2VpZ2h0OiA0MCxcclxuICAgICAgICBjb21wb25lbnRzOiBiYXNlQ29uZGl0aW9uYWxcclxuICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgXSkuY29uY2F0KGV4dGVuZC5tYXAoKGl0ZW1zKSA9PiAoe1xyXG4gICAgdHlwZTogJ3RhYnMnLFxyXG4gICAga2V5OiAndGFicycsXHJcbiAgICBjb21wb25lbnRzOiBjbG9uZURlZXAoaXRlbXMpLFxyXG4gIH0pKSk7XHJcbiAgcmV0dXJuIHtcclxuICAgIGNvbXBvbmVudHM6IHVuaW9uV2l0aChjb21wb25lbnRzLCB1bmlmeUNvbXBvbmVudHMpLmNvbmNhdCh7XHJcbiAgICAgIHR5cGU6ICdoaWRkZW4nLFxyXG4gICAgICBrZXk6ICd0eXBlJ1xyXG4gICAgfSlcclxuICB9O1xyXG59O1xyXG4iXX0=
|