@kaspernj/api-maker 1.0.2159 → 1.0.2161
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/build/api.d.ts +46 -34
- package/build/api.d.ts.map +1 -1
- package/build/api.js +32 -25
- package/build/attribute-not-loaded-error.d.ts.map +1 -1
- package/build/attribute-not-loaded-error.js +2 -1
- package/build/base-error.d.ts +49 -60
- package/build/base-error.d.ts.map +1 -1
- package/build/base-error.js +3 -2
- package/build/base-model/column.d.ts +2 -2
- package/build/base-model/column.d.ts.map +1 -1
- package/build/base-model/column.js +3 -2
- package/build/base-model/reflection.d.ts +8 -3
- package/build/base-model/reflection.d.ts.map +1 -1
- package/build/base-model/reflection.js +8 -3
- package/build/base-model/scope.d.ts +1 -1
- package/build/base-model/scope.d.ts.map +1 -1
- package/build/base-model/scope.js +3 -2
- package/build/base-model.d.ts +3801 -117
- package/build/base-model.d.ts.map +1 -1
- package/build/base-model.js +271 -143
- package/build/bootstrap/attribute-row.d.ts +14 -1
- package/build/bootstrap/attribute-row.d.ts.map +1 -1
- package/build/bootstrap/attribute-row.js +23 -5
- package/build/bootstrap/attribute-rows.d.ts +10 -1
- package/build/bootstrap/attribute-rows.d.ts.map +1 -1
- package/build/bootstrap/attribute-rows.js +14 -5
- package/build/bootstrap/card.d.ts +19 -1
- package/build/bootstrap/card.d.ts.map +1 -1
- package/build/bootstrap/card.js +33 -13
- package/build/bootstrap/checkbox.d.ts +18 -1
- package/build/bootstrap/checkbox.d.ts.map +1 -1
- package/build/bootstrap/checkbox.js +23 -3
- package/build/bootstrap/checkboxes.d.ts +33 -1
- package/build/bootstrap/checkboxes.d.ts.map +1 -1
- package/build/bootstrap/checkboxes.js +50 -17
- package/build/bootstrap/index.js +2 -1
- package/build/bootstrap/input.d.ts +24 -0
- package/build/bootstrap/input.d.ts.map +1 -1
- package/build/bootstrap/input.js +27 -2
- package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
- package/build/bootstrap/invalid-feedback.js +2 -1
- package/build/bootstrap/paginate.d.ts +7 -1
- package/build/bootstrap/paginate.d.ts.map +1 -1
- package/build/bootstrap/paginate.js +9 -4
- package/build/bootstrap/radio-buttons.js +2 -1
- package/build/bootstrap/select.js +2 -1
- package/build/bootstrap/sort-link.d.ts +12 -1
- package/build/bootstrap/sort-link.d.ts.map +1 -1
- package/build/bootstrap/sort-link.js +19 -10
- package/build/cable-connection-pool.d.ts +201 -24
- package/build/cable-connection-pool.d.ts.map +1 -1
- package/build/cable-connection-pool.js +76 -16
- package/build/cable-subscription-pool.d.ts +186 -20
- package/build/cable-subscription-pool.d.ts.map +1 -1
- package/build/cable-subscription-pool.js +61 -22
- package/build/cable-subscription.d.ts.map +1 -1
- package/build/cable-subscription.js +3 -2
- package/build/cache-key-generator.d.ts +194 -20
- package/build/cache-key-generator.d.ts.map +1 -1
- package/build/cache-key-generator.js +63 -12
- package/build/can-can.d.ts +146 -29
- package/build/can-can.d.ts.map +1 -1
- package/build/can-can.js +105 -19
- package/build/channels-consumer.d.ts +23 -1
- package/build/channels-consumer.d.ts.map +1 -1
- package/build/channels-consumer.js +26 -8
- package/build/collection-loader.d.ts +4 -1
- package/build/collection-loader.js +2 -1
- package/build/collection.d.ts +361 -370
- package/build/collection.d.ts.map +1 -1
- package/build/collection.js +59 -19
- package/build/command-execution.d.ts +50 -26
- package/build/command-execution.d.ts.map +1 -1
- package/build/command-execution.js +31 -13
- package/build/command-submit-data.d.ts +50 -37
- package/build/command-submit-data.d.ts.map +1 -1
- package/build/command-submit-data.js +35 -22
- package/build/commands-pool.d.ts +65 -27
- package/build/commands-pool.d.ts.map +1 -1
- package/build/commands-pool.js +67 -20
- package/build/compose.d.ts +8 -2
- package/build/compose.d.ts.map +1 -1
- package/build/compose.js +9 -2
- package/build/config.d.ts +31 -15
- package/build/config.d.ts.map +1 -1
- package/build/config.js +60 -23
- package/build/custom-error.d.ts.map +1 -1
- package/build/custom-error.js +2 -1
- package/build/data-set-to-attributes.d.ts +14 -2
- package/build/data-set-to-attributes.d.ts.map +1 -1
- package/build/data-set-to-attributes.js +12 -3
- package/build/deserializer.d.ts +116 -2
- package/build/deserializer.d.ts.map +1 -1
- package/build/deserializer.js +13 -2
- package/build/destroy-error.d.ts.map +1 -1
- package/build/destroy-error.js +2 -1
- package/build/devise.d.ts +638 -39
- package/build/devise.d.ts.map +1 -1
- package/build/devise.js +97 -28
- package/build/draggable-sort/controller.d.ts +126 -35
- package/build/draggable-sort/controller.d.ts.map +1 -1
- package/build/draggable-sort/controller.js +100 -28
- package/build/draggable-sort/index.d.ts +57 -1
- package/build/draggable-sort/index.d.ts.map +1 -1
- package/build/draggable-sort/index.js +71 -3
- package/build/draggable-sort/item.d.ts +56 -1
- package/build/draggable-sort/item.d.ts.map +1 -1
- package/build/draggable-sort/item.js +98 -10
- package/build/error-logger.d.ts +30 -14
- package/build/error-logger.d.ts.map +1 -1
- package/build/error-logger.js +22 -11
- package/build/event-connection.d.ts.map +1 -1
- package/build/event-connection.js +3 -2
- package/build/event-emitter-listener.d.ts.map +1 -1
- package/build/event-emitter-listener.js +2 -1
- package/build/event-model-class.d.ts.map +1 -1
- package/build/event-model-class.js +2 -1
- package/build/events.d.ts.map +1 -1
- package/build/events.js +2 -1
- package/build/form.d.ts +24 -1
- package/build/form.d.ts.map +1 -1
- package/build/form.js +16 -4
- package/build/history-expo.d.ts +6 -2
- package/build/history-expo.d.ts.map +1 -1
- package/build/history-expo.js +5 -2
- package/build/history-react-native.d.ts +6 -2
- package/build/history-react-native.d.ts.map +1 -1
- package/build/history-react-native.js +5 -2
- package/build/history.js +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -1
- package/build/inputs/attachment.d.ts +13 -1
- package/build/inputs/attachment.d.ts.map +1 -1
- package/build/inputs/attachment.js +22 -8
- package/build/inputs/auto-submit.d.ts +41 -13
- package/build/inputs/auto-submit.d.ts.map +1 -1
- package/build/inputs/auto-submit.js +16 -4
- package/build/inputs/checkbox.d.ts +17 -1
- package/build/inputs/checkbox.d.ts.map +1 -1
- package/build/inputs/checkbox.js +25 -11
- package/build/inputs/checkboxes.d.ts +16 -0
- package/build/inputs/checkboxes.d.ts.map +1 -1
- package/build/inputs/checkboxes.js +20 -4
- package/build/inputs/id-for-component.d.ts +21 -2
- package/build/inputs/id-for-component.d.ts.map +1 -1
- package/build/inputs/id-for-component.js +9 -2
- package/build/inputs/input-wrapper.d.ts.map +1 -1
- package/build/inputs/input-wrapper.js +2 -1
- package/build/inputs/input.d.ts +38 -1
- package/build/inputs/input.d.ts.map +1 -1
- package/build/inputs/input.js +29 -10
- package/build/inputs/money.d.ts +4 -1
- package/build/inputs/money.d.ts.map +1 -1
- package/build/inputs/money.js +6 -3
- package/build/inputs/name-for-component.d.ts +21 -2
- package/build/inputs/name-for-component.d.ts.map +1 -1
- package/build/inputs/name-for-component.js +9 -2
- package/build/inputs/select.d.ts +35 -1
- package/build/inputs/select.d.ts.map +1 -1
- package/build/inputs/select.js +21 -4
- package/build/instance-of-class-name.d.ts +7 -2
- package/build/instance-of-class-name.d.ts.map +1 -1
- package/build/instance-of-class-name.js +8 -4
- package/build/is-expo.d.ts.map +1 -1
- package/build/is-expo.js +2 -1
- package/build/key-value-store.d.ts +24 -14
- package/build/key-value-store.d.ts.map +1 -1
- package/build/key-value-store.js +22 -12
- package/build/link.d.ts +32 -1
- package/build/link.d.ts.map +1 -1
- package/build/link.js +76 -30
- package/build/logger.d.ts +10 -6
- package/build/logger.d.ts.map +1 -1
- package/build/logger.js +7 -4
- package/build/merge-styles.d.ts +10 -2
- package/build/merge-styles.d.ts.map +1 -1
- package/build/merge-styles.js +10 -3
- package/build/modal.d.ts +4 -1
- package/build/modal.d.ts.map +1 -1
- package/build/modal.js +6 -4
- package/build/model-class-require.d.ts +4 -2
- package/build/model-class-require.d.ts.map +1 -1
- package/build/model-class-require.js +4 -2
- package/build/model-events.d.ts +139 -346
- package/build/model-events.d.ts.map +1 -1
- package/build/model-events.js +21 -9
- package/build/model-name.d.ts +21 -7
- package/build/model-name.d.ts.map +1 -1
- package/build/model-name.js +12 -2
- package/build/model-prop-type.d.ts +533 -26
- package/build/model-prop-type.d.ts.map +1 -1
- package/build/model-prop-type.js +69 -11
- package/build/model-recipes-loader.d.ts +7 -3
- package/build/model-recipes-loader.d.ts.map +1 -1
- package/build/model-recipes-loader.js +4 -2
- package/build/model-recipes-model-loader.d.ts +189 -1493
- package/build/model-recipes-model-loader.d.ts.map +1 -1
- package/build/model-recipes-model-loader.js +119 -17
- package/build/models-response-reader.d.ts +600 -195
- package/build/models-response-reader.d.ts.map +1 -1
- package/build/models-response-reader.js +12 -4
- package/build/models.d.ts +438 -1
- package/build/models.d.ts.map +1 -1
- package/build/models.js +2 -1
- package/build/money-formatter.d.ts +25 -31
- package/build/money-formatter.d.ts.map +1 -1
- package/build/money-formatter.js +11 -8
- package/build/not-loaded-error.d.ts.map +1 -1
- package/build/not-loaded-error.js +2 -1
- package/build/params.d.ts +25 -17
- package/build/params.d.ts.map +1 -1
- package/build/params.js +19 -15
- package/build/preloaded.d.ts +61 -64
- package/build/preloaded.d.ts.map +1 -1
- package/build/preloaded.js +10 -4
- package/build/reset-realtime-runtime-state.d.ts.map +1 -1
- package/build/reset-realtime-runtime-state.js +2 -1
- package/build/resize-observer.d.ts +1 -1
- package/build/resize-observer.d.ts.map +1 -1
- package/build/resize-observer.js +2 -1
- package/build/rest-props-validator.d.ts +2 -2
- package/build/rest-props-validator.d.ts.map +1 -1
- package/build/rest-props-validator.js +3 -2
- package/build/result.d.ts +142 -175
- package/build/result.d.ts.map +1 -1
- package/build/result.js +3 -2
- package/build/router/route.d.ts +51 -1
- package/build/router/route.d.ts.map +1 -1
- package/build/router/route.js +48 -12
- package/build/router/switch.d.ts +38 -2
- package/build/router/switch.d.ts.map +1 -1
- package/build/router/switch.js +34 -13
- package/build/router.d.ts +21 -1
- package/build/router.d.ts.map +1 -1
- package/build/router.js +15 -4
- package/build/routes-native.d.ts +13 -13
- package/build/routes-native.d.ts.map +1 -1
- package/build/routes-native.js +23 -11
- package/build/routes.d.ts +17 -9
- package/build/routes.d.ts.map +1 -1
- package/build/routes.js +7 -2
- package/build/run-last.d.ts.map +1 -1
- package/build/run-last.js +2 -1
- package/build/serializer.d.ts +44 -12
- package/build/serializer.d.ts.map +1 -1
- package/build/serializer.js +36 -7
- package/build/services.d.ts +29 -4
- package/build/services.d.ts.map +1 -1
- package/build/services.js +16 -4
- package/build/session-status-updater.d.ts +73 -25
- package/build/session-status-updater.d.ts.map +1 -1
- package/build/session-status-updater.js +52 -14
- package/build/source-maps-loader.d.ts +88 -33
- package/build/source-maps-loader.d.ts.map +1 -1
- package/build/source-maps-loader.js +74 -18
- package/build/super-admin/config-reader.d.ts.map +1 -1
- package/build/super-admin/config-reader.js +11 -16
- package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts +12 -1
- package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +22 -8
- package/build/super-admin/edit-page/edit-attribute-content.d.ts +10 -1
- package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute-content.js +20 -9
- package/build/super-admin/edit-page/edit-attribute-input.d.ts +10 -1
- package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute-input.js +13 -4
- package/build/super-admin/edit-page/edit-attribute.d.ts +8 -1
- package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute.js +11 -4
- package/build/super-admin/edit-page.d.ts +7 -1
- package/build/super-admin/edit-page.d.ts.map +1 -1
- package/build/super-admin/edit-page.js +11 -5
- package/build/super-admin/has-edit-config.d.ts.map +1 -1
- package/build/super-admin/has-edit-config.js +2 -1
- package/build/super-admin/index-page.d.ts +6 -1
- package/build/super-admin/index-page.d.ts.map +1 -1
- package/build/super-admin/index-page.js +9 -4
- package/build/super-admin/index.d.ts +6 -1
- package/build/super-admin/index.d.ts.map +1 -1
- package/build/super-admin/index.js +16 -10
- package/build/super-admin/layout/header/index.d.ts +6 -1
- package/build/super-admin/layout/header/index.d.ts.map +1 -1
- package/build/super-admin/layout/header/index.js +18 -12
- package/build/super-admin/layout/index.d.ts +26 -1
- package/build/super-admin/layout/index.d.ts.map +1 -1
- package/build/super-admin/layout/index.js +41 -7
- package/build/super-admin/layout/menu/index.d.ts +4 -1
- package/build/super-admin/layout/menu/index.d.ts.map +1 -1
- package/build/super-admin/layout/menu/index.js +13 -7
- package/build/super-admin/layout/menu/menu-content.d.ts +4 -1
- package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
- package/build/super-admin/layout/menu/menu-content.js +6 -4
- package/build/super-admin/layout/menu/menu-item.d.ts +11 -1
- package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
- package/build/super-admin/layout/menu/menu-item.js +19 -9
- package/build/super-admin/layout/no-access.d.ts +4 -1
- package/build/super-admin/layout/no-access.d.ts.map +1 -1
- package/build/super-admin/layout/no-access.js +7 -5
- package/build/super-admin/model-class-table.d.ts +6 -1
- package/build/super-admin/model-class-table.d.ts.map +1 -1
- package/build/super-admin/model-class-table.js +9 -4
- package/build/super-admin/models.d.ts.map +1 -1
- package/build/super-admin/models.js +2 -1
- package/build/super-admin/show-nav.d.ts +4 -1
- package/build/super-admin/show-nav.d.ts.map +1 -1
- package/build/super-admin/show-nav.js +6 -4
- package/build/super-admin/show-page/belongs-to-attribute-row.d.ts +18 -1
- package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
- package/build/super-admin/show-page/belongs-to-attribute-row.js +14 -5
- package/build/super-admin/show-page/index.d.ts +6 -1
- package/build/super-admin/show-page/index.d.ts.map +1 -1
- package/build/super-admin/show-page/index.js +11 -5
- package/build/super-admin/show-reflection-actions.d.ts +8 -1
- package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
- package/build/super-admin/show-reflection-actions.js +11 -4
- package/build/super-admin/show-reflection-link.d.ts +6 -1
- package/build/super-admin/show-reflection-link.d.ts.map +1 -1
- package/build/super-admin/show-reflection-link.js +12 -5
- package/build/super-admin/show-reflection-page.d.ts +7 -1
- package/build/super-admin/show-reflection-page.d.ts.map +1 -1
- package/build/super-admin/show-reflection-page.js +10 -4
- package/build/table/column-content.d.ts +155 -19
- package/build/table/column-content.d.ts.map +1 -1
- package/build/table/column-content.js +55 -12
- package/build/table/column-identifier.d.ts +11 -2
- package/build/table/column-identifier.d.ts.map +1 -1
- package/build/table/column-identifier.js +7 -2
- package/build/table/column-visible.d.ts +11 -2
- package/build/table/column-visible.d.ts.map +1 -1
- package/build/table/column-visible.js +8 -2
- package/build/table/components/column.d.ts +4 -1
- package/build/table/components/column.d.ts.map +1 -1
- package/build/table/components/column.js +6 -4
- package/build/table/components/flat-list.d.ts +4 -1
- package/build/table/components/flat-list.d.ts.map +1 -1
- package/build/table/components/flat-list.js +6 -4
- package/build/table/components/header.d.ts +4 -1
- package/build/table/components/header.d.ts.map +1 -1
- package/build/table/components/header.js +6 -4
- package/build/table/components/row.d.ts +4 -1
- package/build/table/components/row.d.ts.map +1 -1
- package/build/table/components/row.js +6 -4
- package/build/table/filters/attribute-element.d.ts +4 -1
- package/build/table/filters/attribute-element.d.ts.map +1 -1
- package/build/table/filters/attribute-element.js +7 -7
- package/build/table/filters/filter-form.d.ts +60 -1
- package/build/table/filters/filter-form.d.ts.map +1 -1
- package/build/table/filters/filter-form.js +89 -28
- package/build/table/filters/filter.d.ts +4 -1
- package/build/table/filters/filter.d.ts.map +1 -1
- package/build/table/filters/filter.js +6 -4
- package/build/table/filters/index.d.ts +129 -1
- package/build/table/filters/index.d.ts.map +1 -1
- package/build/table/filters/index.js +26 -9
- package/build/table/filters/load-search-modal.d.ts +132 -1
- package/build/table/filters/load-search-modal.d.ts.map +1 -1
- package/build/table/filters/load-search-modal.js +32 -10
- package/build/table/filters/reflection-element.d.ts +4 -1
- package/build/table/filters/reflection-element.d.ts.map +1 -1
- package/build/table/filters/reflection-element.js +6 -4
- package/build/table/filters/save-search-modal.d.ts +136 -1
- package/build/table/filters/save-search-modal.d.ts.map +1 -1
- package/build/table/filters/save-search-modal.js +39 -6
- package/build/table/filters/scope-element.d.ts +8 -1
- package/build/table/filters/scope-element.d.ts.map +1 -1
- package/build/table/filters/scope-element.js +13 -8
- package/build/table/header-column-content.d.ts +9 -1
- package/build/table/header-column-content.d.ts.map +1 -1
- package/build/table/header-column-content.js +12 -4
- package/build/table/header-column.d.ts +52 -1
- package/build/table/header-column.d.ts.map +1 -1
- package/build/table/header-column.js +39 -10
- package/build/table/header-select.d.ts +20 -1
- package/build/table/header-select.d.ts.map +1 -1
- package/build/table/header-select.js +27 -8
- package/build/table/model-callback-args.d.ts +116 -3
- package/build/table/model-callback-args.d.ts.map +1 -1
- package/build/table/model-callback-args.js +10 -3
- package/build/table/model-column.d.ts +138 -1
- package/build/table/model-column.d.ts.map +1 -1
- package/build/table/model-column.js +27 -4
- package/build/table/model-row.d.ts +21 -1
- package/build/table/model-row.d.ts.map +1 -1
- package/build/table/model-row.js +24 -4
- package/build/table/select-calculator.d.ts +37 -2
- package/build/table/select-calculator.d.ts.map +1 -1
- package/build/table/select-calculator.js +29 -6
- package/build/table/settings/column-row.d.ts +8 -1
- package/build/table/settings/column-row.d.ts.map +1 -1
- package/build/table/settings/column-row.js +13 -12
- package/build/table/settings/download-action.d.ts +7 -1
- package/build/table/settings/download-action.d.ts.map +1 -1
- package/build/table/settings/download-action.js +10 -4
- package/build/table/settings/index.d.ts +7 -1
- package/build/table/settings/index.d.ts.map +1 -1
- package/build/table/settings/index.js +10 -4
- package/build/table/should-render-loading-content.d.ts +2 -2
- package/build/table/should-render-loading-content.d.ts.map +1 -1
- package/build/table/should-render-loading-content.js +3 -2
- package/build/table/table-settings.d.ts +236 -43
- package/build/table/table-settings.d.ts.map +1 -1
- package/build/table/table-settings.js +105 -21
- package/build/table/table.d.ts +273 -1
- package/build/table/table.d.ts.map +1 -1
- package/build/table/table.js +210 -53
- package/build/table/use-sorting.d.ts +10 -8
- package/build/table/use-sorting.d.ts.map +1 -1
- package/build/table/use-sorting.js +16 -8
- package/build/table/widths.d.ts +55 -8
- package/build/table/widths.d.ts.map +1 -1
- package/build/table/widths.js +25 -2
- package/build/table/worker-plugins-check-all-checkbox.d.ts +20 -1
- package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
- package/build/table/worker-plugins-check-all-checkbox.js +29 -9
- package/build/table/worker-plugins-checkbox.d.ts +7 -1
- package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
- package/build/table/worker-plugins-checkbox.js +14 -8
- package/build/translated-attributes.d.ts +7 -2
- package/build/translated-attributes.d.ts.map +1 -1
- package/build/translated-attributes.js +8 -2
- package/build/translated-collections.d.ts +11 -2
- package/build/translated-collections.d.ts.map +1 -1
- package/build/translated-collections.js +9 -3
- package/build/updated-attribute.d.ts.map +1 -1
- package/build/updated-attribute.js +2 -1
- package/build/url-encode.d.ts.map +1 -1
- package/build/url-encode.js +2 -1
- package/build/use-can-can.d.ts +8 -0
- package/build/use-can-can.d.ts.map +1 -1
- package/build/use-can-can.js +39 -13
- package/build/use-collection.d.ts +174 -117
- package/build/use-collection.d.ts.map +1 -1
- package/build/use-collection.js +133 -51
- package/build/use-created-event.d.ts +120 -11
- package/build/use-created-event.d.ts.map +1 -1
- package/build/use-created-event.js +10 -7
- package/build/use-current-user-context.d.ts +2 -2
- package/build/use-current-user-context.d.ts.map +1 -1
- package/build/use-current-user-context.js +3 -2
- package/build/use-current-user.d.ts +86 -70
- package/build/use-current-user.d.ts.map +1 -1
- package/build/use-current-user.js +36 -8
- package/build/use-destroyed-event.d.ts +117 -8
- package/build/use-destroyed-event.d.ts.map +1 -1
- package/build/use-destroyed-event.js +29 -22
- package/build/use-input.d.ts +74 -12
- package/build/use-input.d.ts.map +1 -1
- package/build/use-input.js +33 -5
- package/build/use-model-class-event.d.ts +124 -10
- package/build/use-model-class-event.d.ts.map +1 -1
- package/build/use-model-class-event.js +26 -16
- package/build/use-model-event.d.ts +121 -8
- package/build/use-model-event.d.ts.map +1 -1
- package/build/use-model-event.js +24 -19
- package/build/use-model.d.ts +165 -243
- package/build/use-model.d.ts.map +1 -1
- package/build/use-model.js +94 -35
- package/build/use-resize-observer.d.ts.map +1 -1
- package/build/use-resize-observer.js +2 -1
- package/build/use-router.d.ts.map +1 -1
- package/build/use-router.js +2 -1
- package/build/use-screen-layout.d.ts +7 -2
- package/build/use-screen-layout.d.ts.map +1 -1
- package/build/use-screen-layout.js +8 -5
- package/build/use-shape.js +2 -1
- package/build/use-styles.d.ts +11 -5
- package/build/use-styles.d.ts.map +1 -1
- package/build/use-styles.js +16 -9
- package/build/use-updated-event.d.ts +66 -182
- package/build/use-updated-event.d.ts.map +1 -1
- package/build/use-updated-event.js +22 -18
- package/build/use-validation-errors.d.ts.map +1 -1
- package/build/use-validation-errors.js +2 -1
- package/build/utils/button.d.ts +16 -1
- package/build/utils/button.d.ts.map +1 -1
- package/build/utils/button.js +27 -8
- package/build/utils/card.d.ts +11 -1
- package/build/utils/card.d.ts.map +1 -1
- package/build/utils/card.js +13 -2
- package/build/utils/checkbox.d.ts +14 -1
- package/build/utils/checkbox.d.ts.map +1 -1
- package/build/utils/checkbox.js +22 -9
- package/build/utils/checkboxes.d.ts +27 -1
- package/build/utils/checkboxes.d.ts.map +1 -1
- package/build/utils/checkboxes.js +44 -17
- package/build/utils/default-style.d.ts +11 -4
- package/build/utils/default-style.d.ts.map +1 -1
- package/build/utils/default-style.js +12 -4
- package/build/utils/header.d.ts +6 -1
- package/build/utils/header.d.ts.map +1 -1
- package/build/utils/header.js +4 -2
- package/build/utils/icon.d.ts +9 -7
- package/build/utils/icon.d.ts.map +1 -1
- package/build/utils/icon.js +12 -11
- package/build/utils/invalid-feedback.d.ts +6 -1
- package/build/utils/invalid-feedback.d.ts.map +1 -1
- package/build/utils/invalid-feedback.js +8 -2
- package/build/utils/modal.d.ts +4 -1
- package/build/utils/modal.d.ts.map +1 -1
- package/build/utils/modal.js +11 -9
- package/build/utils/text.d.ts +9 -1
- package/build/utils/text.d.ts.map +1 -1
- package/build/utils/text.js +9 -2
- package/build/validation-error.d.ts +5 -2
- package/build/validation-error.d.ts.map +1 -1
- package/build/validation-error.js +5 -2
- package/build/validation-errors.d.ts +57 -15
- package/build/validation-errors.d.ts.map +1 -1
- package/build/validation-errors.js +37 -8
- package/build/websocket-request-client.d.ts +61 -15
- package/build/websocket-request-client.d.ts.map +1 -1
- package/build/websocket-request-client.js +35 -9
- package/build/with-api-maker.d.ts +2 -1
- package/build/with-api-maker.d.ts.map +1 -1
- package/build/with-api-maker.js +2 -1
- package/build/with-collection.d.ts +2 -1
- package/build/with-collection.d.ts.map +1 -1
- package/build/with-collection.js +2 -1
- package/build/with-current-user.d.ts.map +1 -1
- package/build/with-current-user.js +2 -1
- package/build/with-model.d.ts +2 -1
- package/build/with-model.d.ts.map +1 -1
- package/build/with-model.js +2 -1
- package/build/with-router.d.ts.map +1 -1
- package/build/with-router.js +2 -1
- package/package.json +6 -5
- package/build/base-component.d.ts +0 -4
- package/build/base-component.d.ts.map +0 -1
- package/build/base-component.js +0 -4
package/build/use-collection.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
/* eslint-disable no-unused-vars, no-use-before-define, prefer-object-spread, sort-imports */
|
|
2
3
|
import { ShapeHook, useShapeHook } from "set-state-compare";
|
|
3
4
|
import debounce from "debounce";
|
|
@@ -7,47 +8,124 @@ import ModelEvents from "./model-events.js";
|
|
|
7
8
|
import { useEffect } from "react";
|
|
8
9
|
import useCreatedEvent from "./use-created-event.js";
|
|
9
10
|
import useQueryParams from "on-location-changed/build/use-query-params.js";
|
|
11
|
+
/** @typedef {typeof import("./base-model.js").default} BaseModelClass */
|
|
12
|
+
/** @typedef {import("./base-model.js").default} BaseModelInstance */
|
|
13
|
+
/** @typedef {BaseModelInstance & {id: () => number | string}} BaseModelWithId */
|
|
14
|
+
/** @typedef {import("./collection.js").default} ModelCollection */
|
|
15
|
+
/** @typedef {import("./result.js").default} CollectionResult */
|
|
16
|
+
/** @typedef {import("./collection.js").CollectionSearchParams} UseCollectionSearchParams */
|
|
17
|
+
/** @typedef {import("./collection.js").CollectionRansackParams} UseCollectionRansackParams */
|
|
18
|
+
/** @typedef {import("./collection.js").QueryParamValueMap} UseCollectionDefaultParams */
|
|
19
|
+
/** @typedef {import("./collection.js").QueryParamValue | undefined} UseCollectionQueryParamValue */
|
|
20
|
+
/** @typedef {Record<string, UseCollectionQueryParamValue | string[]>} UseCollectionQueryParams */
|
|
21
|
+
/** @typedef {(args: {query: ModelCollection}) => Promise<CollectionResult> | CollectionResult} UseCollectionQueryMethod */
|
|
22
|
+
/**
|
|
23
|
+
* @typedef {(args: {
|
|
24
|
+
* models: BaseModelInstance[],
|
|
25
|
+
* qParams: UseCollectionDefaultParams,
|
|
26
|
+
* query: ModelCollection,
|
|
27
|
+
* result: CollectionResult
|
|
28
|
+
* }) => void} OnModelsLoadedCallback
|
|
29
|
+
*/
|
|
30
|
+
/** @typedef {{models?: BaseModelInstance[], overallCount?: number}} NoRecordsStateArgs */
|
|
31
|
+
/** @typedef {{qParams?: UseCollectionDefaultParams, searchParams?: string[]}} LoadModelsArgs */
|
|
32
|
+
/**
|
|
33
|
+
* @typedef {UseCollectionResult & Record<
|
|
34
|
+
* string,
|
|
35
|
+
* BaseModelInstance[] | string | number | CollectionResult | ModelCollection | string[] | false | import("react").ReactNode
|
|
36
|
+
* >} UseCollectionReturnValue
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* @typedef {object} UseCollectionHookProps
|
|
40
|
+
* @property {Record<string, string[]>} [abilities]
|
|
41
|
+
* @property {UseCollectionQueryParamValue[]} [cacheKeys]
|
|
42
|
+
* @property {ModelCollection} [collection]
|
|
43
|
+
* @property {UseCollectionDefaultParams} [defaultParams]
|
|
44
|
+
* @property {string[]} [groupBy]
|
|
45
|
+
* @property {boolean | (() => boolean)} [ifCondition]
|
|
46
|
+
* @property {number} [limit]
|
|
47
|
+
* @property {BaseModelClass} modelClass
|
|
48
|
+
* @property {() => import("react").ReactNode} [noRecordsAvailableContent]
|
|
49
|
+
* @property {() => import("react").ReactNode} [noRecordsFoundContent]
|
|
50
|
+
* @property {OnModelsLoadedCallback} [onModelsLoaded]
|
|
51
|
+
* @property {boolean} [pagination]
|
|
52
|
+
* @property {string[]} [preloads]
|
|
53
|
+
* @property {UseCollectionQueryMethod} [queryMethod]
|
|
54
|
+
* @property {string} [queryName]
|
|
55
|
+
* @property {UseCollectionRansackParams} [ransack]
|
|
56
|
+
* @property {Record<string, string[]>} [select]
|
|
57
|
+
* @property {Record<string, string[]>} [selectColumns]
|
|
58
|
+
*/
|
|
10
59
|
/**
|
|
11
60
|
* @typedef {object} UseCollectionResult
|
|
12
|
-
* @property {
|
|
61
|
+
* @property {BaseModelInstance[] | undefined} models
|
|
13
62
|
* @property {string} modelIdsCacheString
|
|
14
|
-
* @property {number} overallCount
|
|
15
|
-
* @property {
|
|
16
|
-
* @property {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* @property {
|
|
23
|
-
* @property {
|
|
24
|
-
* @property {
|
|
63
|
+
* @property {number | undefined} overallCount
|
|
64
|
+
* @property {UseCollectionDefaultParams} qParams
|
|
65
|
+
* @property {ModelCollection | undefined} query
|
|
66
|
+
* @property {string} queryName
|
|
67
|
+
* @property {string} queryPerKey
|
|
68
|
+
* @property {string} queryQName
|
|
69
|
+
* @property {string} querySName
|
|
70
|
+
* @property {string} queryPageName
|
|
71
|
+
* @property {boolean} readyToLoad
|
|
72
|
+
* @property {CollectionResult | undefined} result
|
|
73
|
+
* @property {string[] | undefined} searchParams
|
|
74
|
+
* @property {false | import("react").ReactNode} showNoRecordsAvailableContent
|
|
75
|
+
* @property {false | import("react").ReactNode} showNoRecordsFoundContent
|
|
25
76
|
*/
|
|
26
77
|
/**
|
|
27
78
|
* @param {object} props
|
|
28
79
|
* @param {Record<string, string[]>} props.abilities
|
|
29
80
|
* @param {import("./collection.js").default} props.collection
|
|
30
|
-
* @param {
|
|
81
|
+
* @param {UseCollectionDefaultParams} props.defaultParams
|
|
31
82
|
* @param {string[]} props.groupBy
|
|
32
83
|
* @param {function() : boolean} props.ifCondition
|
|
33
84
|
* @param {number} props.limit
|
|
34
|
-
* @param {
|
|
85
|
+
* @param {BaseModelClass} props.modelClass
|
|
35
86
|
* @param {function() : import("react").ReactNode} props.noRecordsAvailableContent
|
|
36
87
|
* @param {function() : import("react").ReactNode} props.noRecordsFoundContent
|
|
37
|
-
* @param {
|
|
88
|
+
* @param {OnModelsLoadedCallback} props.onModelsLoaded
|
|
38
89
|
* @param {boolean} props.pagination
|
|
39
90
|
* @param {string[]} props.preloads
|
|
40
|
-
* @param {
|
|
91
|
+
* @param {UseCollectionQueryMethod} props.queryMethod
|
|
41
92
|
* @param {string} props.queryName
|
|
42
|
-
* @param {
|
|
93
|
+
* @param {UseCollectionRansackParams} props.ransack
|
|
43
94
|
* @param {Record<string, string[]>} props.select
|
|
44
95
|
* @param {Record<string, string[]>} props.selectColumns
|
|
45
|
-
* @param {
|
|
46
|
-
* @returns {
|
|
96
|
+
* @param {UseCollectionQueryParamValue[]} cacheKeys
|
|
97
|
+
* @returns {UseCollectionReturnValue}
|
|
98
|
+
*/
|
|
99
|
+
/**
|
|
100
|
+
* @typedef {object} UseCollectionState
|
|
101
|
+
* @property {BaseModelInstance[] | undefined} models
|
|
102
|
+
* @property {number | undefined} overallCount
|
|
103
|
+
* @property {UseCollectionDefaultParams} qParams
|
|
104
|
+
* @property {ModelCollection | undefined} query
|
|
105
|
+
* @property {boolean} readyToLoad
|
|
106
|
+
* @property {CollectionResult | undefined} result
|
|
107
|
+
* @property {string[] | undefined} searchParams
|
|
108
|
+
* @property {false | import("react").ReactNode} showNoRecordsAvailableContent
|
|
109
|
+
* @property {false | import("react").ReactNode} showNoRecordsFoundContent
|
|
47
110
|
*/
|
|
48
111
|
/** Hook state container for useCollection. */
|
|
112
|
+
/** @augments {ShapeHook<UseCollectionHookProps, UseCollectionState>} */
|
|
49
113
|
class UseCollectionShapeHook extends ShapeHook {
|
|
50
|
-
/**
|
|
114
|
+
state = /** @type {UseCollectionState} */ ({
|
|
115
|
+
models: undefined,
|
|
116
|
+
overallCount: undefined,
|
|
117
|
+
qParams: {},
|
|
118
|
+
query: undefined,
|
|
119
|
+
readyToLoad: false,
|
|
120
|
+
result: undefined,
|
|
121
|
+
searchParams: undefined,
|
|
122
|
+
showNoRecordsAvailableContent: false,
|
|
123
|
+
showNoRecordsFoundContent: false
|
|
124
|
+
});
|
|
125
|
+
/**
|
|
126
|
+
* Constructor.
|
|
127
|
+
* @param {UseCollectionHookProps} props
|
|
128
|
+
*/
|
|
51
129
|
constructor(props) {
|
|
52
130
|
super(props);
|
|
53
131
|
this.loadModelsGeneration = 0;
|
|
@@ -90,7 +168,10 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
90
168
|
loadModelsDebounce() {
|
|
91
169
|
return this.cache("loadModelsDebounce", () => debounce(() => this.loadModels()));
|
|
92
170
|
}
|
|
93
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* @param {NoRecordsStateArgs} args
|
|
173
|
+
* @returns {boolean}
|
|
174
|
+
*/
|
|
94
175
|
showNoRecordsAvailableContent(args) {
|
|
95
176
|
let models, overallCount;
|
|
96
177
|
if (args.models !== undefined) {
|
|
@@ -109,8 +190,12 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
109
190
|
return false;
|
|
110
191
|
if (models.length === 0 && overallCount === 0 && this.p.noRecordsAvailableContent)
|
|
111
192
|
return true;
|
|
193
|
+
return false;
|
|
112
194
|
}
|
|
113
|
-
/**
|
|
195
|
+
/**
|
|
196
|
+
* @param {NoRecordsStateArgs} args
|
|
197
|
+
* @returns {boolean}
|
|
198
|
+
*/
|
|
114
199
|
showNoRecordsFoundContent(args) {
|
|
115
200
|
let models, overallCount;
|
|
116
201
|
if (args.models !== undefined) {
|
|
@@ -132,6 +217,7 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
132
217
|
return false;
|
|
133
218
|
if (models.length === 0 && this.p.noRecordsFoundContent)
|
|
134
219
|
return true;
|
|
220
|
+
return false;
|
|
135
221
|
}
|
|
136
222
|
/** @returns {Promise<void>} */
|
|
137
223
|
loadOverallCount = async () => {
|
|
@@ -148,7 +234,7 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
148
234
|
showNoRecordsFoundContent: this.showNoRecordsFoundContent({ overallCount })
|
|
149
235
|
});
|
|
150
236
|
};
|
|
151
|
-
/** @returns {{qParams:
|
|
237
|
+
/** @returns {{qParams: UseCollectionDefaultParams, searchParams: string[]}} */
|
|
152
238
|
loadQParams() {
|
|
153
239
|
let qParamsToSet = Object.assign({}, this.p.defaultParams);
|
|
154
240
|
const searchParams = [];
|
|
@@ -172,9 +258,9 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
172
258
|
}
|
|
173
259
|
/**
|
|
174
260
|
* @param {object} [args]
|
|
175
|
-
* @param {
|
|
261
|
+
* @param {UseCollectionDefaultParams} [args.qParams]
|
|
176
262
|
* @param {string[]} [args.searchParams]
|
|
177
|
-
* @returns {{qParams:
|
|
263
|
+
* @returns {{qParams: UseCollectionDefaultParams, searchParams: string[]}}
|
|
178
264
|
*/
|
|
179
265
|
loadModelsArgs(args = {}) {
|
|
180
266
|
return {
|
|
@@ -184,7 +270,7 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
184
270
|
}
|
|
185
271
|
/**
|
|
186
272
|
* @param {object} [args]
|
|
187
|
-
* @param {
|
|
273
|
+
* @param {UseCollectionDefaultParams} [args.qParams]
|
|
188
274
|
* @param {string[]} [args.searchParams]
|
|
189
275
|
* @returns {Promise<void>}
|
|
190
276
|
*/
|
|
@@ -208,7 +294,7 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
208
294
|
if (this.p.groupBy)
|
|
209
295
|
query = query.groupBy(...this.p.groupBy);
|
|
210
296
|
query = query
|
|
211
|
-
.ransack(qParams)
|
|
297
|
+
.ransack(/** @type {import("./collection.js").CollectionRansackParams} */ (qParams))
|
|
212
298
|
.search(searchParams)
|
|
213
299
|
.searchKey(this.queryQName())
|
|
214
300
|
.pageKey(this.queryPageName())
|
|
@@ -251,17 +337,17 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
251
337
|
showNoRecordsFoundContent: this.showNoRecordsFoundContent({ models })
|
|
252
338
|
});
|
|
253
339
|
};
|
|
254
|
-
/** @param {{model:
|
|
340
|
+
/** @param {{model: BaseModelInstance}} args */
|
|
255
341
|
onModelDestroyed(args) {
|
|
256
342
|
const destroyedModel = digg(args, "model");
|
|
257
343
|
this.setState({
|
|
258
|
-
models: this.s.models.filter((model) => model.id() != destroyedModel.id())
|
|
344
|
+
models: this.s.models.filter((model) => /** @type {BaseModelWithId} */ (model).id() != /** @type {BaseModelWithId} */ (destroyedModel).id())
|
|
259
345
|
});
|
|
260
346
|
}
|
|
261
|
-
/** @param {{model:
|
|
347
|
+
/** @param {{model: BaseModelInstance}} args */
|
|
262
348
|
onModelUpdated(args) {
|
|
263
349
|
const updatedModel = digg(args, "model");
|
|
264
|
-
const foundModel = this.s.models.find((model) => model.id() == updatedModel.id());
|
|
350
|
+
const foundModel = this.s.models.find((model) => /** @type {BaseModelWithId} */ (model).id() == /** @type {BaseModelWithId} */ (updatedModel).id());
|
|
265
351
|
if (foundModel)
|
|
266
352
|
this.loadModelsDebounce()();
|
|
267
353
|
}
|
|
@@ -275,18 +361,7 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
275
361
|
}
|
|
276
362
|
/** @returns {void} */
|
|
277
363
|
setup() {
|
|
278
|
-
this.
|
|
279
|
-
models: undefined,
|
|
280
|
-
overallCount: undefined,
|
|
281
|
-
qParams: {},
|
|
282
|
-
query: undefined,
|
|
283
|
-
readyToLoad: false,
|
|
284
|
-
result: undefined,
|
|
285
|
-
searchParams: undefined,
|
|
286
|
-
showNoRecordsAvailableContent: false,
|
|
287
|
-
showNoRecordsFoundContent: false
|
|
288
|
-
});
|
|
289
|
-
this.setInstance({ queryParams: useQueryParams() });
|
|
364
|
+
this.queryParams = useQueryParams();
|
|
290
365
|
// Wait until componentDidMount has flipped readyToLoad so the first load runs after useShapeHook has marked the hook mounted.
|
|
291
366
|
useEffect(() => {
|
|
292
367
|
if (!this.s.readyToLoad)
|
|
@@ -346,6 +421,11 @@ class UseCollectionShapeHook extends ShapeHook {
|
|
|
346
421
|
}, [this.modelIdsCacheString()]);
|
|
347
422
|
}
|
|
348
423
|
}
|
|
424
|
+
/**
|
|
425
|
+
* @param {UseCollectionHookProps} props
|
|
426
|
+
* @param {UseCollectionQueryParamValue[]} [cacheKeys]
|
|
427
|
+
* @returns {UseCollectionReturnValue}
|
|
428
|
+
*/
|
|
349
429
|
const useCollection = (props, cacheKeys = []) => {
|
|
350
430
|
const { abilities, collection, defaultParams, groupBy, ifCondition, limit, modelClass, noRecordsAvailableContent = undefined, noRecordsFoundContent = undefined, onModelsLoaded, pagination = false, preloads = [], queryMethod, queryName, ransack, select = {}, selectColumns, ...restProps } = props;
|
|
351
431
|
if (Object.keys(restProps).length > 0) {
|
|
@@ -371,16 +451,18 @@ const useCollection = (props, cacheKeys = []) => {
|
|
|
371
451
|
select,
|
|
372
452
|
selectColumns
|
|
373
453
|
});
|
|
374
|
-
const result = /** @type {
|
|
454
|
+
const result = /** @type {UseCollectionReturnValue} */ ({
|
|
455
|
+
...shapeHook.state,
|
|
456
|
+
modelIdsCacheString: shapeHook.modelIdsCacheString(),
|
|
457
|
+
queryName: shapeHook.queryName(),
|
|
458
|
+
queryPerKey: shapeHook.queryPerKey(),
|
|
459
|
+
queryQName: shapeHook.queryQName(),
|
|
460
|
+
querySName: shapeHook.querySName(),
|
|
461
|
+
queryPageName: shapeHook.queryPageName()
|
|
462
|
+
});
|
|
375
463
|
const modelVariableName = inflection.pluralize(inflection.camelize(shapeHook.p.modelClass.modelClassData().name, true));
|
|
376
|
-
result.modelIdsCacheString = shapeHook.modelIdsCacheString();
|
|
377
|
-
result.queryName = shapeHook.queryName();
|
|
378
|
-
result.queryPerKey = shapeHook.queryPerKey();
|
|
379
|
-
result.queryQName = shapeHook.queryQName();
|
|
380
|
-
result.querySName = shapeHook.querySName();
|
|
381
|
-
result.queryPageName = shapeHook.queryPageName();
|
|
382
464
|
result[modelVariableName] = shapeHook.s.models;
|
|
383
465
|
return result;
|
|
384
466
|
};
|
|
385
467
|
export default useCollection;
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1jb2xsZWN0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZGQUE2RjtBQUM3RixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQTtBQUMvQixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sV0FBVyxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDL0IsT0FBTyxlQUFlLE1BQU0sd0JBQXdCLENBQUE7QUFDcEQsT0FBTyxjQUFjLE1BQU0sK0NBQStDLENBQUE7QUFFMUU7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILDhDQUE4QztBQUM5QyxNQUFNLHNCQUF1QixTQUFRLFNBQVM7SUFDNUMsbUJBQW1CO0lBQ25CLFlBQVksS0FBSztRQUNmLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQTtJQUM5QixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUN0RixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLFdBQVc7UUFDVCxPQUFPLEdBQUcsSUFBSSxDQUFDLFNB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QyxDQUFBO0FBRUQsZUFBZSxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycywgbm8tdXNlLWJlZm9yZS1kZWZpbmUsIHByZWZlci1vYmplY3Qtc3ByZWFkLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7U2hhcGVIb29rLCB1c2VTaGFwZUhvb2t9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZVwiXG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcImRlYm91bmNlXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBNb2RlbEV2ZW50cyBmcm9tIFwiLi9tb2RlbC1ldmVudHMuanNcIlxuaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdXNlQ3JlYXRlZEV2ZW50IGZyb20gXCIuL3VzZS1jcmVhdGVkLWV2ZW50LmpzXCJcbmltcG9ydCB1c2VRdWVyeVBhcmFtcyBmcm9tIFwib24tbG9jYXRpb24tY2hhbmdlZC9idWlsZC91c2UtcXVlcnktcGFyYW1zLmpzXCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VDb2xsZWN0aW9uUmVzdWx0XG4gKiBAcHJvcGVydHkge0FycmF5PGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0Pn0gbW9kZWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbW9kZWxJZHNDYWNoZVN0cmluZ1xuICogQHByb3BlcnR5IHtudW1iZXJ9IG92ZXJhbGxDb3VudFxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gcXVlcnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeU5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVBlcktleVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UU5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVNOYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlQYWdlTmFtZVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3Jlc3VsdC5qc1wiKS5kZWZhdWx0fSByZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHNlYXJjaFBhcmFtc1xuICogQHByb3BlcnR5IHtmYWxzZSB8IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRcbiAqIEBwcm9wZXJ0eSB7ZmFsc2UgfCBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IHByb3BzLmFiaWxpdGllc1xuICogQHBhcmFtIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gcHJvcHMuY29sbGVjdGlvblxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBwcm9wcy5kZWZhdWx0UGFyYW1zXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wcy5ncm91cEJ5XG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiBib29sZWFufSBwcm9wcy5pZkNvbmRpdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLmxpbWl0XG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gcHJvcHMubW9kZWxDbGFzc1xuICogQHBhcmFtIHtmdW5jdGlvbigpIDogaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBwcm9wcy5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50XG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IHByb3BzLm5vUmVjb3Jkc0ZvdW5kQ29udGVudFxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogdm9pZH0gcHJvcHMub25Nb2RlbHNMb2FkZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucGFnaW5hdGlvblxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHMucHJlbG9hZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oe3F1ZXJ5OiBpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0pIDogaW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLmRlZmF1bHR9IHByb3BzLnF1ZXJ5TWV0aG9kXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMucXVlcnlOYW1lXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHByb3BzLnJhbnNhY2tcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBwcm9wcy5zZWxlY3RcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBwcm9wcy5zZWxlY3RDb2x1bW5zXG4gKiBAcGFyYW0ge2FueVtdfSBjYWNoZUtleXNcbiAqIEByZXR1cm5zIHtVc2VDb2xsZWN0aW9uUmVzdWx0ICYgUmVjb3JkPHN0cmluZywgYW55Pn1cbiAqL1xuLyoqIEhvb2sgc3RhdGUgY29udGFpbmVyIGZvciB1c2VDb2xsZWN0aW9uLiAqL1xuY2xhc3MgVXNlQ29sbGVjdGlvblNoYXBlSG9vayBleHRlbmRzIFNoYXBlSG9vayB7XG4gIC8qKiBDb25zdHJ1Y3Rvci4gKi9cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uID0gMFxuICAgIHRoaXMubG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gPSAwXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5UGVyS2V5KCkge1xuICAgIHJldHVybiBgJHt0aGlzLnF1ZXJ5TmFtZSgpfV9wZXJgXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgcXVlcnlRTmFtZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5xdWVyeU5hbWUoKX1fcWBcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeVNOYW1lKCkge1xuICAgIHJldHVybiBgJHt0aGlzLnF1ZXJ5TmFtZSgpfV9zYFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5UGFnZU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMucXVlcnlOYW1lKCl9X3BhZ2VgXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgbW9kZWxJZHNDYWNoZVN0cmluZygpIHtcbiAgICBpZiAodGhpcy5zLm1vZGVscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gXCJtb2RlbHMtdW5kZWZpbmVkXCJcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gXCJuby1tb2RlbHNcIlxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zLm1vZGVscy5tYXAoKG1vZGVsKSA9PiBtb2RlbC5jYWNoZUtleSgpKT8uam9pbihcIi0tLVwiKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7RnVuY3Rpb24gJiB7Y2xlYXI/OiAoKSA9PiB2b2lkfX0gKi9cbiAgbG9hZE1vZGVsc0RlYm91bmNlKCkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlKFwibG9hZE1vZGVsc0RlYm91bmNlXCIsICgpID0+IGRlYm91bmNlKCgpID0+IHRoaXMubG9hZE1vZGVscygpKSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MgKi9cbiAgc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQoYXJncykge1xuICAgIGxldCBtb2RlbHMsIG92ZXJhbGxDb3VudFxuXG4gICAgaWYgKGFyZ3MubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IGFyZ3MubW9kZWxzXG4gICAgfSBlbHNlIGlmICh0aGlzLnMubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IHRoaXMucy5tb2RlbHNcbiAgICB9XG5cbiAgICBpZiAoYXJncy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gYXJncy5vdmVyYWxsQ291bnRcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gdGhpcy5zLm92ZXJhbGxDb3VudFxuICAgIH1cblxuICAgIGlmIChtb2RlbHMgPT09IHVuZGVmaW5lZCB8fCBvdmVyYWxsQ291bnQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2VcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCAmJiBvdmVyYWxsQ291bnQgPT09IDAgJiYgdGhpcy5wLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQpIHJldHVybiB0cnVlXG4gIH1cblxuICAvKiogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzICovXG4gIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQoYXJncykge1xuICAgIGxldCBtb2RlbHMsIG92ZXJhbGxDb3VudFxuXG4gICAgaWYgKGFyZ3MubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IGFyZ3MubW9kZWxzXG4gICAgfSBlbHNlIGlmICh0aGlzLnMubW9kZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGVscyA9IHRoaXMucy5tb2RlbHNcbiAgICB9XG5cbiAgICBpZiAoYXJncy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gYXJncy5vdmVyYWxsQ291bnRcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5vdmVyYWxsQ291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3ZlcmFsbENvdW50ID0gdGhpcy5zLm92ZXJhbGxDb3VudFxuICAgIH1cblxuICAgIGlmIChtb2RlbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnAubm9SZWNvcmRzRm91bmRDb250ZW50ID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZVxuXG4gICAgLy8gRG9udCBzaG93IG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgdG9nZXRoZXIgd2l0aCBub1JlY29yZHNBdmFpbGFibGVDb250ZW50XG4gICAgaWYgKG1vZGVscy5sZW5ndGggPT09IDAgJiYgb3ZlcmFsbENvdW50ID09PSAwICYmIHRoaXMucC5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50KSByZXR1cm4gZmFsc2VcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnAubm9SZWNvcmRzRm91bmRDb250ZW50KSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBsb2FkT3ZlcmFsbENvdW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIElnbm9yZSBsYXRlIG92ZXJhbGwtY291bnQgcmVzcG9uc2VzIG9uY2UgYSBuZXdlciBsb2FkIGN5Y2xlIGhhcyBzdGFydGVkIG9yIHRoZSBob29rIHVubW91bnRlZC5cbiAgICBjb25zdCBsb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbiA9IHRoaXMubG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gKyAxXG5cbiAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uID0gbG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb25cblxuICAgIGNvbnN0IGJhc2VRdWVyeSA9IHRoaXMucC5jb2xsZWN0aW9uIHx8IHRoaXMucC5tb2RlbENsYXNzLmFsbCgpXG4gICAgY29uc3Qgb3ZlcmFsbENvdW50ID0gYXdhaXQgYmFzZVF1ZXJ5LmNvdW50KClcblxuICAgIGlmIChsb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uKSByZXR1cm5cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgb3ZlcmFsbENvdW50LFxuICAgICAgc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IHRoaXMuc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQoe292ZXJhbGxDb3VudH0pLFxuICAgICAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudDogdGhpcy5zaG93Tm9SZWNvcmRzRm91bmRDb250ZW50KHtvdmVyYWxsQ291bnR9KVxuICAgIH0pXG4gIH1cblxuICAvKiogQHJldHVybnMge3txUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzZWFyY2hQYXJhbXM6IHN0cmluZ1tdfX0gKi9cbiAgbG9hZFFQYXJhbXMoKSB7XG4gICAgbGV0IHFQYXJhbXNUb1NldCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucC5kZWZhdWx0UGFyYW1zKVxuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IFtdXG5cbiAgICBpZiAodGhpcy5xdWVyeVBhcmFtcyAmJiB0aGlzLnF1ZXJ5UU5hbWUoKSBpbiB0aGlzLnF1ZXJ5UGFyYW1zKSB7XG4gICAgICBxUGFyYW1zVG9TZXQgPSBKU09OLnBhcnNlKGRpZ2codGhpcy5xdWVyeVBhcmFtcywgdGhpcy5xdWVyeVFOYW1lKCkpKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zPy5bdGhpcy5xdWVyeVNOYW1lKCldKSB7XG4gICAgICBmb3IgKGNvbnN0IHJhd1NlYXJjaFBhcmFtIG9mIHRoaXMucXVlcnlQYXJhbXNbdGhpcy5xdWVyeVNOYW1lKCldKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFNlYXJjaFBhcmFtID0gSlNPTi5wYXJzZShyYXdTZWFyY2hQYXJhbSlcblxuICAgICAgICBzZWFyY2hQYXJhbXMucHVzaChwYXJzZWRTZWFyY2hQYXJhbSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHFQYXJhbXM6IHFQYXJhbXNUb1NldCxcbiAgICAgIHNlYXJjaFBhcmFtc1xuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgcVBhcmFtczogcVBhcmFtc1RvU2V0LFxuICAgICAgc2VhcmNoUGFyYW1zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJncy5zZWFyY2hQYXJhbXNdXG4gICAqIEByZXR1cm5zIHt7cVBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Piwgc2VhcmNoUGFyYW1zOiBzdHJpbmdbXX19XG4gICAqL1xuICBsb2FkTW9kZWxzQXJncyhhcmdzID0ge30pIHtcbiAgICByZXR1cm4ge1xuICAgICAgcVBhcmFtczogYXJncy5xUGFyYW1zID8/IHRoaXMucy5xUGFyYW1zLFxuICAgICAgc2VhcmNoUGFyYW1zOiBhcmdzLnNlYXJjaFBhcmFtcyA/PyB0aGlzLnMuc2VhcmNoUGFyYW1zXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJncy5zZWFyY2hQYXJhbXNdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgbG9hZE1vZGVscyA9IGFzeW5jIChhcmdzID0ge30pID0+IHtcbiAgICAvLyBPbmx5IHRoZSBuZXdlc3QgY29sbGVjdGlvbiByZXF1ZXN0IGlzIGFsbG93ZWQgdG8gdXBkYXRlIHN0YXRlIGFmdGVyIG5hdmlnYXRpb24vZmlsdGVyIGNoYW5nZXMuXG4gICAgY29uc3QgbG9hZE1vZGVsc0dlbmVyYXRpb24gPSB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uICsgMVxuICAgIGNvbnN0IHtxUGFyYW1zLCBzZWFyY2hQYXJhbXN9ID0gdGhpcy5sb2FkTW9kZWxzQXJncyhhcmdzKVxuXG4gICAgdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbiA9IGxvYWRNb2RlbHNHZW5lcmF0aW9uXG4gICAgbGV0IHF1ZXJ5ID0gdGhpcy5wLmNvbGxlY3Rpb24/LmNsb25lKCkgfHwgdGhpcy5wLm1vZGVsQ2xhc3MucmFuc2FjaygpXG5cbiAgICBpZiAodGhpcy5wLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnF1ZXJ5UGFyYW1zPy5bdGhpcy5xdWVyeVBhZ2VOYW1lKCldIHx8IDFcbiAgICAgIGxldCBwZXIgPSB0aGlzLnF1ZXJ5UGFyYW1zPy5bdGhpcy5xdWVyeVBlcktleSgpXSB8fCAzMFxuXG4gICAgICBpZiAocGVyID09IFwiYWxsXCIpIHtcbiAgICAgICAgcGVyID0gOTk5Xzk5OV85OTlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlciA9IE51bWJlcihwZXIpXG4gICAgICB9XG5cbiAgICAgIHF1ZXJ5LnBhZ2UocGFnZSkucGVyKHBlcilcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wLmdyb3VwQnkpIHF1ZXJ5ID0gcXVlcnkuZ3JvdXBCeSguLi50aGlzLnAuZ3JvdXBCeSlcblxuICAgIHF1ZXJ5ID0gcXVlcnlcbiAgICAgIC5yYW5zYWNrKHFQYXJhbXMpXG4gICAgICAuc2VhcmNoKHNlYXJjaFBhcmFtcylcbiAgICAgIC5zZWFyY2hLZXkodGhpcy5xdWVyeVFOYW1lKCkpXG4gICAgICAucGFnZUtleSh0aGlzLnF1ZXJ5UGFnZU5hbWUoKSlcbiAgICAgIC5wZXJLZXkodGhpcy5xdWVyeVBlcktleSgpKVxuXG4gICAgaWYgKHRoaXMucC5hYmlsaXRpZXMpIHF1ZXJ5LmFiaWxpdGllcyh0aGlzLnAuYWJpbGl0aWVzKVxuICAgIGlmICh0aGlzLnAubGltaXQgIT09IHVuZGVmaW5lZCkgcXVlcnkubGltaXQodGhpcy5wLmxpbWl0KVxuICAgIGlmICh0aGlzLnAucHJlbG9hZHMpIHF1ZXJ5LnByZWxvYWQodGhpcy5wLnByZWxvYWRzKVxuICAgIGlmICh0aGlzLnAucmFuc2FjaykgcXVlcnkucmFuc2Fjayh0aGlzLnAucmFuc2FjaylcbiAgICBpZiAodGhpcy5wLnNlbGVjdCkgcXVlcnkuc2VsZWN0KHRoaXMucC5zZWxlY3QpXG4gICAgaWYgKHRoaXMucC5zZWxlY3RDb2x1bW5zKSBxdWVyeS5zZWxlY3RDb2x1bW5zKHRoaXMucC5zZWxlY3RDb2x1bW5zKVxuXG4gICAgbGV0IHJlc3VsdFxuXG4gICAgaWYgKHRoaXMucC5xdWVyeU1ldGhvZCkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5wLnF1ZXJ5TWV0aG9kKHtxdWVyeX0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHF1ZXJ5LnJlc3VsdCgpXG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxzID0gcmVzdWx0Lm1vZGVscygpXG5cbiAgICBpZiAobG9hZE1vZGVsc0dlbmVyYXRpb24gIT0gdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbikgcmV0dXJuXG5cbiAgICBpZiAodGhpcy5wLm9uTW9kZWxzTG9hZGVkKSB7XG4gICAgICB0aGlzLnAub25Nb2RlbHNMb2FkZWQoe1xuICAgICAgICBtb2RlbHMsXG4gICAgICAgIHFQYXJhbXM6IHRoaXMucy5xUGFyYW1zLFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgcmVzdWx0XG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbW9kZWxzLFxuICAgICAgcXVlcnksXG4gICAgICByZXN1bHQsXG4gICAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogdGhpcy5zaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCh7bW9kZWxzfSksXG4gICAgICBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50OiB0aGlzLnNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQoe21vZGVsc30pXG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3ttb2RlbDogaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9fSBhcmdzICovXG4gIG9uTW9kZWxEZXN0cm95ZWQoYXJncykge1xuICAgIGNvbnN0IGRlc3Ryb3llZE1vZGVsID0gZGlnZyhhcmdzLCBcIm1vZGVsXCIpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG1vZGVsczogdGhpcy5zLm1vZGVscy5maWx0ZXIoKG1vZGVsKSA9PiBtb2RlbC5pZCgpICE9IGRlc3Ryb3llZE1vZGVsLmlkKCkpXG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3ttb2RlbDogaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9fSBhcmdzICovXG4gIG9uTW9kZWxVcGRhdGVkKGFyZ3MpIHtcbiAgICBjb25zdCB1cGRhdGVkTW9kZWwgPSBkaWdnKGFyZ3MsIFwibW9kZWxcIilcbiAgICBjb25zdCBmb3VuZE1vZGVsID0gdGhpcy5zLm1vZGVscy5maW5kKChtb2RlbCkgPT4gbW9kZWwuaWQoKSA9PSB1cGRhdGVkTW9kZWwuaWQoKSlcblxuICAgIGlmIChmb3VuZE1vZGVsKSB0aGlzLmxvYWRNb2RlbHNEZWJvdW5jZSgpKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgb25DcmVhdGVkKCkge1xuICAgIHRoaXMubG9hZE1vZGVsc0RlYm91bmNlKCkoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtyZWFkeVRvTG9hZDogdHJ1ZX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIG1vZGVsczogdW5kZWZpbmVkLFxuICAgICAgb3ZlcmFsbENvdW50OiB1bmRlZmluZWQsXG4gICAgICBxUGFyYW1zOiB7fSxcbiAgICAgIHF1ZXJ5OiB1bmRlZmluZWQsXG4gICAgICByZWFkeVRvTG9hZDogZmFsc2UsXG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIHNlYXJjaFBhcmFtczogdW5kZWZpbmVkLFxuICAgICAgc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IGZhbHNlLFxuICAgICAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudDogZmFsc2VcbiAgICB9KVxuICAgIHRoaXMuc2V0SW5zdGFuY2Uoe3F1ZXJ5UGFyYW1zOiB1c2VRdWVyeVBhcmFtcygpfSlcblxuICAgIC8vIFdhaXQgdW50aWwgY29tcG9uZW50RGlkTW91bnQgaGFzIGZsaXBwZWQgcmVhZHlUb0xvYWQgc28gdGhlIGZpcnN0IGxvYWQgcnVucyBhZnRlciB1c2VTaGFwZUhvb2sgaGFzIG1hcmtlZCB0aGUgaG9vayBtb3VudGVkLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnMucmVhZHlUb0xvYWQpIHJldHVyblxuICAgICAgICBsZXQgaWZDb25kaXRpb25NZXRcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucC5pZkNvbmRpdGlvbiA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRoaXMucC5pZkNvbmRpdGlvbigpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wLmlmQ29uZGl0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRoaXMucC5pZkNvbmRpdGlvblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlmQ29uZGl0aW9uTWV0KSB7XG4gICAgICAgICAgY29uc3Qge3FQYXJhbXMsIHNlYXJjaFBhcmFtc30gPSB0aGlzLmxvYWRRUGFyYW1zKClcblxuICAgICAgICAgIHRoaXMubG9hZE1vZGVscyh7cVBhcmFtcywgc2VhcmNoUGFyYW1zfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgdGhpcy5wLm1vZGVsQ2xhc3MsXG4gICAgICAgIHRoaXMucC5pZkNvbmRpdGlvbixcbiAgICAgICAgdGhpcy5xdWVyeU5hbWUoKSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlRTmFtZSgpXSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQYWdlTmFtZSgpXSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQZXJLZXkoKV0sXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5U05hbWUoKV0sXG4gICAgICAgIHRoaXMucy5yZWFkeVRvTG9hZCxcbiAgICAgICAgdGhpcy5wLmNvbGxlY3Rpb25cbiAgICAgIF0uY29uY2F0KHRoaXMucC5jYWNoZUtleXMpXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zLnJlYWR5VG9Mb2FkKSByZXR1cm5cbiAgICAgIGlmICh0aGlzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCkge1xuICAgICAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnQoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAubW9kZWxDbGFzcywgdGhpcy5zLnJlYWR5VG9Mb2FkXSlcblxuICAgIHVzZUNyZWF0ZWRFdmVudCh0aGlzLnAubW9kZWxDbGFzcywgKCkgPT4gdGhpcy5vbkNyZWF0ZWQoKSlcblxuICAgIC8vIEludmFsaWRhdGUgYW55IGluLWZsaWdodCBhc3luYyByZXNwb25zZXMgc28gdW5tb3VudGVkIGhvb2tzIGNhbm5vdCB3cml0ZSBzdGFsZSBzdGF0ZS5cbiAgICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbiArPSAxXG4gICAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uICs9IDFcbiAgICAgIHRoaXMubG9hZE1vZGVsc0RlYm91bmNlKCkuY2xlYXI/LigpXG4gICAgfSwgW10pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY29ubmVjdGlvbnMgPSBbXVxuXG4gICAgICBpZiAodGhpcy5zLm1vZGVscykge1xuICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMucy5tb2RlbHMpIHtcbiAgICAgICAgICBjb25uZWN0aW9ucy5wdXNoKE1vZGVsRXZlbnRzLmNvbm5lY3RVcGRhdGVkKG1vZGVsLCAoYXJncykgPT4gdGhpcy5vbk1vZGVsVXBkYXRlZChhcmdzKSkpXG4gICAgICAgICAgY29ubmVjdGlvbnMucHVzaChNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKG1vZGVsLCAoYXJncykgPT4gdGhpcy5vbk1vZGVsRGVzdHJveWVkKGFyZ3MpKSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgY29ubmVjdGlvbnMpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLnVuc3Vic2NyaWJlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFt0aGlzLm1vZGVsSWRzQ2FjaGVTdHJpbmcoKV0pXG4gIH1cbn1cblxuY29uc3QgdXNlQ29sbGVjdGlvbiA9IChwcm9wcywgY2FjaGVLZXlzID0gW10pID0+IHtcbiAgY29uc3Qge1xuICAgIGFiaWxpdGllcyxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgZ3JvdXBCeSxcbiAgICBpZkNvbmRpdGlvbixcbiAgICBsaW1pdCxcbiAgICBtb2RlbENsYXNzLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgPSB1bmRlZmluZWQsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50ID0gdW5kZWZpbmVkLFxuICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgIHBhZ2luYXRpb24gPSBmYWxzZSxcbiAgICBwcmVsb2FkcyA9IFtdLFxuICAgIHF1ZXJ5TWV0aG9kLFxuICAgIHF1ZXJ5TmFtZSxcbiAgICByYW5zYWNrLFxuICAgIHNlbGVjdCA9IHt9LFxuICAgIHNlbGVjdENvbHVtbnMsXG4gICAgLi4ucmVzdFByb3BzXG4gIH0gPSBwcm9wc1xuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvcHMgZ2l2ZW4gdG8gdXNlQ29sbGVjdGlvbjogJHtPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgY29uc3Qgc2hhcGVIb29rID0gdXNlU2hhcGVIb29rKFVzZUNvbGxlY3Rpb25TaGFwZUhvb2ssIHtcbiAgICBhYmlsaXRpZXMsXG4gICAgY2FjaGVLZXlzLFxuICAgIGNvbGxlY3Rpb24sXG4gICAgZGVmYXVsdFBhcmFtcyxcbiAgICBncm91cEJ5LFxuICAgIGlmQ29uZGl0aW9uLFxuICAgIGxpbWl0LFxuICAgIG1vZGVsQ2xhc3MsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICBub1JlY29yZHNGb3VuZENvbnRlbnQsXG4gICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgcGFnaW5hdGlvbixcbiAgICBwcmVsb2FkcyxcbiAgICBxdWVyeU1ldGhvZCxcbiAgICBxdWVyeU5hbWUsXG4gICAgcmFuc2FjayxcbiAgICBzZWxlY3QsXG4gICAgc2VsZWN0Q29sdW1uc1xuICB9KVxuICBjb25zdCByZXN1bHQgPSAvKiogQHR5cGUge1VzZUNvbGxlY3Rpb25SZXN1bHQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqLyAoT2JqZWN0LmFzc2lnbih7fSwgc2hhcGVIb29rLnN0YXRlKSlcbiAgY29uc3QgbW9kZWxWYXJpYWJsZU5hbWUgPSBpbmZsZWN0aW9uLnBsdXJhbGl6ZShpbmZsZWN0aW9uLmNhbWVsaXplKHNoYXBlSG9vay5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lLCB0cnVlKSlcblxuICByZXN1bHQubW9kZWxJZHNDYWNoZVN0cmluZyA9IHNoYXBlSG9vay5tb2RlbElkc0NhY2hlU3RyaW5nKClcbiAgcmVzdWx0LnF1ZXJ5TmFtZSA9IHNoYXBlSG9vay5xdWVyeU5hbWUoKVxuICByZXN1bHQucXVlcnlQZXJLZXkgPSBzaGFwZUhvb2sucXVlcnlQZXJLZXkoKVxuICByZXN1bHQucXVlcnlRTmFtZSA9IHNoYXBlSG9vay5xdWVyeVFOYW1lKClcbiAgcmVzdWx0LnF1ZXJ5U05hbWUgPSBzaGFwZUhvb2sucXVlcnlTTmFtZSgpXG4gIHJlc3VsdC5xdWVyeVBhZ2VOYW1lID0gc2hhcGVIb29rLnF1ZXJ5UGFnZU5hbWUoKVxuICByZXN1bHRbbW9kZWxWYXJpYWJsZU5hbWVdID0gc2hhcGVIb29rLnMubW9kZWxzXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDb2xsZWN0aW9uXG4iXX0=
|
|
468
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1jb2xsZWN0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWiw2RkFBNkY7QUFDN0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6RCxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQy9CLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBRTFFLHlFQUF5RTtBQUN6RSxxRUFBcUU7QUFDckUsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUNuRSxnRUFBZ0U7QUFDaEUsNEZBQTRGO0FBQzVGLDhGQUE4RjtBQUM5Rix5RkFBeUY7QUFDekYsb0dBQW9HO0FBQ3BHLGtHQUFrRztBQUNsRywySEFBMkg7QUFDM0g7Ozs7Ozs7R0FPRztBQUNILDBGQUEwRjtBQUMxRixnR0FBZ0c7QUFDaEc7Ozs7O0dBS0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUg7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw4Q0FBOEM7QUFDOUMsd0VBQXdFO0FBQ3hFLE1BQU0sc0JBQXVCLFNBQVEsU0FBUztJQUM1QyxLQUFLLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztRQUN2QixPQUFPLEVBQUUsRUFBRTtRQUNY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QVUsRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFO1FBQ2xDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFO0tBQ3pDLENBQUMsQ0FBQTtJQUNGLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBRXZILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBRTlDLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsZUFBZSxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzLCBuby11c2UtYmVmb3JlLWRlZmluZSwgcHJlZmVyLW9iamVjdC1zcHJlYWQsIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IHtTaGFwZUhvb2ssIHVzZVNoYXBlSG9va30gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlXCJcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50cy5qc1wiXG5pbXBvcnQge3VzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB1c2VDcmVhdGVkRXZlbnQgZnJvbSBcIi4vdXNlLWNyZWF0ZWQtZXZlbnQuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuXG4vKiogQHR5cGVkZWYge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsQ2xhc3MgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9IEJhc2VNb2RlbEluc3RhbmNlICovXG4vKiogQHR5cGVkZWYge0Jhc2VNb2RlbEluc3RhbmNlICYge2lkOiAoKSA9PiBudW1iZXIgfCBzdHJpbmd9fSBCYXNlTW9kZWxXaXRoSWQgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLmRlZmF1bHR9IE1vZGVsQ29sbGVjdGlvbiAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL3Jlc3VsdC5qc1wiKS5kZWZhdWx0fSBDb2xsZWN0aW9uUmVzdWx0ICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vY29sbGVjdGlvbi5qc1wiKS5Db2xsZWN0aW9uU2VhcmNoUGFyYW1zfSBVc2VDb2xsZWN0aW9uU2VhcmNoUGFyYW1zICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vY29sbGVjdGlvbi5qc1wiKS5Db2xsZWN0aW9uUmFuc2Fja1BhcmFtc30gVXNlQ29sbGVjdGlvblJhbnNhY2tQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLlF1ZXJ5UGFyYW1WYWx1ZU1hcH0gVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLlF1ZXJ5UGFyYW1WYWx1ZSB8IHVuZGVmaW5lZH0gVXNlQ29sbGVjdGlvblF1ZXJ5UGFyYW1WYWx1ZSAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBVc2VDb2xsZWN0aW9uUXVlcnlQYXJhbVZhbHVlIHwgc3RyaW5nW10+fSBVc2VDb2xsZWN0aW9uUXVlcnlQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7KGFyZ3M6IHtxdWVyeTogTW9kZWxDb2xsZWN0aW9ufSkgPT4gUHJvbWlzZTxDb2xsZWN0aW9uUmVzdWx0PiB8IENvbGxlY3Rpb25SZXN1bHR9IFVzZUNvbGxlY3Rpb25RdWVyeU1ldGhvZCAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7KGFyZ3M6IHtcbiAqICAgbW9kZWxzOiBCYXNlTW9kZWxJbnN0YW5jZVtdLFxuICogICBxUGFyYW1zOiBVc2VDb2xsZWN0aW9uRGVmYXVsdFBhcmFtcyxcbiAqICAgcXVlcnk6IE1vZGVsQ29sbGVjdGlvbixcbiAqICAgcmVzdWx0OiBDb2xsZWN0aW9uUmVzdWx0XG4gKiB9KSA9PiB2b2lkfSBPbk1vZGVsc0xvYWRlZENhbGxiYWNrXG4gKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVscz86IEJhc2VNb2RlbEluc3RhbmNlW10sIG92ZXJhbGxDb3VudD86IG51bWJlcn19IE5vUmVjb3Jkc1N0YXRlQXJncyAqL1xuLyoqIEB0eXBlZGVmIHt7cVBhcmFtcz86IFVzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zLCBzZWFyY2hQYXJhbXM/OiBzdHJpbmdbXX19IExvYWRNb2RlbHNBcmdzICovXG4vKipcbiAqIEB0eXBlZGVmIHtVc2VDb2xsZWN0aW9uUmVzdWx0ICYgUmVjb3JkPFxuICogICBzdHJpbmcsXG4gKiAgIEJhc2VNb2RlbEluc3RhbmNlW10gfCBzdHJpbmcgfCBudW1iZXIgfCBDb2xsZWN0aW9uUmVzdWx0IHwgTW9kZWxDb2xsZWN0aW9uIHwgc3RyaW5nW10gfCBmYWxzZSB8IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZVxuICogPn0gVXNlQ29sbGVjdGlvblJldHVyblZhbHVlXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gVXNlQ29sbGVjdGlvbkhvb2tQcm9wc1xuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFthYmlsaXRpZXNdXG4gKiBAcHJvcGVydHkge1VzZUNvbGxlY3Rpb25RdWVyeVBhcmFtVmFsdWVbXX0gW2NhY2hlS2V5c11cbiAqIEBwcm9wZXJ0eSB7TW9kZWxDb2xsZWN0aW9ufSBbY29sbGVjdGlvbl1cbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IFtkZWZhdWx0UGFyYW1zXVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2dyb3VwQnldXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCAoKCkgPT4gYm9vbGVhbil9IFtpZkNvbmRpdGlvbl1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbGltaXRdXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbENsYXNzfSBtb2RlbENsYXNzXG4gKiBAcHJvcGVydHkgeygpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW25vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRdXG4gKiBAcHJvcGVydHkgeygpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW25vUmVjb3Jkc0ZvdW5kQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7T25Nb2RlbHNMb2FkZWRDYWxsYmFja30gW29uTW9kZWxzTG9hZGVkXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbcGFnaW5hdGlvbl1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtwcmVsb2Fkc11cbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvblF1ZXJ5TWV0aG9kfSBbcXVlcnlNZXRob2RdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3F1ZXJ5TmFtZV1cbiAqIEBwcm9wZXJ0eSB7VXNlQ29sbGVjdGlvblJhbnNhY2tQYXJhbXN9IFtyYW5zYWNrXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdENvbHVtbnNdXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gVXNlQ29sbGVjdGlvblJlc3VsdFxuICogQHByb3BlcnR5IHtCYXNlTW9kZWxJbnN0YW5jZVtdIHwgdW5kZWZpbmVkfSBtb2RlbHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtb2RlbElkc0NhY2hlU3RyaW5nXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gb3ZlcmFsbENvdW50XG4gKiBAcHJvcGVydHkge1VzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zfSBxUGFyYW1zXG4gKiBAcHJvcGVydHkge01vZGVsQ29sbGVjdGlvbiB8IHVuZGVmaW5lZH0gcXVlcnlcbiAgKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlOYW1lXG4gICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UGVyS2V5XG4gICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UU5hbWVcbiAgKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlTTmFtZVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVBhZ2VOYW1lXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlYWR5VG9Mb2FkXG4gKiBAcHJvcGVydHkge0NvbGxlY3Rpb25SZXN1bHQgfCB1bmRlZmluZWR9IHJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gc2VhcmNoUGFyYW1zXG4gICogQHByb3BlcnR5IHtmYWxzZSB8IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gc2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRcbiAgKiBAcHJvcGVydHkge2ZhbHNlIHwgaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBwcm9wcy5hYmlsaXRpZXNcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9jb2xsZWN0aW9uLmpzXCIpLmRlZmF1bHR9IHByb3BzLmNvbGxlY3Rpb25cbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IHByb3BzLmRlZmF1bHRQYXJhbXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzLmdyb3VwQnlcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IGJvb2xlYW59IHByb3BzLmlmQ29uZGl0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMubGltaXRcbiAqIEBwYXJhbSB7QmFzZU1vZGVsQ2xhc3N9IHByb3BzLm1vZGVsQ2xhc3NcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gcHJvcHMubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBwcm9wcy5ub1JlY29yZHNGb3VuZENvbnRlbnRcbiAqIEBwYXJhbSB7T25Nb2RlbHNMb2FkZWRDYWxsYmFja30gcHJvcHMub25Nb2RlbHNMb2FkZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucGFnaW5hdGlvblxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHMucHJlbG9hZHNcbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvblF1ZXJ5TWV0aG9kfSBwcm9wcy5xdWVyeU1ldGhvZFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLnF1ZXJ5TmFtZVxuICogQHBhcmFtIHtVc2VDb2xsZWN0aW9uUmFuc2Fja1BhcmFtc30gcHJvcHMucmFuc2Fja1xuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IHByb3BzLnNlbGVjdFxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IHByb3BzLnNlbGVjdENvbHVtbnNcbiAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvblF1ZXJ5UGFyYW1WYWx1ZVtdfSBjYWNoZUtleXNcbiAqIEByZXR1cm5zIHtVc2VDb2xsZWN0aW9uUmV0dXJuVmFsdWV9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VDb2xsZWN0aW9uU3RhdGVcbiAqIEBwcm9wZXJ0eSB7QmFzZU1vZGVsSW5zdGFuY2VbXSB8IHVuZGVmaW5lZH0gbW9kZWxzXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gb3ZlcmFsbENvdW50XG4gKiBAcHJvcGVydHkge1VzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zfSBxUGFyYW1zXG4gKiBAcHJvcGVydHkge01vZGVsQ29sbGVjdGlvbiB8IHVuZGVmaW5lZH0gcXVlcnlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVhZHlUb0xvYWRcbiAqIEBwcm9wZXJ0eSB7Q29sbGVjdGlvblJlc3VsdCB8IHVuZGVmaW5lZH0gcmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBzZWFyY2hQYXJhbXNcbiAqIEBwcm9wZXJ0eSB7ZmFsc2UgfCBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50XG4gKiBAcHJvcGVydHkge2ZhbHNlIHwgaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XG4gKi9cblxuLyoqIEhvb2sgc3RhdGUgY29udGFpbmVyIGZvciB1c2VDb2xsZWN0aW9uLiAqL1xuLyoqIEBhdWdtZW50cyB7U2hhcGVIb29rPFVzZUNvbGxlY3Rpb25Ib29rUHJvcHMsIFVzZUNvbGxlY3Rpb25TdGF0ZT59ICovXG5jbGFzcyBVc2VDb2xsZWN0aW9uU2hhcGVIb29rIGV4dGVuZHMgU2hhcGVIb29rIHtcbiAgc3RhdGUgPSAvKiogQHR5cGUge1VzZUNvbGxlY3Rpb25TdGF0ZX0gKi8gKHtcbiAgICBtb2RlbHM6IHVuZGVmaW5lZCxcbiAgICBvdmVyYWxsQ291bnQ6IHVuZGVmaW5lZCxcbiAgICBxUGFyYW1zOiB7fSxcbiAgICBxdWVyeTogdW5kZWZpbmVkLFxuICAgIHJlYWR5VG9Mb2FkOiBmYWxzZSxcbiAgICByZXN1bHQ6IHVuZGVmaW5lZCxcbiAgICBzZWFyY2hQYXJhbXM6IHVuZGVmaW5lZCxcbiAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogZmFsc2UsXG4gICAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudDogZmFsc2VcbiAgfSlcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkhvb2tQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbiA9IDBcbiAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uID0gMFxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucC5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeVBlcktleSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5xdWVyeU5hbWUoKX1fcGVyYFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIHF1ZXJ5UU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMucXVlcnlOYW1lKCl9X3FgXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgcXVlcnlTTmFtZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5xdWVyeU5hbWUoKX1fc2BcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBxdWVyeVBhZ2VOYW1lKCkge1xuICAgIHJldHVybiBgJHt0aGlzLnF1ZXJ5TmFtZSgpfV9wYWdlYFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIG1vZGVsSWRzQ2FjaGVTdHJpbmcoKSB7XG4gICAgaWYgKHRoaXMucy5tb2RlbHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFwibW9kZWxzLXVuZGVmaW5lZFwiXG4gICAgfSBlbHNlIGlmICh0aGlzLnMubW9kZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwibm8tbW9kZWxzXCJcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucy5tb2RlbHMubWFwKChtb2RlbCkgPT4gbW9kZWwuY2FjaGVLZXkoKSk/LmpvaW4oXCItLS1cIilcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0Z1bmN0aW9uICYge2NsZWFyPzogKCkgPT4gdm9pZH19ICovXG4gIGxvYWRNb2RlbHNEZWJvdW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcImxvYWRNb2RlbHNEZWJvdW5jZVwiLCAoKSA9PiBkZWJvdW5jZSgoKSA9PiB0aGlzLmxvYWRNb2RlbHMoKSkpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtOb1JlY29yZHNTdGF0ZUFyZ3N9IGFyZ3NcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudChhcmdzKSB7XG4gICAgbGV0IG1vZGVscywgb3ZlcmFsbENvdW50XG5cbiAgICBpZiAoYXJncy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gYXJncy5tb2RlbHNcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gdGhpcy5zLm1vZGVsc1xuICAgIH1cblxuICAgIGlmIChhcmdzLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSBhcmdzLm92ZXJhbGxDb3VudFxuICAgIH0gZWxzZSBpZiAodGhpcy5zLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSB0aGlzLnMub3ZlcmFsbENvdW50XG4gICAgfVxuXG4gICAgaWYgKG1vZGVscyA9PT0gdW5kZWZpbmVkIHx8IG92ZXJhbGxDb3VudCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucC5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50ID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwICYmIG92ZXJhbGxDb3VudCA9PT0gMCAmJiB0aGlzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCkgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9SZWNvcmRzU3RhdGVBcmdzfSBhcmdzXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudChhcmdzKSB7XG4gICAgbGV0IG1vZGVscywgb3ZlcmFsbENvdW50XG5cbiAgICBpZiAoYXJncy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gYXJncy5tb2RlbHNcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbW9kZWxzID0gdGhpcy5zLm1vZGVsc1xuICAgIH1cblxuICAgIGlmIChhcmdzLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSBhcmdzLm92ZXJhbGxDb3VudFxuICAgIH0gZWxzZSBpZiAodGhpcy5zLm92ZXJhbGxDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdmVyYWxsQ291bnQgPSB0aGlzLnMub3ZlcmFsbENvdW50XG4gICAgfVxuXG4gICAgaWYgKG1vZGVscyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucC5ub1JlY29yZHNGb3VuZENvbnRlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG5cbiAgICAvLyBEb250IHNob3cgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCB0b2dldGhlciB3aXRoIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCAmJiBvdmVyYWxsQ291bnQgPT09IDAgJiYgdGhpcy5wLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQpIHJldHVybiBmYWxzZVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwICYmIHRoaXMucC5ub1JlY29yZHNGb3VuZENvbnRlbnQpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgbG9hZE92ZXJhbGxDb3VudCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBJZ25vcmUgbGF0ZSBvdmVyYWxsLWNvdW50IHJlc3BvbnNlcyBvbmNlIGEgbmV3ZXIgbG9hZCBjeWNsZSBoYXMgc3RhcnRlZCBvciB0aGUgaG9vayB1bm1vdW50ZWQuXG4gICAgY29uc3QgbG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gPSB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uICsgMVxuXG4gICAgdGhpcy5sb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbiA9IGxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uXG5cbiAgICBjb25zdCBiYXNlUXVlcnkgPSB0aGlzLnAuY29sbGVjdGlvbiB8fCB0aGlzLnAubW9kZWxDbGFzcy5hbGwoKVxuICAgIGNvbnN0IG92ZXJhbGxDb3VudCA9IGF3YWl0IGJhc2VRdWVyeS5jb3VudCgpXG5cbiAgICBpZiAobG9hZE92ZXJhbGxDb3VudEdlbmVyYXRpb24gIT0gdGhpcy5sb2FkT3ZlcmFsbENvdW50R2VuZXJhdGlvbikgcmV0dXJuXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG92ZXJhbGxDb3VudCxcbiAgICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KHtvdmVyYWxsQ291bnR9KSxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMuc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCh7b3ZlcmFsbENvdW50fSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt7cVBhcmFtczogVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMsIHNlYXJjaFBhcmFtczogc3RyaW5nW119fSAqL1xuICBsb2FkUVBhcmFtcygpIHtcbiAgICBsZXQgcVBhcmFtc1RvU2V0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wLmRlZmF1bHRQYXJhbXMpXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gW11cblxuICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zICYmIHRoaXMucXVlcnlRTmFtZSgpIGluIHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHFQYXJhbXNUb1NldCA9IEpTT04ucGFyc2UoZGlnZyh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLnF1ZXJ5UU5hbWUoKSkpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5U05hbWUoKV0pIHtcbiAgICAgIGZvciAoY29uc3QgcmF3U2VhcmNoUGFyYW0gb2YgdGhpcy5xdWVyeVBhcmFtc1t0aGlzLnF1ZXJ5U05hbWUoKV0pIHtcbiAgICAgICAgY29uc3QgcGFyc2VkU2VhcmNoUGFyYW0gPSBKU09OLnBhcnNlKHJhd1NlYXJjaFBhcmFtKVxuXG4gICAgICAgIHNlYXJjaFBhcmFtcy5wdXNoKHBhcnNlZFNlYXJjaFBhcmFtKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgcVBhcmFtczogcVBhcmFtc1RvU2V0LFxuICAgICAgc2VhcmNoUGFyYW1zXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICBxUGFyYW1zOiBxUGFyYW1zVG9TZXQsXG4gICAgICBzZWFyY2hQYXJhbXNcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IFthcmdzXVxuICAgKiBAcGFyYW0ge1VzZUNvbGxlY3Rpb25EZWZhdWx0UGFyYW1zfSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJncy5zZWFyY2hQYXJhbXNdXG4gICAqIEByZXR1cm5zIHt7cVBhcmFtczogVXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXMsIHNlYXJjaFBhcmFtczogc3RyaW5nW119fVxuICAgKi9cbiAgbG9hZE1vZGVsc0FyZ3MoYXJncyA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHFQYXJhbXM6IGFyZ3MucVBhcmFtcyA/PyB0aGlzLnMucVBhcmFtcyxcbiAgICAgIHNlYXJjaFBhcmFtczogYXJncy5zZWFyY2hQYXJhbXMgPz8gdGhpcy5zLnNlYXJjaFBhcmFtc1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdXG4gICAqIEBwYXJhbSB7VXNlQ29sbGVjdGlvbkRlZmF1bHRQYXJhbXN9IFthcmdzLnFQYXJhbXNdXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzLnNlYXJjaFBhcmFtc11cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBsb2FkTW9kZWxzID0gYXN5bmMgKGFyZ3MgPSB7fSkgPT4ge1xuICAgIC8vIE9ubHkgdGhlIG5ld2VzdCBjb2xsZWN0aW9uIHJlcXVlc3QgaXMgYWxsb3dlZCB0byB1cGRhdGUgc3RhdGUgYWZ0ZXIgbmF2aWdhdGlvbi9maWx0ZXIgY2hhbmdlcy5cbiAgICBjb25zdCBsb2FkTW9kZWxzR2VuZXJhdGlvbiA9IHRoaXMubG9hZE1vZGVsc0dlbmVyYXRpb24gKyAxXG4gICAgY29uc3Qge3FQYXJhbXMsIHNlYXJjaFBhcmFtc30gPSB0aGlzLmxvYWRNb2RlbHNBcmdzKGFyZ3MpXG5cbiAgICB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uID0gbG9hZE1vZGVsc0dlbmVyYXRpb25cbiAgICBsZXQgcXVlcnkgPSB0aGlzLnAuY29sbGVjdGlvbj8uY2xvbmUoKSB8fCB0aGlzLnAubW9kZWxDbGFzcy5yYW5zYWNrKClcblxuICAgIGlmICh0aGlzLnAucGFnaW5hdGlvbikge1xuICAgICAgY29uc3QgcGFnZSA9IHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5UGFnZU5hbWUoKV0gfHwgMVxuICAgICAgbGV0IHBlciA9IHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5UGVyS2V5KCldIHx8IDMwXG5cbiAgICAgIGlmIChwZXIgPT0gXCJhbGxcIikge1xuICAgICAgICBwZXIgPSA5OTlfOTk5Xzk5OVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVyID0gTnVtYmVyKHBlcilcbiAgICAgIH1cblxuICAgICAgcXVlcnkucGFnZShwYWdlKS5wZXIocGVyKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnAuZ3JvdXBCeSkgcXVlcnkgPSBxdWVyeS5ncm91cEJ5KC4uLnRoaXMucC5ncm91cEJ5KVxuXG4gICAgcXVlcnkgPSBxdWVyeVxuICAgICAgLnJhbnNhY2soLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuQ29sbGVjdGlvblJhbnNhY2tQYXJhbXN9ICovIChxUGFyYW1zKSlcbiAgICAgIC5zZWFyY2goc2VhcmNoUGFyYW1zKVxuICAgICAgLnNlYXJjaEtleSh0aGlzLnF1ZXJ5UU5hbWUoKSlcbiAgICAgIC5wYWdlS2V5KHRoaXMucXVlcnlQYWdlTmFtZSgpKVxuICAgICAgLnBlcktleSh0aGlzLnF1ZXJ5UGVyS2V5KCkpXG5cbiAgICBpZiAodGhpcy5wLmFiaWxpdGllcykgcXVlcnkuYWJpbGl0aWVzKHRoaXMucC5hYmlsaXRpZXMpXG4gICAgaWYgKHRoaXMucC5saW1pdCAhPT0gdW5kZWZpbmVkKSBxdWVyeS5saW1pdCh0aGlzLnAubGltaXQpXG4gICAgaWYgKHRoaXMucC5wcmVsb2FkcykgcXVlcnkucHJlbG9hZCh0aGlzLnAucHJlbG9hZHMpXG4gICAgaWYgKHRoaXMucC5yYW5zYWNrKSBxdWVyeS5yYW5zYWNrKHRoaXMucC5yYW5zYWNrKVxuICAgIGlmICh0aGlzLnAuc2VsZWN0KSBxdWVyeS5zZWxlY3QodGhpcy5wLnNlbGVjdClcbiAgICBpZiAodGhpcy5wLnNlbGVjdENvbHVtbnMpIHF1ZXJ5LnNlbGVjdENvbHVtbnModGhpcy5wLnNlbGVjdENvbHVtbnMpXG5cbiAgICBsZXQgcmVzdWx0XG5cbiAgICBpZiAodGhpcy5wLnF1ZXJ5TWV0aG9kKSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnAucXVlcnlNZXRob2Qoe3F1ZXJ5fSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcXVlcnkucmVzdWx0KClcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbHMgPSByZXN1bHQubW9kZWxzKClcblxuICAgIGlmIChsb2FkTW9kZWxzR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbHNHZW5lcmF0aW9uKSByZXR1cm5cblxuICAgIGlmICh0aGlzLnAub25Nb2RlbHNMb2FkZWQpIHtcbiAgICAgIHRoaXMucC5vbk1vZGVsc0xvYWRlZCh7XG4gICAgICAgIG1vZGVscyxcbiAgICAgICAgcVBhcmFtczogdGhpcy5zLnFQYXJhbXMsXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICByZXN1bHRcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBtb2RlbHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHN9KSxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMuc2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCh7bW9kZWxzfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX19IGFyZ3MgKi9cbiAgb25Nb2RlbERlc3Ryb3llZChhcmdzKSB7XG4gICAgY29uc3QgZGVzdHJveWVkTW9kZWwgPSBkaWdnKGFyZ3MsIFwibW9kZWxcIilcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbW9kZWxzOiB0aGlzLnMubW9kZWxzLmZpbHRlcigobW9kZWwpID0+IC8qKiBAdHlwZSB7QmFzZU1vZGVsV2l0aElkfSAqLyAobW9kZWwpLmlkKCkgIT0gLyoqIEB0eXBlIHtCYXNlTW9kZWxXaXRoSWR9ICovIChkZXN0cm95ZWRNb2RlbCkuaWQoKSlcbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX19IGFyZ3MgKi9cbiAgb25Nb2RlbFVwZGF0ZWQoYXJncykge1xuICAgIGNvbnN0IHVwZGF0ZWRNb2RlbCA9IGRpZ2coYXJncywgXCJtb2RlbFwiKVxuICAgIGNvbnN0IGZvdW5kTW9kZWwgPSB0aGlzLnMubW9kZWxzLmZpbmQoKG1vZGVsKSA9PiAvKiogQHR5cGUge0Jhc2VNb2RlbFdpdGhJZH0gKi8gKG1vZGVsKS5pZCgpID09IC8qKiBAdHlwZSB7QmFzZU1vZGVsV2l0aElkfSAqLyAodXBkYXRlZE1vZGVsKS5pZCgpKVxuXG4gICAgaWYgKGZvdW5kTW9kZWwpIHRoaXMubG9hZE1vZGVsc0RlYm91bmNlKCkoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvbkNyZWF0ZWQoKSB7XG4gICAgdGhpcy5sb2FkTW9kZWxzRGVib3VuY2UoKSgpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe3JlYWR5VG9Mb2FkOiB0cnVlfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIC8vIFdhaXQgdW50aWwgY29tcG9uZW50RGlkTW91bnQgaGFzIGZsaXBwZWQgcmVhZHlUb0xvYWQgc28gdGhlIGZpcnN0IGxvYWQgcnVucyBhZnRlciB1c2VTaGFwZUhvb2sgaGFzIG1hcmtlZCB0aGUgaG9vayBtb3VudGVkLlxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnMucmVhZHlUb0xvYWQpIHJldHVyblxuICAgICAgICBsZXQgaWZDb25kaXRpb25NZXRcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucC5pZkNvbmRpdGlvbiA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRoaXMucC5pZkNvbmRpdGlvbigpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wLmlmQ29uZGl0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZkNvbmRpdGlvbk1ldCA9IHRoaXMucC5pZkNvbmRpdGlvblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlmQ29uZGl0aW9uTWV0KSB7XG4gICAgICAgICAgY29uc3Qge3FQYXJhbXMsIHNlYXJjaFBhcmFtc30gPSB0aGlzLmxvYWRRUGFyYW1zKClcblxuICAgICAgICAgIHRoaXMubG9hZE1vZGVscyh7cVBhcmFtcywgc2VhcmNoUGFyYW1zfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgdGhpcy5wLm1vZGVsQ2xhc3MsXG4gICAgICAgIHRoaXMucC5pZkNvbmRpdGlvbixcbiAgICAgICAgdGhpcy5xdWVyeU5hbWUoKSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlRTmFtZSgpXSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQYWdlTmFtZSgpXSxcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMucXVlcnlQZXJLZXkoKV0sXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXM/Llt0aGlzLnF1ZXJ5U05hbWUoKV0sXG4gICAgICAgIHRoaXMucy5yZWFkeVRvTG9hZCxcbiAgICAgICAgdGhpcy5wLmNvbGxlY3Rpb25cbiAgICAgIF0uY29uY2F0KHRoaXMucC5jYWNoZUtleXMpXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zLnJlYWR5VG9Mb2FkKSByZXR1cm5cbiAgICAgIGlmICh0aGlzLnAubm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCkge1xuICAgICAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnQoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAubW9kZWxDbGFzcywgdGhpcy5zLnJlYWR5VG9Mb2FkXSlcblxuICAgIHVzZUNyZWF0ZWRFdmVudCh0aGlzLnAubW9kZWxDbGFzcywgKCkgPT4gdGhpcy5vbkNyZWF0ZWQoKSlcblxuICAgIC8vIEludmFsaWRhdGUgYW55IGluLWZsaWdodCBhc3luYyByZXNwb25zZXMgc28gdW5tb3VudGVkIGhvb2tzIGNhbm5vdCB3cml0ZSBzdGFsZSBzdGF0ZS5cbiAgICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkTW9kZWxzR2VuZXJhdGlvbiArPSAxXG4gICAgICB0aGlzLmxvYWRPdmVyYWxsQ291bnRHZW5lcmF0aW9uICs9IDFcbiAgICAgIHRoaXMubG9hZE1vZGVsc0RlYm91bmNlKCkuY2xlYXI/LigpXG4gICAgfSwgW10pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY29ubmVjdGlvbnMgPSBbXVxuXG4gICAgICBpZiAodGhpcy5zLm1vZGVscykge1xuICAgICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMucy5tb2RlbHMpIHtcbiAgICAgICAgICBjb25uZWN0aW9ucy5wdXNoKE1vZGVsRXZlbnRzLmNvbm5lY3RVcGRhdGVkKG1vZGVsLCAoYXJncykgPT4gdGhpcy5vbk1vZGVsVXBkYXRlZChhcmdzKSkpXG4gICAgICAgICAgY29ubmVjdGlvbnMucHVzaChNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKG1vZGVsLCAoYXJncykgPT4gdGhpcy5vbk1vZGVsRGVzdHJveWVkKGFyZ3MpKSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgY29ubmVjdGlvbnMpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLnVuc3Vic2NyaWJlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFt0aGlzLm1vZGVsSWRzQ2FjaGVTdHJpbmcoKV0pXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1VzZUNvbGxlY3Rpb25Ib29rUHJvcHN9IHByb3BzXG4gKiBAcGFyYW0ge1VzZUNvbGxlY3Rpb25RdWVyeVBhcmFtVmFsdWVbXX0gW2NhY2hlS2V5c11cbiAqIEByZXR1cm5zIHtVc2VDb2xsZWN0aW9uUmV0dXJuVmFsdWV9XG4gKi9cbmNvbnN0IHVzZUNvbGxlY3Rpb24gPSAocHJvcHMsIGNhY2hlS2V5cyA9IFtdKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhYmlsaXRpZXMsXG4gICAgY29sbGVjdGlvbixcbiAgICBkZWZhdWx0UGFyYW1zLFxuICAgIGdyb3VwQnksXG4gICAgaWZDb25kaXRpb24sXG4gICAgbGltaXQsXG4gICAgbW9kZWxDbGFzcyxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50ID0gdW5kZWZpbmVkLFxuICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudCA9IHVuZGVmaW5lZCxcbiAgICBvbk1vZGVsc0xvYWRlZCxcbiAgICBwYWdpbmF0aW9uID0gZmFsc2UsXG4gICAgcHJlbG9hZHMgPSBbXSxcbiAgICBxdWVyeU1ldGhvZCxcbiAgICBxdWVyeU5hbWUsXG4gICAgcmFuc2FjayxcbiAgICBzZWxlY3QgPSB7fSxcbiAgICBzZWxlY3RDb2x1bW5zLFxuICAgIC4uLnJlc3RQcm9wc1xuICB9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIHVzZUNvbGxlY3Rpb246ICR7T2JqZWN0LmtleXMocmVzdFByb3BzKS5qb2luKFwiLCBcIil9YClcbiAgfVxuXG4gIGNvbnN0IHNoYXBlSG9vayA9IHVzZVNoYXBlSG9vayhVc2VDb2xsZWN0aW9uU2hhcGVIb29rLCB7XG4gICAgYWJpbGl0aWVzLFxuICAgIGNhY2hlS2V5cyxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgZ3JvdXBCeSxcbiAgICBpZkNvbmRpdGlvbixcbiAgICBsaW1pdCxcbiAgICBtb2RlbENsYXNzLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgIHBhZ2luYXRpb24sXG4gICAgcHJlbG9hZHMsXG4gICAgcXVlcnlNZXRob2QsXG4gICAgcXVlcnlOYW1lLFxuICAgIHJhbnNhY2ssXG4gICAgc2VsZWN0LFxuICAgIHNlbGVjdENvbHVtbnNcbiAgfSlcbiAgY29uc3QgcmVzdWx0ID0gLyoqIEB0eXBlIHtVc2VDb2xsZWN0aW9uUmV0dXJuVmFsdWV9ICovICh7XG4gICAgLi4uc2hhcGVIb29rLnN0YXRlLFxuICAgIG1vZGVsSWRzQ2FjaGVTdHJpbmc6IHNoYXBlSG9vay5tb2RlbElkc0NhY2hlU3RyaW5nKCksXG4gICAgcXVlcnlOYW1lOiBzaGFwZUhvb2sucXVlcnlOYW1lKCksXG4gICAgcXVlcnlQZXJLZXk6IHNoYXBlSG9vay5xdWVyeVBlcktleSgpLFxuICAgIHF1ZXJ5UU5hbWU6IHNoYXBlSG9vay5xdWVyeVFOYW1lKCksXG4gICAgcXVlcnlTTmFtZTogc2hhcGVIb29rLnF1ZXJ5U05hbWUoKSxcbiAgICBxdWVyeVBhZ2VOYW1lOiBzaGFwZUhvb2sucXVlcnlQYWdlTmFtZSgpXG4gIH0pXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gaW5mbGVjdGlvbi5wbHVyYWxpemUoaW5mbGVjdGlvbi5jYW1lbGl6ZShzaGFwZUhvb2sucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgdHJ1ZSkpXG5cbiAgcmVzdWx0W21vZGVsVmFyaWFibGVOYW1lXSA9IHNoYXBlSG9vay5zLm1vZGVsc1xuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ29sbGVjdGlvblxuIl19
|
|
@@ -1,16 +1,125 @@
|
|
|
1
1
|
export default ApiMakerUseCreatedEvent;
|
|
2
|
+
export type ModelClassType = typeof import("./base-model.js").default;
|
|
3
|
+
export type BaseModel = {
|
|
4
|
+
abilities: import("./base-model.js").ModelAbilityMap;
|
|
5
|
+
changes: import("./base-model.js").ModelDataMap;
|
|
6
|
+
collection: import("./collection.js").default<any>;
|
|
7
|
+
_identifierKey: string | number;
|
|
8
|
+
_markedForDestruction: boolean;
|
|
9
|
+
modelData: import("./base-model.js").ModelDataMap;
|
|
10
|
+
newRecord: boolean;
|
|
11
|
+
previousModelData: any;
|
|
12
|
+
preloadedRelationships: import("./base-model.js").PreloadedRelationshipMap;
|
|
13
|
+
relationshipsCache: import("./base-model.js").LoadedRelationshipMap;
|
|
14
|
+
relationships: import("./base-model.js").LoadedRelationshipMap;
|
|
15
|
+
uniqueKeyValue: number;
|
|
16
|
+
assignAttributes(newAttributes: ModelDataMap): void;
|
|
17
|
+
attributes(): ModelDataMap;
|
|
18
|
+
can(givenAbilityName: string): boolean;
|
|
19
|
+
clone(): /*elided*/ any;
|
|
20
|
+
cacheKey(): number | string;
|
|
21
|
+
localCacheKey(): string;
|
|
22
|
+
fullCacheKey(): string;
|
|
23
|
+
create(attributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
|
|
24
|
+
model: /*elided*/ any;
|
|
25
|
+
response: ModelCommandResponse;
|
|
26
|
+
}>;
|
|
27
|
+
createRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions): Promise<{
|
|
28
|
+
model: /*elided*/ any;
|
|
29
|
+
response: ModelCommandResponse;
|
|
30
|
+
}>;
|
|
31
|
+
destroy(): Promise<{
|
|
32
|
+
model: /*elided*/ any;
|
|
33
|
+
response: ModelCommandResponse;
|
|
34
|
+
}>;
|
|
35
|
+
ensureAbilities(listOfAbilities: string[]): Promise<void>;
|
|
36
|
+
getAttributes(): ModelDataMap;
|
|
37
|
+
handleResponseError(response: ModelCommandResponse): never;
|
|
38
|
+
identifierKey(): number | string;
|
|
39
|
+
isAssociationLoaded(associationName: string): boolean;
|
|
40
|
+
isAssociationLoadedUnderscore(associationNameUnderscore: string): boolean;
|
|
41
|
+
isAssociationPresent(associationName: string): boolean;
|
|
42
|
+
ensureAssociationLoaded(associationName: string): Promise<LoadedRelationshipValue>;
|
|
43
|
+
ensureAssociationLoadedUnderscore(associationNameUnderscore: string): Promise<LoadedRelationshipValue>;
|
|
44
|
+
isAttributeChanged(attributeName: string): boolean;
|
|
45
|
+
isChanged(): boolean;
|
|
46
|
+
isNewRecord(): boolean;
|
|
47
|
+
isPersisted(): boolean;
|
|
48
|
+
savedChangeToAttribute(attributeName: string): boolean;
|
|
49
|
+
setNewModel(model: /*elided*/ any): void;
|
|
50
|
+
setNewModelData(model: /*elided*/ any): void;
|
|
51
|
+
_isDateChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
|
|
52
|
+
_isIntegerChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
|
|
53
|
+
_isStringChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
|
|
54
|
+
modelClassData(): ModelClassDataType;
|
|
55
|
+
reload(): Promise<void>;
|
|
56
|
+
save(): Promise<{
|
|
57
|
+
model: /*elided*/ any;
|
|
58
|
+
response?: object;
|
|
59
|
+
}>;
|
|
60
|
+
saveRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
|
|
61
|
+
simpleModelErrors?: boolean;
|
|
62
|
+
}): Promise<{
|
|
63
|
+
model: /*elided*/ any;
|
|
64
|
+
response: ModelCommandResponse;
|
|
65
|
+
}>;
|
|
66
|
+
update(newAttributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
|
|
67
|
+
model: /*elided*/ any;
|
|
68
|
+
response?: object;
|
|
69
|
+
}>;
|
|
70
|
+
_refreshModelFromResponse(response: ModelCommandResponse): void;
|
|
71
|
+
_refreshModelDataFromResponse(response: ModelCommandResponse): void;
|
|
72
|
+
updateRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
|
|
73
|
+
simpleModelErrors?: boolean;
|
|
74
|
+
}): Promise<{
|
|
75
|
+
response: ModelCommandResponse;
|
|
76
|
+
model: /*elided*/ any;
|
|
77
|
+
}>;
|
|
78
|
+
isValid(): never;
|
|
79
|
+
isValidOnServer(): Promise<{
|
|
80
|
+
valid: boolean;
|
|
81
|
+
errors: ValidationResponseErrors;
|
|
82
|
+
}>;
|
|
83
|
+
modelClass(): BaseModelClassType;
|
|
84
|
+
preloadRelationship(relationshipName: string, model: /*elided*/ any | /*elided*/ any[] | null): void;
|
|
85
|
+
markForDestruction(): void;
|
|
86
|
+
markedForDestruction(): boolean;
|
|
87
|
+
uniqueKey(): number;
|
|
88
|
+
_callMemberCommand(args: ModelCommandDescriptor, commandArgs: ModelCommandOptions): import("./command-execution.js").default;
|
|
89
|
+
readAttribute(attributeName: string): ModelValue | null | undefined;
|
|
90
|
+
readAttributeUnderscore(attributeName: string): ModelValue | null | undefined;
|
|
91
|
+
isAttributeLoaded(attributeName: string): boolean;
|
|
92
|
+
_isPresent(value: ModelValue | null | undefined): boolean;
|
|
93
|
+
_loadBelongsToReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
|
|
94
|
+
_readBelongsToReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
|
|
95
|
+
_loadHasManyReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any[]>;
|
|
96
|
+
_loadHasOneReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
|
|
97
|
+
_readHasOneReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
|
|
98
|
+
_readModelDataFromArgs(args?: BaseModelArgsObject): void;
|
|
99
|
+
_readPreloadedRelationships(preloaded: {
|
|
100
|
+
getModel: (relationshipType: string, relationshipId: number | string) => /*elided*/ any;
|
|
101
|
+
}): void;
|
|
102
|
+
primaryKey(): number | string;
|
|
103
|
+
};
|
|
104
|
+
export type CreatedEventPayload = {
|
|
105
|
+
model: BaseModel;
|
|
106
|
+
};
|
|
107
|
+
export type UseCreatedEventArgs = {
|
|
108
|
+
active?: boolean;
|
|
109
|
+
debounce?: boolean | number;
|
|
110
|
+
onConnected?: () => void;
|
|
111
|
+
};
|
|
112
|
+
export type EventCallback = (payload: CreatedEventPayload) => void;
|
|
113
|
+
/** @typedef {typeof import("./base-model.js").default} ModelClassType */
|
|
114
|
+
/** @typedef {import("./base-model.js").default} BaseModel */
|
|
115
|
+
/** @typedef {{model: BaseModel}} CreatedEventPayload */
|
|
116
|
+
/** @typedef {{active?: boolean, debounce?: boolean|number, onConnected?: () => void}} UseCreatedEventArgs */
|
|
117
|
+
/** @typedef {(payload: CreatedEventPayload) => void} EventCallback */
|
|
2
118
|
/**
|
|
3
|
-
* @param {
|
|
4
|
-
* @param {
|
|
5
|
-
* @param {
|
|
6
|
-
* @param {boolean} [args.active]
|
|
7
|
-
* @param {number} [args.debounce]
|
|
8
|
-
* @param {Function} [args.onConnected]
|
|
119
|
+
* @param {ModelClassType} modelClass
|
|
120
|
+
* @param {EventCallback} onCreated
|
|
121
|
+
* @param {UseCreatedEventArgs} [args]
|
|
9
122
|
* @returns {void}
|
|
10
123
|
*/
|
|
11
|
-
declare function ApiMakerUseCreatedEvent(modelClass:
|
|
12
|
-
active?: boolean;
|
|
13
|
-
debounce?: number;
|
|
14
|
-
onConnected?: Function;
|
|
15
|
-
}): void;
|
|
124
|
+
declare function ApiMakerUseCreatedEvent(modelClass: ModelClassType, onCreated: EventCallback, args?: UseCreatedEventArgs): void;
|
|
16
125
|
//# sourceMappingURL=use-created-event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-created-event.d.ts","sourceRoot":"/src/","sources":["use-created-event.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"use-created-event.d.ts","sourceRoot":"/src/","sources":["use-created-event.js"],"names":[],"mappings":";6BAGc,cAAc,iBAAiB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAqByp4B,CAAC;;;yBAA6O,CAAC;;;;;;;gBAAoc,CAAC;;;;;yBAAm7E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAnBzy+B;IAAC,KAAK,EAAE,SAAS,CAAA;CAAC;kCAClB;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,GAAC,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CAAC;4BACvE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI;AAJpD,yEAAyE;AACzE,6DAA6D;AAC7D,wDAAwD;AACxD,6GAA6G;AAC7G,sEAAsE;AAEtE;;;;;GAKG;AACH,qDALW,cAAc,aACd,aAAa,SACb,mBAAmB,GACjB,IAAI,CAQhB"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import useModelClassEvent from "./use-model-class-event.js";
|
|
3
|
+
/** @typedef {typeof import("./base-model.js").default} ModelClassType */
|
|
4
|
+
/** @typedef {import("./base-model.js").default} BaseModel */
|
|
5
|
+
/** @typedef {{model: BaseModel}} CreatedEventPayload */
|
|
6
|
+
/** @typedef {{active?: boolean, debounce?: boolean|number, onConnected?: () => void}} UseCreatedEventArgs */
|
|
7
|
+
/** @typedef {(payload: CreatedEventPayload) => void} EventCallback */
|
|
2
8
|
/**
|
|
3
|
-
* @param {
|
|
4
|
-
* @param {
|
|
5
|
-
* @param {
|
|
6
|
-
* @param {boolean} [args.active]
|
|
7
|
-
* @param {number} [args.debounce]
|
|
8
|
-
* @param {Function} [args.onConnected]
|
|
9
|
+
* @param {ModelClassType} modelClass
|
|
10
|
+
* @param {EventCallback} onCreated
|
|
11
|
+
* @param {UseCreatedEventArgs} [args]
|
|
9
12
|
* @returns {void}
|
|
10
13
|
*/
|
|
11
14
|
const ApiMakerUseCreatedEvent = (modelClass, onCreated, args = { active: true, debounce: 0, onConnected: undefined }) => {
|
|
12
15
|
useModelClassEvent(modelClass, "creates", onCreated, args);
|
|
13
16
|
};
|
|
14
17
|
export default ApiMakerUseCreatedEvent;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNyZWF0ZWQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1jcmVhdGVkLWV2ZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWixPQUFPLGtCQUFrQixNQUFNLDRCQUE0QixDQUFBO0FBRTNELHlFQUF5RTtBQUN6RSw2REFBNkQ7QUFDN0Qsd0RBQXdEO0FBQ3hELDZHQUE2RztBQUM3RyxzRUFBc0U7QUFFdEU7Ozs7O0dBS0c7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQzlCLFVBQVUsRUFDVixTQUFTLEVBQ1QsSUFBSSxHQUFHLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsRUFDMUQsRUFBRTtJQUNGLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQzVELENBQUMsQ0FBQTtBQUVELGVBQWUsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbmltcG9ydCB1c2VNb2RlbENsYXNzRXZlbnQgZnJvbSBcIi4vdXNlLW1vZGVsLWNsYXNzLWV2ZW50LmpzXCJcblxuLyoqIEB0eXBlZGVmIHt0eXBlb2YgaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9IE1vZGVsQ2xhc3NUeXBlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWwgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsOiBCYXNlTW9kZWx9fSBDcmVhdGVkRXZlbnRQYXlsb2FkICovXG4vKiogQHR5cGVkZWYge3thY3RpdmU/OiBib29sZWFuLCBkZWJvdW5jZT86IGJvb2xlYW58bnVtYmVyLCBvbkNvbm5lY3RlZD86ICgpID0+IHZvaWR9fSBVc2VDcmVhdGVkRXZlbnRBcmdzICovXG4vKiogQHR5cGVkZWYgeyhwYXlsb2FkOiBDcmVhdGVkRXZlbnRQYXlsb2FkKSA9PiB2b2lkfSBFdmVudENhbGxiYWNrICovXG5cbi8qKlxuICogQHBhcmFtIHtNb2RlbENsYXNzVHlwZX0gbW9kZWxDbGFzc1xuICogQHBhcmFtIHtFdmVudENhbGxiYWNrfSBvbkNyZWF0ZWRcbiAqIEBwYXJhbSB7VXNlQ3JlYXRlZEV2ZW50QXJnc30gW2FyZ3NdXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgQXBpTWFrZXJVc2VDcmVhdGVkRXZlbnQgPSAoXG4gIG1vZGVsQ2xhc3MsXG4gIG9uQ3JlYXRlZCxcbiAgYXJncyA9IHthY3RpdmU6IHRydWUsIGRlYm91bmNlOiAwLCBvbkNvbm5lY3RlZDogdW5kZWZpbmVkfVxuKSA9PiB7XG4gIHVzZU1vZGVsQ2xhc3NFdmVudChtb2RlbENsYXNzLCBcImNyZWF0ZXNcIiwgb25DcmVhdGVkLCBhcmdzKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcGlNYWtlclVzZUNyZWF0ZWRFdmVudFxuIl19
|