{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/ui/node_modules/react/index.js","webpack:///./src/ui/src/core/setDisplayMode.js","webpack:///./src/ui/src/core/getAnnotationManager.js","webpack:///./src/ui/src/core/setActiveSearchResult.js","webpack:///./src/ui/src/core/eventListener.js","webpack:///./src/ui/src/core/mergeDocument.js","webpack:///./src/ui/src/core/documentViewers.js","webpack:///./src/ui/src/core/index.js","webpack:///./src/ui/src/core/getSemanticDiffAnnotations.js","webpack:///./src/ui/src/core/setToolMode.js","webpack:///./src/ui/src/core/getToolMode.js","webpack:///./src/ui/src/core/getTool.js","webpack:///./src/ui/src/core/getToolsFromAllDocumentViewers.js","webpack:///./src/ui/src/core/getDisplayMode.js","webpack:///./src/ui/src/core/rotateClockwise.js","webpack:///./src/ui/src/core/rotateCounterClockwise.js","webpack:///./src/ui/src/core/rotatePages.js","webpack:///./src/ui/src/core/movePages.js","webpack:///./src/ui/src/core/removePages.js","webpack:///./src/ui/src/core/getFitMode.js","webpack:///./src/ui/src/core/fitToPage.js","webpack:///./src/ui/src/core/fitToWidth.js","webpack:///./src/ui/src/core/fitToHeight.js","webpack:///./src/ui/src/core/fitToZoom.js","webpack:///./src/ui/src/core/zoomToMouse.js","webpack:///./src/ui/src/core/getZoom.js","webpack:///./src/ui/src/core/zoomTo.js","webpack:///./src/ui/src/core/getTotalPages.js","webpack:///./src/ui/src/core/getCurrentPage.js","webpack:///./src/ui/src/core/setCurrentPage.js","webpack:///./src/ui/src/core/getType.js","webpack:///./src/ui/src/core/getScales.js","webpack:///./src/ui/src/core/isWebViewerServerDocument.js","webpack:///./src/ui/src/core/getSelectedText.js","webpack:///./src/ui/src/core/clearSelection.js","webpack:///./src/ui/src/core/closeDocument.js","webpack:///./src/ui/src/core/getToolModeMap.js","webpack:///./src/ui/src/core/getCurrentUser.js","webpack:///./src/ui/src/core/getIsAdminUser.js","webpack:///./src/ui/src/core/setIsAdminUser.js","webpack:///./src/ui/src/core/exportAnnotations.js","webpack:///./src/ui/src/core/setCurrentUser.js","webpack:///./src/ui/src/core/setReadOnly.js","webpack:///./src/ui/src/core/setScrollViewElement.js","webpack:///./src/ui/src/core/setViewerElement.js","webpack:///./src/ui/src/core/isContinuousDisplayMode.js","webpack:///./src/ui/src/core/isScrollableDisplayMode.js","webpack:///./src/ui/src/core/isSearchResultEqual.js","webpack:///./src/ui/src/core/scrollViewUpdated.js","webpack:///./src/ui/src/core/canModify.js","webpack:///./src/ui/src/core/canModifyContents.js","webpack:///./src/ui/src/core/deleteAnnotations.js","webpack:///./src/ui/src/core/getDisplayAuthor.js","webpack:///./src/ui/src/core/getDocument.js","webpack:///./src/ui/src/core/getCompleteRotation.js","webpack:///./src/ui/src/core/getRotation.js","webpack:///./src/ui/src/core/getPageInfo.js","webpack:///./src/ui/src/core/clearSearchResults.js","webpack:///./src/ui/src/core/getPageSearchResults.js","webpack:///./src/ui/src/core/displayAdditionalSearchResult.js","webpack:///./src/ui/src/core/displayAdditionalSearchResults.js","webpack:///./src/ui/src/core/getActiveSearchResult.js","webpack:///./src/ui/src/core/textSearchInit.js","webpack:///./src/ui/src/core/displaySearchResult.js","webpack:///./src/ui/src/core/getSearchMode.js","webpack:///./src/ui/src/core/getResultCode.js","webpack:///./src/ui/src/core/getPageWidth.js","webpack:///./src/ui/src/core/getPageHeight.js","webpack:///./src/ui/src/core/drawAnnotations.js","webpack:///./src/ui/src/core/getOutlines.js","webpack:///./src/ui/src/core/getSelectedAnnotations.js","webpack:///./src/ui/src/core/updateCopiedAnnotations.js","webpack:///./src/ui/src/core/pasteCopiedAnnotations.js","webpack:///./src/ui/src/core/selectAnnotation.js","webpack:///./src/ui/src/core/selectAnnotations.js","webpack:///./src/ui/src/core/addAnnotations.js","webpack:///./src/ui/src/core/applyRedactions.js","webpack:///./src/ui/src/core/isCreateRedactionEnabled.js","webpack:///./src/ui/src/core/isApplyRedactionEnabled.js","webpack:///./src/ui/src/core/isAnnotationRedactable.js","webpack:///./src/ui/src/core/enableRedaction.js","webpack:///./src/ui/src/core/drawAnnotationsFromList.js","webpack:///./src/ui/src/core/setInternalAnnotationsTransform.js","webpack:///./src/ui/src/core/setPagesUpdatedInternalAnnotationsTransform.js","webpack:///./src/ui/src/core/loadThumbnailAsync.js","webpack:///./src/ui/src/core/loadDocument.js","webpack:///./src/ui/src/core/getSelectedTextQuads.js","webpack:///./src/ui/src/core/getDisplayModeObject.js","webpack:///./src/ui/src/core/getScrollViewElement.js","webpack:///./src/ui/src/core/getAnnotationById.js","webpack:///./src/ui/src/core/isFullPDFEnabled.js","webpack:///./src/ui/src/core/isBlendModeSupported.js","webpack:///./src/ui/src/core/isAnnotationSelected.js","webpack:///./src/ui/src/core/setAnnotationStyles.js","webpack:///./src/ui/src/core/deselectAnnotation.js","webpack:///./src/ui/src/core/deselectAnnotations.js","webpack:///./src/ui/src/core/deselectAllAnnotations.js","webpack:///./src/ui/src/core/jumpToAnnotation.js","webpack:///./src/ui/src/core/insertBlankPages.js","webpack:///./src/ui/src/core/createAnnotationReply.js","webpack:///./src/ui/src/core/setNoteContents.js","webpack:///./src/ui/src/core/setAnnotationRichTextStyle.js","webpack:///./src/ui/src/core/updateAnnotationRichTextStyle.js","webpack:///./src/ui/src/core/getAnnotationsList.js","webpack:///./src/ui/src/core/getAnnotationsLoadedPromise.js","webpack:///./src/ui/src/core/getPrintablePDF.js","webpack:///./src/ui/src/core/getIsReadOnly.js","webpack:///./src/ui/src/core/cancelLoadThumbnail.js","webpack:///./src/ui/src/core/showAnnotations.js","webpack:///./src/ui/src/core/hideAnnotations.js","webpack:///./src/ui/src/core/goToOutline.js","webpack:///./src/ui/src/core/getViewerElement.js","webpack:///./src/ui/src/core/setAnnotationCanvasTransform.js","webpack:///./src/ui/src/core/getAnnotationCopy.js","webpack:///./src/ui/src/core/setWatermark.js","webpack:///./src/ui/src/core/getWatermark.js","webpack:///./src/ui/src/core/getAnnotationByMouseEvent.js","webpack:///./src/ui/src/core/groupAnnotations.js","webpack:///./src/ui/src/core/ungroupAnnotations.js","webpack:///./src/ui/src/core/getNumberOfGroups.js","webpack:///./src/ui/src/core/getGroupAnnotations.js","webpack:///./src/ui/src/core/undo.js","webpack:///./src/ui/src/core/redo.js","webpack:///./src/ui/src/core/updateAnnotationState.js","webpack:///./src/ui/src/core/getFontStyles.js","webpack:///./src/ui/src/core/getFormFieldCreationManager.js","webpack:///./src/ui/src/core/syncNamespaces.js","webpack:///./src/ui/src/core/createDocument.js","webpack:///./src/ui/src/core/getContentEditManager.js","webpack:///./src/ui/src/core/setUserBookmarks.js","webpack:///./src/ui/src/core/setBookmarkIconShortcutVisibility.js","webpack:///./src/ui/src/core/setBookmarkShortcutToggleOnFunction.js","webpack:///./src/ui/src/core/setBookmarkShortcutToggleOffFunction.js","webpack:///./src/ui/src/core/createAndApplyScale.js","webpack:///./src/ui/src/core/replaceScales.js","webpack:///./src/ui/src/core/deleteScale.js","webpack:///./src/ui/src/core/getScalePrecision.js","webpack:///./src/ui/src/core/enableAnnotationNumbering.js","webpack:///./src/ui/src/core/getOfficeEditor.js","webpack:///./src/ui/src/core/loadBlankOfficeEditorDocument.js","webpack:///./src/ui/src/core/isValidURI.js","webpack:///./src/ui/src/core/openURI.js","webpack:///./src/ui/src/core/getAllowedFileExtensions.js","webpack:///./src/ui/src/redux/actions/index.js","webpack:///./src/ui/src/redux/selectors/index.js","webpack:///./src/ui/node_modules/prop-types/index.js","webpack:///./src/ui/src/constants/dataElement.js","webpack:///./src/ui/node_modules/react-redux/es/components/Context.js","webpack:///./src/ui/node_modules/react-redux/es/utils/batch.js","webpack:///./src/ui/node_modules/react-redux/es/utils/Subscription.js","webpack:///./src/ui/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///./src/ui/node_modules/react-redux/es/components/Provider.js","webpack:///./src/ui/node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./src/ui/node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./src/ui/node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./src/ui/node_modules/react-redux/es/utils/bindActionCreators.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/mergeProps.js","webpack:///./src/ui/node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./src/ui/node_modules/react-redux/es/connect/connect.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useStore.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useDispatch.js","webpack:///./src/ui/node_modules/react-redux/es/hooks/useSelector.js","webpack:///./src/ui/node_modules/react-redux/es/index.js","webpack:///./src/ui/src/constants/customizationVariables.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.description.js","webpack:///./src/ui/node_modules/core-js/modules/es.function.name.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.slice.js","webpack:///./src/ui/node_modules/classnames/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.exec.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.is-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.from.js","webpack:///./src/ui/src/helpers/getRootNode.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-property.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.for-each.js","webpack:///./src/ui/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.to-primitive.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-primitive.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./src/ui/src/constants/feature.js","webpack:///./src/ui/src/helpers/getHashParameters.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.filter.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.keys.js","webpack:///./src/ui/src/constants/panel.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.concat.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.create.js","webpack:///./src/ui/node_modules/core-js/internals/global.js","webpack:///./src/ui/src/components/Icon/Icon.js","webpack:///./src/ui/src/components/Icon/index.js","webpack:///./src/ui/src/helpers/device.js","webpack:///./src/ui/src/constants/map.js","webpack:///./src/ui/src/components/Button/Button.js","webpack:///./src/ui/src/components/Button/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.map.js","webpack:///./src/ui/node_modules/core-js/internals/export.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.includes.js","webpack:///./src/ui/src/constants/events.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack:///./src/ui/node_modules/i18next/dist/esm/i18next.js","webpack:///./src/ui/src/helpers/isFocusingElement.js","webpack:///./src/ui/src/helpers/hotkeysManager.js","webpack:///./src/ui/node_modules/core-js/modules/es.function.bind.js","webpack:///./src/ui/src/constants/actionPriority.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.includes.js","webpack:///./src/ui/src/helpers/fireEvent.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.define-properties.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/ui/src/helpers/getDeviceSize.js","webpack:///./src/ui/node_modules/core-js/internals/function-uncurry-this.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.js","webpack:///./src/ui/node_modules/core-js/internals/fails.js","webpack:///./src/ui/src/constants/defaultTool.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.assign.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.reverse.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.async-iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///./src/ui/node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./src/ui/node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./src/ui/src/constants/officeEditor.js","webpack:///./src/ui/src/constants/types.js","webpack:///./src/ui/src/components/DataElementWrapper/DataElementWrapper.js","webpack:///./src/ui/src/components/DataElementWrapper/index.js","webpack:///../src/index.ts","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/node_modules/tslib/tslib.es6.js","webpack:///./src/ui/src/constants/zoomFactors.js","webpack:///./src/ui/src/apis/disableFeatures.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.index-of.js","webpack:///./src/ui/src/helpers/zoom.js","webpack:///./src/ui/node_modules/core-js/internals/well-known-symbol.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.construct.js","webpack:///./src/ui/node_modules/core-js/internals/is-callable.js","webpack:///./src/ui/src/components/Dropdown/Dropdown.js","webpack:///./src/ui/src/components/Dropdown/index.js","webpack:///./src/ui/node_modules/core-js/internals/descriptors.js","webpack:///./src/ui/node_modules/core-js/internals/function-call.js","webpack:///./src/ui/node_modules/core-js/modules/web.timers.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./src/ui/src/helpers/officeEditor.js","webpack:///./src/ui/node_modules/core-js/internals/has-own-property.js","webpack:///./src/ui/src/apis/enableFeatures.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.join.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.find.js","webpack:///./src/ui/node_modules/core-js/internals/an-object.js","webpack:///./src/ui/node_modules/core-js/internals/to-string.js","webpack:///./src/ui/node_modules/core-js/internals/is-object.js","webpack:///./src/ui/node_modules/core-js/modules/es.date.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.values.js","webpack:///./src/ui/node_modules/core-js/internals/object-define-property.js","webpack:///./src/ui/src/helpers/setToolModeAndGroup.js","webpack:///./src/ui/node_modules/dayjs/dayjs.min.js","webpack:///./src/ui/src/helpers/loadDocument.js","webpack:///./src/ui/src/helpers/TouchEventManager.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-in.js","webpack:///./src/ui/src/components/ActionButton/ActionButton.js","webpack:///./src/ui/src/components/ActionButton/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.some.js","webpack:///./src/ui/src/constants/commonColors.js","webpack:///./src/ui/node_modules/core-js/internals/to-object.js","webpack:///./src/ui/node_modules/core-js/internals/length-of-array-like.js","webpack:///./src/ui/src/constants/deviceSizes.js","webpack:///./src/ui/src/constants/signatureModes.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/ui/node_modules/core-js/internals/array-iteration.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.replace.js","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/ToggleElementButton.js","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/index.js","webpack:///./src/ui/node_modules/lodash/debounce.js","webpack:///./src/ui/node_modules/lodash/throttle.js","webpack:///./src/ui/node_modules/react-dom/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.parse-int.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.splice.js","webpack:///./src/ui/node_modules/core-js/internals/require-object-coercible.js","webpack:///./src/ui/src/helpers/localStorageManager.js","webpack:///./src/ui/src/constants/multiViewerContants.js","webpack:///./src/ui/node_modules/core-js/internals/get-built-in.js","webpack:///./src/ui/node_modules/core-js/internals/to-indexed-object.js","webpack:///./src/ui/src/components/Tabs/Tabs.js","webpack:///./src/ui/src/helpers/getNumberOfPagesToNavigate.js","webpack:///./src/ui/src/helpers/setCurrentPage.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.sort.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.reduce.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.find-index.js","webpack:///./src/ui/src/hooks/useFocusHandler/useFocusHandler.js","webpack:///./src/ui/src/hooks/useFocusHandler/index.js","webpack:///./src/ui/src/hooks/useOnClickOutside.js","webpack:///./src/ui/node_modules/core-js/internals/is-pure.js","webpack:///./src/ui/node_modules/core-js/internals/internal-state.js","webpack:///./src/ui/node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./src/ui/node_modules/core-js/internals/to-length.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/internals/a-callable.js","webpack:///./src/ui/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./src/ui/node_modules/core-js/internals/set-to-string-tag.js","webpack:///./src/ui/src/helpers/accessibility.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./src/ui/node_modules/redux/es/redux.js","webpack:///./src/ui/src/helpers/modularUIHelpers.js","webpack:///./src/ui/src/helpers/multiViewerHelper.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.trim.js","webpack:///./src/ui/src/components/Choice/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/ui/node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind-context.js","webpack:///./src/ui/node_modules/core-js/internals/object-create.js","webpack:///./src/ui/src/helpers/search.js","webpack:///./src/ui/node_modules/react-swipeable/es/index.js","webpack:///./src/ui/src/helpers/print.js","webpack:///./src/ui/src/helpers/getToolStyles.js","webpack:///./src/ui/src/constants/featureFlags.js","webpack:///./src/ui/node_modules/hotkeys-js/dist/hotkeys.esm.js","webpack:///./src/ui/node_modules/core-js/modules/es.set.js","webpack:///./src/ui/src/components/Tooltip/Tooltip.js","webpack:///./src/ui/src/components/Tooltip/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.parse-float.js","webpack:///./src/ui/node_modules/core-js/internals/engine-user-agent.js","webpack:///./src/ui/node_modules/core-js/internals/function-apply.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./src/ui/src/helpers/getColor.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./src/ui/src/helpers/clickTracker.js","webpack:///./src/ui/src/constants/redactionTypes.js","webpack:///./src/ui/src/helpers/rotate.js","webpack:///./src/ui/src/constants/sortStrategies.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/cjs.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.every.js","webpack:///./src/ui/src/helpers/downloadPdf.js","webpack:///./src/ui/node_modules/core-js/internals/classof-raw.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./src/ui/node_modules/core-js/internals/to-absolute-index.js","webpack:///./src/ui/node_modules/core-js/internals/array-method-is-strict.js","webpack:///./src/ui/src/constants/slider.js","webpack:///./src/ui/src/components/HorizontalDivider/HorizontalDivider.js","webpack:///./src/ui/src/components/HorizontalDivider/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/ui/src/constants/strokeStyleIcons.js","webpack:///./src/ui/src/apis/enableTools.js","webpack:///./src/ui/src/apis/disableTools.js","webpack:///./src/ui/src/helpers/getFilteredDataElements.js","webpack:///./src/ui/src/redux/actions/internalActions.js","webpack:///./src/ui/src/components/PasswordModal/PasswordModal.js","webpack:///./src/ui/src/components/PasswordModal/index.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/utils.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/utils.js","webpack:///./src/ui/node_modules/react-measure/dist/index.esm.js","webpack:///./src/ui/src/constants/theme.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.match.js","webpack:///./src/ui/src/helpers/setToolStyles.js","webpack:///./src/ui/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./src/ui/node_modules/core-js/internals/engine-v8-version.js","webpack:///./src/ui/node_modules/core-js/internals/get-method.js","webpack:///./src/ui/node_modules/core-js/internals/classof.js","webpack:///./src/ui/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./src/ui/node_modules/core-js/internals/an-instance.js","webpack:///./src/ui/node_modules/core-js/internals/array-slice.js","webpack:///./src/ui/node_modules/core-js/internals/is-array.js","webpack:///./src/ui/node_modules/lodash/isArray.js","webpack:///./src/ui/src/helpers/getElements.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./src/ui/node_modules/postcss/lib/container.js","webpack:///./src/ui/src/helpers/toggleFullscreen.js","webpack:///./src/ui/src/components/ResizeBar/ResizeBar.js","webpack:///./src/ui/src/components/ResizeBar/index.js","webpack:///./src/ui/src/helpers/isDataElementLeftPanel.js","webpack:///./src/ui/src/helpers/checkFeaturesToEnable.js","webpack:///./src/ui/src/redux/actions/exposedActions.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/context.js","webpack:///./src/ui/src/hooks/useMedia.js","webpack:///./src/ui/src/constants/languageRules.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./src/ui/src/components/ToggleElementButton/ToggleElementButton.js","webpack:///./src/ui/src/components/ToggleElementButton/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./src/ui/node_modules/file-saver/dist/FileSaver.min.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.starts-with.js","webpack:///./src/ui/src/helpers/getLatestActivityDate.js","webpack:///./src/ui/node_modules/core-js/internals/is-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/native-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/try-to-string.js","webpack:///./src/ui/node_modules/core-js/internals/shared.js","webpack:///./src/ui/node_modules/core-js/internals/function-name.js","webpack:///./src/ui/node_modules/core-js/internals/add-to-unscopables.js","webpack:///./src/ui/node_modules/core-js/internals/create-property.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/process/browser.js","webpack:///./src/ui/src/helpers/getMeasurementTools.js","webpack:///./src/ui/src/apis/setLanguage.js","webpack:///./src/ui/src/helpers/printHTMLToCanvasHelper.js","webpack:///./src/ui/src/helpers/rasterPrint.js","webpack:///./src/ui/src/components/ToolButton/ToolButton.js","webpack:///./src/ui/src/components/ToolButton/index.js","webpack:///./src/ui/src/helpers/readerMode.js","webpack:///./src/ui/src/constants/defaultTimeFormat.js","webpack:///./src/ui/src/helpers/getAnnotationClass.js","webpack:///./src/ui/src/redux/selectors/exposedSelectors.js","webpack:///./src/ui/src/redux/selectors/officeEditorSelectors.js","webpack:///./src/ui/src/hooks/useDidUpdate.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./src/ui/src/helpers/color.js","webpack:///./src/ui/src/helpers/portfolio.js","webpack:///./src/ui/node_modules/core-js/internals/promise-native-constructor.js","webpack:///./src/ui/src/components/FlyoutMenu/FlyoutMenu.js","webpack:///./node_modules/buffer/index.js","webpack:///./src/ui/src/components/CollapsibleSection/CollapsibleSection.js","webpack:///./src/ui/src/components/CollapsibleSection/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.last-index-of.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind-native.js","webpack:///./src/ui/node_modules/core-js/internals/indexed-object.js","webpack:///./src/ui/node_modules/core-js/internals/to-property-key.js","webpack:///./src/ui/node_modules/core-js/internals/uid.js","webpack:///./src/ui/node_modules/core-js/internals/hidden-keys.js","webpack:///./src/ui/node_modules/core-js/internals/array-includes.js","webpack:///./src/ui/node_modules/core-js/internals/is-forced.js","webpack:///./src/ui/node_modules/core-js/internals/promise-constructor-detection.js","webpack:///./src/ui/node_modules/core-js/internals/new-promise-capability.js","webpack:///./src/ui/node_modules/core-js/internals/iterators.js","webpack:///./src/ui/node_modules/core-js/internals/get-iterator-method.js","webpack:///./src/ui/node_modules/core-js/internals/object-keys.js","webpack:///./src/ui/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./src/ui/node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./src/ui/node_modules/core-js/internals/array-slice-simple.js","webpack:///./src/ui/node_modules/core-js/modules/es.map.js","webpack:///./src/ui/src/helpers/getFileAttachments.js","webpack:///./src/ui/node_modules/lodash/isObject.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./src/ui/node_modules/postcss/lib/root.js","webpack:///./src/ui/src/helpers/openFilePicker.js","webpack:///./src/ui/src/helpers/toolStylesExist.js","webpack:///./src/ui/src/helpers/createTextAnnotationAndSelect.js","webpack:///./src/ui/src/helpers/getWebComponentScale.js","webpack:///./src/ui/src/apis/hotkeys.js","webpack:///./src/ui/src/helpers/getPopupPosition.js","webpack:///./src/ui/src/components/CustomElement/CustomElement.js","webpack:///./src/ui/src/components/CustomElement/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./src/ui/src/components/Choice/Choice.js","webpack:///./src/ui/node_modules/core-js/internals/set-species.js","webpack:///./src/ui/node_modules/core-js/internals/species-constructor.js","webpack:///./src/ui/src/components/ColorPalette/ColorPalette.js","webpack:///./src/ui/src/components/ColorPalette/index.js","webpack:///./src/ui/src/hooks/useFocusOnClose/useFocusOnClose.js","webpack:///./src/ui/src/hooks/useFocusOnClose/index.js","webpack:///./src/ui/node_modules/dayjs/plugin/localizedFormat.js","webpack:///./src/ui/src/components/Button/Button.scss?4119","webpack:///./src/ui/src/helpers/getOverlayPositionBasedOn.js","webpack:///./src/ui/src/helpers/TabManager.js","webpack:///./src/ui/node_modules/lodash/isString.js","webpack:///./src/ui/src/components/ColorPaletteHeader/ColorPaletteHeader.js","webpack:///./src/ui/src/components/ColorPaletteHeader/index.js","webpack:///./src/ui/src/components/StyleOption/StyleOption.js","webpack:///./src/ui/src/components/StyleOption/index.js","webpack:///./src/ui/src/components/LineStyleOptions/LineStyleOptions.js","webpack:///./src/ui/src/components/LineStyleOptions/index.js","webpack:///./src/ui/src/components/StylePopup/StylePopup.js","webpack:///./src/ui/src/components/StylePopup/index.js","webpack:///./src/ui/src/helpers/parseFontSize.js","webpack:///./src/ui/src/components/TextStylePicker/TextStylePicker.js","webpack:///./src/ui/src/components/TextStylePicker/index.js","webpack:///./src/ui/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./src/ui/node_modules/core-js/internals/document-create-element.js","webpack:///./src/ui/node_modules/core-js/internals/inspect-source.js","webpack:///./src/ui/node_modules/core-js/internals/shared-key.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-node.js","webpack:///./src/ui/node_modules/core-js/internals/is-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/validate-arguments-length.js","webpack:///./src/ui/node_modules/core-js/internals/iterate.js","webpack:///./src/ui/node_modules/core-js/internals/get-iterator.js","webpack:///./src/ui/node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-exec.js","webpack:///./src/ui/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./src/ui/node_modules/core-js/internals/array-species-create.js","webpack:///./src/ui/node_modules/core-js/internals/inherit-if-required.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim.js","webpack:///./src/ui/node_modules/core-js/internals/whitespaces.js","webpack:///./src/ui/node_modules/lodash/_castPath.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/shims.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-species-constructor.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./src/ui/node_modules/lodash/_assocIndexOf.js","webpack:///./src/ui/node_modules/postcss/lib/declaration.js","webpack:///./src/ui/node_modules/postcss/lib/node.js","webpack:///./src/ui/node_modules/postcss/lib/stringify.js","webpack:///./src/ui/node_modules/postcss/lib/input.js","webpack:///./src/ui/node_modules/postcss/lib/comment.js","webpack:///./src/ui/node_modules/lodash/_copyObject.js","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePickerRedux.js","webpack:///./src/ui/src/components/ColorPalettePicker/index.js","webpack:///./src/ui/src/helpers/printGrayscaleDarknessFactor.js","webpack:///./src/ui/src/constants/languages.js","webpack:///./src/ui/src/components/ToolGroupButton/ToolGroupButton.js","webpack:///./src/ui/src/components/ToolGroupButton/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./src/ui/src/hooks/useArrowFocus.js","webpack:///./src/ui/src/helpers/createToolAPI.js","webpack:///./src/ui/src/helpers/createFeatureAPI.js","webpack:///./src/ui/src/apis/setToolMode.js","webpack:///./src/ui/src/helpers/isFullscreen.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/utils/idUtils.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useID.js","webpack:///./src/ui/node_modules/blob-stream/index.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/getFetch.cjs","webpack:///./src/ui/src/helpers/MentionsManager.js","webpack:///./src/ui/src/components/ModalWrapper/ModalWrapper.js","webpack:///./src/ui/src/components/ModalWrapper/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.bold.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.entries.js","webpack:///./src/ui/node_modules/core-js/internals/create-html.js","webpack:///./src/ui/node_modules/core-js/internals/string-html-forced.js","webpack:///./src/ui/src/constants/measurementScale.js","webpack:///./src/ui/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./src/ui/src/helpers/getPageArrayFromString.js","webpack:///./src/ui/src/helpers/getAnnotationStyles.js","webpack:///./src/ui/src/constants/thumbnailSelectionModes.js","webpack:///./src/ui/node_modules/core-js/internals/shared-store.js","webpack:///./src/ui/node_modules/core-js/internals/set-global.js","webpack:///./src/ui/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./src/ui/node_modules/core-js/internals/to-string-tag-support.js","webpack:///./src/ui/node_modules/core-js/internals/a-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/perform.js","webpack:///./src/ui/node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./src/ui/node_modules/core-js/internals/object-define-properties.js","webpack:///./src/ui/node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/ui/node_modules/core-js/internals/is-regexp.js","webpack:///./src/ui/node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-flags.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./src/ui/node_modules/core-js/internals/advance-string-index.js","webpack:///./src/ui/node_modules/core-js/internals/string-multibyte.js","webpack:///./src/ui/node_modules/object-assign/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.search.js","webpack:///./src/ui/node_modules/core-js/internals/define-iterator.js","webpack:///./src/ui/node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-ins.js","webpack:///./src/ui/node_modules/core-js/internals/array-reduce.js","webpack:///./src/ui/node_modules/core-js/internals/array-sort.js","webpack:///./src/ui/node_modules/lodash/_toKey.js","webpack:///./src/ui/node_modules/lodash/_assignValue.js","webpack:///./src/ui/assets/icons sync ^\\.\\/.*\\.svg$","webpack:///./src/ui/node_modules/core-js/modules/es.date.now.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/domFns.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopup.scss?6df2","webpack:///./src/ui/node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/node-libs-browser/node_modules/events/events.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./src/ui/node_modules/lodash/_overArg.js","webpack:///./src/ui/node_modules/postcss/lib/css-syntax-error.js","webpack:///./src/ui/node_modules/postcss/lib/symbols.js","webpack:///./src/ui/node_modules/postcss/lib/document.js","webpack:///./src/ui/node_modules/postcss/lib/result.js","webpack:///./src/ui/node_modules/postcss/lib/parse.js","webpack:///./src/ui/node_modules/postcss/lib/at-rule.js","webpack:///./src/ui/node_modules/postcss/lib/rule.js","webpack:///./src/ui/src/helpers/printCurrentViewHelper.js","webpack:///./src/ui/src/constants/displayModeObjects.js","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanel.js","webpack:///./src/ui/src/hooks/useOnContentEditHistoryUndoRedoChanged/index.js","webpack:///./src/ui/src/hooks/useOnContentEditHistoryUndoRedoChanged/useOnContentEditHistoryUndoRedoChanged.js","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanelContainer.js","webpack:///./src/ui/src/components/TextEditingPanel/index.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/ChangeListItem.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/index.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ComparePanel.js","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/index.js","webpack:///./src/ui/src/components/OverlayItem/OverlayItem.js","webpack:///./src/ui/src/components/OverlayItem/index.js","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlay.js","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper.js","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/index.js","webpack:///./src/ui/node_modules/lodash/pick.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/useTranslation.js","webpack:///./src/ui/node_modules/lodash/isUndefined.js","webpack:///./src/ui/node_modules/redux-persist/lib/storage/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/createClass.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","webpack:///./src/ui/node_modules/react-dnd-html5-backend/dist/esm/index.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.italics.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.strike.js","webpack:///./src/ui/src/helpers/OutlineUtils.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/web.url.js","webpack:///./src/ui/node_modules/core-js/modules/web.url-search-params.js","webpack:///./src/ui/src/helpers/extractPagesWithAnnotations.js","webpack:///./src/ui/node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.every.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.find.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.join.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.map.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.set.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.some.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/ui/src/components/Slider/Slider.js","webpack:///./src/ui/src/components/Slider/index.js","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/PageNumberInput.js","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/index.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer.js","webpack:///./src/ui/src/apis/searchTextFull.js","webpack:///./src/ui/src/components/ModularComponents/Divider/Divider.js","webpack:///./src/ui/src/components/ModularComponents/Divider/index.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./src/ui/node_modules/lodash/isEqual.js","webpack:///./src/ui/node_modules/react/jsx-runtime.js","webpack:///./src/ui/src/hooks/useCurrentRef/useCurrentRef.js","webpack:///./src/ui/src/helpers/webComponent.js","webpack:///./src/ui/src/hooks/useFocusTrap/useFocusTrap.js","webpack:///./src/ui/src/hooks/useFocusTrap/index.js","webpack:///./src/ui/src/components/FocusTrap/FocusTrap.js","webpack:///./src/ui/src/components/FocusTrap/index.js","webpack:///./src/ui/src/components/PageReplacementModal/FilePickerPanel/FilePickerPanel.js","webpack:///./src/ui/src/components/PageReplacementModal/FilePickerPanel/index.js","webpack:///./src/ui/src/helpers/getTextDecoration.js","webpack:///./src/ui/src/components/Header/Header.scss?5ef9","webpack:///./src/ui/node_modules/core-js/modules/es.string.split.js","webpack:///./src/ui/node_modules/lodash/isObjectLike.js","webpack:///./src/ui/src/helpers/getAnnotationCreateToolNames.js","webpack:///./src/ui/src/helpers/getGroupedLinkAnnotations.js","webpack:///./src/ui/node_modules/lodash/keys.js","webpack:///./src/ui/src/components/Layer/updateLayerVisibililty.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Label/Label.js","webpack:///./src/ui/src/components/Layer/Layer.js","webpack:///./src/ui/src/components/Layer/index.js","webpack:///./src/ui/src/components/LayersPanel/LayersPanel.js","webpack:///./src/ui/src/components/LayersPanel/helper.js","webpack:///./src/ui/src/components/LayersPanel/LayersPanelRedux.js","webpack:///./src/ui/src/components/LayersPanel/index.js","webpack:///./src/ui/src/hooks/useOnFreeTextEdit/index.js","webpack:///./src/ui/src/hooks/useOnFreeTextEdit/useOnFreeTextEdit.js","webpack:///./src/ui/src/components/LabelTextEditor/LabelTextEditor.js","webpack:///./src/ui/src/components/LabelTextEditor/index.js","webpack:///./src/ui/node_modules/core-js/internals/to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./src/ui/node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./src/ui/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./src/ui/node_modules/core-js/internals/make-built-in.js","webpack:///./src/ui/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./src/ui/node_modules/core-js/internals/own-keys.js","webpack:///./src/ui/node_modules/core-js/internals/object-keys-internal.js","webpack:///./src/ui/node_modules/core-js/internals/array-last-index-of.js","webpack:///./src/ui/node_modules/core-js/internals/task.js","webpack:///./src/ui/node_modules/core-js/internals/html.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ios.js","webpack:///./src/ui/node_modules/core-js/internals/iterator-close.js","webpack:///./src/ui/node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./src/ui/node_modules/core-js/internals/array-for-each.js","webpack:///./src/ui/node_modules/core-js/internals/dom-iterables.js","webpack:///./src/ui/node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./src/ui/node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./src/ui/node_modules/core-js/internals/array-from.js","webpack:///./src/ui/node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/iterators-core.js","webpack:///./src/ui/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./src/ui/node_modules/core-js/internals/collection.js","webpack:///./src/ui/node_modules/core-js/internals/internal-metadata.js","webpack:///./src/ui/node_modules/core-js/internals/collection-strong.js","webpack:///./src/ui/node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///./src/ui/node_modules/core-js/internals/native-symbol-registry.js","webpack:///./src/ui/node_modules/core-js/internals/this-number-value.js","webpack:///./src/ui/node_modules/core-js/internals/object-to-array.js","webpack:///./src/ui/node_modules/core-js/internals/regexp-get-flags.js","webpack:///./src/ui/node_modules/core-js/internals/string-repeat.js","webpack:///./src/ui/node_modules/core-js/internals/engine-ff-version.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack:///./src/ui/node_modules/core-js/internals/engine-webkit-version.js","webpack:///./src/ui/node_modules/lodash/_basePickBy.js","webpack:///./src/ui/node_modules/lodash/_baseAssignValue.js","webpack:///./src/ui/node_modules/lodash/eq.js","webpack:///./src/ui/node_modules/lodash/_isIndex.js","webpack:///./src/ui/node_modules/core-js/internals/object-assign.js","webpack:///./src/ui/node_modules/core-js/internals/function-bind.js","webpack:///./src/ui/node_modules/core-js/internals/schedulers-fix.js","webpack:///./src/ui/src/helpers/copyText.js","webpack:///./src/ui/node_modules/core-js/internals/number-parse-float.js","webpack:///./src/ui/src/components/ToolButton/ToolButton.scss?bc29","webpack:///./src/ui/src/components/ColorPalette/ColorPalette.scss?101a","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePicker.js","webpack:///./src/ui/node_modules/lodash/_root.js","webpack:///./src/ui/node_modules/lodash/_getAllKeysIn.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureStylePopup.scss?2d18","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/StatefulButton.scss?698e","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/positionFns.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/log.js","webpack:///./src/ui/src/components/Panel/Panel.scss?5820","webpack:///./src/ui/node_modules/core-js/internals/native-url.js","webpack:///./src/ui/node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./src/ui/node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopup.scss?7b19","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicator.scss?c07b","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-native.js","webpack:///./src/ui/node_modules/core-js/internals/to-index.js","webpack:///./src/ui/node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./src/ui/node_modules/lodash/range.js","webpack:///./src/ui/node_modules/lodash/_Stack.js","webpack:///./src/ui/node_modules/lodash/_getAllKeys.js","webpack:///./src/ui/node_modules/lodash/_getTag.js","webpack:///./src/ui/node_modules/lodash/isBuffer.js","webpack:///./src/ui/src/components/ModularComponents/Flyout/Flyout.scss?1e02","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeader.scss?58d8","webpack:///./src/ui/src/components/ModularComponents/Flyout/flyoutHelpers/ZoomText.scss?7628","webpack:///./src/ui/src/helpers/getLinkDestination.js","webpack:///./src/ui/src/constants/layoutMode.js","webpack:///./src/ui/node_modules/postcss/lib/stringifier.js","webpack:///./src/ui/node_modules/postcss/lib/lazy-result.js","webpack:///./src/ui/node_modules/postcss/lib/map-generator.js","webpack:///./src/ui/node_modules/postcss/lib/previous-map.js","webpack:///./src/ui/node_modules/postcss/lib/warn-once.js","webpack:///./src/ui/node_modules/postcss/lib/warning.js","webpack:///./src/ui/node_modules/postcss/lib/list.js","webpack:///./src/ui/node_modules/lodash/cloneDeep.js","webpack:///./src/ui/node_modules/lodash/keysIn.js","webpack:///../../src/AsapQueue.ts","webpack:///../../src/TaskFactory.ts","webpack:///./src/ui/src/components/FontSizeDropdown/pdfEditHelper.js","webpack:///./src/ui/src/components/FontSizeDropdown/FontSizeDropdown.js","webpack:///./src/ui/src/components/FontSizeDropdown/index.js","webpack:///./src/ui/src/hooks/useOnRedactionAnnotationChanged/index.js","webpack:///./src/ui/src/hooks/useOnRedactionAnnotationChanged/useOnRedactionAnnotationChanged.js","webpack:///./src/ui/src/components/OfficeEditorCreateTablePopup/OfficeEditorCreateTablePopup.js","webpack:///./src/ui/src/components/OfficeEditorCreateTablePopup/index.js","webpack:///./src/ui/src/components/FilePicker/FilePicker.js","webpack:///./src/ui/src/components/FilePicker/index.js","webpack:///./src/ui/src/components/StatefulButton/StatefulButton.js","webpack:///./src/ui/src/components/StatefulButton/index.js","webpack:///./src/ui/node_modules/react-redux/node_modules/react-is/index.js","webpack:///./src/ui/node_modules/lodash/pickBy.js","webpack:///./src/ui/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./src/ui/node_modules/react-shadow-dom-retarget-events/index.js","webpack:///./src/ui/node_modules/react-hot-loader/root.js","webpack:///./src/ui/node_modules/postcss/lib/postcss.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/request.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/core/DndContext.js","webpack:///../../src/index.ts","webpack:///./src/ui/src/components/DocumentCropPopup/DimensionsInput.js","webpack:///./src/ui/src/components/DocumentCropPopup/PagesToCropOptions.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopupMobile.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopup.js","webpack:///./src/ui/src/hooks/useOnCropAnnotationChangedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnCropAnnotationChangedOrSelected/useOnCropAnnotationChangedOrSelected.js","webpack:///./src/ui/src/components/MobilePopupWrapper/MobilePopupWrapper.js","webpack:///./src/ui/src/components/MobilePopupWrapper/index.js","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopupContainer.js","webpack:///./src/ui/src/components/DocumentCropPopup/index.js","webpack:///./src/ui/src/hooks/useOnClickPrepareSoundAnnotation/index.js","webpack:///./src/ui/src/hooks/useOnClickPrepareSoundAnnotation/useOnClickPrepareSoundAnnotation.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopup.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopupContainer.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/index.js","webpack:///./src/ui/src/components/ProgressModal/ProgressModal.js","webpack:///./src/ui/src/components/ProgressModal/index.js","webpack:///./src/ui/node_modules/clsx/dist/clsx.m.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-constructor.js","webpack:///./src/ui/node_modules/core-js/internals/promise-resolve.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.fill.js","webpack:///./src/ui/node_modules/core-js/modules/es.regexp.flags.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/ui/node_modules/core-js/internals/number-parse-int.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.flat.js","webpack:///./src/ui/node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./src/ui/src/components/Choice/Choice.scss?a818","webpack:///./src/ui/src/components/HeaderItems/HeaderItems.scss?4536","webpack:///./src/ui/src/components/FilePickerHandler/FilePickerHandler.scss?382f","webpack:///./src/ui/node_modules/core-js/modules/es.string.ends-with.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-names.js","webpack:///./src/ui/node_modules/core-js/internals/is-integral-number.js","webpack:///./src/ui/node_modules/lodash/_baseGetTag.js","webpack:///./src/ui/node_modules/lodash/_getPrototype.js","webpack:///./src/ui/node_modules/core-js/internals/native-weak-map.js","webpack:///./src/ui/node_modules/core-js/internals/object-to-string.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/a-possible-prototype.js","webpack:///./src/ui/node_modules/core-js/internals/microtask.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-ios-pebble.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./src/ui/node_modules/core-js/internals/host-report-errors.js","webpack:///./src/ui/node_modules/core-js/internals/queue.js","webpack:///./src/ui/node_modules/core-js/internals/engine-is-browser.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.all.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.catch.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.race.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.reject.js","webpack:///./src/ui/node_modules/core-js/modules/es.promise.resolve.js","webpack:///./src/ui/node_modules/core-js/internals/array-species-constructor.js","webpack:///./src/ui/node_modules/react/cjs/react.production.min.js","webpack:///./src/ui/node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./src/ui/node_modules/scheduler/index.js","webpack:///./src/ui/node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./src/ui/node_modules/react-is/index.js","webpack:///./src/ui/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./src/ui/node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./src/ui/node_modules/core-js/internals/same-value.js","webpack:///./src/ui/node_modules/core-js/internals/path.js","webpack:///./src/ui/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./src/ui/node_modules/core-js/modules/es.set.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/object-is-extensible.js","webpack:///./src/ui/node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///./src/ui/node_modules/core-js/internals/freezing.js","webpack:///./src/ui/node_modules/core-js/internals/date-to-primitive.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.constructor.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.for.js","webpack:///./src/ui/node_modules/core-js/modules/es.symbol.key-for.js","webpack:///./src/ui/node_modules/core-js/modules/es.json.stringify.js","webpack:///./src/ui/node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///./src/ui/node_modules/core-js/modules/es.map.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/get-substitution.js","webpack:///./src/ui/node_modules/lodash/_basePick.js","webpack:///./src/ui/node_modules/lodash/_baseGet.js","webpack:///./src/ui/node_modules/lodash/_isKey.js","webpack:///./src/ui/node_modules/lodash/isSymbol.js","webpack:///./src/ui/node_modules/lodash/_stringToPath.js","webpack:///./src/ui/node_modules/lodash/_memoizeCapped.js","webpack:///./src/ui/node_modules/lodash/toString.js","webpack:///./src/ui/node_modules/lodash/_baseSet.js","webpack:///./src/ui/node_modules/lodash/_defineProperty.js","webpack:///./src/ui/node_modules/lodash/_getNative.js","webpack:///./src/ui/node_modules/lodash/hasIn.js","webpack:///./src/ui/node_modules/lodash/_baseHasIn.js","webpack:///./src/ui/node_modules/lodash/_hasPath.js","webpack:///./src/ui/node_modules/lodash/isArguments.js","webpack:///./src/ui/node_modules/lodash/isLength.js","webpack:///./src/ui/node_modules/lodash/_flatRest.js","webpack:///./src/ui/node_modules/core-js/internals/flatten-into-array.js","webpack:///./src/ui/node_modules/core-js/internals/string-trim-forced.js","webpack:///./src/ui/node_modules/core-js/modules/web.set-interval.js","webpack:///./src/ui/node_modules/core-js/modules/web.set-timeout.js","webpack:///./src/ui/node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./src/ui/assets/icons/apryse-logo.svg","webpack:///./src/ui/assets/icons/calibrate.svg","webpack:///./src/ui/assets/icons/digital_signature_error.svg","webpack:///./src/ui/assets/icons/digital_signature_valid.svg","webpack:///./src/ui/assets/icons/digital_signature_warning.svg","webpack:///./src/ui/assets/icons/group-annotations-icon.svg","webpack:///./src/ui/assets/icons/ic-alignment-bottom.svg","webpack:///./src/ui/assets/icons/ic-alignment-center-horizontal.svg","webpack:///./src/ui/assets/icons/ic-alignment-center-vertical.svg","webpack:///./src/ui/assets/icons/ic-alignment-left.svg","webpack:///./src/ui/assets/icons/ic-alignment-main.svg","webpack:///./src/ui/assets/icons/ic-alignment-right.svg","webpack:///./src/ui/assets/icons/ic-alignment-top.svg","webpack:///./src/ui/assets/icons/ic-audio-redact.svg","webpack:///./src/ui/assets/icons/ic-bookmark.svg","webpack:///./src/ui/assets/icons/ic-calibrate.svg","webpack:///./src/ui/assets/icons/ic-copy-color.svg","webpack:///./src/ui/assets/icons/ic-delete.svg","webpack:///./src/ui/assets/icons/ic-distribute-horizontal.svg","webpack:///./src/ui/assets/icons/ic-distribute-vertical.svg","webpack:///./src/ui/assets/icons/ic-edit-page.svg","webpack:///./src/ui/assets/icons/ic-file-cad.svg","webpack:///./src/ui/assets/icons/ic-file-doc.svg","webpack:///./src/ui/assets/icons/ic-file-etc.svg","webpack:///./src/ui/assets/icons/ic-file-img.svg","webpack:///./src/ui/assets/icons/ic-file-pdf.svg","webpack:///./src/ui/assets/icons/ic-file-ppt.svg","webpack:///./src/ui/assets/icons/ic-file-xls.svg","webpack:///./src/ui/assets/icons/ic-fill-and-sign.svg","webpack:///./src/ui/assets/icons/ic-full-frame-video-and-audio-redact.svg","webpack:///./src/ui/assets/icons/ic-full-frame-video-redact.svg","webpack:///./src/ui/assets/icons/ic-hamburger-menu.svg","webpack:///./src/ui/assets/icons/ic-indent-decrease.svg","webpack:///./src/ui/assets/icons/ic-indent-increase.svg","webpack:///./src/ui/assets/icons/ic-insert text.svg","webpack:///./src/ui/assets/icons/ic-layer.svg","webpack:///./src/ui/assets/icons/ic-paragraph.svg","webpack:///./src/ui/assets/icons/ic-replace text.svg","webpack:///./src/ui/assets/icons/ic-table.svg","webpack:///./src/ui/assets/icons/ic-wv3d-properties-panel-menu.svg","webpack:///./src/ui/assets/icons/ic_annotation_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_cloudy_rectangular_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_ellipse_area_black.svg","webpack:///./src/ui/assets/icons/ic_annotation_eraser_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_rectangular_area_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_signature_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_strikeout_black_24px.svg","webpack:///./src/ui/assets/icons/ic_annotation_underline_black_24px.svg","webpack:///./src/ui/assets/icons/ic_bookmarks_black_24px.svg","webpack:///./src/ui/assets/icons/ic_check_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_down_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_left_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_right_black_24px.svg","webpack:///./src/ui/assets/icons/ic_chevron_up_black_24px.svg","webpack:///./src/ui/assets/icons/ic_close_black_24px.svg","webpack:///./src/ui/assets/icons/ic_copy_black_24px.svg","webpack:///./src/ui/assets/icons/ic_crop_black_24px.svg","webpack:///./src/ui/assets/icons/ic_edit_page_24px.svg","webpack:///./src/ui/assets/icons/ic_fileattachment_24px.svg","webpack:///./src/ui/assets/icons/ic_layers_24px.svg","webpack:///./src/ui/assets/icons/ic_pause_24px.svg","webpack:///./src/ui/assets/icons/ic_play_24px.svg","webpack:///./src/ui/assets/icons/ic_select_black_24px.svg","webpack:///./src/ui/assets/icons/ic_snipping_black_24px.svg","webpack:///./src/ui/assets/icons/ic_sound_24px.svg","webpack:///./src/ui/assets/icons/ic_thumbnails_grid_black_24px.svg","webpack:///./src/ui/assets/icons/icon-action-redo.svg","webpack:///./src/ui/assets/icons/icon-action-undo.svg","webpack:///./src/ui/assets/icons/icon-add-file.svg","webpack:///./src/ui/assets/icons/icon-add-folder.svg","webpack:///./src/ui/assets/icons/icon-alert.svg","webpack:///./src/ui/assets/icons/icon-annotation-select-multiple.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-accepted.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-cancelled.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-completed.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-marked.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-none.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-rejected.svg","webpack:///./src/ui/assets/icons/icon-annotation-status-unmarked.svg","webpack:///./src/ui/assets/icons/icon-arrow-back.svg","webpack:///./src/ui/assets/icons/icon-arrow-down.svg","webpack:///./src/ui/assets/icons/icon-arrow-left.svg","webpack:///./src/ui/assets/icons/icon-arrow-right.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-bottom.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-middle.svg","webpack:///./src/ui/assets/icons/icon-arrow-to-top.svg","webpack:///./src/ui/assets/icons/icon-arrow-up.svg","webpack:///./src/ui/assets/icons/icon-chat-bubble.svg","webpack:///./src/ui/assets/icons/icon-chevron-down.svg","webpack:///./src/ui/assets/icons/icon-chevron-left.svg","webpack:///./src/ui/assets/icons/icon-chevron-right.svg","webpack:///./src/ui/assets/icons/icon-chevron-up.svg","webpack:///./src/ui/assets/icons/icon-close.svg","webpack:///./src/ui/assets/icons/icon-comments-filter.svg","webpack:///./src/ui/assets/icons/icon-compare-change.svg","webpack:///./src/ui/assets/icons/icon-compare-file-open.svg","webpack:///./src/ui/assets/icons/icon-content-edit.svg","webpack:///./src/ui/assets/icons/icon-copy.svg","webpack:///./src/ui/assets/icons/icon-copy2.svg","webpack:///./src/ui/assets/icons/icon-cut.svg","webpack:///./src/ui/assets/icons/icon-dark-mode-option.svg","webpack:///./src/ui/assets/icons/icon-delete-line.svg","webpack:///./src/ui/assets/icons/icon-detach-toolbar.svg","webpack:///./src/ui/assets/icons/icon-double-chevron-down.svg","webpack:///./src/ui/assets/icons/icon-download.svg","webpack:///./src/ui/assets/icons/icon-drag-handle.svg","webpack:///./src/ui/assets/icons/icon-edit-form-field.svg","webpack:///./src/ui/assets/icons/icon-folder.svg","webpack:///./src/ui/assets/icons/icon-form-field-checkbox.svg","webpack:///./src/ui/assets/icons/icon-form-field-combobox.svg","webpack:///./src/ui/assets/icons/icon-form-field-listbox.svg","webpack:///./src/ui/assets/icons/icon-form-field-radiobutton.svg","webpack:///./src/ui/assets/icons/icon-form-field-signature.svg","webpack:///./src/ui/assets/icons/icon-form-field-text.svg","webpack:///./src/ui/assets/icons/icon-header-chat-line.svg","webpack:///./src/ui/assets/icons/icon-header-compare.svg","webpack:///./src/ui/assets/icons/icon-header-file-picker-line.svg","webpack:///./src/ui/assets/icons/icon-header-full-screen-exit.svg","webpack:///./src/ui/assets/icons/icon-header-full-screen.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-insert-above.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-cover-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-double-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-layout-single-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-clockwise-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-rotation-counterclockwise-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-continuous-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-page-by-page-line.svg","webpack:///./src/ui/assets/icons/icon-header-page-manipulation-page-transition-reader.svg","webpack:///./src/ui/assets/icons/icon-header-pan.svg","webpack:///./src/ui/assets/icons/icon-header-print-line.svg","webpack:///./src/ui/assets/icons/icon-header-search.svg","webpack:///./src/ui/assets/icons/icon-header-select-line.svg","webpack:///./src/ui/assets/icons/icon-header-settings-line.svg","webpack:///./src/ui/assets/icons/icon-header-sidebar-line.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-fit-to-page.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-fit-to-width.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-in-line.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-marquee.svg","webpack:///./src/ui/assets/icons/icon-header-zoom-out-line.svg","webpack:///./src/ui/assets/icons/icon-image-green.svg","webpack:///./src/ui/assets/icons/icon-info.svg","webpack:///./src/ui/assets/icons/icon-keyboard.svg","webpack:///./src/ui/assets/icons/icon-light-mode-option.svg","webpack:///./src/ui/assets/icons/icon-linestyle-cloudy-line.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-1-4-8-4.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-2-2.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-3-6-10-6.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-4-4.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-4-6-10-6.svg","webpack:///./src/ui/assets/icons/icon-linestyle-dash-6-6.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-closed-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-closed.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-open-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-arrow-open.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-butt.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-circle.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-diamond.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-slash.svg","webpack:///./src/ui/assets/icons/icon-linestyle-end-square.svg","webpack:///./src/ui/assets/icons/icon-linestyle-none.svg","webpack:///./src/ui/assets/icons/icon-linestyle-solid-line.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-closed-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-closed.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-open-reverse.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-arrow-open.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-butt.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-circle.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-diamond.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-slash.svg","webpack:///./src/ui/assets/icons/icon-linestyle-start-square.svg","webpack:///./src/ui/assets/icons/icon-lock-wire.svg","webpack:///./src/ui/assets/icons/icon-lock.svg","webpack:///./src/ui/assets/icons/icon-magnifying-glass.svg","webpack:///./src/ui/assets/icons/icon-menu-add.svg","webpack:///./src/ui/assets/icons/icon-menu-align-centre.svg","webpack:///./src/ui/assets/icons/icon-menu-align-left.svg","webpack:///./src/ui/assets/icons/icon-menu-align-right.svg","webpack:///./src/ui/assets/icons/icon-menu-bold.svg","webpack:///./src/ui/assets/icons/icon-menu-both-align.svg","webpack:///./src/ui/assets/icons/icon-menu-centre-align.svg","webpack:///./src/ui/assets/icons/icon-menu-checkmark.svg","webpack:///./src/ui/assets/icons/icon-menu-italic.svg","webpack:///./src/ui/assets/icons/icon-menu-left-align.svg","webpack:///./src/ui/assets/icons/icon-menu-right-align.svg","webpack:///./src/ui/assets/icons/icon-menu-style-line.svg","webpack:///./src/ui/assets/icons/icon-menu-text-underline.svg","webpack:///./src/ui/assets/icons/icon-no-marked-redactions.svg","webpack:///./src/ui/assets/icons/icon-office-editor-bullet-list.svg","webpack:///./src/ui/assets/icons/icon-office-editor-circle.svg","webpack:///./src/ui/assets/icons/icon-office-editor-line-spacing.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-arrow.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-bullet.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-check.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-diamond.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-latin-roman.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-number-decimal.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-number-latin-1.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-number-latin-2.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-roman-latin.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-square-bullet.svg","webpack:///./src/ui/assets/icons/icon-office-editor-list-style-square.svg","webpack:///./src/ui/assets/icons/icon-office-editor-number-list.svg","webpack:///./src/ui/assets/icons/icon-office-editor-page-break.svg","webpack:///./src/ui/assets/icons/icon-open-folder.svg","webpack:///./src/ui/assets/icons/icon-operation-eraser.svg","webpack:///./src/ui/assets/icons/icon-operation-redo.svg","webpack:///./src/ui/assets/icons/icon-operation-undo.svg","webpack:///./src/ui/assets/icons/icon-page-insertion-insert.svg","webpack:///./src/ui/assets/icons/icon-page-manipulation-extract.svg","webpack:///./src/ui/assets/icons/icon-page-move-down.svg","webpack:///./src/ui/assets/icons/icon-page-move-up.svg","webpack:///./src/ui/assets/icons/icon-page-replacement.svg","webpack:///./src/ui/assets/icons/icon-panel-outlines.svg","webpack:///./src/ui/assets/icons/icon-panel-thumbnail-line.svg","webpack:///./src/ui/assets/icons/icon-paste-without-formatting.svg","webpack:///./src/ui/assets/icons/icon-paste.svg","webpack:///./src/ui/assets/icons/icon-pdf-portfolio.svg","webpack:///./src/ui/assets/icons/icon-pencil-line.svg","webpack:///./src/ui/assets/icons/icon-plus-sign.svg","webpack:///./src/ui/assets/icons/icon-portfolio-file.svg","webpack:///./src/ui/assets/icons/icon-portfolio-folder.svg","webpack:///./src/ui/assets/icons/icon-post-reply.svg","webpack:///./src/ui/assets/icons/icon-redact-panel.svg","webpack:///./src/ui/assets/icons/icon-save.svg","webpack:///./src/ui/assets/icons/icon-signature-plus-disabled.svg","webpack:///./src/ui/assets/icons/icon-signature-plus-sign.svg","webpack:///./src/ui/assets/icons/icon-style-panel-toggle.svg","webpack:///./src/ui/assets/icons/icon-sync.svg","webpack:///./src/ui/assets/icons/icon-text-bold.svg","webpack:///./src/ui/assets/icons/icon-text-italic.svg","webpack:///./src/ui/assets/icons/icon-text-justify-center.svg","webpack:///./src/ui/assets/icons/icon-text-underline.svg","webpack:///./src/ui/assets/icons/icon-thumbtack.svg","webpack:///./src/ui/assets/icons/icon-tool-arc.svg","webpack:///./src/ui/assets/icons/icon-tool-callout-line.svg","webpack:///./src/ui/assets/icons/icon-tool-changeview.svg","webpack:///./src/ui/assets/icons/icon-tool-check-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-comment-line.svg","webpack:///./src/ui/assets/icons/icon-tool-cross-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-dot-stamp.svg","webpack:///./src/ui/assets/icons/icon-tool-fill-and-sign-calendar.svg","webpack:///./src/ui/assets/icons/icon-tool-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-image-line.svg","webpack:///./src/ui/assets/icons/icon-tool-link.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-arc.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-ellipse-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-area-polygon-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-cloud-area-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-distance-line.svg","webpack:///./src/ui/assets/icons/icon-tool-measurement-perimeter.svg","webpack:///./src/ui/assets/icons/icon-tool-model3d.svg","webpack:///./src/ui/assets/icons/icon-tool-more.svg","webpack:///./src/ui/assets/icons/icon-tool-page-redact.svg","webpack:///./src/ui/assets/icons/icon-tool-pen-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-pen-line.svg","webpack:///./src/ui/assets/icons/icon-tool-redaction-area.svg","webpack:///./src/ui/assets/icons/icon-tool-select-area-redaction.svg","webpack:///./src/ui/assets/icons/icon-tool-select-pages.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-arrow.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-cloud.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-line.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-oval.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-polygon.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-polyline.svg","webpack:///./src/ui/assets/icons/icon-tool-shape-rectangle.svg","webpack:///./src/ui/assets/icons/icon-tool-signature.svg","webpack:///./src/ui/assets/icons/icon-tool-stamp-line.svg","webpack:///./src/ui/assets/icons/icon-tool-text-free-text.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-highlight.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-squiggly.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-strikethrough.svg","webpack:///./src/ui/assets/icons/icon-tool-text-manipulation-underline.svg","webpack:///./src/ui/assets/icons/icon-tool-unlink.svg","webpack:///./src/ui/assets/icons/icon-tools-more-active.svg","webpack:///./src/ui/assets/icons/icon-tools-more-vertical.svg","webpack:///./src/ui/assets/icons/icon-tools-more.svg","webpack:///./src/ui/assets/icons/icon-unposted-comment.svg","webpack:///./src/ui/assets/icons/icon-view.svg","webpack:///./src/ui/assets/icons/icon-watermark-panel.svg","webpack:///./src/ui/assets/icons/icon-zoom-thumb-in.svg","webpack:///./src/ui/assets/icons/icon-zoom-thumb-out.svg","webpack:///./src/ui/assets/icons/illustration - empty state - outlines.svg","webpack:///./src/ui/assets/icons/multi select.svg","webpack:///./src/ui/assets/icons/redact-icons-credit-card.svg","webpack:///./src/ui/assets/icons/redact-icons-email.svg","webpack:///./src/ui/assets/icons/redact-icons-image.svg","webpack:///./src/ui/assets/icons/redact-icons-phone-number.svg","webpack:///./src/ui/assets/icons/style-panel-no-tool-selected.svg","webpack:///./src/ui/assets/icons/textselect_cursor.svg","webpack:///./src/ui/assets/icons/ungroup-annotations-icon.svg","webpack:///./src/ui/src/components/Tooltip/Tooltip.scss?c2f6","webpack:///./src/ui/src/components/Tooltip/Tooltip.scss","webpack:///./src/ui/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./src/ui/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./src/ui/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./src/ui/src/components/Icon/Icon.scss?187a","webpack:///./src/ui/src/components/Icon/Icon.scss","webpack:///./src/ui/src/components/Button/Button.scss","webpack:///./src/ui/src/components/ToggleZoomOverlay/ToggleZoomOverlay.scss?29d5","webpack:///./src/ui/src/components/ToggleZoomOverlay/ToggleZoomOverlay.scss","webpack:///./src/ui/src/components/Dropdown/Dropdown.scss?e9cc","webpack:///./src/ui/src/components/Dropdown/Dropdown.scss","webpack:///./src/ui/src/components/TrackChangeOverlay/TrackChangeOverlay.scss?3f3f","webpack:///./src/ui/src/components/TrackChangeOverlay/TrackChangeOverlay.scss","webpack:///./src/ui/src/components/ToolButton/ToolButton.scss","webpack:///./src/ui/src/components/HorizontalDivider/HorizontalDivider.scss?da16","webpack:///./src/ui/src/components/HorizontalDivider/HorizontalDivider.scss","webpack:///./src/ui/src/components/ColorPaletteHeader/ColorPaletteHeader.scss?cc80","webpack:///./src/ui/src/components/ColorPaletteHeader/ColorPaletteHeader.scss","webpack:///./src/ui/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./src/ui/src/components/ColorPalette/ColorPalette.scss","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePicker.scss?8a74","webpack:///./src/ui/src/components/ColorPalettePicker/ColorPalettePicker.scss","webpack:///./src/ui/src/components/Slider/Slider.scss?6aeb","webpack:///./src/ui/src/components/Slider/Slider.scss","webpack:///./src/ui/src/components/StyleOption/StyleOption.scss?adab","webpack:///./src/ui/src/components/StyleOption/StyleOption.scss","webpack:///./src/ui/src/components/TextStylePicker/TextStylePicker.scss?77ed","webpack:///./src/ui/src/components/TextStylePicker/TextStylePicker.scss","webpack:///./src/ui/src/components/FontSizeDropdown/FontSizeDropdown.scss?5b18","webpack:///./src/ui/src/components/FontSizeDropdown/FontSizeDropdown.scss","webpack:///./src/ui/node_modules/lodash/now.js","webpack:///./src/ui/node_modules/lodash/_freeGlobal.js","webpack:///./src/ui/node_modules/lodash/toNumber.js","webpack:///./src/ui/src/components/Choice/Choice.scss","webpack:///./src/ui/src/components/LabelTextEditor/LabelTextEditor.scss?1fff","webpack:///./src/ui/src/components/LabelTextEditor/LabelTextEditor.scss","webpack:///./src/ui/src/components/LineStyleOptions/LineStyleOptions.scss?a324","webpack:///./src/ui/src/components/LineStyleOptions/LineStyleOptions.scss","webpack:///./src/ui/node_modules/lodash/_arrayMap.js","webpack:///./src/ui/node_modules/lodash/_baseIteratee.js","webpack:///./src/ui/src/components/StylePopup/StylePopup.scss?48f2","webpack:///./src/ui/src/components/StylePopup/StylePopup.scss","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureRowContent.scss?2038","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureRowContent.scss","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureStylePopup.scss","webpack:///./src/ui/src/components/RubberStampOverlay/RubberStampOverlay.scss?4f94","webpack:///./src/ui/src/components/RubberStampOverlay/RubberStampOverlay.scss","webpack:///./src/ui/src/components/ToolStylePopup/ToolStylePopup.scss?0ce1","webpack:///./src/ui/src/components/ToolStylePopup/ToolStylePopup.scss","webpack:///./src/ui/src/components/ToolsDropdown/ToolsDropdown.scss?76e1","webpack:///./src/ui/src/components/ToolsDropdown/ToolsDropdown.scss","webpack:///./src/ui/src/components/SignatureStylePopup/SelectedSignatureRow.scss?feb1","webpack:///./src/ui/src/components/SignatureStylePopup/SelectedSignatureRow.scss","webpack:///./src/ui/src/components/RubberStampOverlay/SelectedRubberStamp.scss?b8cc","webpack:///./src/ui/src/components/RubberStampOverlay/SelectedRubberStamp.scss","webpack:///./src/ui/src/components/SelectedStamp/SelectedStamp.scss?5e68","webpack:///./src/ui/src/components/SelectedStamp/SelectedStamp.scss","webpack:///./src/ui/src/components/ToolsOverlay/ToolsOverlay.scss?8ef3","webpack:///./src/ui/src/components/ToolsOverlay/ToolsOverlay.scss","webpack:///./src/ui/src/components/Ribbons/Ribbons.scss?c5f9","webpack:///./src/ui/src/components/Ribbons/Ribbons.scss","webpack:///./src/ui/src/components/ApplyFormFieldButton/ApplyFormFieldButton.scss?3ccc","webpack:///./src/ui/src/components/ApplyFormFieldButton/ApplyFormFieldButton.scss","webpack:///./src/ui/node_modules/redux-persist/lib/storage/createWebStorage.js","webpack:///./src/ui/node_modules/redux-persist/lib/storage/getStorage.js","webpack:///./src/ui/src/components/LogoBar/LogoBar.scss?26c8","webpack:///./src/ui/src/components/LogoBar/LogoBar.scss","webpack:///./src/ui/src/components/Accessibility/Accessibility.scss?b53c","webpack:///./src/ui/src/components/Accessibility/Accessibility.scss","webpack:///./src/ui/src/components/ToolGroupButton/ToolGroupButton.scss?5611","webpack:///./src/ui/src/components/ToolGroupButton/ToolGroupButton.scss","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/StatefulButton.scss","webpack:///./src/ui/src/components/CustomElement/CustomElement.scss?ddbc","webpack:///./src/ui/src/components/CustomElement/CustomElement.scss","webpack:///./src/ui/src/components/HeaderItems/HeaderItems.scss","webpack:///./src/ui/src/components/TabsHeader/TabsHeader.scss?86f4","webpack:///./src/ui/src/components/TabsHeader/TabsHeader.scss","webpack:///./src/ui/src/components/TabsHeader/Tab/Tab.scss?5841","webpack:///./src/ui/src/components/TabsHeader/Tab/Tab.scss","webpack:///./src/ui/src/components/TabsHeader/HoverTab/HoverTab.scss?d059","webpack:///./src/ui/src/components/TabsHeader/HoverTab/HoverTab.scss","webpack:///./src/ui/src/components/FlyoutMenu/FlyoutMenu.scss?32b8","webpack:///./src/ui/src/components/FlyoutMenu/FlyoutMenu.scss","webpack:///./src/ui/src/components/TabsHeader/CollapsedTab/CollapsedTab.scss?8b8b","webpack:///./src/ui/src/components/TabsHeader/CollapsedTab/CollapsedTab.scss","webpack:///./src/ui/src/components/Header/Header.scss","webpack:///./src/ui/src/components/ModalWrapper/ModalWrapper.scss?2af5","webpack:///./src/ui/src/components/ModalWrapper/ModalWrapper.scss","webpack:///./src/ui/src/components/PasswordModal/PasswordModal.scss?715c","webpack:///./src/ui/src/components/PasswordModal/PasswordModal.scss","webpack:///./src/ui/node_modules/core-js/modules/es.math.hypot.js","webpack:///./src/ui/src/components/PageNavOverlay/PageNavOverlay.scss?8db8","webpack:///./src/ui/src/components/PageNavOverlay/PageNavOverlay.scss","webpack:///./src/ui/node_modules/core-js/modules/es.number.parse-float.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/Draggable.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/utils/getPrefix.js","webpack:///./src/ui/node_modules/react-draggable/build/cjs/DraggableCore.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/ReaderModeStylePopup.scss?e16d","webpack:///./src/ui/src/components/ReaderModeStylePopup/ReaderModeStylePopup.scss","webpack:///./src/ui/src/components/DocumentContainer/DocumentContainer.scss?a9c1","webpack:///./src/ui/src/components/DocumentContainer/DocumentContainer.scss","webpack:///./src/ui/src/components/ResizeBar/ResizeBar.scss?9e8c","webpack:///./src/ui/src/components/ResizeBar/ResizeBar.scss","webpack:///./src/ui/src/components/RightPanel/RightPanel.scss?8736","webpack:///./src/ui/src/components/RightPanel/RightPanel.scss","webpack:///./src/ui/src/components/FilePickerHandler/FilePickerHandler.scss","webpack:///./src/ui/src/components/CopyTextHandler/CopyTextHandler.scss?f276","webpack:///./src/ui/src/components/CopyTextHandler/CopyTextHandler.scss","webpack:///./src/ui/src/components/PrintHandler/PrintHandler.scss?4a99","webpack:///./src/ui/src/components/PrintHandler/PrintHandler.scss","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanel.scss?ca1e","webpack:///./src/ui/src/components/TextEditingPanel/TextEditingPanel.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanel.scss?7492","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanel.scss","webpack:///./src/ui/src/components/Panel/Panel.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertyKeyValuePair/PropertyKeyValuePair.scss?a07d","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertyKeyValuePair/PropertyKeyValuePair.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Group/Group.scss?b5bc","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Group/Group.scss","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/HeaderTitle/HeaderTitle.scss?b1f9","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/HeaderTitle/HeaderTitle.scss","webpack:///./src/ui/node_modules/core-js/modules/web.url.constructor.js","webpack:///./src/ui/node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///./src/ui/node_modules/core-js/modules/es.string.pad-start.js","webpack:///./src/ui/node_modules/core-js/internals/string-pad.js","webpack:///./src/ui/node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopup.scss?794d","webpack:///./src/ui/src/components/AudioPlaybackPopup/AudioPlaybackPopup.scss","webpack:///./src/ui/src/components/DocumentCropPopup/DocumentCropPopup.scss","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/PageNumberInput.scss?b4e9","webpack:///./src/ui/src/components/PageReplacementModal/PageNumberInput/PageNumberInput.scss","webpack:///./src/ui/src/components/CollapsibleSection/CollapsibleSection.scss?31e9","webpack:///./src/ui/src/components/CollapsibleSection/CollapsibleSection.scss","webpack:///./src/ui/src/components/MobilePopupWrapper/mobilePopupWrapper.scss?33f4","webpack:///./src/ui/src/components/MobilePopupWrapper/mobilePopupWrapper.scss","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopup.scss","webpack:///./src/ui/src/components/EmbeddedJSPopup/EmbeddedJSPopup.scss?70e3","webpack:///./src/ui/src/components/EmbeddedJSPopup/EmbeddedJSPopup.scss","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicator.scss","webpack:///./src/ui/src/components/FilePicker/FilePicker.scss?6bdd","webpack:///./src/ui/src/components/FilePicker/FilePicker.scss","webpack:///./src/ui/src/components/MultiTabEmptyPage/MultiTabEmptyPage.scss?eef4","webpack:///./src/ui/src/components/MultiTabEmptyPage/MultiTabEmptyPage.scss","webpack:///./src/ui/src/components/MultiViewer/MultiViewer.scss?5e84","webpack:///./src/ui/src/components/MultiViewer/MultiViewer.scss","webpack:///./src/ui/src/components/MultiViewer/DropArea/DropArea.scss?fbe7","webpack:///./src/ui/src/components/MultiViewer/DropArea/DropArea.scss","webpack:///./src/ui/node_modules/core-js/internals/ieee754.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///./src/ui/node_modules/core-js/internals/to-positive-integer.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-from.js","webpack:///./src/ui/node_modules/core-js/internals/array-copy-within.js","webpack:///./src/ui/node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack:///./src/ui/node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","webpack:///./src/ui/node_modules/blob/index.js","webpack:///./src/ui/node_modules/lodash/_createRange.js","webpack:///./src/ui/node_modules/lodash/_baseRange.js","webpack:///./src/ui/node_modules/lodash/_isIterateeCall.js","webpack:///./src/ui/node_modules/lodash/toFinite.js","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/DocumentHeader.scss?2084","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/DocumentHeader.scss","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/DocumentContainer.scss?59a9","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/DocumentContainer.scss","webpack:///./src/ui/src/components/OverlayItem/OverlayItem.scss?7a26","webpack:///./src/ui/src/components/OverlayItem/OverlayItem.scss","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlay.scss?33f1","webpack:///./src/ui/src/components/ZoomOverlay/ZoomOverlay.scss","webpack:///./src/ui/node_modules/lodash/_baseIsEqual.js","webpack:///./src/ui/node_modules/lodash/_baseIsEqualDeep.js","webpack:///./src/ui/node_modules/lodash/_listCacheClear.js","webpack:///./src/ui/node_modules/lodash/_listCacheDelete.js","webpack:///./src/ui/node_modules/lodash/_listCacheGet.js","webpack:///./src/ui/node_modules/lodash/_listCacheHas.js","webpack:///./src/ui/node_modules/lodash/_listCacheSet.js","webpack:///./src/ui/node_modules/lodash/_equalArrays.js","webpack:///./src/ui/node_modules/lodash/_SetCache.js","webpack:///./src/ui/node_modules/lodash/_arraySome.js","webpack:///./src/ui/node_modules/lodash/_cacheHas.js","webpack:///./src/ui/node_modules/lodash/_baseIndexOf.js","webpack:///./src/ui/node_modules/lodash/_equalByTag.js","webpack:///./src/ui/node_modules/lodash/_equalObjects.js","webpack:///./src/ui/node_modules/lodash/isTypedArray.js","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/ComparisonButton.scss?9865","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/ComparisonButton.scss","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ComparePanel.scss?eee7","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ComparePanel.scss","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/ChangeListItem.scss?f9b2","webpack:///./src/ui/src/components/MultiViewer/ComparePanel/ChangeListItem/ChangeListItem.scss","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanel.scss?6bf4","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanel.scss","webpack:///./src/ui/src/components/ModularComponents/MobilePanelWrapper/MobilePanelWrapper.scss?e508","webpack:///./src/ui/src/components/ModularComponents/MobilePanelWrapper/MobilePanelWrapper.scss","webpack:///./src/ui/src/components/ModularHeaderItems/ModularHeaderItems.scss?48e0","webpack:///./src/ui/src/components/ModularHeaderItems/ModularHeaderItems.scss","webpack:///./src/ui/src/components/ModularComponents/CustomButton/CustomButton.scss?d21a","webpack:///./src/ui/src/components/ModularComponents/CustomButton/CustomButton.scss","webpack:///./src/ui/src/components/ModularComponents/GroupedItems/GroupedItems.scss?209a","webpack:///./src/ui/src/components/ModularComponents/GroupedItems/GroupedItems.scss","webpack:///./src/ui/node_modules/core-js/internals/proxy-accessor.js","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/ToggleElementButton.scss?fd9b","webpack:///./src/ui/src/components/ModularComponents/ToggleElementButton/ToggleElementButton.scss","webpack:///./src/ui/src/components/ModularComponents/Divider/Divider.scss?eec3","webpack:///./src/ui/src/components/ModularComponents/Divider/Divider.scss","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/RibbonItem.scss?1064","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/RibbonItem.scss","webpack:///./src/ui/src/components/ModularComponents/Flyout/Flyout.scss","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/FlexDropdown.scss?699d","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/FlexDropdown.scss","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/RibbonGroup.scss?282f","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/RibbonGroup.scss","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControls.scss?b410","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControls.scss","webpack:///./src/ui/src/components/ModularComponents/ToolButton/ToolButton.scss?6296","webpack:///./src/ui/src/components/ModularComponents/ToolButton/ToolButton.scss","webpack:///./src/ui/src/components/ModularComponents/PageControls/PageControls.scss?da7e","webpack:///./src/ui/src/components/ModularComponents/PageControls/PageControls.scss","webpack:///./src/ui/src/components/ModularComponents/PresetButton/PresetButton.scss?3ed4","webpack:///./src/ui/src/components/ModularComponents/PresetButton/PresetButton.scss","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/ListToggleButton/ListToggleButton.scss?7f7c","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/ListToggleButton/ListToggleButton.scss","webpack:///./src/ui/src/components/OfficeEditorCreateTablePopup/OfficeEditorCreateTablePopup.scss?ffc3","webpack:///./src/ui/src/components/OfficeEditorCreateTablePopup/OfficeEditorCreateTablePopup.scss","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/CreateTableDropdown/CreateTableDropdown.scss?bf28","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/CreateTableDropdown/CreateTableDropdown.scss","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeader.scss?d432","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeader.scss","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeader.scss","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/LeftHeader.scss?d852","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/LeftHeader.scss","webpack:///./src/ui/src/components/ModularComponents/RightHeader/RightHeader.scss?721c","webpack:///./src/ui/src/components/ModularComponents/RightHeader/RightHeader.scss","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/BottomHeader.scss?fd51","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/BottomHeader.scss","webpack:///./src/ui/src/components/ModularComponents/TopHeader/TopHeader.scss?dea8","webpack:///./src/ui/src/components/ModularComponents/TopHeader/TopHeader.scss","webpack:///./src/ui/src/components/ModularComponents/Flyout/flyoutHelpers/ZoomText.scss","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/RibbonOverflowFlyout.scss?3bff","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/RibbonOverflowFlyout.scss","webpack:///./src/ui/src/components/ProgressModal/ProgressModal.scss?b86c","webpack:///./src/ui/src/components/ProgressModal/ProgressModal.scss","webpack:///./src/ui/node_modules/dayjs/locale lazy ^\\.\\/.*\\.js$ namespace object","webpack:///./src/ui/src/components/App/App.scss?78b5","webpack:///./src/ui/src/components/App/App.scss","webpack:///./src/ui/src/components/Layer/Layer.scss?3946","webpack:///./src/ui/src/components/Layer/Layer.scss","webpack:///./src/ui/src/components/LayersPanel/LayersPanel.scss?3105","webpack:///./src/ui/src/components/LayersPanel/LayersPanel.scss","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper.scss?60c7","webpack:///./src/ui/src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper.scss","webpack:///./src/ui/node_modules/postcss/node_modules/picocolors/picocolors.browser.js","webpack:///./src/ui/node_modules/nanoid/non-secure/index.js","webpack:///./src/ui/node_modules/postcss/lib/parser.js","webpack:///./src/ui/node_modules/postcss/lib/tokenize.js","webpack:///./src/ui/node_modules/postcss/lib/processor.js","webpack:///./src/ui/node_modules/postcss/lib/no-work-result.js","webpack:///./src/ui/node_modules/postcss/lib/fromJSON.js","webpack:///./src/ui/node_modules/core-js/modules/es.reflect.get.js","webpack:///./src/ui/node_modules/core-js/internals/is-data-descriptor.js","webpack:///./src/ui/node_modules/lodash/_baseClone.js","webpack:///./src/ui/node_modules/lodash/_arrayEach.js","webpack:///./src/ui/node_modules/lodash/_baseAssign.js","webpack:///./src/ui/node_modules/lodash/_baseAssignIn.js","webpack:///./src/ui/node_modules/lodash/_cloneBuffer.js","webpack:///./src/ui/node_modules/lodash/_copyArray.js","webpack:///./src/ui/node_modules/lodash/_copySymbols.js","webpack:///./src/ui/node_modules/lodash/_getSymbols.js","webpack:///./src/ui/node_modules/lodash/_copySymbolsIn.js","webpack:///./src/ui/node_modules/lodash/_getSymbolsIn.js","webpack:///./src/ui/node_modules/lodash/_initCloneArray.js","webpack:///./src/ui/node_modules/lodash/_initCloneByTag.js","webpack:///./src/ui/node_modules/lodash/_initCloneObject.js","webpack:///./src/ui/node_modules/lodash/_baseCreate.js","webpack:///./src/ui/node_modules/lodash/_isPrototype.js","webpack:///./src/ui/node_modules/lodash/isMap.js","webpack:///./src/ui/node_modules/lodash/isSet.js","webpack:///./src/ui/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./src/ui/src/index.scss?f417","webpack:///./src/ui/src/index.scss","webpack:///./src/ui/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///../../src/asap.ts","webpack:///../../src/makeRequestCall.ts","webpack:///../../src/RawTask.ts","webpack:///../../src/types.ts","webpack:///./src/ui/node_modules/react-i18next/dist/es/I18nextProvider.js","webpack:///./src/ui/node_modules/redux-thunk/es/index.js","webpack:///./src/ui/src/components/ToggleZoomOverlay/ToggleZoomOverlay.js","webpack:///./src/ui/src/components/ToggleZoomOverlay/index.js","webpack:///./src/ui/src/components/TrackChangeOverlay/TrackChangeOverlay.js","webpack:///./src/ui/src/components/TrackChangeOverlay/index.js","webpack:///./src/ui/src/components/ToolButton/PresetButton.js","webpack:///./src/ui/node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureRowContent.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureAddBtn.js","webpack:///./src/ui/src/components/SignatureStylePopup/SignatureStylePopup.js","webpack:///./src/ui/src/components/SignatureStylePopup/index.js","webpack:///./src/ui/src/components/RubberStampOverlay/RubberStampOverlay.js","webpack:///./src/ui/src/components/RubberStampOverlay/index.js","webpack:///./src/ui/src/components/ToolStylePopup/ToolStylePopup.js","webpack:///./src/ui/src/components/ToolStylePopup/index.js","webpack:///./src/ui/src/components/ToolsDropdown/index.js","webpack:///./src/ui/src/components/ToolsDropdown/ToolsDropdown.js","webpack:///./src/ui/src/components/SignatureStylePopup/SelectedSignatureRow.js","webpack:///./src/ui/src/components/RubberStampOverlay/SelectedRubberStamp.js","webpack:///./src/ui/src/components/SelectedStamp/SelectedStamp.js","webpack:///./src/ui/src/components/ToolsOverlay/ToolsOverlay.js","webpack:///./src/ui/src/components/ToolsOverlay/index.js","webpack:///./src/ui/src/components/Ribbons/Ribbons.js","webpack:///./src/ui/src/components/Ribbons/index.js","webpack:///./src/ui/src/components/ApplyFormFieldButton/index.js","webpack:///./src/ui/src/components/ApplyFormFieldButton/ApplyFormFieldButton.js","webpack:///./src/ui/src/helpers/commonToolbarElements.js","webpack:///./src/ui/src/constants/webFonts.js","webpack:///./src/ui/src/helpers/isContentEditWarningHidden.js","webpack:///./src/ui/src/constants/defaultToolsWithInlineCommentOnAnnotationSelected.js","webpack:///./src/ui/src/redux/modularComponents.js","webpack:///./src/ui/src/redux/initialState.js","webpack:///./src/ui/src/constants/defaultFonts.js","webpack:///./src/ui/src/constants/presetCropDimensions.js","webpack:///./src/ui/src/constants/presetNewPageDimensions.js","webpack:///./src/ui/src/constants/defaultDateTimeFormats.js","webpack:///./src/ui/src/helpers/initialColorStates.js","webpack:///./src/ui/src/constants/officeEditorFonts.js","webpack:///./src/ui/src/redux/reducers/featureFlagsReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/constants.js","webpack:///./src/ui/node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","webpack:///./src/ui/node_modules/redux-persist/es/createPersistoid.js","webpack:///./src/ui/node_modules/redux-persist/es/getStoredState.js","webpack:///./src/ui/node_modules/redux-persist/es/purgeStoredState.js","webpack:///./src/ui/node_modules/redux-persist/es/persistReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/persistStore.js","webpack:///./src/ui/src/redux/reducers/viewerReducer.js","webpack:///./src/ui/src/redux/reducers/rootReducer.js","webpack:///./src/ui/src/redux/reducers/searchReducer.js","webpack:///./src/ui/src/redux/reducers/userReducer.js","webpack:///./src/ui/src/redux/reducers/documentReducer.js","webpack:///./src/ui/src/redux/reducers/wv3dPropertiesPanelReducer.js","webpack:///./src/ui/src/redux/reducers/officeEditorReducer.js","webpack:///./src/ui/src/redux/reducers/digitalSignatureValidationReducer.js","webpack:///./src/ui/node_modules/redux-persist/es/integration/react.js","webpack:///./src/ui/src/components/LogoBar/LogoBar.js","webpack:///./src/ui/src/components/LogoBar/index.js","webpack:///./src/ui/src/components/Accessibility/Accessibility.js","webpack:///./src/ui/src/components/Accessibility/index.js","webpack:///./src/ui/src/components/HeaderItems/ScrollGroup.js","webpack:///./src/ui/src/components/HeaderItems/ToolGroupButtonsScroll.js","webpack:///./src/ui/src/components/HeaderItems/HeaderItems.js","webpack:///./src/ui/src/components/HeaderItems/index.js","webpack:///./src/ui/src/components/TabsHeader/Tab/Tab.js","webpack:///./src/ui/src/components/TabsHeader/HoverTab/HoverTab.js","webpack:///./src/ui/src/components/TabsHeader/CollapsedTab/CollapsedTab.js","webpack:///./src/ui/src/helpers/useWindowsDimensions.js","webpack:///./src/ui/src/components/TabsHeader/TabsHeader.js","webpack:///./src/ui/src/components/TabsHeader/index.js","webpack:///./src/ui/src/components/Header/Header.js","webpack:///./src/ui/src/components/Header/ToolsHeader.js","webpack:///./src/ui/src/components/Header/HeaderContainer.js","webpack:///./src/ui/src/components/Header/index.js","webpack:///./src/ui/src/helpers/documentContainerHelper.js","webpack:///./src/ui/src/components/PageNavOverlay/PageNavOverlay.js","webpack:///./src/ui/src/components/PageNavOverlay/index.js","webpack:///./src/ui/src/helpers/getActualZoomLevel.js","webpack:///./src/ui/src/helpers/setMaxZoomLevel.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/ReaderModeStylePopup.js","webpack:///./src/ui/src/components/ReaderModeStylePopup/index.js","webpack:///./src/ui/src/components/ReaderModeViewer/ReaderModeViewer.js","webpack:///./src/ui/src/components/ReaderModeViewer/index.js","webpack:///./src/ui/src/components/LazyLoadWrapper/LazyLoadWrapper.js","webpack:///./src/ui/src/components/LazyLoadWrapper/LazyLoadComponents.js","webpack:///./src/ui/src/components/LazyLoadWrapper/index.js","webpack:///./src/ui/src/hooks/useOnMeasurementToolOrAnnotationSelected/useOnMeasurementToolOrAnnotationSelected.js","webpack:///./src/ui/src/hooks/useOnMeasurementToolOrAnnotationSelected/index.js","webpack:///./src/ui/src/hooks/useOnCountMeasurementAnnotationSelected/index.js","webpack:///./src/ui/src/hooks/useOnCountMeasurementAnnotationSelected/useOnCountMeasurementAnnotationSelected.js","webpack:///./src/ui/src/hooks/usePrevious.js","webpack:///./src/ui/src/components/DocumentContainer/DocumentContainer.js","webpack:///./src/ui/src/components/DocumentContainer/index.js","webpack:///./src/ui/src/components/RightPanel/RightPanel.js","webpack:///./src/ui/src/components/RightPanel/index.js","webpack:///./src/ui/src/components/FilePickerHandler/FilePickerHandler.js","webpack:///./src/ui/src/components/FilePickerHandler/index.js","webpack:///./src/ui/src/components/CopyTextHandler/index.js","webpack:///./src/ui/src/components/CopyTextHandler/CopyTextHandler.js","webpack:///./src/ui/src/components/PrintHandler/PrintHandler.js","webpack:///./src/ui/src/components/PrintHandler/index.js","webpack:///./src/ui/src/apis/fontPathHandler.js","webpack:///./src/ui/src/helpers/loadFont.js","webpack:///./src/ui/src/components/FontHandler/index.js","webpack:///./src/ui/src/components/FontHandler/FontHandler.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertyKeyValuePair/PropertyKeyValuePair.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/GeneralValuesSection/GeneralValuesSection.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Group/Group.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/GroupsContainer/GroupsContainer.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/HeaderTitle/HeaderTitle.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/PropertiesElement/PropertiesElement.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanel.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/Wv3dPropertiesPanelContainer.js","webpack:///./src/ui/src/components/Wv3dPropertiesPanel/index.js","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopup.js","webpack:///./src/ui/src/hooks/useOnSnippingAnnotationChangedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnSnippingAnnotationChangedOrSelected/useOnSnippingAnnotationChangedOrSelected.js","webpack:///./src/ui/src/components/SnippingToolPopup/SnippingToolPopupContainer.js","webpack:///./src/ui/src/components/SnippingToolPopup/index.js","webpack:///./src/ui/src/components/EmbeddedJSPopup/EmbeddedJSPopupOption.js","webpack:///./src/ui/src/components/EmbeddedJSPopup/EmbeddedJSPopupSubMenu.js","webpack:///./src/ui/src/components/EmbeddedJSPopup/EmbeddedJSPopupMenu.js","webpack:///./src/ui/src/components/EmbeddedJSPopup/EmbeddedJSPopup.js","webpack:///./src/ui/src/components/EmbeddedJSPopup/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldsChanged/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldsChanged/useOnFormFieldsChanged.js","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicator.js","webpack:///./src/ui/src/components/FormFieldIndicator/FormFieldIndicatorContainer.js","webpack:///./src/ui/src/components/FormFieldIndicator/index.js","webpack:///./src/ui/src/components/MultiTabEmptyPage/MultiTabEmptyPage.js","webpack:///./src/ui/src/components/MultiTabEmptyPage/index.js","webpack:///./src/ui/src/components/MultiViewer/DropArea/DropArea.js","webpack:///./src/ui/src/components/MultiViewer/DropArea/index.js","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/DocumentHeader.js","webpack:///./src/ui/src/components/MultiViewer/DocumentHeader/index.js","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/DocumentContainer.js","webpack:///./src/ui/src/components/MultiViewer/DocumentContainer/index.js","webpack:///./src/ui/src/components/MultiViewer/CompareZoomOverlay/CompareZoomOverlay.js","webpack:///./src/ui/src/components/MultiViewer/CompareZoomOverlay/index.js","webpack:///./src/ui/src/helpers/getDefaultPageLabels.js","webpack:///./src/ui/src/event-listeners/onBeforeDocumentLoaded.js","webpack:///./src/ui/src/event-listeners/onCheckStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onCrossStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onDisplayModeUpdated.js","webpack:///./src/ui/src/helpers/isDataElementPanel.js","webpack:///./src/ui/src/apis/setZoomLevel.js","webpack:///./src/ui/src/helpers/setUIPropertiesForLayers.js","webpack:///./src/ui/src/event-listeners/onLayersUpdated.js","webpack:///./src/ui/src/event-listeners/onDocumentLoaded.js","webpack:///./src/ui/src/constants/overlays.js","webpack:///./src/ui/src/event-listeners/onDocumentUnloaded.js","webpack:///./src/ui/src/event-listeners/onFitModeUpdated.js","webpack:///./src/ui/src/event-listeners/onRotationUpdated.js","webpack:///./src/ui/src/event-listeners/onToolUpdated.js","webpack:///./src/ui/src/event-listeners/onToolModeUpdated.js","webpack:///./src/ui/src/event-listeners/onZoomUpdated.js","webpack:///./src/ui/src/event-listeners/onPageNumberUpdated.js","webpack:///./src/ui/src/event-listeners/onStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onSignatureAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onFileAttachmentAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onAnnotationChanged.js","webpack:///./src/ui/src/event-listeners/onHistoryChanged.js","webpack:///./src/ui/src/event-listeners/onStickyAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onCaretAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onFullScreenChange.js","webpack:///./src/ui/src/event-listeners/onUpdateAnnotationPermission.js","webpack:///./src/ui/src/event-listeners/onPagesUpdated.js","webpack:///./src/ui/src/event-listeners/onLocationSelected.js","webpack:///./src/ui/src/event-listeners/onDotStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onRubberStampAnnotationAdded.js","webpack:///./src/ui/src/event-listeners/onRubberStampsUpdated.js","webpack:///./src/ui/src/apis/disableElements.js","webpack:///./src/ui/src/apis/enableElements.js","webpack:///./src/ui/src/event-listeners/onReadOnlyModeChanged.js","webpack:///./src/ui/src/event-listeners/onPageComplete.js","webpack:///./src/ui/src/event-listeners/onFileAttachmentDataAvailable.js","webpack:///./src/ui/src/helpers/getSignatureDataToStore.js","webpack:///./src/ui/src/event-listeners/onSignatureSaved.js","webpack:///./src/ui/src/event-listeners/onSignatureDeleted.js","webpack:///./src/ui/src/event-listeners/onFormFieldCreationModeStarted.js","webpack:///./src/ui/src/event-listeners/onFormFieldCreationModeEnded.js","webpack:///./src/ui/src/event-listeners/onDigitalSignatureAvailable.js","webpack:///./src/ui/src/event-listeners/onImageContentAdded.js","webpack:///./src/ui/src/event-listeners/onInitialSaved.js","webpack:///./src/ui/src/event-listeners/onInitialDeleted.js","webpack:///./src/ui/src/event-listeners/onContentEditModeStarted.js","webpack:///./src/ui/src/event-listeners/onContentEditModeEnded.js","webpack:///./src/ui/src/event-listeners/onContentBoxEditEnded.js","webpack:///./src/ui/src/event-listeners/onContentBoxEditStarted.js","webpack:///./src/ui/src/event-listeners/onContentEditDocumentDigitalSigned.js","webpack:///./src/ui/src/helpers/contentEditPasswordRequiredHelper.js","webpack:///./src/ui/src/event-listeners/onContentEditPasswordRequired.js","webpack:///./src/ui/src/helpers/eventHandler.js","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/ComparisonButton.js","webpack:///./src/ui/src/components/MultiViewer/ComparisonButton/index.js","webpack:///./src/ui/src/helpers/setupDocViewer.js","webpack:///./src/ui/src/constants/defaultToolStylesMap.js","webpack:///./src/ui/src/helpers/setDefaultToolStyles.js","webpack:///./src/ui/src/helpers/documentViewerHelper.js","webpack:///./src/ui/src/components/MultiViewer/MultiViewer.js","webpack:///./src/ui/src/components/MultiViewer/index.js","webpack:///./src/ui/src/components/WatermarkPanel/TextWatermarkPanel.js","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkList.js","webpack:///./src/ui/src/components/WatermarkPanel/ImageWatermarkPanel.js","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanel.js","webpack:///./src/ui/src/components/WatermarkPanel/WatermarkPanelContainer.js","webpack:///./src/ui/src/components/WatermarkPanel/index.js","webpack:///./src/ui/src/hooks/useResizeObserver/useResizeObserver.js","webpack:///./src/ui/src/hooks/useResizeObserver/index.js","webpack:///./src/ui/src/components/ModularComponents/MobilePanelWrapper/MobilePanelWrapper.js","webpack:///./src/ui/src/components/ModularComponents/MobilePanelWrapper/index.js","webpack:///./src/ui/src/components/Panel/Panel.js","webpack:///./src/ui/src/components/Panel/index.js","webpack:///./src/ui/src/components/ModularComponents/CustomButton/CustomButton.js","webpack:///./src/ui/src/components/ModularComponents/CustomButton/index.js","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/StatefulButton.js","webpack:///./src/ui/src/components/ModularComponents/StatefulButton/index.js","webpack:///./src/ui/src/helpers/responsivenessHelper.js","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomHelper.js","webpack:///./src/ui/src/components/ModularComponents/Helpers/menuItems.js","webpack:///./src/ui/src/helpers/itemToFlyoutHelper.js","webpack:///./src/ui/src/components/ModularComponents/GroupedItems/GroupedItems.js","webpack:///./src/ui/src/helpers/translationKeyMapping.js","webpack:///./src/ui/src/components/ModularComponents/FlyoutItemContainer/FlyoutItemContainer.js","webpack:///./src/ui/src/components/ModularComponents/FlyoutItemContainer/index.js","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/RibbonItem.js","webpack:///./src/ui/src/components/ModularComponents/RibbonItem/index.js","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/FlexDropdown.js","webpack:///./src/ui/src/components/ModularComponents/FlexDropdown/index.js","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/RibbonGroup.js","webpack:///./src/ui/src/components/ModularComponents/RibbonGroup/index.js","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControls.js","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/ZoomControlsContainer.js","webpack:///./src/ui/src/components/ModularComponents/ZoomControls/index.js","webpack:///./src/ui/src/components/ModularComponents/Helpers/responsiveness-helper.js","webpack:///./src/ui/src/components/ModularComponents/ToolButton/ToolButton.js","webpack:///./src/ui/src/components/ModularComponents/ToolButton/index.js","webpack:///./src/ui/src/components/ModularComponents/PageControls/PageControls.js","webpack:///./src/ui/src/components/ModularComponents/PageControls/PageControlsContainer.js","webpack:///./src/ui/src/components/ModularComponents/PageControls/index.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/NewDocument.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/FilePicker.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/Undo.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/Redo.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/Download.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/FullScreen.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/SaveAs.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/Print.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/NewPortfolio.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/Settings.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/FormFieldEdit.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/ContentEdit.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/buttons/OfficeEditor/FontStyleToggleButton.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/ListToggleButton/ListToggleButton.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/ListToggleButton/index.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/PresetButton.js","webpack:///./src/ui/src/components/ModularComponents/PresetButton/index.js","webpack:///./src/ui/src/components/ModularComponents/ViewControls/index.js","webpack:///./src/ui/src/components/ModularComponents/ViewControls/ViewControlsToggleButton.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/FontSizeDropdown/FontSizeDropdown.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/FontSizeDropdown/index.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/FontFaceDropdown/FontFaceDropdown.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/FontFaceDropdown/index.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/StylePresetDropdown/StylePresetDropdown.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/StylePresetDropdown/index.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/CreateTableDropdown/CreateTableDropdown.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/CreateTableDropdown/index.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/OfficeEditorModeDropdown/index.js","webpack:///./src/ui/src/components/ModularComponents/OfficeEditor/OfficeEditorModeDropdown/OfficeEditorModeDropdown.js","webpack:///./src/ui/src/components/ModularComponents/InnerItem/InnerItem.js","webpack:///./src/ui/src/components/ModularComponents/InnerItem/index.js","webpack:///./src/ui/src/components/ResponsiveContainer/ResponsiveContainer.js","webpack:///./src/ui/src/components/ResponsiveContainer/index.js","webpack:///./src/ui/src/components/ModularHeaderItems/ModularHeaderItems.js","webpack:///./src/ui/src/components/ModularHeaderItems/index.js","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeader.js","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/ModularHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/ModularHeader/index.js","webpack:///./src/ui/src/hooks/useFloatingHeaderSelectors/index.js","webpack:///./src/ui/src/hooks/useFloatingHeaderSelectors/useFloatingHeaderSelectors.js","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeader.js","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/FloatingHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/FloatingHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/LeftHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/LeftHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/RightHeader/RightHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/RightHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/BottomHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/BottomHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/TopHeader/TopHeaderContainer.js","webpack:///./src/ui/src/components/ModularComponents/TopHeader/index.js","webpack:///./src/ui/src/components/ModularComponents/Flyout/flyoutHelpers/ZoomText.js","webpack:///./src/ui/src/components/ModularComponents/PageControls/PageControlsFlyout.js","webpack:///./src/ui/src/components/ModularComponents/Flyout/flyoutHelpers/FlyoutItem.js","webpack:///./src/ui/src/components/ModularComponents/Flyout/Flyout.js","webpack:///./src/ui/src/components/ModularComponents/Flyout/index.js","webpack:///./src/ui/src/helpers/flyoutHelper.js","webpack:///./src/ui/src/components/ModularComponents/FlyoutContainer/FlyoutContainer.js","webpack:///./src/ui/src/components/ModularComponents/FlyoutContainer/index.js","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/index.js","webpack:///./src/ui/src/components/ModularComponents/RibbonOverflowFlyout/RibbonOverflowFlyout.js","webpack:///./src/ui/src/components/ModularComponents/ViewControls/ViewControlsFlyout.js","webpack:///./src/ui/src/hooks/useOnTextSelected/index.js","webpack:///./src/ui/src/hooks/useOnTextSelected/useOnTextSelected.js","webpack:///./src/ui/src/hooks/useOnRightClick/useOnRightClick.js","webpack:///./src/ui/src/hooks/useOnRightClick/index.js","webpack:///./src/ui/src/hooks/useOnContextMenuOpen/useOnContextMenuOpen.js","webpack:///./src/ui/src/hooks/useOnContextMenuOpen/index.js","webpack:///./src/ui/src/hooks/useOnAnnotationPopupOpen/useOnAnnotationPopupOpen.js","webpack:///./src/ui/src/hooks/useOnAnnotationPopupOpen/index.js","webpack:///./src/ui/src/hooks/useOnAlignmentPopupOpen/index.js","webpack:///./src/ui/src/hooks/useOnAlignmentPopupOpen/useOnAlignmentPopupOpen.js","webpack:///./src/ui/src/hooks/useOnFormFieldAnnotationAddedOrSelected/index.js","webpack:///./src/ui/src/hooks/useOnFormFieldAnnotationAddedOrSelected/useOnFormFieldAnnotationAddedOrSelected.js","webpack:///./src/ui/src/hooks/useOnInlineCommentPopupOpen/index.js","webpack:///./src/ui/src/hooks/useOnInlineCommentPopupOpen/useOnInlineCommentPopupOpen.js","webpack:///./src/ui/src/hooks/useOnRightClickAnnotation/useOnRightClickAnnotation.js","webpack:///./src/ui/src/hooks/useOnRightClickAnnotation/index.js","webpack:///./src/ui/src/hooks/useOnAnnotationContentOverlayOpen/index.js","webpack:///./src/ui/src/hooks/useOnAnnotationContentOverlayOpen/useOnAnnotationContentOverlayOpen.js","webpack:///./src/ui/src/hooks/useOnLinkAnnotationPopupOpen/index.js","webpack:///./src/ui/src/hooks/useOnLinkAnnotationPopupOpen/useOnLinkAnnotationPopupOpen.js","webpack:///./src/ui/src/hooks/useOnAnnotationCreateSignatureToolMode/useOnAnnotationCreateSignatureToolMode.js","webpack:///./src/ui/src/hooks/useOnAnnotationCreateSignatureToolMode/index.js","webpack:///./src/ui/src/hooks/useOnAnnotationCreateRubberStampToolMode/index.js","webpack:///./src/ui/src/hooks/useOnAnnotationCreateRubberStampToolMode/useOnAnnotationCreateRubberStampToolMode.js","webpack:///./src/ui/src/helpers/setDefaultDisabledElements.js","webpack:///./src/ui/src/redux/officeEditorModularComponents.js","webpack:///./src/ui/src/components/App/App.js","webpack:///./src/ui/src/hooks/useTabFocus.js","webpack:///./src/ui/src/components/App/index.js","webpack:///./src/ui/src/constants/fitMode.js","webpack:///./src/ui/src/constants/toolbar.js","webpack:///./src/ui/src/constants/redactionSearchPatterns.js","webpack:///./src/ui/src/apis/addSearchListener.js","webpack:///./src/ui/src/apis/addSortStrategy.js","webpack:///./src/ui/src/helpers/createPopupAPI.js","webpack:///./src/ui/src/apis/annotationPopup.js","webpack:///./src/ui/src/helpers/castStringToArray.js","webpack:///./src/ui/src/apis/closeElements.js","webpack:///./src/ui/src/apis/contextMenuPopup.js","webpack:///./src/ui/src/apis/disableAnnotations.js","webpack:///./src/ui/src/apis/disableDownload.js","webpack:///./src/ui/src/apis/disableElement.js","webpack:///./src/ui/src/apis/disableFilePicker.js","webpack:///./src/ui/src/apis/disableHighContrastMode.js","webpack:///./src/ui/src/apis/disableLocalStorage.js","webpack:///./src/ui/src/apis/disableMeasurement.js","webpack:///./src/ui/src/apis/disableNativeScrolling.js","webpack:///./src/ui/src/apis/disableNotesPanel.js","webpack:///./src/ui/src/apis/disableNoteSubmissionWithEnter.js","webpack:///./src/ui/src/apis/disablePrint.js","webpack:///./src/ui/src/apis/disableRedaction.js","webpack:///./src/ui/src/apis/disableTextSelection.js","webpack:///./src/ui/src/apis/disableTool.js","webpack:///./src/ui/src/apis/disableTouchScrollLock.js","webpack:///./src/ui/src/apis/displayErrorMessage.js","webpack:///./src/ui/src/apis/downloadPdf.js","webpack:///./src/ui/src/apis/enableAllElements.js","webpack:///./src/ui/src/apis/enableAnnotations.js","webpack:///./src/ui/src/apis/enableDownload.js","webpack:///./src/ui/src/apis/enableElement.js","webpack:///./src/ui/src/apis/enableHighContrastMode.js","webpack:///./src/ui/src/apis/enableFilePicker.js","webpack:///./src/ui/src/apis/enableLocalStorage.js","webpack:///./src/ui/src/apis/enableMeasurement.js","webpack:///./src/ui/src/apis/enableNativeScrolling.js","webpack:///./src/ui/src/apis/enableNotesPanel.js","webpack:///./src/ui/src/apis/enablePrint.js","webpack:///./src/ui/src/apis/enableRedaction.js","webpack:///./src/ui/src/apis/enableTextSelection.js","webpack:///./src/ui/src/apis/enableTool.js","webpack:///./src/ui/src/apis/enableTouchScrollLock.js","webpack:///./src/ui/src/apis/extractPagesWithAnnotations.js","webpack:///./src/ui/src/apis/focusNote.js","webpack:///./src/ui/src/apis/getAnnotationUser.js","webpack:///./src/ui/src/apis/getBBAnnotManager.js","webpack:///./src/ui/src/apis/getCurrentLanguage.js","webpack:///./src/ui/src/apis/getCurrentPageNumber.js","webpack:///./src/ui/src/apis/getFitMode.js","webpack:///./src/ui/src/apis/getLayoutMode.js","webpack:///./src/ui/src/apis/getPageCount.js","webpack:///./src/ui/src/apis/getSelectors.js","webpack:///./src/ui/src/apis/getSideWindowVisibility.js","webpack:///./src/ui/src/apis/getShowSideWindow.js","webpack:///./src/ui/src/apis/getToolMode.js","webpack:///./src/ui/src/apis/getZoomLevel.js","webpack:///./src/ui/src/apis/getMaxZoomLevel.js","webpack:///./src/ui/src/apis/getMinZoomLevel.js","webpack:///./src/ui/src/apis/goToFirstPage.js","webpack:///./src/ui/src/apis/goToLastPage.js","webpack:///./src/ui/src/apis/goToNextPage.js","webpack:///./src/ui/src/apis/goToPrevPage.js","webpack:///./src/ui/src/apis/hideOutlineControl.js","webpack:///./src/ui/src/apis/isAdminUser.js","webpack:///./src/ui/src/apis/isElementDisabled.js","webpack:///./src/ui/src/apis/isElementOpen.js","webpack:///./src/ui/src/apis/isHighContrastModeEnabled.js","webpack:///./src/ui/src/apis/isReadOnly.js","webpack:///./src/ui/src/apis/isToolDisabled.js","webpack:///./src/ui/src/apis/isFullscreen.js","webpack:///./src/ui/src/apis/loadDocument.js","webpack:///./src/ui/src/apis/mentions.js","webpack:///./src/ui/src/apis/menuOverlay.js","webpack:///./src/ui/src/apis/openElement.js","webpack:///./src/ui/src/apis/openElements.js","webpack:///./src/ui/src/apis/print.js","webpack:///./src/ui/src/apis/printInBackground.js","webpack:///./src/ui/src/apis/cancelPrint.js","webpack:///./src/ui/src/apis/registerTool.js","webpack:///./src/ui/src/apis/removeSearchListener.js","webpack:///./src/ui/src/apis/rotateClockwise.js","webpack:///./src/ui/src/apis/rotateCounterClockwise.js","webpack:///./src/ui/src/apis/saveAnnotations.js","webpack:///./src/ui/src/apis/searchText.js","webpack:///./src/ui/src/apis/setWv3dPropertiesPanelModelData.js","webpack:///./src/ui/src/apis/setWv3dPropertiesPanelSchema.js","webpack:///./src/ui/src/apis/setActiveHeaderGroup.js","webpack:///./src/ui/src/apis/setActiveLeftPanel.js","webpack:///./src/ui/src/apis/setTimezone.js","webpack:///./src/ui/src/apis/setAdminUser.js","webpack:///./src/ui/src/apis/setAnnotationUser.js","webpack:///./src/ui/src/constants/mapPaletteToAnnotationColorProperty.js","webpack:///./src/ui/src/constants/mapAnnotationColorPropertyToPalette.js","webpack:///./src/ui/src/apis/setActivePalette.js","webpack:///./src/ui/src/apis/setColorPalette.js","webpack:///./src/ui/src/apis/setPageReplacementModalFileList.js","webpack:///./src/ui/src/apis/setCurrentPageNumber.js","webpack:///./src/ui/src/apis/addCustomModal.js","webpack:///./src/ui/src/apis/setCustomNoteFilter.js","webpack:///./src/ui/src/apis/setInlineCommentFilter.js","webpack:///./src/ui/src/apis/setCustomPanel.js","webpack:///./src/ui/src/apis/exportBookmarks.js","webpack:///./src/ui/src/apis/importBookmarks.js","webpack:///./src/ui/src/apis/setEmbeddedJSPopupStyle.js","webpack:///./src/ui/src/apis/setFitMode.js","webpack:///./src/ui/src/apis/setHeaderItems.js","webpack:///./src/ui/src/apis/setIconColor.js","webpack:///./src/ui/src/apis/setTranslations.js","webpack:///./src/ui/src/apis/setLayoutMode.js","webpack:///./src/ui/src/apis/setMaxZoomLevel.js","webpack:///./src/ui/src/apis/setMinZoomLevel.js","webpack:///./src/ui/src/apis/setNoteDateFormat.js","webpack:///./src/ui/src/apis/setPrintedNoteDateFormat.js","webpack:///./src/ui/src/apis/setNotesPanelSort.js","webpack:///./src/ui/src/apis/setPageLabels.js","webpack:///./src/ui/src/apis/setPrintQuality.js","webpack:///./src/ui/src/apis/setDefaultPrintOptions.js","webpack:///./src/ui/src/apis/setSelectedTab.js","webpack:///./src/ui/src/apis/setSideWindowVisibility.js","webpack:///./src/ui/src/apis/setNotesPanelSortStrategy.js","webpack:///./src/ui/src/apis/setSwipeOrientation.js","webpack:///./src/ui/src/helpers/cssVariablesParser.js","webpack:///./src/ui/src/apis/setTheme.js","webpack:///./src/ui/src/constants/lightWCAG.scss","webpack:///./src/ui/src/constants/highContrastLight.scss","webpack:///./src/ui/src/constants/light.scss","webpack:///./src/ui/src/constants/highContrastDark.scss","webpack:///./src/ui/src/constants/dark.scss","webpack:///./src/ui/src/apis/setToolbarGroup.js","webpack:///./src/ui/src/apis/createToolbarGroup.js","webpack:///./src/ui/src/apis/setZoomList.js","webpack:///./src/ui/src/apis/showOutlineControl.js","webpack:///./src/ui/src/apis/showWarningMessage.js","webpack:///./src/ui/src/apis/syncNamespaces.js","webpack:///./src/ui/src/apis/textPopup.js","webpack:///./src/ui/src/apis/toggleFullScreen.js","webpack:///./src/ui/src/apis/toolDefaultStyleUpdateFromAnnotationPopup.js","webpack:///./src/ui/src/apis/annotationToolStyleSyncing.js","webpack:///./src/ui/src/apis/unregisterTool.js","webpack:///./src/ui/src/apis/updateElement.js","webpack:///./src/ui/src/apis/updateTool.js","webpack:///./src/ui/src/apis/useEmbeddedPrint.js","webpack:///./src/ui/src/apis/useClientSidePrint.js","webpack:///./src/ui/src/apis/setDisplayedSignaturesFilterFunction.js","webpack:///./src/ui/src/apis/setMeasurementUnits.js","webpack:///./src/ui/src/apis/setMaxSignaturesCount.js","webpack:///./src/ui/src/apis/setSignatureFonts.js","webpack:///./src/ui/src/apis/disableReplyForAnnotations.js","webpack:///./src/ui/src/apis/getCustomData.js","webpack:///./src/ui/src/apis/setCustomMeasurementOverlayInfo.js","webpack:///./src/ui/src/apis/setNoteTransformFunction.js","webpack:///./src/ui/src/apis/setCustomNoteSelectionFunction.js","webpack:///./src/ui/src/apis/setCustomApplyRedactionsHandler.js","webpack:///./src/ui/src/apis/setCustomMultiViewerSyncHandler.js","webpack:///./src/ui/src/apis/setCustomMultiViewerAcceptedFileFormats.js","webpack:///./src/ui/src/apis/setSearchResults.js","webpack:///./src/ui/src/apis/setActiveResult.js","webpack:///./src/ui/src/apis/setAnnotationContentOverlayHandler.js","webpack:///./src/ui/src/apis/overrideSearchExecution.js","webpack:///./src/ui/src/apis/reactElements.js","webpack:///./src/ui/src/apis/verificationOptions.js","webpack:///./src/ui/src/apis/notesPanel.js","webpack:///./src/ui/src/apis/thumbnailsPanel.js","webpack:///./src/ui/src/apis/toggleReaderMode.js","webpack:///./src/ui/src/apis/toggleElementVisibility.js","webpack:///./src/ui/src/apis/setAnnotationReadState.js","webpack:///./src/ui/src/apis/getAnnotationReadState.js","webpack:///./src/ui/src/apis/enableClearSearchOnPanelClose.js","webpack:///./src/ui/src/apis/disableClearSearchOnPanelClose.js","webpack:///./src/ui/src/apis/disableFadePageNavigationComponent.js","webpack:///./src/ui/src/apis/enableFadePageNavigationComponent.js","webpack:///./src/ui/src/apis/disablePageDeletionConfirmationModal.js","webpack:///./src/ui/src/apis/enablePageDeletionConfirmationModal.js","webpack:///./src/ui/src/apis/addEventListener.js","webpack:///./src/ui/src/apis/removeEventListener.js","webpack:///./src/ui/src/apis/enableDesktopOnlyMode.js","webpack:///./src/ui/src/apis/disableDesktopOnlyMode.js","webpack:///./src/ui/src/apis/isInDesktopOnlyMode.js","webpack:///./src/ui/src/apis/pageManipulationOverlay.js","webpack:///./src/ui/src/apis/multiPageManipulationControls.js","webpack:///./src/ui/src/apis/thumbnailControlMenu.js","webpack:///./src/ui/src/apis/getWatermarkModalOptions.js","webpack:///./src/ui/src/apis/enableNoteSubmissionWithEnter.js","webpack:///./src/ui/src/apis/willUseEmbeddedPrinting.js","webpack:///./src/ui/src/apis/reloadOutline.js","webpack:///./src/ui/src/apis/fonts.js","webpack:///./src/ui/src/apis/TabManagerAPI.js","webpack:///./src/ui/src/apis/getAvailableLanguages.js","webpack:///./src/ui/src/apis/replaceRedactionSearchPattern.js","webpack:///./src/ui/src/apis/disableApplyCropWarningModal.js","webpack:///./src/ui/src/apis/enableApplyCropWarningModal.js","webpack:///./src/ui/src/apis/disableApplySnippingWarningModal.js","webpack:///./src/ui/src/apis/enableApplySnippingWarningModal.js","webpack:///./src/ui/src/apis/setPresetCropDimensions.js","webpack:///./src/ui/src/apis/setPresetNewPageDimensions.js","webpack:///./src/ui/src/apis/addDateTimeFormat.js","webpack:///./src/ui/src/apis/addRedactionSearchPattern.js","webpack:///./src/ui/src/apis/removeRedactionSearchPattern.js","webpack:///./src/ui/src/apis/getAnnotationStylePopupTabs.js","webpack:///./src/ui/src/apis/setAnnotationStylePopupTabs.js","webpack:///./src/ui/src/apis/getZoomStepFactors.js","webpack:///./src/ui/src/apis/setZoomStepFactors.js","webpack:///./src/ui/src/apis/enableBookmarkIconShortcutVisibility.js","webpack:///./src/ui/src/apis/disableBookmarkIconShortcutVisibility.js","webpack:///./src/ui/src/apis/showFormFieldIndicators.js","webpack:///./src/ui/src/apis/hideFormFieldIndicators.js","webpack:///./src/ui/src/apis/signSignatureWidget.js","webpack:///./src/ui/src/components/ModularComponents/Helpers/validation-helper.js","webpack:///./src/ui/src/apis/ModularComponents/modularHeader.js","webpack:///./src/ui/src/apis/addModularHeaders.js","webpack:///./src/ui/src/apis/ModularComponents/groupedItems.js","webpack:///./src/ui/src/apis/ModularComponents/item.js","webpack:///./src/ui/src/apis/ModularComponents/customButton.js","webpack:///./src/ui/src/apis/ModularComponents/ribbonGroup.js","webpack:///./src/ui/src/apis/ModularComponents/ribbonItem.js","webpack:///./src/ui/src/apis/ModularComponents/pageControls.js","webpack:///./src/ui/src/apis/ModularComponents/presetButton.js","webpack:///./src/ui/src/apis/ModularComponents/statefulButton.js","webpack:///./src/ui/src/apis/ModularComponents/toggleElementButton.js","webpack:///./src/ui/src/apis/ModularComponents/toolButton.js","webpack:///./src/ui/src/apis/ModularComponents/viewControls.js","webpack:///./src/ui/src/apis/ModularComponents/tabPanel.js","webpack:///./src/ui/src/apis/ModularComponents/zoom.js","webpack:///./src/ui/src/apis/ModularComponents/createModularInstance.js","webpack:///./src/ui/src/apis/getModularHeader.js","webpack:///./src/ui/src/apis/getModularHeaderList.js","webpack:///./src/ui/src/apis/getPanels.js","webpack:///./src/ui/src/apis/addPanel.js","webpack:///./src/ui/src/apis/exportModularComponents.js","webpack:///./src/ui/src/apis/setGroupedItemsGap.js","webpack:///./src/ui/src/apis/setGroupedItemsJustifyContent.js","webpack:///./src/ui/src/apis/setGroupedItemsGrow.js","webpack:///./src/ui/src/apis/outlinesPanel.js","webpack:///./src/ui/src/apis/ModularComponents/flyout.js","webpack:///./src/ui/src/apis/ModularComponents/menu.js","webpack:///./src/ui/src/apis/setMultiViewerSyncScrollingMode.js","webpack:///./src/ui/src/apis/setTextSignatureQuality.js","webpack:///./src/ui/src/apis/getTextSignatureQuality.js","webpack:///./src/ui/src/apis/measurementScale.js","webpack:///./src/ui/src/apis/getLocalizedText.js","webpack:///./src/ui/src/apis/getDocumentViewer.js","webpack:///./src/ui/src/apis/multiViewerSync.js","webpack:///./src/ui/src/apis/userSettings.js","webpack:///./src/ui/src/apis/setGrayscaleDarknessFactor.js","webpack:///./src/ui/src/apis/FlyoutsAPI.js","webpack:///./src/ui/src/apis/setClickMiddleware.js","webpack:///./src/ui/src/apis/enableFeatureFlag.js","webpack:///./src/ui/src/apis/disableFeatureFlag.js","webpack:///./src/ui/src/apis/enterMultiViewerMode.js","webpack:///./src/ui/src/apis/exitMultiViewerMode.js","webpack:///./src/ui/src/apis/setPanelWidth.js","webpack:///./src/ui/src/apis/setModularHeaders.js","webpack:///./src/ui/src/apis/setPanels.js","webpack:///./src/ui/src/apis/importModularComponents.js","webpack:///./src/ui/src/apis/setScaleOverlayPosition.js","webpack:///./src/ui/src/apis/getActiveRibbonItem.js","webpack:///./src/ui/src/apis/setActiveRibbonItem.js","webpack:///./src/ui/src/apis/closeToolTip.js","webpack:///./src/ui/src/apis/index.js","webpack:///./src/ui/src/helpers/getBackendPromise.js","webpack:///./src/ui/src/helpers/wildCardMatch.js","webpack:///./src/ui/src/helpers/loadScript.js","webpack:///./src/ui/node_modules/i18next-http-backend/esm/index.js","webpack:///./src/ui/src/helpers/setupI18n.js","webpack:///./src/ui/src/index.js","webpack:///./src/ui/src/helpers/loadCustomCSS.js","webpack:///./src/ui/src/helpers/logDebugInfo.js","webpack:///./src/ui/src/apis/closeDocument.js","webpack:///./src/ui/src/helpers/setEnableAnnotationNumbering.js","webpack:///./src/ui/src/helpers/setUserPermission.js","webpack:///./src/ui/src/helpers/setAutoSwitch.js","webpack:///./src/ui/src/helpers/setupLoadAnnotationsFromServer.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/utils/domUtils.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/js_utils.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/matchesType.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/DragDropManagerImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/equality.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dragOffset.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/actions/registry.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dragOperation.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/refCount.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/dirtiness.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/stateId.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/reducers/index.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/coords.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/DragDropMonitorImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/interfaces.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/contracts.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/classes/HandlerRegistryImpl.js","webpack:///./src/ui/node_modules/dnd-core/dist/esm/createDragDropManager.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useAccessibleFocus.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Choice/Choice.js","webpack:///./src/ui/node_modules/react-i18next/dist/es/withTranslation.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/hooks/useFocus.js","webpack:///./src/ui/node_modules/react-dnd/dist/esm/core/DndProvider.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Check.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/ChevronDown.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Circle.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Close.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Download.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Error.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Hide.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Info.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Menu.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/MultiPage.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/RotateRight.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Search.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Show.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/SinglePage.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Success.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/icons/Warning.js","webpack:///./src/ui/node_modules/@pdftron/webviewer-react-toolkit/dist/esm/components/Icon/Icon.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/native.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/rng.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./src/ui/node_modules/uuid/dist/esm-browser/v4.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","22","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","documentViewerKey","core","getDocumentViewer","getAnnotationManager","getEventToObjectMap","documentViewer","annotManager","contentEditManager","getContentEditManager","historyManager","getAnnotationHistoryManager","editBoxManager","getEditBoxManager","formFieldCreationManager","getFormFieldCreationManager","measurementManager","getMeasurementManager","cursorPropertiesUpdated","selectionPropertiesUpdated","officeDocumentEdited","signatureSaved","signatureDeleted","annotationsLoaded","tap","longTap","click","dblClick","displayPageLocation","keyDown","keyUp","mouseEnter","mouseLeave","mouseLeftDown","mouseLeftUp","mouseMove","mouseRightDown","mouseRightUp","pageComplete","readOnlyModeChanged","searchInProgress","activeSearchResultChanged","searchResultsChanged","textSelected","beginRendering","finishedRendering","beforeDocumentLoaded","displayModeUpdated","documentLoaded","documentUnloaded","fitModeUpdated","rotationUpdated","toolUpdated","toolModeUpdated","zoomUpdated","pageNumberUpdated","pagesUpdated","Events","COMPARE_ANNOTATIONS_LOADED","documentToMerge","position","getDocument","mergeDocument","loadDocument","doc","filename","getFilename","pages","documentViewerMap","Map","getSemanticDiffAnnotations","getDocumentViewers","Array","from","values","number","setDocumentViewer","set","deleteDocumentViewer","setToolMode","toolName","forEach","docViewer","getTool","getToolMode","getToolsFromAllDocumentViewers","map","setDisplayMode","displayModeManager","getDisplayModeManager","displayMode","isVirtualDisplayEnabled","Core","VirtualDisplayMode","DisplayMode","getDisplayMode","rotateClockwise","rotateCounterClockwise","rotatePages","arr","rotation","movePages","pageArray","newLocation","removePages","getFitMode","fitToPage","setFitMode","FitMode","FitPage","fitToWidth","FitWidth","fitToHeight","FitHeight","fitToZoom","Zoom","zoomToMouse","zoomFactor","mouseEvent","xOffset","querySelector","offsetWidth","headerHeight","offsetHeight","headerToolsHeight","yOffset","getZoom","getZoomLevel","zoomTo","x","y","getTotalPages","getPageCount","getCurrentPage","setCurrentPage","pageNumber","getType","getScales","isWebViewerServerDocument","getSelectedText","clearSelection","closeDocument","getToolModeMap","getCurrentUser","getIsAdminUser","isUserAdmin","setIsAdminUser","isAdmin","documentViewers","promoteUserToAdmin","demoteUserFromAdmin","exportAnnotations","options","setCurrentUser","userName","setReadOnly","isReadOnly","enableReadOnlyMode","disableReadOnlyMode","setScrollViewElement","element","setViewerElement","isContinuousDisplayMode","isContinuous","isScrollableDisplayMode","IsScrollable","isSearchResultEqual","resultA","resultB","Search","scrollViewUpdated","canModify","annotation","canModifyContents","deleteAnnotations","getDisplayAuthor","userId","getCompleteRotation","getRotation","getPageInfo","clearSearchResults","getPageSearchResults","displayAdditionalSearchResult","result","displayAdditionalSearchResults","results","getActiveSearchResult","setActiveSearchResult","textSearchInit","searchValue","searchMode","isFullSearch","handleSearchResult","displaySearchResult","getSearchMode","Mode","getResultCode","ResultCode","getPageWidth","getPageHeight","drawAnnotations","overrideCanvas","majorRedraw","overrideContainer","getOutlines","callback","getBookmarks","then","outlines","getSelectedAnnotations","updateCopiedAnnotations","pasteCopiedAnnotations","selectAnnotation","selectAnnotations","annotations","addAnnotations","applyRedactions","isCreateRedactionEnabled","isApplyRedactionEnabled","isAnnotationRedactable","enableRedaction","enable","disableRedaction","drawAnnotationsFromList","setInternalAnnotationsTransform","setPagesUpdatedInternalAnnotationsTransform","loadThumbnailAsync","pageNum","requestId","loadThumbnail","thumb","getSelectedTextQuads","getDisplayModeObject","getScrollViewElement","getAnnotationById","Id","isFullPDFEnabled","isBlendModeSupported","isAnnotationSelected","setAnnotationStyles","newStyles","deselectAnnotation","deselectAnnotations","deselectAllAnnotations","jumpToAnnotation","insertBlankPages","insertBeforeThesePages","width","height","createAnnotationReply","reply","setNoteContents","content","setAnnotationRichTextStyle","style","updateAnnotationRichTextStyle","getAnnotationsList","getAnnotationsLoadedPromise","getPrintablePDF","addEventListener","eventListener","eventToObjectMap","removeEventListener","getIsReadOnly","isReadOnlyModeEnabled","cancelLoadThumbnail","showAnnotations","hideAnnotations","goToOutline","outline","displayBookmark","getViewerElement","setAnnotationCanvasTransform","annotCanvasContext","zoom","getAnnotationCopy","setWatermark","watermarkOptions","getWatermark","getAnnotationByMouseEvent","groupAnnotations","primaryAnnotation","annotationsToGroup","ungroupAnnotations","getNumberOfGroups","getGroupAnnotations","undo","redo","updateAnnotationState","state","stateModel","getFontStyles","FontStyles","syncNamespaces","namespaces","createDocument","sourceDoc","docOptions","setUserBookmarks","bookmarks","setBookmarkIconShortcutVisibility","isEnabled","setBookmarkShortcutToggleOnFunction","setBookmarkShortcutToggleOffFunction","createAndApplyScale","scale","applyTo","replaceScales","originalScales","deleteScale","getScalePrecision","enableAnnotationNumbering","getOfficeEditor","loadBlankOfficeEditorDocument","isValidURI","uri","openURI","isOpenInNewWindow","getAllowedFileExtensions","format","join","SupportedFileFormats","CLIENT","exposedActions","internalActions","exposedSelectors","DataElements","LEGACY_RICH_TEXT_POPUP","ANNOTATION_NOTE_CONNECTOR_LINE","ANNOTATION_STYLE_POPUP","ANNOTATION_STYLE_POPUP_BACK_BUTTON","ANNOTATION_STYLE_POPUP_BACK_BUTTON_CONTAINER","INLINE_COMMENT_POPUP_EXPAND_BUTTON","INLINE_COMMENT_POPUP_CLOSE_BUTTON","LOGO_BAR","COLOR_PALETTE","OPACITY_SLIDER","STROKE_THICKNESS_SLIDER","FONT_SIZE_SLIDER","STYLE_OPTION","STYLE_POPUP","STYLE_PANEL","SIGNATURE_LIST_PANEL","RUBBER_STAMP_PANEL","SCALE_INPUT_CONTAINER","PRECISION_INPUT_CONTAINER","STYLE_POPUP_TEXT_STYLE_CONTAINER","STYLE_POPUP_COLORS_CONTAINER","STYLE_POPUP_LABEL_TEXT_CONTAINER","REDACTION_PANEL","REDACTION_PANEL_TOGGLE","WV3D_PROPERTIES_PANEL","WV3D_PROPERTIES_PANEL_TOGGLE","LEFT_PANEL","OUTLINE_PANEL","STROKE_STYLE_CONTAINER","FILL_COLOR_CONTAINER","OPACITY_CONTAINER","OUTLINE_MULTI_SELECT","OUTLINE_CONTROLS","OUTLINE_ADD_NEW_BUTTON_CONTAINER","OUTLINE_ADD_NEW_BUTTON","OUTLINE_MOVE_UP_BUTTON","OUTLINE_MOVE_DOWN_BUTTON","OUTLINE_MOVE_OUTWARD_BUTTON","OUTLINE_MOVE_INWARD_BUTTON","BOOKMARK_PANEL","BOOKMARK_MULTI_SELECT","BOOKMARK_SHORTCUT_OPTION","BOOKMARK_ADD_NEW_BUTTON_CONTAINER","BOOKMARK_ADD_NEW_BUTTON","NOTES_PANEL","FORM_FIELD_INDICATOR_CONTAINER","WATERMARK_PANEL","WATERMARK_PANEL_TOGGLE","WATERMARK_PANEL_IMAGE_TAB","WATERMARK_PANEL_TEXT_TAB","SEARCH_PANEL","TEXT_EDITING_PANEL","COMPARE_PANEL","PORTFOLIO_PANEL","PORTFOLIO_PANEL_BUTTON","LAYERS_PANEL","SIGNATURE_PANEL","ATTACHMENT_PANEL","MOBILE_PANEL_WRAPPER","PORTFOLIO_ADD_FILE","PORTFOLIO_ADD_FOLDER","PORTFOLIO_ADD_NEW_BUTTON","RICH_TEXT_STYLE_CONTAINER","CALIBRATION_POPUP_BUTTON","CALIBRATION_MODAL","NotesPanel","DefaultHeader","INPUT_CONTAINER","COMMENTS_COUNTER","SORT_ROW","FILTER_ANNOTATION_BUTTON","ADD_REPLY_ATTACHMENT_BUTTON","MULTITABS_EMPTY_PAGE","SCALE_OVERLAY_CONTAINER","MEASUREMENT_OVERLAY","VIEW_CONTROLS_OVERLAY","VIEW_CONTROLS_OVERLAY_BUTTON","SEARCH_OVERLAY","MENU_OVERLAY","MENU_OVERLAY_BUTTON","ZOOM_OVERLAY","ZOOM_OVERLAY_BUTTON","TRACK_CHANGE_OVERLAY_BUTTON","PAGE_MANIPULATION_OVERLAY","PAGE_MANIPULATION_OVERLAY_BUTTON","TOOLS_OVERLAY","STAMP_OVERLAY","SIGNATURE_OVERLAY","REDACTION_OVERLAY","ANNOTATION_CONTENT_OVERLAY","THUMBNAILS_PANEL","THUMBNAILS_CONTROL_ROTATE_POPUP_TRIGGER","THUMBNAILS_CONTROL_MANIPULATE_POPUP","THUMBNAILS_CONTROL_MANIPULATE_POPUP_TRIGGER","THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL","THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL_TRIGGER","RUBBER_STAMP_TAB_HEADER","STANDARD_STAMPS_PANEL_BUTTON","CUSTOM_STAMPS_PANEL_BUTTON","STANDARD_STAMPS_PANEL","CUSTOM_STAMPS_PANEL","CREATE_CUSTOM_STAMP_BUTTON","DELETE_CUSTOM_STAMP_BUTTON","ANNOTATION_POPUP","FORM_FIELD_EDIT_POPUP","TEXT_POPUP","CONTEXT_MENU_POPUP","INLINE_COMMENT_POPUP","TOOL_STYLE_POPUP","RICH_TEXT_POPUP","RICH_TEXT_EDITOR","AUDIO_PLAYBACK_POPUP","ANNOTATION_ALIGNMENT_POPUP","DOCUMENT_CROP_POPUP","SNIPPING_TOOL_POPUP","LINK_ANNOTATION_POPUP","LINK_ANNOTATION_UNLINK_BUTTON","LINK_URI","EMBEDDED_JS_POPUP","MAIN_MENU","VIEWER_CONTROLS_FLYOUT","NOTE_STATE_FLYOUT","BOOKMARK_OUTLINE_FLYOUT","BOOKMARK_FLYOUT","PAGE_REDACT_MODAL","LINK_MODAL","LANGUAGE_MODAL","FILTER_MODAL","CONTENT_EDIT_LINK_MODAL","SCALE_MODAL","INSERT_PAGE_MODAL","SETTINGS_MODAL","SAVE_MODAL","PRINT_MODAL","SIGNATURE_MODAL","SIGNATURE_VALIDATION_MODAL","ERROR_MODAL","PASSWORD_MODAL","CUSTOM_STAMP_MODAL","PAGE_REPLACEMENT_MODAL","LOADING_MODAL","PROGRESS_MODAL","WARNING_MODAL","MODEL3D_MODAL","COLOR_PICKER_MODAL","OPEN_FILE_MODAL","CUSTOM_MODAL","CREATE_PORTFOLIO_MODAL","ANNOTATION_USER_FILTER_PANEL_BUTTON","ANNOTATION_COLOR_FILTER_PANEL_BUTTON","ANNOTATION_TYPE_FILTER_PANEL_BUTTON","ANNOTATION_STATUS_FILTER_PANEL_BUTTON","SETTINGS_GENERAL_BUTTON","SETTINGS_KEYBOARD_BUTTON","SETTINGS_ADVANCED_BUTTON","SETTINGS_LANGUAGE_SECTION","SETTINGS_LANGUAGE_DROPDOWN","SETTINGS_THEME_SECTION","PORTFOLIO_UPLOAD_FILES_TAB","PORTFOLIO_UPLOAD_FOLDER_TAB","PORTFOLIO_MODAL_ADD_ITEM_TRIGGER","SAVED_SIGNATURES_TAB","NOTE_MULTI_SELECT_MODE_BUTTON","NOTE_MULTI_REPLY_BUTTON","NOTE_MULTI_STATE_BUTTON","NOTE_MULTI_STYLE_BUTTON","NOTE_MULTI_GROUP_BUTTON","NOTE_MULTI_UNGROUP_BUTTON","NOTE_MULTI_DELETE_BUTTON","SAVED_SIGNATURES_PANEL_BUTTON","SAVED_INTIALS_PANEL_BUTTON","SAVED_FULL_SIGNATURES_PANEL","SAVED_INITIALS_PANEL","MULTI_VIEWER_SAVE_DOCUMENT_BUTTON","OFFICE_EDITOR_TOOLS_HEADER","OFFICE_EDITOR_TOOLS_HEADER_INSERT_IMAGE","OFFICE_EDITOR_TOOLS_HEADER_INSERT_TABLE","OFFICE_EDITOR_FILE_NAME","OFFICE_EDITOR_CUT","OFFICE_EDITOR_COPY","OFFICE_EDITOR_PASTE","OFFICE_EDITOR_PASTE_WITHOUT_FORMATTING","OFFICE_EDITOR_DELETE","OFFICE_EDITOR_INSERT_ROW_ABOVE","OFFICE_EDITOR_INSERT_ROW_BELOW","OFFICE_EDITOR_INSERT_COLUMN_RIGHT","OFFICE_EDITOR_INSERT_COLUMN_LEFT","OFFICE_EDITOR_DELETE_ROW","OFFICE_EDITOR_DELETE_COLUMN","OFFICE_EDITOR_DELETE_TABLE","OFFICE_EDITOR_PAGE_BREAK","INSERT_BLANK_PAGE_TAB","INSERT_FROM_FILE_TAB","INSERT_BLANK_PAGE_PANEL","INSERT_FROM_FILE_PANEL","VIEW_TOOLBAR_GROUP","ANNOTATE_TOOLBAR_GROUP","SHAPES_TOOLBAR_GROUP","REDACT_TOOLBAR_GROUP","INSERT_TOOLBAR_GROUP","MEASURE_TOOLBAR_GROUP","EDIT_TOOLBAR_GROUP","EDIT_TEXT_TOOLBAR_GROUP","FILL_AND_SIGN_TOOLBAR_GROUP","FORMS_TOOLBAR_GROUP","TOOLBAR_GROUPS","PRINT_QUALITY","PRINT_WATERMARK","CREATE_PORTFOLIO_BUTTON","NEW_DOCUMENT_BUTTON","FILE_PICKER_BUTTON","DOWNLOAD_BUTTON","SAVE_AS_BUTTON","PRINT_BUTTON","FULLSCREEN_BUTTON","SETTINGS_BUTTON","UNDO_PRESET_BUTTON","REDO_PRESET_BUTTON","NEW_DOCUMENT_PRESET_BUTTON","FILE_PICKER_PRESET_BUTTON","DOWNLOAD_PRESET_BUTTON","FULLSCREEN_PRESET_BUTTON","SAVE_AS_PRESET_BUTTON","PRINT_PRESET_BUTTON","CREATE_PORTFOLIO_PRESET_BUTTON","SETTINGS_PRESET_BUTTON","FORM_FIELD_EDIT_PRESET_BUTTON","CONTENT_EDIT_PRESET_BUTTON","CREATE_RUBBER_STAMP_BUTTON","ReactReduxContext","createContext","createListenerCollection","batch","first","last","clear","notify","listener","next","listeners","subscribe","isSubscribed","prev","nullListeners","createSubscription","store","parentSub","unsubscribe","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","notifyNestedSubs","Boolean","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","_ref","context","children","contextValue","previousState","getState","Context","Provider","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","action","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","apply","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","current","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","forwardRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","props","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","didStoreComeFromProps","dispatch","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","ref","Connect","memo","forwarded","is","shallowEqual","objA","objB","keysA","keys","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","_loop","actionCreator","arguments","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","match","arg","factories","strictEqual","a","b","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","stack","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","PLACEMENT","TOP","BOTTOM","LEFT","RIGHT","POSITION","START","CENTER","END","JUSTIFY_CONTENT","SPACE_BETWEEN","SPACE_AROUND","SPACE_EVENLY","DIRECTION","ROW","COLUMN","ITEM_TYPE","MODULAR_HEADER","BUTTON","STATEFUL_BUTTON","GROUPED_ITEMS","RIBBON_ITEM","DIVIDER","TOGGLE_BUTTON","RIBBON_GROUP","TOOL_BUTTON","ZOOM","FLYOUT","PAGE_CONTROLS","PRESET_BUTTON","VIEW_CONTROLS","TABS_PANEL","FONT_SIZE_DROPDOWN","FONT_FACE_DROPDOWN","STYLE_PRESET_DROPDOWN","CREATE_TABLE_DROPDOWN","OFFICE_EDITOR_MODE_DROPDOWN","FLYOUT_ITEM_TYPES","ZOOM_OPTIONS_BUTTON","ZOOM_BUTTON","PAGE_NAVIGATION_BUTTON","UNDO_BUTTON","REDO_BUTTON","TAB_PANEL_ITEM","LABEL","PREBUILT_FLYOUTS","OVERFLOW_FLYOUTS","RESPONSIVE_ITEMS","BUTTON_TYPES","OPACITY_MODES","STATIC","DYANMIC","OPACITY_LEVELS","FULL","LOW","NONE","DEFAULT_STYLES","PADDING","WIDTH","BORDER_COLOR","BORDER_STYLE","PRESET_BUTTON_TYPES","UNDO","REDO","NEW_DOCUMENT","FILE_PICKER","DOWNLOAD","FULLSCREEN","SAVE_AS","PRINT","CREATE_PORTFOLIO","SETTINGS","FORM_FIELD_EDIT","CONTENT_EDIT","RENAME","BOLD","ITALIC","UNDERLINE","ORDERED_LIST","UNORDERED_LIST","DEFAULT_GAP","TO_STRING_TAG_SUPPORT","defineBuiltIn","toString","unsafe","toIndexedObject","addToUnscopables","Iterators","InternalStateModule","f","defineIterator","IS_PURE","DESCRIPTORS","setInternalState","getInternalState","getterFor","iterated","kind","this","index","done","Arguments","charAt","String","string","point","global","DOMIterables","DOMTokenListPrototype","ArrayIteratorMethods","createNonEnumerableProperty","wellKnownSymbol","ITERATOR","TO_STRING_TAG","ArrayValues","handlePrototype","CollectionPrototype","COLLECTION_NAME","METHOD_NAME","defineWellKnownSymbol","$","uncurryThis","hasOwn","isCallable","isPrototypeOf","copyConstructorProperties","NativeSymbol","SymbolPrototype","description","EmptyStringDescriptionStore","SymbolWrapper","constructor","NATIVE_SYMBOL","symbolToString","symbolValueOf","valueOf","regexp","replace","stringSlice","configurable","symbol","desc","forced","FUNCTION_NAME_EXISTS","EXISTS","FunctionPrototype","Function","functionToString","nameRE","regExpExec","exec","isArray","isConstructor","isObject","toAbsoluteIndex","lengthOfArrayLike","createProperty","arrayMethodHasSpeciesSupport","un$Slice","HAS_SPECIES_SUPPORT","SPECIES","max","Math","proto","start","end","Constructor","O","k","fin","classNames","classes","argType","inner","default","stat","checkCorrectnessOfIteration","iterable","rootNode","getRootNode","elementList","isApryseWebViewerWebComponent","getElementsByTagName","findNestedWebComponents","tagName","root","elements","querySelectorAll","el","shadowRoot","foundNode","mounted","getInstanceID","host","getAttribute","getInstanceNode","sham","isForced","inheritIfRequired","isSymbol","toPrimitive","fails","getOwnPropertyNames","getOwnPropertyDescriptor","thisNumberValue","trim","NativeNumber","NumberPrototype","TypeError","arraySlice","charCodeAt","toNumeric","primValue","toNumber","argument","third","radix","maxCode","digits","code","it","NaN","parseInt","NumberWrapper","dummy","split","j","defineSymbolToPrimitive","dateToPrimitive","TO_PRIMITIVE","DatePrototype","Date","isOldIE","atob","getTarget","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","list","idCountMap","identifiers","item","id","base","count","concat","obj","css","media","sourceMap","references","updater","addStyle","insertStyleElement","attributes","nonce","insert","textStore","replaceText","replacement","filter","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","JSON","stringify","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","splice","useSourceMap","cssMapping","sourceMapping","sourceURLs","sources","source","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","Measurement","Ribbons","Annotations","Download","FilePicker","LocalStorage","InlineComment","RightClickAnnotationPopup","Print","Redaction","TextSelection","TouchScrollLock","Copy","MultipleViewerMerging","ThumbnailMerging","ThumbnailReordering","ThumbnailMultiselect","PageNavigation","MouseWheelZoom","MathSymbols","OutlineEditing","NotesPanelVirtualizedList","NotesShowLastUpdatedDate","MultiTab","ChangeView","ContentEdit","MultiViewerMode","SideBySideView","Initials","SavedSignaturesTab","WatermarkPanel","WatermarkPanelImageTab","Panel","LegacyRichTextPopup","ComparePages","Portfolio","isUndefined","val","paramCorrections","paramsToStringify","param","defaultValue","defaultType","correctedParam","includes","getHashParameter","$filter","callbackfn","toObject","nativeKeys","panelMinWidth","RESIZE_BAR_WIDTH","panelNames","OUTLINE","SIGNATURE","BOOKMARKS","FILE_ATTACHMENT","THUMBNAIL","LAYERS","TEXT_EDITING","CHANGE_LIST","STYLE","REDACTION","SEARCH","NOTES","TABS","SIGNATURE_LIST","RUBBER_STAMP","PORTFOLIO","panelData","icon","title","PANEL_SIZES","FULL_SIZE","HALF_SIZE","SMALL_SIZE","arraySpeciesCreate","V8_VERSION","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","array","SPECIES_SUPPORT","isConcatSpreadable","spreadable","arity","len","E","A","check","globalThis","self","Icon","React","createRef","updateSvg","prevProps","glyph","isInlineSvg","domElement","svg","DOMParser","parseFromString","indexOf","svgElement","className","color","fillColor","strokeColor","disabled","require","dangerouslySetInnerHTML","__html","PureComponent","PropTypes","isRequired","bool","opera","maxthon","edge","isWebComponent","isMobile","innerWidth","MOBILE_SIZE","clientWidth","isIEEdge","navigator","userAgent","isIE11","isFirefox","toLowerCase","isIE","checkForIOS13","platform","maxTouchPoints","isIOS","isIOSFullScreenSupported","documentElement","webkitRequestFullScreen","isAndroid","isMobileDevice","isMobileDeviceFunc","isMac","appVersion","isWindows","isSafari","test","isChromeOniOS","isFirefoxOniOS","annotationMapKeys","FREE_HAND","FREE_HAND_HIGHLIGHT","FREE_TEXT","MARK_INSERT_TEXT","MARK_REPLACE_TEXT","DATE_FREE_TEXT","DISTANCE_MEASUREMENT","PERIMETER_MEASUREMENT","ARC_MEASUREMENT","RECTANGULAR_AREA_MEASUREMENT","CLOUDY_RECTANGULAR_AREA_MEASUREMENT","AREA_MEASUREMENT","ELLIPSE_MEASUREMENT","COUNT_MEASUREMENT","CALLOUT","LINE","ARROW","POLYGON","CLOUD","HIGHLIGHT","SQUIGGLY","STRIKEOUT","RECTANGLE","ELLIPSE","POLYLINE","STICKY_NOTE","STAMP","IMAGE","EDIT","PAN","CONTENT_EDIT_TOOL","ADD_IMAGE_CONTENT","ADD_PARAGRAPH_TOOL","TEXT_SELECT","MARQUEE_ZOOM_TOOL","MULTI_STYLE","ERASER","CROP_PAGE","SOUND","THREE_D_ANNOTATION","TEXT_FIELD","SIGNATURE_FORM_FIELD","CHECK_BOX_FORM_FIELD","RADIO_BUTTON_FORM_FIELD","LIST_BOX_FORM_FIELD","COMBO_BOX_FORM_FIELD","ARC","CHANGE_VIEW","TRACKED_CHANGE","iconColor","validStyleTabs","currentStyleTab","styleTabs","toolNames","annotationCheck","FreeHandAnnotation","Subject","i18next","FreeTextAnnotation","getIntent","Intent","FreeText","CaretAnnotation","hasLineEndings","LineAnnotation","IT","Measure","PolylineAnnotation","ArcAnnotation","PolygonAnnotation","isRectangularPolygon","EllipseAnnotation","StickyAnnotation","getCustomData","FreeTextCallout","Style","TextHighlightAnnotation","OFFICE_EDITOR_TRACKED_CHANGE_KEY","TextUnderlineAnnotation","TextSquigglyAnnotation","TextStrikeoutAnnotation","RedactionAnnotation","RectangleAnnotation","StampAnnotation","ViewState","ToolName","ADD_PARAGRAPH","currentPalette","availablePalettes","FileAttachmentAnnotation","SoundAnnotation","Model3DAnnotation","mapToolNameToKey","find","mapAnnotationToKey","mapAnnotationToToolName","mapKeyToToolNames","copyMapWithDataProperties","properties","reduce","newMap","register","tool","annotationConstructor","customAnnotCheckFunc","buttonImage","toolObject","defaults","getDataWithKey","getMap","updateAnnotationStylePopupTabs","annotationKey","newAnnotationStyleTabs","initialTab","Set","styleTab","AnnotationKeys","STICKYNOTE","AnnotationStylePopupTabs","TEXT_COLOR","STROKE_COLOR","FILL_COLOR","NOOP","stopPropagation","preventDefault","propTypes","isActive","mediaQueryClassName","img","label","oneOfType","dataElement","onClick","func","onDoubleClick","onMouseUp","isSubmitType","ariaLabel","ariaControls","role","hideTooltipShortcut","useI18String","shouldPassActiveDocumentViewerKeyToOnClickHandler","Button","useSelector","selectors","isElementDisabled","getFeatureFlags","customizableUI","getCustomElementOverrides","getActiveDocumentViewerKey","removeElement","isCustomUI","customOverrides","activeDocumentViewerKey","disable","tabIndex","iconClassName","forceTooltipPosition","hideOnClick","onClickAnnouncement","useTranslation","customOverrideClasses","hidden","screenSize","onClickHandler","aLabel","aControls","shortcutKey","ariaKeyshortcuts","shortcutAria","isBase64","startsWith","imgToShow","actuallyDisabled","createAnnouncement","getClickMiddleWare","ClickedItemTypes","isGlyph","shouldRenderTooltip","active","data-element","aria-label","aria-controls","aria-keyshortcuts","aria-expanded","Tooltip","hideShortcut","forcePosition","nativeGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","getPrototypeOf","setPrototypeOf","$map","setGlobal","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","noTargetGet","$includes","_objectSpread","ownKeys","getOwnPropertySymbols","sym","consoleLogger","log","args","output","warn","baseLogger","Logger","concreteLogger","init","prefix","logger","debug","_len","_key","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","events","_this","cloned","observer","_cloned","defer","res","rej","makeString","getLastOfPath","path","Empty","cleanKey","canNotTraverseDeeper","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","prop","regexEscape","str","_entityMap","isIE10","_EventEmitter","ResourceStore","defaultNS","keySeparator","lng","silent","addNamespaces","emit","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","handle","translator","processor","process","checkedLoadedFor","Translator","services","language","interpolation","resolved","nsSeparator","interpolator","nestingRegexp","parts","lastKey","_this2","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","fallbackValue","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","parse","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","pop","returnNull","returnEmptyString","resourceStore","option","substring","capitalize","toUpperCase","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","deprecate","isSupportedCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","1","Number","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","createRules","rules","numbers","plurals","PluralResolver","rule","getRule","idx","noAbs","abs","simplifyPluralSuffix","returnSuffix","prepend","compatibilityJSON","Interpolator","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","RegExp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","missingInterpolationHandler","regex","safeValue","todo","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","elem","v","Connector","backend","queue","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","addResourceBundle","q","_getLastOfPath2","what","fcName","tried","wait","read","queueLoad","loadOne","prepareLoading","_this5","isUpdate","initImmediate","nonExplicitWhitelist","preload","pluralSeparator","partialBundledLanguages","ret","tDescription","_format","transformOptions","noop","I18n","external","isInitialized","isClone","createClassOnDemand","ClassOrObject","lu","on","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","changeLanguage","usedCallback","append","isLanguageChangingTo","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","async","detect","fixedT","opts","rest","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","clone","membersToCopy","isEditingFreetext","annot","some","getEditor","hasFocus","activeElement","HTMLInputElement","HTMLTextAreaElement","Shortcuts","ROTATE_CLOCKWISE","ROTATE_COUNTER_CLOCKWISE","NUMPAD_ROTATE_CLOCKWISE","NUMPAD_ROTATE_COUNTER_CLOCKWISE","COPY","PASTE","OPEN_FILE","ZOOM_IN","ZOOM_OUT","NUMPAD_ZOOM_IN","NUMPAD_ZOOM_OUT","FIT_SCREEN_WIDTH","BOOKMARK","PREVIOUS_PAGE","NEXT_PAGE","UP","DOWN","SWITCH_PAN","SELECT","FREEHAND","FREETEXT","HOME","CLOSE","keyMap","shortcut","aria","Keys","CTRL_SHIFT_EQUAL","COMMAND_SHIFT_EQUAL","CTRL_SHIFT_MINUS","COMMAND_SHIFT_MINUS","CTRL_SHIFT_NUM_ADD","COMMAND_SHIFT_NUM_ADD","CTRL_SHIFT_NUM_SUBTRACT","COMMAND_SHIFT_NUM_SUBTRACT","CTRL_C","COMMAND_C","CTRL_V","COMMAND_V","CTRL_Z","COMMAND_Z","CTRL_Y","COMMAND_SHIFT_Z","CTRL_O","COMMAND_O","CTRL_F","COMMAND_F","CTRL_EQUAL","COMMAND_EQUAL","CTRL_MINUS","COMMAND_MINUS","CTRL_NUM_ADD","COMMAND_NUM_ADD","CTRL_NUM_SUBTRACT","COMMAND_NUM_SUBTRACT","CTRL_0","COMMAND_0","CTRL_P","COMMAND_P","CTRL_B","COMMAND_B","ENTER","PAGE_UP","PAGE_DOWN","SPACE","ESCAPE","P","C","F","I","L","N","R","Q","T","S","G","H","K","U","X","concatKeys","splitKey","closeToolTipFunc","ShortcutKeys","ToolNameHotkeyMap","AnnotationEdit","Pan","AnnotationCreateArrow","AnnotationCreateCallout","AnnotationEraserTool","AnnotationCreateFreeHand","AnnotationCreateStamp","AnnotationCreateLine","AnnotationCreateSticky","AnnotationCreateEllipse","AnnotationCreateRectangle","AnnotationCreateFreeText","AnnotationCreateSignature","AnnotationCreateTextSquiggly","AnnotationCreateTextHighlight","AnnotationCreateTextStrikeout","AnnotationCreateTextUnderline","AnnotationCreateRubberStamp","unbindedHotkeysMap","defaultHotkeysScope","HotkeysManager","initialize","hotkeys","keyHandlerMap","createKeyHandlerMap","prevToolName","shortcutKeyMap","getShortcutKeyMap","didInitializeAllKeys","setScope","formBuilderDisabledKeys","handler","enableHotkey","_handler","keyup","keydown","scope","isEscape","currentTarget","toLocaleLowerCase","off","unbind","hotkeyName","ToolNames","Tools","copyText","actions","closeElement","isFocusingElement","openFilePicker","isElementOpen","toggleElement","isMultiViewerMode","zoomIn","zoomOut","print","isEmbedPrintSupported","getSortStrategy","getColorMap","openElement","setActiveLeftPanel","currentPageIndex","addBookmark","getNumberOfPagesToNavigate","scrollViewElement","scrollHeight","clientHeight","scrollTop","currentPage","createToolHotkeyHandler","setToolModeAndGroup","closeElements","featureFlags","setActiveGroupedItemWithTool","STICKY","setToolbarGroup","sigToolButton","sigModalButton","createTextAnnotationAndSelect","pageCount","openElements","getOpenElements","currentToolName","isSignatureModalOpen","setShortcutKey","setShortcutKeyMap","hasConflict","command","enableShortcut","disableShortcut","setCloseToolTipFunc","getCloseToolTipFunc","PRIORITY_THREE","PRIORITY_TWO","PRIORITY_ONE","notARegExp","requireObjectCoercible","correctIsRegExpLogic","stringIndexOf","searchString","fireEvent","eventName","CustomEvent","detail","bubbles","cancelable","createEvent","initEvent","dispatchEvent","fireError","LOAD_ERROR","nativeGetOwnPropertyDescriptor","FAILS_ON_PRIMITIVES","defineProperties","getOwnPropertyDescriptorModule","getOwnPropertyDescriptors","isMobileSize","useMedia","isTabletSize","TABLET_SIZE","isTabletAndMobileSize","isDesktopSize","NATIVE_BIND","fn","assign","un$Reverse","reverse","getBuiltIn","setToStringTag","FONT_SIZE","MAX","MIN","LINE_SPACING_OPTIONS","JUSTIFICATION_OPTIONS","Left","Center","Right","Both","LIST_OPTIONS","Ordered","Unordered","DEFAULT_POINT_SIZE","OfficeEditorListStylePresets","Document","OFFICE_BULLET_OPTIONS","enum","BULLET","BULLET_SQUARE","SQUARE_BULLET","DIAMOND","CHECK","OFFICE_NUMBER_OPTIONS","NUMBER_LATIN_ROMAN_1","NUMBER_DECIMAL","NUMBER_LATIN_ROMAN_2","LATIN_ROMAN","ROMAN_LATIN_NUMBER","OFFICE_EDITOR_EDIT_MODE","EDITING","REVIEWING","VIEW_ONLY","PREVIEW","OFFICE_EDITOR_SCOPE","ELEMENTS_TO_DISABLE_IN_OFFICE_EDITOR","ELEMENTS_TO_ENABLE_IN_OFFICE_EDITOR","AVAILABLE_POINT_SIZES","AVAILABLE_STYLE_PRESET_MAP","fontSize","workerTypes","PDF","OFFICE","LEGACY_OFFICE","OFFICE_EDITOR","WEBVIEWER_SERVER","XOD","ALL","node","DataElementWrapper","useIsDisabledWithDefaultValue","invariant","condition","argIndex","framesToPop","__assign","__rest","propertyIsEnumerable","minZoom","maxZoom","getMinZoomLevel","getMaxZoomLevel","isOfficeEditorMode","defaultZoomList","setMinZoomLevel","setMaxZoomLevel","createFeatureAPI","$IndexOf","arrayMethodIsStrict","un$IndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","fromIndex","getStep","currentZoomFactor","zoomFactorRangesMap","zoomStepFactors","rangesMap","sort","startZoom","zoomStepFactor","nextZoomStepFactor","step","convertZoomStepFactorsToRangesMap","instance","UI","getZoomStepFactors","zoomFactorRanges","ranges","rangeLowBound","rangeHighBound","isCurrentZoomFactorInRange","parseFloat","getViewCenterAfterScale","documentContainer","documentWrapper","clientX","clientY","innerHeight","scrollLeft","offsetLeft","offsetTop","zoomStepHistory","storedZoomFactor","zoomToInternal","newZoomFactor","resetZoomStepHistory","min","shared","uid","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","aConstructor","anObject","nativeConstruct","ObjectPrototype","NEW_TARGET_BUG","ARGS_BUG","FORCED","construct","Target","newTarget","$args","directionMap","items","images","columns","currentSelectionKey","translationPrefix","getTranslationLabel","onClickItem","getCustomItemStyle","applyCustomStyleToButton","placeholder","maxHeight","getKey","getDisplayValue","onOpened","arrowDirection","disableFocusing","renderItem","renderSelectedItem","showLabelInList","Dropdown","hasInput","displayButton","customDataValidator","isSearchEnabled","getTranslatedDisplayValue","tReady","ready","overlayRef","useRef","buttonRef","inputRef","useState","isOpen","setIsOpen","inputVal","setInputVal","hasImages","onClose","useCallback","onToggle","focus","overlayBounds","getBoundingClientRect","buttonBounds","scrollViewRect","closest","horizontalOpening","bottomTop","top","topBottom","bottom","offset","left","useEffect","onBlur","select","useArrowFocus","onClickOutside","contains","useOnClickOutside","dropdownItems","optionIsSelected","selectedItem","selectedItemDisplay","onClickDropdownItem","displayValue","getDropdownStyles","maxheight","dropdownItemStyles","lineHeight","useMemo","image","translatedDisplayValue","buttonStyle","scrollItemsStyle","createDropdownButton","relatedTarget","dataset","onChange","onKeyDown","itemToClick","blur","onMouseDown","onTouchEnd","cloneElement","displayDropdownAsList","data-testid","table","row","NAME","Prototype","NATIVE_ARRAY_BUFFER","classof","tryToString","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","KEY","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","IndexedObject","un$Join","ES3_STRINGS","separator","$find","SKIPS_HOLES","un$DateToString","getTime","$values","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","Attributes","writable","toolGroup","getToolButtonObject","group","groupedItemsWithTool","getGroupedItemsWithSelectedTool","setLastPickedToolAndGroup","setLastPickedToolForGroupedItems","toolStylesExist","setActiveToolGroup","u","h","M","weekdays","months","g","z","utcOffset","floor","date","year","month","add","ceil","w","D","ms","_","locale","$L","utc","$u","$x","$offset","$d","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","$set","daysInMonth","round","subtract","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","Z","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","isCustomizableUIEnabled","getHashParameters","getDefaultOptions","docId","documentId","customLoadingProgressFunction","onLoadingProgress","percent","setLoadingProgress","password","transformPasswordOption","xodOptions","extractXodOptions","userDefinedOnErrorCallback","onError","enableOfficeEditing","disableFeatureFlag","FeatureFlags","CUSTOMIZABLE_UI","startOffline","azureWorkaround","webviewerServerURL","fallbackToClientSide","singleServerMode","webviewerServerRangeRequests","forceClientSideInit","disableWebsockets","cacheKey","officeOptions","rasterizerOptions","streaming","useDownloader","backendType","loadAsPDF","passwordChecked","attempt","checkPassword","setPasswordAttempts","setCheckPasswordFunction","decryptOptions","decrypt","Encryption","touchType","TouchEventManager","container","allowSwipe","allowHorizontalSwipe","allowVerticalSwipe","verticalMomentum","horziontalMomentum","verticalLock","horziontalLock","enableTouchScrollLock","startingScrollLeft","startingScrollTop","_useNativeScroll","localStorage","getItem","touch","distance","horizontalDistance","verticalDistance","handleTouchStart","handleTouchMove","handleTouchEnd","handleTouchCancel","passive","terminate","isStylusModeEnabled","touches","scrollWidth","viewerWidth","isDoubleTap","getDistance","touchStartTimeStamp","now","stopMomentumScroll","touchMoveCount","doubleTapTimeout","t1","t2","docX","docY","previousPinchScale","marginLeft","marginTop","getComputedStyle","transformOrigin","axisLockThreshold","isScrollingVertically","isScrollingHorziontally","canLockScrolling","doesPagesFitOnScreen","alreadyLocked","handleScroll","useNativeScroll","scrollTo","panTool","isPanning","isPinching","transform","isStylusModeDisabled","isUsingAnnotationToolsAndStylusIsDisabled","isUsingAnnotationTools","isUsingPenAndStylusEnabled","isUsingPen","reachedBoundary","reachedLeft","reachedTop","reachedRight","reachedBottom","threshold","swipedToBottom","swipedToTop","swipedToRight","swipedToLeft","totalPages","numberOfPagesToNavigate","isFirstPage","isLastPage","isSingleDisplayMode","shouldGoToPrevPage","shouldGoToNextPage","touchDuration","startMomentumScroll","annotationUnderMouse","isFreeTextUnderMouse","oldZoom","getPointAfterScale","trigger","margin","currentIteration","initScrollLeft","initScrollTop","dHorizontal","dVertical","requestAnimationFrame","momentumScroll","nextLeft","easeOutQuad","nextTop","isNotNewTouchEvent","horzDiff","vertDiff","isMomentumScrollAlmostFinish","currentTime","startValue","changeInValue","duration","hypot","pointerType","setItem","makeBuiltIn","simple","connect","isNotClickableSelector","ActionButton","PROPER_FUNCTION_NAME","PROPER","$toString","getRegExpFlags","n$ToString","NOT_GENERIC","flags","INCORRECT_NAME","$some","COMMON_COLORS","CUSTOM_UI_VARS","BASIC_PALETTE","toLength","SignatureModes","FULL_SIGNATURE","SignatureCreateTool","SignatureTypes","INITIALS","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","that","specificCreate","boundFunction","every","findIndex","filterReject","fixRegExpWellKnownSymbolLogic","toIntegerOrInfinity","advanceStringIndex","getMethod","getSubstitution","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","nativeReplace","maybeCallNative","UNSAFE_SUBSTITUTE","replaceValue","replacer","rx","functionalReplace","fullUnicode","unicode","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","groups","replacerArgs","re","ToggleElementButton","setFlyoutTriggerRef","flyoutMap","getFlyoutMap","isToggleElementDisabled","isButtonDisabled","isElementActive","setIsElementActive","setIsElementDisabled","onClickFocusWrapped","useFocusHandler","setFlyoutToggleElement","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","debounce","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","$parseInt","deleteCount","insertCount","actualDeleteCount","to","actualStart","argumentsLength","LocalStorageManager","localStorageEnabled","DISABLED_TOOL_GROUPS","DISABLED_TOOLS_KEYWORDS","SYNC_MODES","aFunction","method","TabsContext","Tabs","Tab","useContext","getSelectedTab","isDisabled","isSelected","propsToInject","selected","setSelectedTab","isTabSelected","TabHeader","TabPanel","display","isTabPanelSelected","mapDisplayModeToNumberOfPages","Single","Continuous","Facing","FacingContinuous","CoverFacing","Cover","nextPageNumber","totalPageNumber","currPageNumber","nextPage","aCallable","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","un$Sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","chr","fromCharCode","comparefn","itemsLength","arrayLength","getSortCompare","$reduce","CHROME_VERSION","IS_NODE","$findIndex","nativeEvent","setFocusedElementsStack","setKeyboardOpen","pushFocusedElement","browserDocument","getElementById","has","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","_extends","propertyIsEnumerableModule","createPropertyDescriptor","definePropertyModule","TAG","findFocusableIndex","toFind","escapePressListener","onEscapeFunction","classList","parent","body","innerText","enumerableOnly","symbols","_objectSpread2","formatProdErrorMessage","$$observable","observable","randomString","random","ActionTypes","INIT","PROBE_UNKNOWN_ACTION","isPlainObject","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","compose","funcs","applyMiddleware","middlewares","createStore","_dispatch","middlewareAPI","chain","middleware","getModularItem","viewer","modularComponents","getNestedGroupedItems","groupedItems","nestedItems","filterNestedItems","itemDetails","getParentGroupedItems","parentGroupedItems","filterParentItems","getBasicItemsFromGroupedItems","basicItemTypes","basicItems","nestedGroupedItems","multiViewerHelper","matchedPages","isScrolledByClickingChangeItem","setIsScrolledByClickingChangeItem","getIsScrolledByClickingChangeItem","$trim","forcedStringTrimMethod","Choice","_classCallCheck","_defineProperties","_createClass","protoProps","staticProps","activeXDocument","definePropertiesModule","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","write","close","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","contentWindow","open","Properties","overrideSearchExecutionFn","searchListeners","addSearchListener","searchListener","removeSearchListener","getSearchListeners","overrideSearchExecution","getOverrideSearchExecution","defaultProps","preventDefaultTouchmoveEvent","delta","rotationAngle","trackMouse","trackTouch","initialState","xy","swiping","eventData","rotateXYByAngle","pos","angle","angleInRadians","PI","cos","sin","getHandlers","handlerProps","onStart","onMove","onUp","initial","timeStamp","_rotateXYByAngle","deltaX","deltaY","absX","absY","velocity","sqrt","dir","getDirection","onSwiping","cancelablePageSwipe","onSwiped","onEnd","cleanUpMouse","attachTouch","tls","_ref4","addState","cleanUpTouch","updateTransientState","Swipeable","_React$PureComponent","subClass","superClass","_set","cb","transientState","__proto__","render","_this$props","_this$props$nodeName","nodeName","innerRef","_getHandlers","handlers","onSwipedUp","onSwipedRight","onSwipedDown","onSwipedLeft","dayjs","LocalizedFormat","getResetPrintStyle","textContent","printPages","printHandler","innerHTML","fragment","createDocumentFragment","page","cloneNode","parentElement","printDocument","execCommand","tempTitle","fileName","fileNameWithoutExtension","lastIndexOf","once","useClientSidePrint","sortStrategy","colorMap","includeAnnotations","includeComments","maintainPageOrientation","onProgress","printQuality","printWithoutModal","isPrintCurrentView","dateFormat","printedNoteDateFormat","isGrayscale","timezone","pagesToPrint","documentType","bbURLPromise","printOptions","createCanvases","createPages","creatingPages","printPage","i18n","location","href","url","HIGHLIGHT2","HIGHLIGHT3","HIGHLIGHT4","Opacity","TEXT_FORM_FIELD","FEATURE_FLAGS","isff","addEvent","useCapture","attachEvent","getMods","modifier","mods","getKeys","_keyMap","backspace","tab","enter","return","esc","space","up","right","down","del","delete","ins","home","pageup","pagedown","capslock","num_0","num_1","num_2","num_3","num_4","num_5","num_6","num_7","num_8","num_9","num_multiply","num_add","num_enter","num_subtract","num_decimal","num_divide","'","_modifier","alt","ctrl","control","cmd","modifierMap","91","shiftKey","ctrlKey","altKey","metaKey","_mods","_handlers","_downKeys","winListendFocus","_scope","elementHasBindEvent","getScope","eachUnbind","_ref$splitKey","originKey","unbindKeys","keyCode","record","a1","a2","arr1","arr2","isIndex","compareArray","eventHandler","modifiersMatch","returnValue","cancelBubble","asterisk","which","charCode","keyName","keyNum","getModifierState","keyShortcut","_downKeysCurrent","capture","isElementBind","clearModifier","_api","getPressedKeyString","getModifier","deleteScope","newScope","getPressedKeyCodes","isPressed","srcElement","flag","isContentEditable","readOnly","keysInfo","info","_hotkeys","noConflict","isMouseOverElement","elementBoundingRect","timeoutRef","hiddenByClickRef","childRef","useImperativeHandle","tooltipRef","show","setShow","opacity","setOpacity","setPosition","setLocation","showToolTip","hideByClick","TOOLTIP_OPENED","delayShow","hideTooltip","hideByBlur","changeToolTipState","childBoundingRect","tooltipBoundingRect","isMouseOverChild","isMouseOverTooltip","rectBetweenChildAndTooltip","isMouseBetweenChildAndTooltip","MutationObserver","mutations","lastMutation","attributeName","observe","childList","characterData","disconnect","useLayoutEffect","childEle","tooltipEle","childRect","tooltipRect","hostX","hostY","hostRect","locationTopLeftMap","bottomLeft","topLeft","bestLocation","newTop","newLeft","tooltipTop","tooltipLeft","getWebComponentScale","scaleX","scaleY","setTopAndLeft","isUsingMobileDevices","child","translatedContent","hotkeysManager","hasShortcut","Fragment","ReactDOM","createPortal","$parseFloat","Reflect","_objectWithoutPropertiesLoose","excluded","sourceKeys","toHexString","_assertThisInitialized","ReferenceError","clickMiddleWare","setClickMiddleWare","redactionTypeMap","REGION","TEXT","FULL_PAGE","FULL_VIDEO_FRAME","AUDIO_REDACTION","FULL_VIDEO_FRAME_AND_AUDIO","CREDIT_CARD","PHONE","EMAIL","defaultRedactionTypes","mapAnnotationToRedactionType","IsText","rotateRad","cx","cy","radians","getNoteColor","note","isNoteFreeTextAnnotation","TextColor","rgbaToHex","B","Color","sortStrategies","getSortedNotes","notes","PageNumber","center","getDocumentCenter","rotatedA","Y","Width","Height","rotatedB","smallest","MAX_SAFE_INTEGER","shouldRenderSeparator","prevNote","currNote","getSeparatorContent","pageLabels","createdDate","DateCreated","prevNoteDate","currNoteDate","today","yesterday","createdDateString","modifiedDate","getLatestActivityDate","latestActivityDate","latestActivityDay","status","statusA","getStatus","statusB","author","authorA","authorB","typeA","getAnnotationClass","typeB","colorA","colorB","flexDirection","alignItems","background","borderRadius","getSortStrategies","addSortStrategy","newStrategy","NotesPanelSortStrategy","CREATED_DATE","MODIFIED_DATE","STATUS","AUTHOR","COLOR","_require","Draggable","DraggableCore","$every","isDownloaded","previousWatermarkSettings","previousFileName","drawRoundedRect","ctx","radius","skip","skipTop","skipBottom","beginPath","strokeStyle","lineWidth","moveTo","lineTo","quadraticCurveTo","closePath","stroke","reverseObject","entries","enableWatermarkApplied","externalURL","useDisplayAuthor","downloadAllPages","downloadDataAsFile","extension","file","downloadName","downloadType","mimeTypeToExtension","Blob","File","saveAs","FILE_DOWNLOADED","convertToPDF","unloadResources","downloadAsImage","range","getPrintedNoteDateFormat","getCurrentLanguage","getPrintQuality","printingOptions","createdPages","addWhiteBackground","dataURL","pagePrintCanvas","pagePrintContext","getContext","printImg","Image","fillStyle","fillRect","drawImage","toDataURL","html2canvas","HTMLElement","backgroundColor","logging","canvas","link","download","annotationsPromise","getFileData","fields","widgets","links","xfdfString","fileData","canvas2pdf","pageWidth","pageHeight","titleFontSize","bodyFontSize","cardSpacing","padding","commentPages","savePage","stream","toBlob","blob","annotationNotes","Listable","isReply","isGrouped","startX","startY","PdfContext","blobStream","font","text","textSize","measureText","fillText","drawAnnotationComment","drawTextAndWrap","drawText","extractProperties","newProperties","bold","size","textArray","maxSize","indexOfLastSpaceToFit","Author","dateText","toLocaleString","day","hour","minute","subjectText","subjectTextSize","getContents","colorProperty","iconKey","URL","createObjectURL","revokeObjectURL","lastYPos","getReplies","pageOffset","tempDoc","insertPages","extractXFDF","documentToBeDownloaded","EMPTY_XFDF","getDownloadFilename","isNotPDF","handleError","signatureWidgets","SignatureWidgetAnnotation","isSignedDigitally","signedStatues","SaveOptions","INCREMENTAL","downloadIframe","extractPages","internalObjectKeys","integer","getCircleRadius","customCircleRadius","circleRadius","HorizontalDivider","_typeof","iterator","defaultStartLineStyles","defaultStrokeStyles","defaultEndLineStyles","cloudyStrokeStyle","createToolAPI","dataElements","priority","filteredDataElements","currentPriority","getDisabledElementPriority","disableElement","disableElements","updateCurrentToolbarGroup","getFilteredDataElements","disabledToolbarGroups","activeToolbarGroup","getCurrentToolbarGroup","firstEnabledToolbarGroup","getEnabledToolbarGroups","enableElement","enableElements","ele","addPortfolioTab","fileObject","tabManager","getTabManager","getEmbeddedFileData","setActive","addTab","setIsElementHidden","isHidden","setThumbnailMerging","useThumbnailMerging","setThumbnailReordering","useThumbnailReordering","setThumbnailMultiselect","useThumbnailMultiselect","setIsMultipleViewerMerging","isMultipleViewerMerging","updateCalibrationInfo","isCalibration","tempScale","previousToolName","isFractionalUnit","defaultUnit","setIsAddingNewScale","isAddingNewScale","updateDeleteScale","setEnableNotesPanelVirtualizedList","enableNotesPanelVirtualizedList","setNotesShowLastUpdatedDate","notesShowLastUpdatedDate","setAllowPageNavigation","allowPageNavigation","setLastPickedToolForGroup","setEnableToolGroupReordering","enableToolGroupReordering","setActiveToolNameAndStyle","toolsName","activeToolName","toolStyles","setActiveToolStyles","setCustomColor","customColor","setCustomColors","customColors","currentActiveToolGroup","getActiveToolGroup","toolbarGroup","setActiveCustomPanel","tabPanel","wrapperPanel","dispath","getActiveCustomPanel","setSelectedScale","selectedScale","setNotePopupId","triggerNoteEditing","isNoteEditing","finishNoteEditing","fitMode","setZoom","setRotation","setFullScreen","isFullScreen","registerTool","unregisterTool","setToolButtonObjects","toolButtonObjects","setHeaderItems","header","headerItems","setCustomHeadersAdditionalProperties","customHeader","additionalProperties","setPopupItems","setMenuOverlayItems","setActivePalette","colorMapKey","colorPalette","setIconColor","setColorMap","setLeftPanelWidth","disableReplyForAnnotations","setMouseWheelZoom","enableMouseWheelZoom","setReaderMode","isReaderMode","setThumbnailSelectingPages","isSelecting","setPageManipulationOverlayItems","setMultiPageManipulationControlsItems","setMultiPageManipulationControlsItemsSmall","setMultiPageManipulationControlsItemsLarge","setPageManipulationOverlayAlternativePosition","setPageManipulationOverlayOpenByRightClick","setThumbnailControlMenuItems","setTabManager","TabManager","setMultiTab","isMultiTab","setTabs","tabs","setActiveTab","activeTab","setFonts","fonts","setIsMultiViewerMode","setIsMultiViewerReady","isMultiViewerReady","setActiveDocumentViewerKey","setIsComparisonOverlayEnabled","isComparisonOverlayEnabled","setIsCompareStarted","isCompareStarted","setSyncViewer","syncViewer","setSavedSignaturesTabEnabled","enabled","setInitialsOffset","initalsOffset","setFlyoutPosition","newPosition","addFlyout","newFlyout","flyoutsToUpdateInstead","shouldUpdateInstead","oldDataElement","flyout","removeFlyout","setActiveFlyout","setFlyoutItems","updateFlyout","setPanelWidth","setTotalPages","setOutlines","setIsOutlineEditing","isOutlineEditingEnabled","setAutoExpandOutlines","autoExpandOutlines","setAnnotationNumbering","isAnnotationNumberingEnabled","setBookmarks","pageIndex","USER_BOOKMARKS_CHANGED","editBookmark","removeBookmark","bookmarkIconShortcutVisibility","setPortfolio","portfolio","setLayers","layers","setPrintQuality","quality","setDefaultPrintOptions","progress","resetLoadingProgress","setVerificationResult","setIsRevocationCheckingEnabled","isRevocationCheckingEnabled","setRevocationProxyPrefix","revocationProxyPrefix","setUserName","setAdminUser","isAdminUser","searchText","searchTextFull","setSearchValue","setReplaceValue","setNextResultValue","nextResult","nextResultIndex","setCaseSensitive","isCaseSensitive","setWholeWord","isWholeWord","setWildcard","isWildcard","resetSearch","setNoteTransformFunction","noteTransformFunction","setCustomNoteSelectionFunction","customNoteFunction","setCustomApplyRedactionsHandler","customApplyRedactionsHandler","setCustomMultiViewerSyncHandler","customMultiViewerSyncHandler","setCustomMultiViewerAcceptedFileFormats","customMultiViewerAcceptedFileFormats","setEnableSnapMode","setLanguage","setHideContentEditWarning","hideWarning","setContentWorkersAsLoaded","contentEditWorkersLoaded","setCurrentContentBeingEdited","updateCurrentContentBeingEdited","clearCurrentContentBeingEdited","setProcessingSearchResults","isProcessingSearchResults","triggerResetAudioPlaybackPosition","shouldResetAudioPlaybackPosition","setActiveSoundAnnotation","activeSoundAnnotation","setAnnotationFilters","annotationFilters","setContentBoxEditor","contentBoxEditor","setInitialsMode","enableFeatureFlag","featureFlag","setComparePagesButtonEnabled","isShowComparisonButtonEnabled","setIsMultiViewerModeAvailable","isMultiViewerModeAvailable","setIsOfficeEditorMode","setOfficeEditorEditMode","editMode","growCustomElement","currentSize","customElementSizes","setCustomElementSize","shrinkCustomElement","setNotesInLeftPanel","notesInLeftPanel","popFocusedElement","focusedElementsStack","poppedElement","newStack","isKeyboardOpen","cancelPasswordCheckCallback","setCancelPasswordCheckCallback","PasswordModal","getPasswordAttempts","getMaxPasswordAttempts","maxAttempts","passwordInput","setPassword","userCancelled","setUserCancelled","closeModal","handleSubmit","getErrorModal","errorMessage","ModalWrapper","closeButtonDataElement","onCloseClick","aria-live","renderEnterPasswordContent","wrongPassword","wrongPasswordMessage","remainingAttempts","onSubmit","autoComplete","Modal","closed","_console","alreadyWarned","warnOnce","loadNamespaces","initialized","oldI18nextHasLoadedNamespace","bindI18n","isNewerI18next","ignoreJSONStructure","i18nInstance","Component","each","hasXMLHttpRequest","XMLHttpRequest","makePromise","maybePromise","isPromise","types","getTypes","allowedTypes","getContentRect","calculations","client","clientTop","clientLeft","scroll","rect","bounds","styles","marginRight","marginBottom","getWindowOf","ownerDocument","defaultView","withContentRect","_class","_Component","WithContentRect","contentRect","entry","_animationFrameID","_resizeObserver","_node","_window","measure","setState","onResize","_handleRef","unobserve","_proto","componentDidMount","ResizeObserver","componentWillUnmount","cancelAnimationFrame","measureRef","DARK","LIGHT","MATCH","nativeMatch","matcher","matchStr","tools","setStyles","bitmap","version","Deno","versions","v8","V","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","aPossiblePrototype","setter","CORRECT_SETTER","getOpenedWarningModal","getOpenedColorPicker","getAllOpenedModals","getDatePicker","pna","objectKeys","Duplex","util","inherits","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","nextTick","onEndNT","highWaterMark","_readableState","destroyed","_destroy","Rule","AtRule","Root","isClean","my","Declaration","Comment","Node","Container","nodes","normalize","proxyOf","markDirty","keepBetween","super","cleanRaws","getIterator","indexes","lastEach","toProxy","other","exist","existIndex","sample","cleanSource","rebuild","markDirtyUp","raws","before","unshift","pattern","walkDecls","decl","fast","addToError","walk","registerParse","dependant","registerRule","registerAtRule","registerRoot","isFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","FULLSCREEN_MODE_TOGGLED","isInFullscreen","docElm","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","Element","ALLOW_KEYBOARD_INPUT","webkitCurrentFullScreenElement","ResizeBar","minWidth","leftDirection","isMouseDownRef","dragMouseMove","newWidth","PANEL_RESIZED","finishDrag","getLeftPanelDataElements","genericPanels","defaultLeftPanels","customPanels","panel","checkFeaturesToEnable","componentsMap","measurementTools","flat","contentEditTools","redactTools","enableFilePicker","enableFeatures","Feature","enableMeasurement","setScaleOverlayPosition","setDefaultPrintMargins","margins","disableApplyCropWarningModal","shouldShowApplyCropWarning","enableApplyCropWarningModal","disableApplySnippingWarningModal","shouldShowApplySnippingWarning","enableApplySnippingWarningModal","setPresetCropDimensions","presetCropDimensions","setPresetNewPageDimensions","presetNewPageDimensions","setDateTimeFormats","dateTimeFormats","setEnableDesktopOnlyMode","enableDesktopOnlyMode","setHighContrastMode","useHighContrastMode","setCanUndo","canUndo","setCanRedo","canRedo","setStandardStamps","rubberStampTool","canvasWidth","canvasHeight","getStandardStampAnnotations","getPreview","previews","standardStamps","imgSrc","setCustomStamps","getCustomStampAnnotations","customStampsPromises","getImageData","customStamps","setReadOnlyRibbons","toolbarGroupsToDisable","headers","enableRibbons","isInFormFieldCreationMode","toolbarGroupsToEnable","disabledElements","allButtonsInGroupDisabled","getFirstToolForGroupedItems","allItems","firstTool","toolAndGroup","getAllAssociatedGroupedItems","arrayOfGroupedItems","setActiveGroupedItems","allAssociatedGroupedItems","groupedItem","lastPickedToolForGroupedItems","setGroupedItems","activeGroupedItemsContainsTool","getActiveGroupedItems","setFixedGroupedItems","setActiveCustomRibbon","customRibbon","pickTool","defaultTool","lastPickedToolGroup","_toolbarGroup","toolGroups","firstToolGroupForToolbarGroup","getFirstToolGroupForToolbarGroup","lastPickedToolName","lastPickedToolForGroup","getFirstToolNameForGroup","TOOLBAR_GROUP_CHANGED","firstGroupedItem","associatedRibbonItem","getRibbonItemAssociatedWithGroupedItem","setSelectedStampIndex","setLastSelectedStampIndex","setOutlineControlVisibility","outlineControlVisibility","setSelectedDisplayedSignatureIndex","setSavedSignatures","savedSignatures","setDisplayedSignaturesFilterFunction","filterFunction","setSignatureMode","signatureMode","setSavedInitials","savedInitials","setSelectedDisplayedInitialsIndex","setSearchPanelWidth","setNotesPanelWidth","setComparePanelWidth","setRedactionPanelWidth","setTextEditingPanelWidth","setWatermarkPanelWidth","setWv3dPropertiesPanelWidth","setWv3dPropertiesPanelModelData","modelData","setWv3dPropertiesPanelSchema","schema","setOfficeEditorCursorProperties","cursorProperties","setOfficeEditorSelectionProperties","selectionProperties","addOfficeEditorAvailableFontFace","fontFace","setDocumentContainerWidth","setDocumentContainerHeight","setGapBetweenHeaderItems","gap","updateHeaderProperty","setHeaderJustifyContent","justifyContent","setHeaderMaxWidth","maxWidth","setHeaderMaxHeight","setHeaderStyle","setModularComponentProperty","setAllGroupedItemsProperty","updateGroupedItems","groupedItemsDataElement","newGroupedItems","existingComponentsMap","normalizedItems","normalizeItems","enableAllElements","isLeftPanelOpen","isDataElementLeftPanel","activeLeftPanel","genericPanel","rightPanelList","openGenericPanel","getOpenGenericPanel","VISIBILITY_CHANGED","isVisible","isFlyoutElement","isElementClosed","rightGenericPanels","getGenericPanels","allPanelsOnTheRight","addCustomModal","modalOptions","headerKeysToStore","itemKeysToStore","normalizedItem","pick","dataElementKey","nestedItemsDataElements","newNormalizedItem","prepareModularHeaders","headersList","headersMap","newKey","uuidv4","itemDataElements","addModularHeaders","setModularHeaders","setModularHeaderItems","headerDataElement","newComponentsMap","itemsDataElements","setModularHeadersAndComponents","setModularComponentFunctions","functionMap","setFlyouts","flyouts","resetModularUIState","setRightHeaderWidth","setLeftHeaderWidth","setTopFloatingContainerHeight","setBottomFloatingContainerHeight","setActiveHeaderGroup","headerGroup","panelDataElements","setTimezone","setNotesPanelSortStrategy","setNoteDateFormat","noteDateFormat","setPrintedNoteDateFormat","setCustomPanel","newPanel","addPanel","setGenericPanels","setMobilePanelSize","panelSize","setPageLabels","setSelectedPageThumbnails","selectedThumbnailPageIndexes","SELECTED_THUMBNAIL_CHANGED","setShiftKeyThumbnailsPivotIndex","shiftKeyThumbnailPivotIndex","setSwipeOrientation","swipeOrientation","showWarningMessage","enableDeleteTabWarning","showDeleteTabWarning","disableDeleteTabWarning","showErrorMessage","setCustomNoteFilter","filterFunc","customNoteFilter","setInlineCommentFilter","inlineCommentFilter","setZoomList","zoomList","minZoomLevel","maxZoomLevel","filteredZoomList","outOfRangeZooms","useEmbeddedPrint","setMaxSignaturesCount","maxSignaturesCount","setUserData","userData","setCustomMeasurementOverlay","customMeasurementOverlay","setCustomElementOverrides","overrides","setPageReplacementModalFileList","setActiveTheme","theme","THEME_CHANGED","setSearchResults","searchResults","setClearSearchOnPanelClose","shouldClear","setAnnotationContentOverlayHandler","annotationContentOverlayHandler","setAnnotationReadState","isRead","annotationId","addTrustedCertificates","certificates","addTrustList","trustList","setSignatureValidationModalWidgetName","widgetName","validationModalWidgetName","setNoteSubmissionEnabledWithEnter","enableNoteSubmissionWithEnter","setNotesPanelTextCollapsing","enableNotesPanelTextCollapsing","setNotesPanelRepliesCollapsing","enableNotesPanelRepliesCollapsing","setCommentThreadExpansion","enableCommentThreadExpansion","enableFadePageNavigationComponent","fadePageNavigationComponent","disableFadePageNavigationComponent","enablePageDeletionConfirmationModal","pageDeletionConfirmationModalEnabled","disablePageDeletionConfirmationModal","setWatermarkModalOptions","watermarkModalOptions","setEmbeddedPopupMenuStyle","customStyle","embeddedJSPopupStyle","replaceRedactionSearchPattern","searchPattern","setThumbnailSelectionMode","thumbnailSelectionMode","addRedactionSearchPattern","removeRedactionSearchPattern","searchPatternType","setZoomStepFactors","setNotesPanelCustomHeader","notesPanelCustomHeaderOptions","setNotesPanelEmptyPanel","notesPanelCustomEmptyPanel","addMeasurementScalePreset","measurementSystem","newPreset","removeMeasurementScalePreset","setIsMultipleScalesMode","isMultipleScalesMode","setReplyAttachmentPreviewEnabled","replyAttachmentPreviewEnabled","setNotesPanelMultiSelect","isNotesPanelMultiSelectEnabled","setReplyAttachmentHandler","replyAttachmentHandler","setCustomSettings","customSettings","setEnableRightClickAnnotationPopup","setToolDefaultStyleUpdateFromAnnotationPopupEnabled","isToolDefaultStyleUpdateFromAnnotationPopupEnabled","setAnnotationToolStyleSyncingEnabled","isAnnotationToolStyleSyncingEnabled","setMultiViewerSyncScrollingMode","multiViewerComparedSyncScrollingMode","setTextSignatureQuality","multiplier","setEnableMeasurementAnnotationsFilter","setColors","colors","updateOnly","toolColorOverrides","textColors","defaultOptions","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","getI18n","queries","mediaQueryLists","matchMedia","getValue","mql","matches","setValue","addListener","removeListener","pt_br","zh_cn","zh_tw","ConnectedToggleElementButton","restProps","connectedComponent","_possibleConstructorReturn","responseType","response","MouseEvent","initMouseEvent","HTMLAnchorElement","webkitURL","rel","origin","msSaveOrOpenBlob","autoBom","safari","FileReader","onloadend","readAsDataURL","un$StartsWith","CORRECT_IS_REGEXP_LOGIC","search","latestReplyActivityDate","acc","replyDate","DateModified","$Symbol","copyright","license","getDescriptor","CONFIGURABLE","UNSCOPABLES","ArrayPrototype","propertyKey","ctor","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","browser","env","argv","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","MeasurementUnits","Annotation","isMeasurementTool","PRIME_FT","DOUBLE_PRIME_IN","toolModeMap","pendingLanguageTimeout","languageObj","languageToImportLocaleFile","languageRules","languageEventObject","pendingLanguagePromise","setDatePickerLocale","i18nextPromise","DatePickerWidgetAnnotation","datePickerOptions","widget","refreshDatePicker","adjustListBoxForPrint","fakeSelectContainer","border","fontFamily","fontWeight","fontStyle","overflow","createFakeContainerForSelect","optionDiv","textAlign","isMultiSelect","hasAttribute","createFakeOption","hideSelectContainer","nextSibling","pendingCanvases","calculatePageZoom","pageInfo","pageSize","getNoteInfo","dateCreated","datetimeStr","timeZone","getNoteContent","contentElement","contentText","whiteSpace","getNoteIcon","noteIcon","newEle","creatingNotesPage","noteRoot","noteRootInfo","noteReply","getNote","createWidgetContainer","widgetContainer","cancelPrint","cancelLoadCanvas","drawAnnotationsOnCanvas","widgetAnnotations","WidgetAnnotation","getDocumentRotation","positionCanvas","documentRotation","printRotation","isAutoRotated","isPdfjs","rotate","getPrintRotation","isCurrentView","renderRect","onCanvasLoaded","pendingCanvas","printableAnnotInfo","annotatationsToPrint","printable","Printable","grayscaleDarknessFactor","getGrayscaleDarknessFactor","oldTransform","getTransform","resetTransform","globalCompositeOperation","globalAlpha","setTransform","imageData","putImageData","alwaysPrintAnnotationsInColor","isAlwaysPrintAnnotationsInColorEnabled","drawAnnotationsInGrayscale","getCurrentViewRect","pageDimensions","doesCurrentViewContainEntirePage","loadCanvas","pageRotation","drawComplete","creatingImage","htmlElement","printableAnnotationNotes","getPrintableAnnotationNotes","sortedNotes","ToolButton","getActiveToolName","getIconColor","getToolButtonDataElement","iconColorKey","toolButtonObject","restObjectData","showColor","getToolStyles","getColor","FillColor","StrokeColor","StrokeThickness","hasStyles","features","enterReaderMode","getPDFDoc","pdfDoc","xfdf","PDFNet","main","FDFDoc","createFromXFDF","fdfDoc","fdfUpdate","disableFeatures","runWithCleanup","exitReaderMode","fdfExtract","PDFDoc","ExtractFlag","e_both","saveAsXFDFAsString","importAnnotations","TextMarkupAnnotation","defaultNoteDateFormat","defaultPrintedNoteDateFormat","CustomAnnotation","Link","isStyleButtonActive","styleType","isTextSelected","getOfficeEditorCursorProperties","getOfficeEditorSelectionProperties","underlineStyle","getPointSizeSelectionKey","pointSize","getCursorStyleToPreset","currentColor","getCurrentFontFace","isListToggleActive","paragraphProperties","listType","getModularComponent","getScaleOverlayPosition","scaleOverlayPosition","getDefaultPrintMargins","defaultPrintMargins","getColors","getCustomElementSize","getActiveFlyout","activeFlyout","getFlyoutPosition","flyoutPosition","getFlyout","getFlyoutToggleElement","flyoutToggleElement","getInitialsOffset","isSavedSignaturesTabEnabled","savedSignatureTabEnabled","getSyncViewer","isComparisonDisabled","advanced","disableMultiViewerComparison","getIsComparisonOverlayEnabled","activeCustomPanel","getPresetCropDimensions","getPresetNewPageDimensions","getDateTimeFormats","getThumbnailSelectionMode","getFonts","getTabs","getActiveTab","getIsMultiTab","getIsHighContrastMode","highContrastMode","getLastPickedToolForGroup","getStandardStamps","getCustomStamps","getSelectedStampIndex","selectedStampIndex","getLastSelectedStampIndex","lastSelectedStampIndex","getSelectedStamp","selectedStamp","getSavedSignatures","getDisplayedSignatures","displayedSignaturesFilterFunction","getSelectedDisplayedSignatureIndex","selectedDisplayedSignatureIndex","getSelectedDisplayedSignature","getDisplayedSignaturesFilterFunction","getSignatureMode","getSavedInitials","getSelectedDisplayedInitialsIndex","selectedDisplayedInitialsIndex","getIsInitialsModeEnabled","isInitialsModeEnabled","getDisplayedInitial","getAutoFocusNoteOnAnnotationSelection","autoFocusNoteOnAnnotationSelection","getNotesInLeftPanel","getLeftPanelWidth","panelWidths","leftPanel","getSearchPanelWidth","searchPanel","getNotesPanelWidth","notesPanel","getDeleteScaleInfo","getRedactionPanelWidth","redactionPanel","getWv3dPropertiesPanelWidth","wv3dPropertiesPanel","getComparePanelWidth","comparePanel","getTextEditingPanelWidth","textEditingPanel","getWatermarkPanelWidth","watermarkPanel","getMobilePanelSize","mobilePanelSize","getLeftPanelWidthWithResizeBar","getSearchPanelWidthWithResizeBar","getNotesPanelWidthWithResizeBar","getComparePanelWidthWithResizeBar","getDocumentContentContainerWidthStyle","notesPanelWidth","searchPanelWidth","leftPanelWidth","watermarkPanelWidth","textEditingPanelWidth","wv3dPropertiesPanelWidth","comparePanelWidth","redactionPanelWidth","isNotesPanelOpen","isSearchPanelOpen","isRedactionPanelOpen","isTextEditingPanelOpen","isWv3dPropertiesPanelOpen","isComparePanelOpen","isWatermarkPanelOpen","genericPanelOnLeft","genericPanelOnRight","spaceTakenUpByPanels","getPanelWidth","activeRightHeaderWidth","getActiveRightHeaderWidth","activeLeftHeaderWidth","getActiveLeftHeaderWidth","panelsWithMobileVersion","elName","getDocumentContainerLeftMargin","genericPanelOpenOnLeft","getCalibrationInfo","calibrationInfo","getIsAddingNewScale","getMeasurementScalePreset","measurementScalePreset","getIsMultipleScalesMode","getIsNotesPanelMultiSelectEnabled","getDocumentContainerWidth","documentContainerWidth","getDocumentContainerHeight","documentContainerHeight","isElementHidden","hiddenElements","getToolButtonObjects","getToolbarHeaders","getSelectedScale","getCustomHeadersAdditionalProperties","customHeadersAdditionalProperties","getToolbarGroupDataElements","toolGroupButtons","flattenHeaderItems","dataItems","total","isEveryToolGroupButtonDisabled","toolGroupDataElement","activeGroupedItems","getFixedGroupedItems","fixedGroupedItems","getLastPickedToolForGroupedItems","getLastPickedTool","lastPickedTool","getActiveCustomRibbon","activeCustomRibbon","getLastPickedToolAndGroup","lastPickedToolAndGroup","getActiveHeaders","allHeaders","modularHeaders","activeGroupedItemsSet","fixedGroupedItemsSet","isActiveItem","modularComponent","getActiveTheme","activeTheme","getTimezone","getDefaultHeaderItems","hydrateItems","itemIds","components","itemId","hydratedItem","getHydratedHeader","getHydratedHeaders","placement","headersToHydrate","getTopHeaders","getBottomHeaders","getLeftHeader","getRightHeader","getActiveTopHeaders","getTopHeadersHeight","modularHeadersHeight","topHeaders","getBottomHeadersHeight","bottomHeaders","getRightHeaderWidth","modularHeadersWidth","rightHeader","getLeftHeaderWidth","leftHeader","activeHeaders","getTopFloatingContainerHeight","floatingContainersDimensions","topFloatingContainerHeight","getBottomFloatingContainerHeight","bottomFloatingContainerHeight","getFloatingHeaders","getTopStartFloatingHeaders","getBottomStartFloatingHeaders","getTopEndFloatingHeaders","getBottomEndFloatingHeaders","getActiveHeaderItems","activeHeaderGroup","getToolsHeaderItems","subItem","subItemDetails","getAlwaysVisibleGroupedItems","alwaysVisible","getGroupedItemsOfCustomRibbon","customRibbonDataElement","groupedItemDataElement","component","allGroupedItems","getModularComponentFunctions","modularComponentFunctions","getToolbarGroupItems","isToolGroupReorderingEnabled","isNoteSubmissionWithEnterEnabled","isNotesPanelTextCollapsingEnabled","isNotesPanelRepliesCollapsingEnabled","isCommentThreadExpansionEnabled","getActiveToolNamesForActiveToolGroup","activeToolGroup","getToolButtonDataElements","getToolNamesByGroup","getToolNameByDataElement","getActiveToolStyles","activeToolStyles","getCustomColor","getCustomColors","getActiveLeftPanel","isAnyCustomPanelOpen","getNotePopupId","notePopupId","zoomLevels","getNoteDateFormat","doesDocumentAutoLoad","doesAutoLoad","isDocumentReadOnly","getCustomPanels","getCustomModals","customModals","getPageLabels","getSelectedThumbnailPageIndexes","getShiftKeyThumbnailPivotIndex","getDisabledCustomPanelTabs","disabledTabs","isOutlineControlVisible","shouldAutoExpandOutlines","isBookmarkIconShortcutVisible","getCursorOverlayData","cursorOverlay","getDisabledElements","getcurrentStyleTab","getCustomNoteFilter","getInlineCommentFilter","getIsReplyDisabled","isReplyDisabledFunc","getZoomList","getMeasurementUnits","measurementUnits","getIsNoteEditing","getMaxSignaturesCount","getUserData","getIsMentionEnabled","getSignatureFonts","signatureFonts","customElementOverrides","getPopupItems","popupDataElement","getMenuOverlayItems","menuOverlay","getIsThumbnailMergingEnabled","isThumbnailMerging","getIsThumbnailReorderingEnabled","isThumbnailReordering","isThumbnailMultiselectEnabled","isThumbnailMultiselect","getIsMultipleViewerMerging","getEnableNotesPanelVirtualizedList","getAllowPageNavigation","getCustomMeasurementOverlay","getAnnotationContentOverlayHandler","getEnableMouseWheelZoom","getCertificates","digitalSignatureValidation","getTrustLists","trustLists","getValidationModalWidgetName","getVerificationResult","fieldName","verificationResult","getIsRevocationCheckingEnabled","getRevocationProxyPrefix","isThumbnailSelectingPages","thumbnailSelectingPages","getWatermarkModalOptions","getWarningMessage","warning","getWarningTitle","getWarningConfirmEvent","onConfirm","getWarningConfirmBtnText","confirmBtnText","getWarningSecondaryEvent","onSecondary","getWarningSecondaryBtnText","secondaryBtnText","getWarningSecondaryBtnClass","secondaryBtnClass","getWarningCancelEvent","onCancel","getShowAskAgainCheckbox","showAskAgainCheckbox","getShowDeleteTabWarning","isAccessibleMode","getWarningTemplateStrings","templateStrings","getWarningModalClass","modalClass","getWarningCloseEvent","getErrorMessage","getErrorTitle","errorTitle","passwordAttempts","getDefaultPrintOptions","defaultPrintOptions","getOutlineEditingEnabled","getPortfolio","getLayers","getLoadingProgress","loadingProgress","getUserName","user","getServerUrl","serverUrl","getSearchValue","shouldClearSearchPanelOnClose","clearSearchPanelOnClose","getReplaceValue","getNextResultValue","isSearchUp","isAmbientString","isRegex","getRedactionSearchPatterns","redactionSearchPatterns","getNoteTransformFunction","getCustomNoteSelectionFunction","getCustomApplyRedactionsHandler","getCustomMultiViewerSyncHandler","getCustomMultiViewerAcceptedFileFormats","isSnapModeEnabled","getUnreadAnnotationIdSet","unreadAnnotationIdSet","currentLanguage","shouldFadePageNavigationComponent","isContentEditWarningHidden","hideContentEditWarning","areContentEditWorkersLoaded","getCurrentContentBeingEdited","currentContentBeingEdited","isRightClickAnnotationPopupEnabled","enableRightClickAnnotationPopup","isInDesktopOnlyMode","getPageReplacementFileList","pageReplacementFileList","getPageManipulationOverlayItems","pageManipulationOverlay","getMultiPageManipulationControlsItems","multiPageManipulationControls","getMultiPageManipulationControlsItemsSmall","multiPageManipulationControlsSmall","getMultiPageManipulationControlsItemsLarge","multiPageManipulationControlsLarge","getPageManipulationOverlayAlternativePosition","pageManipulationOverlayAlternativePosition","openingPageManipulationOverlayByRightClickEnabled","pageManipulationOverlayOpenByRightClick","getThumbnailControlMenuItems","thumbnailControlMenu","shouldShowPresets","showPresets","getActiveSoundAnnotation","getEmbeddedJSPopupStyle","getWv3dPropertiesPanelModelData","getWv3dPropertiesPanelSchema","getIsOfficeEditorMode","officeEditor","isCursorInTable","locationProperties","inTable","getOfficeEditorEditMode","getAvailableFontFaces","availableFontFaces","getCSSFontValues","cssFontValues","getContentBoxEditor","getAnnotationFilters","getNotesPanelCustomHeaderOptions","getNotesPanelCustomEmptyPanel","isReplyAttachmentPreviewEnabled","getReplyAttachmentHandler","getCustomSettings","toolDefaultStyleUpdateFromAnnotationPopupEnabled","annotationToolStyleSyncingEnabled","getMultiViewerSyncScrollMode","multiViewerSyncScrollMode","getTextSignatureQuality","textSignatureCanvasMultiplier","getIsMeasurementAnnotationFilterEnabled","isMeasurementAnnotationFilterEnabled","isRightPanelOpen","getOpenRightPanelWidth","getWidth","getIsShowComparisonButtonEnabled","getIsMultiViewerModeAvailable","maxPasswordAttempts","deps","didMount","_getPrototypeOf","_inherits","hexToRGBA","hexString","toFixed","getHexToRgbaString","isDarkColorHex","isLightColorHex","extensionRegExp","getExtension","getFileNameWithoutExtension","PORTFOLIO_CONSTANTS","COLLECTION","FILE_NAME","ADOBE_ORDER","CI","REORDER","SORT","SCHEMA","SUBTYPE","isOpenableFile","hasChildren","portfolioItem","getNextLargestValue","files","order","getPortfolioFiles","getFileAttachments","embeddedFiles","unsortedPortfolioFiles","nameWithoutExtension","isFolder","getNestedLevel","addFile","createIndirectDict","fs","putName","putString","putText","putDict","ef","Filter","createFlateEncode","flateFilter","arrayBuffer","createIndirectStream","embeddedStream","put","ci","putNumber","FileSpec","createFromObj","fileSpec","addFileAttachment","addCoverPage","Rect","pageCreate","ElementBuilder","ElementWriter","beginOnPage","Font","StandardType1Font","e_helvetica","createTextBeginWithFont","writeElement","createNewTextRun","setTextMatrixEntries","getGState","gstate","ColorSpace","createDeviceRGB","setFillColorSpace","ColorPt","setFillColorWithColorPt","createTextEnd","pagePushBack","addCollection","defaultFile","getRoot","findObj","collection","createIndirectName","reorder","setName","putArray","sArray","insertName","orderSchema","fileNameSchema","putBool","createPortfolio","firstFileName","getPDFNetFiles","NameTree","findPDFNetPortfolioItem","getIteratorBegin","fileItr","hasNext","filesIteratorKey","renamePortfolioFile","newName","filesIteratorValue","deletePortfolioFile","erase","downloadPortfolioFile","reorderPortfolioFile","newOrder","ciValue","MENUS","TRIGGERS","menu","oneOf","viewerHeight","FlyoutMenu","allOtherMenus","closeMenu","menuButton","isTabletAndMobile","overlayAlternativePosition","alternativePosition","verticalGap","clickTop","flyoutMenuHeight","calculatedTop","getAlternativePosition","getOverlayPositionBasedOn","overlayClass","mobile","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","buffer","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","isNaN","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","_arr","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","CollapsibleSection","headingLevel","isInitiallyExpanded","controlledIsExpanded","isExpanded","expansionDescription","setIsExpanded","HeadingTag","headerContent","newExpandedState","postfix","IS_INCLUDES","feature","POLYFILL","NATIVE","NativePromiseConstructor","inspectSource","IS_BROWSER","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","CONSTRUCTOR","REJECTION_EVENT","PromiseCapability","$$resolve","$$reject","wrappedWellKnownSymbolModule","attachments","fileAttachmentAnnotations","getAsPDFText","filenameText","adobeOrderValue","getNumber","stm","FilterReader","filterReader","readAllIntoBuffer","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isRegExp","isDate","isError","isFunction","isPrimitive","LazyResult","Processor","ignore","registerLazyResult","registerProcessor","createTextAnnotation","quads","createAnnotation","TextAnnotationCreateTool","AUTO_SET_TEXT","setContents","setCustomData","setRedactionStyle","setAnnotationStyle","Quads","AnnotationCreateRedaction","hostContainer","containerBox","getAnnotationPopupPositionBasedOn","popup","calcAnnotationPopupPosition","getAnnotationPosition","getPopupDimensions","getTextPopupPositionBasedOn","allQuads","calcTextPopupPosition","getSelectedTextPosition","getAnnotationPageCoordinates","getPageNumber","currentDocumentPageCount","bottomRight","convertPageCoordinatesToWindowCoordinates","isNote","getRect","getHeight","x1","y1","x2","y2","noteAdjustment","getSelectedTextPageNumber","startPageNumber","endPageNumber","getSelectedTextPageCoordinates","tmp","pageNumbers","y3","endPageQuads","getTopAndBottom","quad","quadLeft","quadRight","getLeftAndRight","pageToWindow","annotationPosition","popupDimension","calcPopupTop","calcPopupLeft","selectedTextPosition","scrollContainer","boundingBox","visibleRegion","annotTop","annotBottom","getReaderModePopupPositionBasedOn","annotPosition","viewerRect","paddingLeft","renderArguments","CustomElement","reactComponent","setReactComponent","wrapperRef","toolTipWrapperRef","isDOMElement","wrapperElement","isValidElement","isReactElement","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_defineProperty","CONSTRUCTOR_NAME","defaultConstructor","ColorPalette","bg","onStyleChange","palette","hasPadding","overridePalette","overridePalette2","allowTransparent","transparentIcon","transparent","strokeWidth","strokeLinecap","setColor","cell","withTranslation","useFocusOnClose","focusedElement","LTS","LL","LLL","LLLL","formats","api","styleTag","webComponents","clonedStyleTags","webComponent","styleNode","locals","overlay","button","buttonBottom","buttonLeft","overlayWidth","overlayHeight","rootLeft","rightMargin","rootTop","enableMultiTab","docArr","initialDoc","TAB_MANAGER_READY","docLoadedEvent","prepareMultiTab","extensions","listenForAnnotChanges","extensionArr","currentViewerState","viewerState","currentTab","onFileDownloaded","changes","hasUnsavedChanges","onPagesUpdated","removeListeners","useDB","disableIndexedDB","req","indexedDB","indexedDBNotSupported","onsuccess","db","throwError","onupgradeneeded","createObjectStore","prepareTabEventListeners","listenToDocumentDownloaded","saveCurrentActiveTabState","isEmptyPageOpen","newTab","annotationsChanged","nextTab","getViewerState","tabToDelete","confirmationWarning","downloadPdf","deleteTab","disableWarning","showDeleteWarning","deletedTab","saveCurrentTabState","shouldLoadTab","currId","highestId","prevIndex","newIndex","onAnnotChange","__","imported","onFieldChange","mapped","annotInDB","docInDB","annots","fetch","writeToDB","annotsChanged","saveData","loadAnnotations","restorePageDataOnLoad","restoreAnnotDataOnLoad","tx","transaction","objectStore","commit","savePageData","arePagesAltered","saveFileData","saveAnnotDataInDB","saveAnnotData","LINEARIZED","finishedWithDocument","annotData","docContainer","getElementsByClassName","updateScroll","getDocumentCompletePromise","updateViewer","activeTabId","updateAnnotations","annotReq","arrBuff","baseGetTag","isObjectLike","ColorPaletteHeader","newPalette","disableSeparator","pallette","isTextColorPaletteDisabled","isFillColorPaletteDisabled","isBorderColorPaletteDisabled","withCloudyStyle","StyleOption","onLineStyleChange","isEllipse","StrokeStyle","selectedMiddleLineStyle","setSelectedMiddleLineStyle","htmlFor","borderStyle","middleLineStyles","LineStyleOptions","StartLineStyle","selectedStartLineStyle","setSelectedStartLineStyle","EndLineStyle","selectedEndLineStyle","setSelectedEndLineStyle","StylePopup","enableSnapping","SnapMode","e_DefaultSnapMode","POINT_ON_LINE","getMeasurementTools","setSnapMode","onSnapModeChange","FontSize","onSliderChange","isFreeText","isMeasure","isOpacitySliderDisabled","isStrokeThicknessSliderDisabled","isFontSizeSliderDisabled","lineStart","sliderProps","displayProperty","getCirclePosition","lineLength","convertRelativeCirclePositionToValue","circlePosition","withInputField","inputFieldType","getLocalValue","strokeThickness","placeOfDecimal","sliders","pickBy","slider","sliderComponents","Slider","onDocumentLoaded","isColorPaletteDisabled","isStyleOptionDisabled","hideSnapModeCheckbox","isTextStyleContainerActive","isColorsContainerActive","isLabelTextContainerActive","isLabelTextContainerDisabled","onPropertyChange","onRichTextStyleChange","isRedaction","showLineStyleOptions","isInFormBuilderAndNotFreeText","onFreeTextSizeToggle","isFreeTextAutoSize","Scale","Precision","textMenuItems","openTextMenuItem","openLabelText","openTextStyle","openColors","Popup","showTextStyle","showColorsMenu","showColorPicker","showLabelText","showSliders","hideStylePicker","wasDocumentSwappedToClientSide","isEligibleDocumentForSnapping","showMeasurementSnappingOption","onTouchStart","LabelTextEditor","TextStylePicker","useMobileMinMaxWidth","ColorPalettePicker","enableEdit","renderSliders","onSnappingChange","isStylePopupDisabled","ConnectedStylePopup","parseFontSize","isContentEditing","stateless","textEditFormat","textEditHandleFormatChange","isRichTextEditMode","supportedFonts","quillFont","setItalic","italic","setBold","setUnderline","underline","setStrikeout","strikeout","setQuillFont","setQuillFontSize","quillFontSize","defaultFontSize","calculatedFontSize","getFontSize","defaultBold","selectQuillFont","selectQuillFontSize","defaultItalic","defaultQuillFont","defaultUnderline","defaultStrikeout","TextAlign","changeXAlign","xAlign","textVerticalAlign","TextVerticalAlign","changeYAlign","yAlign","setError","fontSizeResult","fontSizePropsToUpdate","defaultConfig","newUnderline","newStrikeout","leftAlign","alignValue","centerAlign","rightAlign","contentEditConfig","strike","currentConfig","FontSizeDropdown","fontUnit","onFontSizeChange","applyOnlyOnBlur","displayEmpty","$propertyIsEnumerable","NASHORN_BUG","empty","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","passed","required","isArrayIteratorMethod","getIteratorMethod","iteratorClose","Result","stopped","ResultPrototype","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","callFn","usingIterator","iteratorMethod","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","raw","sticky","charsAdded","strCopy","multiline","input","regexpExec","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","uncurriedNativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","uncurriedNativeMethod","$exec","arraySpeciesConstructor","originalArray","Wrapper","NewTarget","NewTargetPrototype","whitespaces","whitespace","ltrim","rtrim","isKey","stringToPath","dontSetMe","propName","componentName","findInArray","int","isNum","num","ArrayBufferViewCore","speciesConstructor","arg1","arg3","eq","CssSyntaxError","Stringifier","postcssNode","line","column","insertAfter","after","between","rangeBy","stringRepresentation","positionInside","word","endIndex","bookmark","foundSelf","inputs","fixed","emitInputs","inputsNextIndex","inputId","proxyCache","Proxy","getProxyProcessor","stringifier","builder","SourceMapConsumer","SourceMapGenerator","fileURLToPath","pathToFileURL","isAbsolute","nanoid","terminalHighlight","PreviousMap","fromOffsetCache","sourceMapAvailable","pathAvailable","Input","hasBOM","consumer","mapResolve","endLine","endColumn","fromOffset","col","plugin","lastLine","lineToIndex","lines","mid","fromUrl","originalPositionFor","mapFile","protocol","sourceContentFor","json","consumerCache","registerInput","assignValue","baseAssignValue","customizer","isNew","ColorPickerModalRedux","modifyColorMode","setModifyColorMode","colorToBeDeleted","setColorToBeDeleted","activeCustomColor","getHexColor","handleColorChange","givenColor","openDeleteModal","updatedCustomColors","newColor","newColorHex","newColorExist","selectedColorindex","newProps","handleColorOnClick","openColorPicker","addNew","setGrayscaleDarknessFactor","factor","Languages","languageEnum","pair","ToolGroupButton","arrayOf","ConnectedToolGroupButton","_setPrototypeOf","getFocusableElements","focusableElementDomString","lastFocusedElement","keydownListener","focusable","focusIndex","emptyArgument","getAnnotationCreateToolNames","toolNameArray","currTool","Annotating","enableTools","disableTools","localStorageManager","enableLocalStorage","disableLocalStorage","currentToolbarGroup","Tool","ENABLE_TEXT_SELECTION","touchEventManager","signatures","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","currentId","getStringId","useID","mozURL","BlobStream","WritableStream","_chunks","_blob","_write","toBlobURL","fetchApi","MentionsManager","idMentionDataMap","allowedTrailingCharacters","mentionLookupCallback","defaultMentionsSearchCallback","handleAnnotationsAdded","handleAnnotationsModified","handleAnnotationsDeleted","newMentions","mentionData","extractMentionDataFromAnnot","mentions","modifiedMentions","deletedMentions","prevMentionData","contentWithoutMentions","currMentionData","prevMentions","currMentions","currMention","prevMention","isSameMention","deltas","mention","formattedMentionTextList","formattedMentionText","denotationChar","markupRegex","ids","plainTextValue","wholeMatch","contents","isValidMention","annotId","startIndex","nextChar","isEndOfString","allowedChars","getAllowedTrailingCharacters","extractMentionDataFromStr","replyAnnot","addReply","email","chars","origFn","searchTerm","searchTermLowerCase","userValueIncludesSearchTerm","userIdIncludesSearchTerm","userEmailIncludesSearchTerm","SwipeableWrapper","closeHandler","swipeToClose","onCloseHandler","handleKeyDown","accessibleLabel","FocusTrap","locked","containerOnClick","aria-modal","backButtonDataElement","onBackClick","createHTML","forcedStringHTMLMethod","$entries","quot","attribute","p1","PresetMeasurementSystems","METRIC","IMPERIAL","metricPreset","imperialPreset","fractionalPrecisions","PrecisionType","DECIMAL","FRACTIONAL","precisionOptions","precisionFractions","0.125","0.0625","0.03125","0.015625","floatRegex","inFractionalRegex","ftInFractionalRegex","ftInDecimalRegex","parseFtInDecimal","valueStr","sum","parseInFractional","parseFtInFractional","fractionalUnits","metricUnits","ifFractionalPrecision","precision","hintValues","unitConversion","convertUnit","unit","newUnit","scalePresetPrecision","initialScale","pageScale","worldScale","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","customInput","pageGroups","pageGroup","isSinglePage","isRangeOfPages","addRangeOfPagesTo","character","elementName","isFormFieldPlaceholder","CHECKBOX","error1","hasIndices","ignoreCase","dotAll","$RegExp","MISSED_STICKY","CONVERT_TO_STRING","second","codeAt","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","sameValue","nativeSearch","searcher","previousLastIndex","FunctionName","createIteratorConstructor","IteratorsCore","CONFIGURABLE_FUNCTION_NAME","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","$getOwnPropertyNames","windowNames","getWindowNames","IS_RIGHT","mergeSort","middle","insertionSort","merge","llength","rlength","lindex","rindex","objValue","webpackContext","webpackContextResolve","addClassName","inputOptions","addUserSelectStyles","styleEl","createCSSTransform","controlPos","positionOffset","translation","getTranslation","_getPrefix","browserPrefixToKey","createSVGTransform","getTouch","targetTouches","_shims","changedTouches","getTouchIdentifier","computedStyle","paddingTop","paddingBottom","paddingRight","matchesSelector","matchesSelectorAndParentsTo","baseNode","offsetXYFromParent","evt","offsetParent","offsetParentRect","outerHeight","borderTopWidth","borderBottomWidth","outerWidth","borderLeftWidth","borderRightWidth","removeClassName","removeEvent","detachEvent","removeUserSelectStyles","selection","getSelection","removeAllRanges","nodeInterop","cache","_getRequireWildcardCache","hasPropertyDescriptor","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","matchesSelectorFunc","unitSuffix","defaultX","defaultY","endPos","ReflectOwnKeys","ReflectApply","receiver","NumberIsNaN","emitter","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","existing","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","er","originalListener","spliceOne","rawListeners","eventNames","Stream","Transform","PassThrough","copyProps","SafeBuffer","CorkedRequest","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","destroy","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","hasInstance","pipe","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","pico","reason","setMessage","captureStackTrace","isColorSupported","mark","aside","gray","red","createColors","gutter","spacing","showSourceCode","Warning","messages","lastPlugin","postcssPlugin","Parser","parser","comma","containerElement","headerElement","headerItemsElements","containerScrollLeft","documentElementOffsetLeft","instanceRect","coordinates","windowToPageNoRotate","currentViewRect","dimesions","pageTransition","layout","TextEditingPanel","addActiveColor","contentSelectMode","disableLinkButton","handleAddLinkToText","handlePropertyChange","handleTextFormatChange","rgbColor","textEditProperties","undoRedoProperties","textStylesSection","hexColor","isCopyBtnDisabled","hex","colorPaletteSection","disableTitle","undoRedoSection","handleUndo","handleRedo","useOnContentEditHistoryUndoRedoChanged","contentEditHistoryManager","getContentEditHistoryManager","isUndoEnabled","setIsUndoEnabled","isRedoEnabled","setIsRedoEnabled","onUndoRedoStateChanged","conversionMap","TextEditingPanelContainer","selectionMode","setSelectionMode","annotationRef","contentEditorRef","selectedContentBox","setSelectedContentBox","setTextEditProperties","setFormat","DEFAULT_COLOR","getFontName","fontString","words","currentWord","char","useDidUpdate","getContentEditingFonts","handleSelectionChange","isInContentEditMode","getTextAttributes","fontColor","fontObject","fontName","setTextAttributes","handleEditorStarted","editor","handleEditorEnd","handleContentEditModeStart","handleContentEditModeEnd","handleAnnotationSelected","getContentEditAnnotationId","isContentEditPlaceholder","getTextEditPropertiesFromContentEditPlaceHolder","textAttributes","loadHyperLinkURL","textColor","selectionLength","rangeCount","getRangeAt","getCurrentSelection","setTextColor","applyFormat","formatKey","fontMap","fontKey","getContentEditType","Types","contentBoxId","editManager","getContentBoxAttributes","attribs","fontColors","closeTextEditingPanel","renderNull","setRenderNull","freeTextMode","setContentFont","setContentFontSize","alignContents","updatedDecorator","toggleBoldContents","toggleItalicContents","toggleUnderlineContents","toggleStrikeContents","arrayOfColors","oldText","newText","oldCount","newCount","old","new","selectedAnnotationId","ChangeListItem","viewerNumber","specialChar","ComparePanel","initialChangeListData","initialTotalChanges","currentWidth","panelWidth","changeListData","setAnnotation","totalChanges","setTotalChanges","filteredListData","setFilteredListData","filterfuncRef","throttle","newData","updatePanelItems","doc1Annotations","doc2Annotations","diffCount","annotMap","SKIP_UNMATCHED","doc1AnnotationsClone","doc2AnnotationsClone","annotationMatches1","annotationMatches2","pageNumbers1","pageNumbers2","side1Annotations","side2Annotations","checkIfAnnotionMatches1","checkIfAnnotionMatches2","added","annotPageNumber","doc1Pages","doc2Pages","otherSidePages","thisSidePages","matchedIds","otherAnnotations","unmatchedAnnotations1","unmatchedAnnotations2","aY","bY","resetPanelItems","onAnnotationSelected","shouldRenderItems","changeListItems","OverlayItem","buttonName","currentZoomLevel","isMarqueeZoomActive","onClickZoomLevelOption","onClickMarqueeZoom","isMarqueeToolButtonDisabled","ZoomOverlay","zoomValue","ZoomItem","MultiViewerWrapper","basePick","flatRest","paths","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","react","i18nOptions","keyPrefix","addUsedNamespaces","initializedStoreOnce","getT","getFixedT","nsMode","_useState","_useState2","setT","isMounted","boundReset","isInitial","_default","objectWithoutPropertiesLoose","sourceSymbolKeys","$repeat","repeat","un$ToFixed","multiply","c2","divide","dataToString","fractionDigits","fractDigits","sign","memoize","EnterLeaveCounter","isNodeInDocument","enteringNode","previousLength","entered","itemsA","itemsB","insertItem","union","leavingNode","MonotonicInterpolant","xs","ys","dx","dy","dys","dxs","c1s","_i2","m2","mNext","dxNext","common","c2s","c3s","_i3","c1","invDx","_common","low","high","xHere","diffSq","getNodeClientOffset","nodeType","_el$getBoundingClient","getEventClientOffset","getDragPreviewOffset","sourceNode","dragPreview","clientOffset","anchorPoint","offsetPoint","_document$documentEle","isImage","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","sourceWidth","sourceHeight","anchorX","anchorY","_getDragPreviewSize","dragPreviewWidth","dragPreviewHeight","devicePixelRatio","getDragPreviewSize","offsetX","offsetY","isManualOffsetY","_nativeTypesConfig","FILE","HTML","getDataFromDataTransfer","dataTransfer","typesToTry","resultSoFar","typeToTry","getData","nativeTypesConfig","NativeTypes","exposeProperties","_dataTransfer","matchesTypes","_dataTransfer2","urls","_dataTransfer3","_dataTransfer4","NativeDragSource","config","initializeExposedProperties","monitor","getSourceId","matchNativeItemType","dataTransferTypes","nativeItemType","OptionsReader","globalContext","optionsArgs","_this$globalContext","_this$optionsArgs","rootElement","HTML5BackendImpl","manager","sourceId","sourceNodes","isDraggingNativeItem","endDrag","currentNativeHandle","registry","removeSource","currentNativeSource","currentDragSourceNode","clearCurrentDragSourceNode","isDragging","dragStartSourceIds","defaultPrevented","beginDrag","publishSource","getSourceClientOffset","nativeType","setDragImage","sourcePreviewNodes","_this$getCurrentSourc","getCurrentSourcePreviewNodeOptions","dragPreviewOffset","setData","setCurrentDragSourceNode","captureDraggingState","publishDragSource","beginDragNativeItem","dragEnterTargetIds","enterLeaveCounter","altKeyPressed","hover","targetId","canDropOnTarget","dropEffect","getCurrentDropEffect","dragOverTargetIds","lastClientOffset","hoverRafId","leave","endDragNativeItem","_this$currentNativeSo","dropTargetIds","loadDataTransfer","drop","dragDrop","getActions","getMonitor","getRegistry","_this$dragStartSource","_this$dragOverTargetI","sourcePreviewNodeOptions","sourceNodeOptions","__isReactDndBackendSetUp","addEventListeners","_this$window","removeEventListeners","asyncEndDragFrameId","handleDragStart","handleSelectStart","handleDragEnter","handleDragOver","handleDrop","handleTopDragStart","handleTopDragStartCapture","handleTopDragEndCapture","handleTopDragEnter","handleTopDragEnterCapture","handleTopDragLeaveCapture","handleTopDragOver","handleTopDragOverCapture","handleTopDrop","handleTopDropCapture","getCurrentSourceNodeOptions","itemType","getItemType","createNativeDragSource","addSource","mouseMoveTimeoutTimer","_this5$rootElement","endDragIfSourceWasRemovedFromDOM","_this$window2","HTML5Backend","italics","OutlineUtils","setDoc","setOutlineName","findPDFNetOutline","setTitle","bookmarkEventObject","OUTLINE_BOOKMARKS_CHANGED","setOutlineDestination","getPage","Destination","createXYZ","destination","Action","createGoto","setAction","addRootOutline","createOutlineXYZ","newOutline","addRootBookmark","addNewOutline","hasActiveOutline","getLastOutline","addChild","addNext","findPathInTree","addedOutlinePath","Bookmark","dest","deleteOutline","moveOutlineUp","getPrev","addPrev","changedOutlinePath","moveOutlineDown","getNext","moveOutlineBeforeTarget","targetPath","currTarget","moveOutlineAfterTarget","moveOutlineOutward","getIndent","getParent","moveOutlineOutwardBeforeParent","moveOutlineOutwardBeforeAncestor","ancestorPath","ancestorTarget","moveOutlineInTarget","targetOutline","getLastChild","lastChild","moveOutlineInward","getCanMoveState","outward","inward","getOutlineId","getName","getSplitter","getFirstBookmark","curr","childIdx","getFirstChild","rootOutline","level","isAncestor","parentOutline","getPathArray","getIndex","pdfnetOutline","proxyAccessor","enforceInternalState","setSpecies","NativeRegExp","SyntaxError","IS_NCG","CORRECT_NEW","BASE_FORCED","RegExpWrapper","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","named","names","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","pageNumbersToExtract","finishPromise","pageMap","annotationList","ex","ArrayBufferModule","DataView","DataViewPrototype","un$ArrayBufferSlice","getUint8","setUint8","viewSource","viewTarget","createTypedArrayConstructor","u$ArrayCopyWithin","$fill","fromSpeciesAndList","predicate","$forEach","$indexOf","ArrayIterators","arrayValues","arrayKeys","arrayEntries","GENERIC","ITERATOR_IS_VALUES","typedArrayValues","$join","$lastIndexOf","typedArraySpeciesConstructor","mapfn","$reduceRight","toOffset","WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS","0","TO_OBJECT_BUG","arrayLike","ACCEPT_INCORRECT_ARGUMENTS","mod","expected","begin","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","IS_NOT_ARRAY_METHOD","setLineLength","forceUpdate","sliderSvg","isMouseDown","getRelativeCirclePosition","isEditingInputField","localValue","isUsingMouse","lineEnd","svgLeft","pageX","autoFocus","onInputChange","onInputKeyDown","onInputBlur","onFocus","onInputFocus","circleCenter","shouldHideSliderTitle","customLineStrokeWidth","shouldHideSliderValue","getInputElement","renderSlider","ConnectedSlider","selectedPageNumbers","pageNumberError","onBlurHandler","onSelectedPageNumbersChange","customPageLabels","enablePageLabels","PageNumberInput","pageString","setPageString","hasError","setHasError","getPageString","selectedPageArray","sortedPages","inputValue","lastChar","selectedPagesString","pageNumbersArray","getPageArrayFromString","pageNumbersString","aria-describedby","defineBuiltIns","anInstance","toIndex","IEEE754","arrayFill","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","packIEEE754","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","view","isLittleEndian","intIndex","conversion","INCORRECT_ARRAY_BUFFER_NAME","testView","$setInt8","setInt8","getInt8","bufferLength","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","isStillProcessingResults","buildSearchModeFlag","SearchMode","PAGE_STOP","caseSensitive","CASE_SENSITIVE","wholeWord","WHOLE_WORD","wildcard","WILD_CARD","REGEX","AMBIENT_STRING","isUserTriggered","resultTimeout","doneCallback","hasActiveResultBeenSet","throttleResults","onResult","activeDocumentViewer","searchInProgressCallback","isSearching","searchOptions","searchUp","ambientString","onDocumentEnd","handleSearchError","textSearchInitOptions","Divider","headerDirection","_inheritsLoose","baseIsEqual","useCurrentRef","toRef","toRefRef","getDOMActiveElement","useFocusTrap","focusLastOnUnlock","focusRef","isElementVisible","visibility","getLastVisibleIndex","elementsArray","lockFocus","focusableElements","focusedItemIndex","lastVisibleElementIndex","composedPath","checkFocus","focusLastOnUnlockRef","FilePickerPanel","onFileProcessed","shouldShowIcon","setErrorMessage","acceptFormats","setAcceptFormats","onDrop","processedFile","mergeDocuments","sourceArray","nextCount","newDocument","newDocumentPageCount","pageIndexToInsert","allowMultiple","richTextStyle","newTextDecoration","currentTextDecoration","addUnderLine","removeUnderLine","addLineThrough","removeLineThrough","callRegExpExec","$push","SPLIT","nativeSplit","internalSplit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","originalExec","toolMode","GenericAnnotationCreateTool","groupedLinks","groupedLinksOfAnnot","getGroupedChildren","childrenAnnotation","overArg","updateLayerVisibililty","layerToUpdate","newVisibililtyState","newLayer","visible","prevVisibleState","updateChildrenDisabledState","parentLayer","newParentLayer","childLayer","newChildLayer","updateChildrenVisibilityState","Label","_a","optionalText","childrenId","labelClass","layer","layerUpdated","Layer","setExpanded","hasSubLayers","tooltipContent","isLabel","subLayer","modifiedSubLayer","LayersPanel","emptyPanelState","updatedLayer","newLayers","onLayerUpdated","layerMap","getLayerMapping","getPDFNetAnnotations","pdfNetAnnotation","toggleAnnotationVisibility","getOptionalContent","optionalContent","handleOCGAnnotations","handleOCMDAnnotations","annotationManager","findMatchingWebViewerAnnotation","Hidden","handleAnnotationVisibilityEdgeCase","getOCMDLayerId","ocmdLayerId","getAnnotationDetails","annotationViewerCoordinates","annotationType","getAnnotationsOnPage","compareWebviewerPDFNetAnnotation","getSDFObj","annotSDF","NMInfoDict","NMInfoObject","idString","pdfNetAnnotationType","pdfNetAnnotationViewerCoords","viewerCoords","rectFromPDFNetAnnotation","x1y1","x2y2","positionMatched","equalTo","typeMatched","getDictIterator","optionalContentDictIterator","optionalContentGroup","pdfNetAnnotations","getPageIterator","itr","getNumAnnots","numAnnots","getAnnot","subType","subTypeObject","getViewerCoordinates","pdfNetRect","layersMap","LayersPanelRedux","setLayersArray","toggleAnnotationsVisibility","refreshAll","updateView","reduxProps","updatedLayers","useOnFreeTextEdit","saveEditorInstance","setEditor","handleEditorFocus","placeholderText","overlayText","OverlayText","curOverlayText","setCurOverlayText","ordinaryToPrimitive","pref","exoticToPrim","CONFIGURABLE_LENGTH","TEMPLATE","exceptions","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","channel","port","validateArgumentsLength","IS_IOS","clearImmediate","Dispatch","MessageChannel","counter","runner","post","postMessage","port2","port1","onmessage","importScripts","innerResult","innerError","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","callWithSafeIterationClosing","IS_CONSTRUCTOR","mapping","ENUMERABLE_NEXT","PrototypeOfArrayIteratorPrototype","arrayIterator","InternalMetadataModule","iterate","wrapper","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","getOwnPropertyNamesExternalModule","isExtensible","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","fastKey","getWeakData","onFreeze","internalStateGetterFor","define","previous","getEntry","removed","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","hint","keyFor","TO_ENTRIES","regExpFlags","firefox","UA","webkit","baseGet","baseSet","castPath","reIsUint","$assign","argsLength","partArgs","MSIE","wrap","scheduler","boundArgs","setInterval","clipboardData","clipboard","writeText","textarea","setSelectionRange","n$ParseFloat","trimmedString","colorsAreHex","isNotInCustomColors","handleAddColor","freeGlobal","freeSelf","canDragX","draggable","axis","canDragY","createCoreData","isStart","lastX","findDOMNode","lastY","createDraggableData","coreData","getBoundPosition","cloneBounds","boundNode","ownerWindow","boundNodeEl","nodeStyle","boundNodeStyle","_domFns","getControlPosition","touchIdentifier","draggableCore","touchObj","snapToGrid","grid","pendingX","pendingY","searchParams","pathname","URLSearchParams","username","hash","USE_NATIVE_URL","arraySort","getInternalParamsState","URL_SEARCH_PARAMS","safeGetBuiltIn","nativeFetch","NativeRequest","Headers","RequestPrototype","HeadersPrototype","decodeURIComponent","plus","sequences","percentSequence","percentDecode","sequence","deserialize","replacements","serialize","URLSearchParamsIterator","params","URLSearchParamsState","parseObject","parseQuery","bindURL","entryIterator","entryNext","query","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","getAll","headersHas","headersSet","wrapRequestOptions","RequestConstructor","Request","toPositiveInteger","BYTES","ReadableState","EElistenerCount","debugUtil","debuglog","StringDecoder","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","enc","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","resume","dests","ev","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","_transform","_flush","err2","createRange","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","nativeObjectToString","linkAnnotation","Actions","URI","GoTo","FacingCover","FacingCoverContinuous","DEFAULT_RAW","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","rawValue","afterName","block","depth","important","own","rawCache","beforeAfter","walkComments","ownSemicolon","MapGenerator","TYPE_TO_CLASS_NAME","atrule","comment","PLUGIN_PROPS","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","prepare","RootExit","RuleExit","NOT_VISITORS","getEvents","toStack","eventIndex","visitorIndex","visitors","cleanMarks","postcss","stringified","processed","inline","syntax","helpers","plugins","processing","runAsync","onRejected","catch","onFinally","postcssVersion","hasListener","runOnRoot","prepareVisitors","visitTick","visitor","roots","subRoot","generate","getAsyncError","walkSync","visitSync","onFulfilled","visit","warnings","registerPostcss","dirname","relative","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","isInline","toBase64","outputFile","eol","toUrl","sourcesContent","applySourceMap","clearAnnotation","isMap","generateMap","generateString","fromSourceMap","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","applyPrevMaps","isAnnotation","addAnnotation","sourcePath","withContent","cached","previousMaps","already","toFileUrl","setSourceContent","fileURL","encodeURI","existsSync","readFileSync","loadAnnotation","startWith","loadMap","lastMatch","sourceMapString","mappings","_mappings","sections","comments","getAnnotationURL","prevPath","loadFile","decodeInline","printed","opt","separators","inQuote","prevQuote","baseClone","CLONE_DEEP_FLAG","AsapQueue","pendingErrors","flushing","capacity","currentIndex","scan","newLength","registerPendingError","requestErrorThrow","requestFlush","makeRequestCall","makeRequestCallFromTimer","task","TaskFactory","freeTasks","tasks","RawTask","inputElement","keepTextEditSelectionOnInputFocus","handlePageChange","handleClick","currentRange","startContainer","endContainer","startOffset","endOffset","isRangeModifiedByWorkerAPI","toggleSelectionHighlight","startTextNode","endTextNode","startElement","nextElementSibling","highlighNextCharacterSameLine","highlighNextCharacterNextLine","firstElementChild","workerAPIEditedRange","startNode","endNode","previousSibling","setStart","setEnd","reinitializeRange","maxFontSize","initialFontValue","initialMaxFontValue","incrementMap","BREAKS_AND_INCREMENT","48","iconButtonRef","dropdownDivRef","dropdownContainerRef","sizes","setSizes","shouldBeEmpty","setShouldBeEmpty","initialFontSize","setInitialFontSize","setOpen","currSize","setCurrSize","isValidNum","focused","getIncrement","greaterThanLast","startArr","higherIncrement","higher","getNewNumbers","sizeChange","newSize","checkValidity","validFontSize","debouncedSizeChange","cachedDebouncedSizeChange","setFocused","getContentBoxById","itemHeight","divHeight","itemDistance","onOpenDropdown","addRange","restoreSelection","fontSizeChanged","onSelectCapture","useOnRedactionAnnotationChanged","redactionAnnotationsList","setRedactionAnnotationsList","setRedactionAnnotations","redactionAnnotations","mediaAnnotationTypes","redactionType","OfficeEditorCreateTablePopup","rowIndex","setRowIndex","columnIndex","setColumnIndex","onClickCell","insertTableAtCursor","onMouseLeave","onMouseEnter","onMouseEnterCell","setIsDragging","fileInputRef","handleChange","handleFileDrop","dragging","onDragEnter","onDragLeave","onDragOver","onDragExit","multiple","accept","StatefulButton","newState","activeState","states","mount","prevState","didUpdate","unmount","getContent","shape","AnotherState","arrayMap","baseIteratee","basePickBy","getAllKeysIn","MapShim","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","resolvePending","timeoutCallback","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","subtree","_b","propertyName","getInstance","instance_","defineConfigurable","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","reactEvents","divergentNativeEvents","mimickedReactEvents","onInput","onFocusOut","onSelectionChange","findReactEventHandlers","findReactProperty","propertyPrefix","findReactProps","memoizedProps","_currentElement","eventType","componentProps","persist","isPersistent","reactEventName","nativeEventName","getNativeEventName","retargetEvent","eventHandlers","hot","fromJSON","initializer","warningPrinted","creator","LANG","transformer","processOpts","pluginOpts","atRule","XmlHttpRequestApi","ActiveXObjectApi","addQueryString","queryString","paramName","queryStringParams","customHeaders","requestOptions","ok","statusText","requestWithFetch","crossDomain","setRequestHeader","withCredentials","overrideMimeType","onreadystatechange","readyState","responseText","requestWithXmlHttpRequest","DndContext","dragDropManager","_asapJs","_typesJs","_asapQueueJs","_taskFactoryJs","DimensionsInput","autoTrim","supportedUnits","autoTrimOptions","onDimensionChange","onUnitChange","autoTrimActive","setAutoTrimActive","onAutoTrimChange","onKeyUp","PagesToCropOptions","cropMode","onCropModeChange","loadedDocumentPageCount","selectedPages","handlePageNumbersChanged","handlePageNumberError","radio","DocumentCropPopupMobile","handleButtonPressed","isCropping","autoTrimDimensions","isCropDimensionsContainerActive","cropAnnotation","toggleCropDimensions","toggleHandler","DocumentCropPopup","closeDocumentCropPopup","applyCrop","isPageRotated","redrawCropAnnotations","onSelectedPagesChange","setPageNumberError","cropNames","unitConversions","setUnit","setAutoTrim","setCropDimensionsContainerActive","convertUnitsToPt","convertPtToUnits","unitToConvertTo","truncateInput","specialChars","setYOffset","setHeight","setXOffset","setWidth","onCropAnnotationChanged","getY","getX","dimension","validateInput","setY","setX","openCropConfirmationWarning","openCropCancellationWarning","cancellationWarning","useOnCropAnnotationChangedOrSelected","openDocumentCropPopup","setCropAnnotation","onAnnotationChanged","MobilePopupWrapper","DocumentCropPopupContainer","cropCreateTool","getIsCropping","setIsCropping","elementsToClose","setSelectedPages","getPagesToCrop","handleToolModeChange","newTool","oldTool","CropCreateTool","reenableHeader","handleCropModeChange","newMode","setCropMode","pointerEvents","toolsHeader","disableHeader","cropPopupRef","documentContainerElement","popupWidth","popupHeight","cropPopupOffset","setPagesToCrop","CROP","getPageRotation","setRect","cropName","multiSelectAnnotations","useOnClickPrepareSoundAnnotation","audio","prepareAudioBlob","AudioPlaybackPopup","autoplay","handleAudioPlaybackError","handleAudioInitializeError","handleCloseAudioPlaybackPopup","isPlayingAudio","setIsPlayingAudio","durationValue","setDurationValue","durationString","setDurationString","currentTimeValue","setCurrentTimeValue","currentTimeString","setCurrentTimeString","audioElementRef","isPlaying","play","getTimeStampStringFromSeconds","totalSeconds","minutes","padStart","seconds","audioContext","AudioContext","createMediaElementSource","playAudio","viewBox","xmlns","onLoadedMetadata","timeStampString","onTimeUpdate","onEnded","AudioPlaybackPopupContainer","draggableRef","closeAudioPlaybackPopup","onSoundAnnotationDeleted","renderAudioPlaybackPopup","ProgressModal","progressCircle","circle","circumference","baseVal","strokeDasharray","strokeDashoffset","toVal","mix","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","isIntegralNumber","typedArrayFrom","nativeDefineProperty","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","addElement","typedArrayOffset","$length","$len","newPromiseCapability","promiseCapability","defineBuiltInAccessor","webpackPolyfill","flattenIntoArray","depthArg","sourceLen","arrayLikeToArray","minLen","un$EndsWith","endsWith","endPosition","isInteger","getPrototype","Internal","OwnPromiseCapability","nativeThen","microtask","hostReportErrors","perform","Queue","PromiseConstructorDetection","newPromiseCapabilityModule","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","isThenable","callReaction","reaction","exited","fail","rejection","onHandleUnhandled","exit","isReject","notified","reactions","onUnhandled","isUnhandled","internalReject","internalResolve","executor","PromiseWrapper","toggle","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","Pebble","capability","$promiseResolve","alreadyCalled","real","race","promiseResolve","PromiseConstructorWrapper","CHECK_WRAPPER","StrictMode","Profiler","Suspense","for","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isReactComponent","isPureReactComponent","__self","__source","J","$$typeof","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","ReactCurrentOwner","IsSomeRendererActing","Children","toArray","only","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","lazy","_payload","_init","useDebugValue","useReducer","aa","ba","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","pa","qa","ma","la","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","eb","fb","defaultSelected","gb","hb","ib","jb","kb","lb","mb","ob","MSApp","execUnsafeLocalFunction","namespaceURI","pb","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","rb","sb","tb","setProperty","ub","menuitem","area","br","embed","hr","keygen","track","wbr","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","ec","gc","hc","ic","jc","kc","lc","mc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","wd","xd","yd","sd","eventPhase","isTrusted","td","ud","vd","Ad","screenX","screenY","pageY","zd","buttons","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","animationName","elapsedTime","pseudoElement","Jd","Ld","Md","Esc","Spacebar","Up","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","Xd","Zd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","datetime","tel","week","me","ne","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","Ne","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ff","gf","hf","je","ke","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","ah","bh","ch","dh","eh","fh","gh","ih","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","onclick","createElementNS","Hi","Ii","W","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","_reactRootContainer","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","focusedElem","selectionRange","ek","Me","compareDocumentPosition","onCommitFiberRoot","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","form","Vj","vk","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","supportsFiber","inject","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","performance","unstable_forceFrameRate","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ENTRIES","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","preventExtensions","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","QObject","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","$stringify","numberToString","tester","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","tailPos","hasIn","toKey","reIsDeepProp","reIsPlainProp","memoizeCapped","rePropName","reEscapeChar","quote","subString","nested","getNative","baseHasIn","hasPath","isArguments","isLength","hasFunc","mapper","elementLen","targetIndex","sourceIndex","mapFn","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","any","instanceOf","objectOf","exact","checkPropTypes","_s","_e","_n","_d","iteratee","storage","_getStorage","removeItem","storageType","testKey","hasStorage","noopStorage","$hypot","value1","value2","div","aLen","larg","_DraggableCore","_propTypes","_interopRequireDefault","_reactDom","_clsx2","_positionFns","_log","_objectWithoutProperties","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_React$Component","_super","dragged","uiData","slackX","slackY","_getBoundPosition2","newStateX","newStateY","onDrag","onStop","_this$props$position","defaultPosition","prevPropsPosition","isElementSVG","_this$props$nodeRef$c","_this$props$nodeRef","nodeRef","_clsx","_this$props2","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","draggableCoreProps","svgTransform","validPosition","transformOpts","onDragStart","onDragStop","browserPrefixToStyle","getPrefix","prefixes","_window$document","_window$document$docu","shouldCapitalize","kebabToTitleCase","eventsFor","move","dragEventFor","allowAnyClick","thisNode","coreEvent","enableUserSelectHack","handleDrag","handleDragStop","_snapToGrid2","_snapToGrid4","_this$props2$nodeRef","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","http","https","ws","wss","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","failure","urlString","stateOverride","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","scheme","cannotBeABaseURL","isSpecial","includesCredentials","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","address","pieceIndex","parseIPv6","partsLength","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","getProtocol","setProtocol","getUsername","setUsername","getPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","regexNonASCII","regexSeparators","OVERFLOW_ERROR","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","encode","currentValue","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","encoded","labels","$padStart","IS_END","fillString","fillLen","stringFiller","intMaxLength","stringLength","fillStr","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","nBits","copyWithin","inc","arrayFromConstructorAndList","EE","_isStdio","didOnEnd","cleanup","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","custom","Timeout","clearFn","_id","_clearFn","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","msg","trace","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","showHidden","_extend","customInspect","stylizeWithColor","formatValue","recurseTimes","primitive","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","ar","pad","NODE_DEBUG","pid","timestamp","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseReject","callbackify","callbackified","maybeCb","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","getBlob","mapArrayBufferViews","ary","BlobBuilderConstructor","BlobConstructor","baseRange","isIterateeCall","toFinite","fromRight","nativeCeil","baseIsEqualDeep","bitmask","Stack","equalArrays","equalByTag","equalObjects","getTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","__data__","assocIndexOf","SetCache","arraySome","cacheHas","isPartial","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","baseIndexOf","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","Source","webpackAsyncContext","dim","inverse","strikethrough","black","green","yellow","blue","magenta","cyan","white","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","customAlphabet","alphabet","defaultSize","tokenizer","SAFE_COMMENT_NEIGHBOR","spaces","createTokenizer","token","unnamedAtrule","endOfFile","nextToken","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","tokens","founded","doubleColon","customProperty","findLastWithPosition","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","checkMissedSemicolon","unexpectedClose","unclosedBlock","bracket","back","unclosedBracket","freeSemicolon","emptyRule","endFile","clean","lastTokenType","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","escaped","escapePos","currentToken","ignoreErrors","returned","unclosed","ignoreUnclosed","controlChar","NoWorkResult","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","ownInputs","inputHydrated","isDataDescriptor","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","initCloneArray","initCloneByTag","initCloneObject","isSet","keysIn","cloneableTags","isDeep","isFlat","isFull","isArr","isFunc","stacked","subValue","copyObject","freeExports","freeModule","getSymbols","getSymbolsIn","baseCreate","isPrototype","objectCreate","__self__","DOMException","support","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","readAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","_bodyArrayBuffer","rejected","readAsText","readArrayBufferAsText","formData","decode","oldValue","upcased","credentials","signal","referrer","Response","bodyInit","redirectStatuses","redirect","aborted","xhr","abortXhr","abort","rawHeaders","getAllResponseHeaders","responseURL","ontimeout","onabort","polyfill","ponyfill","jsx","jsxs","asap","asapQueue","enqueueTask","taskFactory","makeRequestCallFromMutationObserver","BrowserMutationObserver","handleTimer","intervalHandle","release","I18nextProvider","createThunkMiddleware","extraArgument","thunk","withExtraArgument","ToggleZoomOverlay","onZoomUpdated","onDocumentUnloaded","inputWidth","OverlayContainer","onKeyPress","zoomFactors","TrackChangeOverlay","setEditMode","PresetButton","isToolStyleOpen","isNodeFound","componentNode","ignoreClass","correspondingElement","seed","passiveEventSupport","handlersMap","enabledInstances","touchEvents","getEventHandlerOptions","handlerOptions","__outsideClickHandler","__clickOutsideHandlerProp","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","eventTypes","excludeScrollbar","findHighest","composed","outsideClickIgnoreClass","disableOnClickOutside","getRef","instanceRef","wrappedRef","getClass","SignatureRowContent","altText","buttonText","SavedSignatures","onSetHandler","deleteHandler","currentlySelectedIndex","isDeleteDisabled","signature","savedSignatureIndex","SignatureStylePopup","displayedSignatures","isSignatureDeleteButtonDisabled","signatureToolArray","setSignature","signatureTool","hasLocation","addSignature","showPreview","setInitials","addInitials","showInitialsPreview","deleteSignatureAndInitials","isFullSignature","deleteSavedInitials","deleteSavedSignature","isDeletingSelectedInitials","isDeletingSelectedSignature","hidePreview","signaturesToDisplay","TOOL_NAME","RubberStampOverlay","stampToolArray","stamps","deleteCustomStamps","setRubberStamp","rubberStamps","customImgs","deleteCustomStamp","openCustomSampModal","ConnectedRubberStampOverlay","ToolStylePopup","toolsOverlays","pageNavOverlays","warningModal","colorPicker","openedModal","clickedOnToolsOverlay","toolsOverlay","clickedOnPageNavOverlay","pageNavOverlay","clickedOnCreateStampModal","pageModal","complete","setToolStyles","activeToolStyle","activeToolRichTextStyle","getTextDecoration","section","isAutoSizeFont","isAutosizeFont","isEllipseMeasurementTool","handleAutoSize","handleStyleChange","handleRichTextStyleChange","handleLineStyleChange","ConnectedToolStylePopup","toolButtonDataElement","isTablet","isDesktop","ToolsDropdown","SelectedSignatureRow","displayedSignature","displayedInitial","selectedSignature","SelectedRubberStamp","prevLanguage","rubberStampToolArray","onStampsModified","isEmptyStamp","SelectedStamp","selectedStampArray","ToolsOverlay","setOverlayPosition","activeHeaderItems","isStylingOpen","siblingWidth","handleWindowResize","clickedOnAnotherToolGroupButton","isSmallComponent","noPresets","ToolsOverlayContainer","Overlay","shadow","ConnectedToolsOverlay","FileName","isEditing","setIsEditing","setExtension","setFileNameWithoutExtension","finishEditing","setFilename","nameArray","toolbarGroups","ribbonsWidth","setRibbonsWidth","containerWidth","setContainerWidth","hasEnoughCenteredSpace","setHasEnoughCenteredSpace","ribbonsRef","containerRef","shouldPickTool","toggleFormFieldCreationMode","startFormFieldCreationMode","endFormFieldCreationMode","toggleContentEditMode","startContentEditMode","endContentEditMode","spaceLeftOfContainer","spaceForLeftHalfOfRibbons","spaceForRibbons","getToolbarTranslationString","customHeaderProperties","filteredToolBarGroup","ApplyFormFieldButton","applyFormFields","undoButton","redoButton","instanceId","isLocalStorageEnabled","defaultModularHeaders","grow","borderWidth","opacityMode","borderColor","defaultModularComponents","filePickerButton","downloadButton","saveAsButton","printButton","createPortfolioButton","settingsButton","panToolButton","annotationEditToolButton","groupedLeftHeaderButtons","searchPanelToggle","notesPanelToggle","highlightToolButton","underlineToolButton","strikeoutToolButton","squigglyToolButton","freeTextToolButton","markInsertTextToolButton","markReplaceTextToolButton","freeHandToolButton","freeHandHighlightToolButton","stickyToolButton","calloutToolButton","stylePanelToggle","buttonType","eraserToolButton","defaultAnnotationUtilities","annotateToolsGroupedItems","annotateGroupedItems","rectangleToolButton","ellipseToolButton","arcToolButton","polygonToolButton","cloudToolButton","lineToolButton","polylineToolButton","arrowToolButton","shapesToolsGroupedItems","shapesGroupedItems","rubberStampToolButton","signatureCreateToolButton","fileAttachmentButton","stampToolButton","insertToolsGroupedItems","insertGroupedItems","redactionToolButton","pageRedactionToggleButton","redactionPanelToggle","redactionGroupedItems","distanceMeasurementToolButton","arcMeasurementToolButton","perimeterMeasurementToolButton","areaMeasurementToolButton","ellipseMeasurementToolButton","rectangularAreaMeasurementToolButton","countMeasurementToolButton","measureGroupedItems","cropToolButton","snippingToolButton","editGroupedItems","addParagraphToolGroupButton","addImageContentToolGroupButton","contentEditButton","contentEditGroupedItems","crossStampToolButton","checkStampToolButton","dotStampToolButton","calendarToolButton","fillAndSignGroupedItems","signatureFieldButton","textFieldButton","checkboxFieldButton","radioFieldButton","listBoxFieldButton","comboBoxFieldButton","formFieldEditButton","formsToolsGroupedItems","formsGroupedItems","defaultPanels","panelsList","defaultFlyoutMap","priorty","stylePanel","signatureListPanel","rubberStampPanel","hiddenOnMobileDevice","isOfficeEditorOnly","titile","annotationPopup","textPopup","contextMenuPopup","AnnotationCreateCountMeasurement","AnnotationCreateCountMeasurement2","AnnotationCreateCountMeasurement3","AnnotationCreateCountMeasurement4","AnnotationCreateDistanceMeasurement","AnnotationCreateDistanceMeasurement2","AnnotationCreateDistanceMeasurement3","AnnotationCreateDistanceMeasurement4","AnnotationCreatePerimeterMeasurement","AnnotationCreatePerimeterMeasurement2","AnnotationCreatePerimeterMeasurement3","AnnotationCreatePerimeterMeasurement4","AnnotationCreateArcMeasurement","AnnotationCreateArcMeasurement2","AnnotationCreateArcMeasurement3","AnnotationCreateArcMeasurement4","AnnotationCreateAreaMeasurement","AnnotationCreateAreaMeasurement2","AnnotationCreateAreaMeasurement3","AnnotationCreateAreaMeasurement4","AnnotationCreateEllipseMeasurement","AnnotationCreateEllipseMeasurement2","AnnotationCreateEllipseMeasurement3","AnnotationCreateEllipseMeasurement4","AnnotationCreateRectangularAreaMeasurement","AnnotationCreateRectangularAreaMeasurement2","AnnotationCreateRectangularAreaMeasurement3","AnnotationCreateRectangularAreaMeasurement4","AnnotationCreateCloudyRectangularAreaMeasurement","AnnotationCreateCloudyRectangularAreaMeasurement2","AnnotationCreateCloudyRectangularAreaMeasurement3","AnnotationCreateCloudyRectangularAreaMeasurement4","AnnotationCreateFreeHand2","AnnotationCreateFreeHand3","AnnotationCreateFreeHand4","AnnotationCreateFreeHandHighlight","AnnotationCreateFreeHandHighlight2","AnnotationCreateFreeHandHighlight3","AnnotationCreateFreeHandHighlight4","AnnotationCreateTextHighlight2","AnnotationCreateTextHighlight3","AnnotationCreateTextHighlight4","AnnotationCreateTextUnderline2","AnnotationCreateTextUnderline3","AnnotationCreateTextUnderline4","AnnotationCreateTextSquiggly2","AnnotationCreateTextSquiggly3","AnnotationCreateTextSquiggly4","AnnotationCreateTextStrikeout2","AnnotationCreateTextStrikeout3","AnnotationCreateTextStrikeout4","AnnotationCreateFreeText2","AnnotationCreateFreeText3","AnnotationCreateFreeText4","AnnotationCreateDateFreeText","AnnotationCreateDateFreeText2","AnnotationCreateDateFreeText3","AnnotationCreateDateFreeText4","AnnotationCreateMarkInsertText","AnnotationCreateMarkInsertText2","AnnotationCreateMarkInsertText3","AnnotationCreateMarkInsertText4","AnnotationCreateMarkReplaceText","AnnotationCreateMarkReplaceText2","AnnotationCreateMarkReplaceText3","AnnotationCreateMarkReplaceText4","AnnotationCreateCallout2","AnnotationCreateCallout3","AnnotationCreateCallout4","AnnotationCreateSticky2","AnnotationCreateSticky3","AnnotationCreateSticky4","AnnotationCreateRectangle2","AnnotationCreateRectangle3","AnnotationCreateRectangle4","AnnotationCreateEllipse2","AnnotationCreateEllipse3","AnnotationCreateEllipse4","AnnotationCreateArc","AnnotationCreateArc2","AnnotationCreateArc3","AnnotationCreateArc4","AnnotationCreateLine2","AnnotationCreateLine3","AnnotationCreateLine4","AnnotationCreatePolyline","AnnotationCreatePolyline2","AnnotationCreatePolyline3","AnnotationCreatePolyline4","AnnotationCreatePolygon","AnnotationCreatePolygon2","AnnotationCreatePolygon3","AnnotationCreatePolygon4","AnnotationCreatePolygonCloud","AnnotationCreatePolygonCloud2","AnnotationCreatePolygonCloud3","AnnotationCreatePolygonCloud4","CALIBRATION_MEASUREMENT","FORM_FILL_CROSS","FORM_FILL_CHECKMARK","FORM_FILL_DOT","OUTLINE_DESTINATION","signatureModal","pageReplacementModal","linkModal","rubberStampTab","filterAnnotModal","defaultToolsWithInlineComment","annotationInstance","webFonts","timeFirst","includeReplies","isDocumentFilterActive","authorFilter","colorFilter","typeFilter","statusFilter","creditCards","phoneNumbers","emails","customCSS","defaultDisabledElements","fullAPI","preloadWorker","enableOptimizedWorkers","serverUrlHeaders","useSharedWorker","disableI18n","pdfWorkerTransportPromise","officeWorkerTransportPromise","headerName","defaultValues","groupOrder","removeEmptyRows","removeEmptyGroups","createRawValueGroup","REHYDRATE","REGISTER","autoMergeLevel1","inboundState","originalState","reducedState","createPersistoid","transforms","storageKey","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","processNextKey","endState","subState","in","onWriteFail","passWhitelistBlacklist","defaultDeserialize","serialized","rawState","reduceRight","serial","warnIfRemoveError","persistReducer","baseReducer","stateReconciler","getStoredState","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","restState","_sealed","_rehydrate","rehydrate","restoredState","migrate","migratedState","migrateErr","purgeStoredState","_newState","iter","bootstrapped","firstIndex","viewerPersistConfig","searchPersistConfig","updatedFlyout","tooltip","buttonGroup","newToolButtonObjects","existingDataElementFiltered","modal","existingModularHeader","updatedModularHeader","existingModularComponent","updatedModularComponent","newModularComponents","existingGroupedItem","updatedGroupedItem","updatedState","addIndex","updatedRedactionSearchPatterns","searchReducer","userReducer","documentFile","documentPageNumber","newBookmarks","documentReducer","featureFlagsReducer","wv3dPropertiesPanelReducer","fontFaces","officeEditorReducer","digitalSignatureValidationReducer","PersistGate","_PureComponent","_getPrototypeOf2","persistor","onBeforeLift","finally","_unsubscribe","handlePersistorState","loading","LogoBar","logoText","versionText","packageConfig","apryseURL","Accessibility","isNotesPanelDisabled","isSearchPanelDisabled","setIsVisible","a11yClass","searchEl","noteEl","ScrollGroup","scrollRef","isScrolledToEnd","setIsScrolledToEnd","isScrolledToStart","setIsScrolledToStart","checkScrollPosition","onScroll","ToolGroupButtonsScroll","toolGroupButtonsItems","toolBtn","screen","innerKey","HeaderItems","handledToolGroupButtons","isToLeftOfActive","closeTab","setDisabled","HoverTab","isHovering","setIsHovering","getWindowDimensions","TabsHeader","setDragging","dragIndex","setDragIndex","dropTarget","setDropTarget","hovering","setHovering","hoveredTab","currTabs","windowDimensions","setWindowDimensions","handleResize","useWindowDimensions","onDragOverHoverTab","breakpoint","activeIndex","moveTab","effectAllowed","moveLeft","onDragEnd","renderedTabs","additionalTabs","openFile","Header","isToolsHeaderOpen","MainHeader","ToolsHeader","isHeaderDisabled","ConnectedToolsHeader","isToolsOverlayOpen","isToolsOverlayDisabled","isSignatureOverlayOpen","isSignatureOverlayDisabled","HeaderContainer","getWidthAfterTransition","oldTransition","expandContainerWidthBy","shrinkContainerWidthBy","PageNavOverlay","textInput","pageToGo","isFocused","isCustomPageLabels","enableFadePageNavigation","FadeOut","showNavOverlay","isLogoBarEnabled","goToPrevPage","goToNextPage","isLeftPanelDisabled","ConnectedPageNavOverlay","zoomLevel","getActualZoomLevel","MarqueeZoomTool","ReaderModeStylePopup","popupRef","ReaderModeViewer","WebViewerReadingMode","wvReadingMode","pageNumberUpdateHandler","editStyleHandler","onEditStyle","setAddAnnotConfig","goToPage","readerModeElement","annotationTypes","AnnotationType","TextHighlightCreateTool","Highlight","TextUnderlineCreateTool","Underline","TextStrikeoutCreateTool","Strikeout","TextSquigglyCreateTool","Squiggly","annotType","getAnnotTypeFromToolMode","setAnnotStyleCb","doneSetAnnotColorCb","getColorMapKey","showStylePopup","originalMaxZoom","originalEnableFadePageNavigation","updateMaxZoom","renderDocument","handleOpacityChange","handleStylePopupClose","openedElementsMap","LazyLoadWrapper","onOpenHook","passedInProps","onOpenProps","elementWasOpened","ScaleOverlayContainer","MeasurementOverlay","ViewControlsOverlay","MenuOverlay","PageManipulationOverlay","AnnotationContentOverlay","ThumbnailMoreOptionsPopup","ThumbnailMoreOptionsPopupSmall","AnnotationPopup","FormFieldEditPopup","TextPopup","ContextMenuPopup","RichTextPopup","RichTextStyleEditor","InlineCommentingPopup","LinkAnnotationPopup","AlignmentPopup","ContentEditLinkModal","SignatureModal","ScaleModal","PrintModal","ErrorModal","CreateStampModal","PageReplacementModal","LinkModal","FilterAnnotModal","PageRedactionModal","CalibrationModal","SettingsModal","SaveModal","InsertPageModal","LoadingModal","WarningModal","Model3DModal","ColorPickerModal","OpenFileModal","SignatureValidationModal","CustomModal","CreatePortfolioModal","OutlinesPanel","SignaturePanel","BookmarksPanel","FileAttachmentPanel","ThumbnailsPanel","StylePanel","SearchPanel","SignatureListPanel","LeftPanel","RubberStampPanel","LazyLoadComponents","RedactionPanel","PortfolioPanel","OfficeEditorToolsHeader","isMeasurementExcludeCalibration","measurement","useOnMeasurementToolOrAnnotationSelected","setAnnotations","selectedTool","setSelectedTool","measuredAnnotations","onScaleUpdated","changedAnnotations","onMouseMove","isMeasurementToolWithInfo","isSmallAnnotation","minSize","getRectPadding","shouldShowInfo","showInfo","useOnCountMeasurementAnnotationSelected","prevActiveToolName","usePrevious","isCountMeasurementAnnotation","validate","shouldShowCustomOverlay","DocumentContainer","isMouseWheelZoomEnabled","wheelToZoom","shouldGoUp","shouldGoDown","wheelToNavigatePages","pageUp","pageDown","showPageNavigationOverlay","debouncedHidePageNavigationOverlay","hidePageNavigationOverlay","isSearchOverlayOpen","updateContainerWidth","onWheel","updateContainerSize","showAndFadeNavigationOverlay","isMultiTabEmptyPageOpen","documentContentContainerWidthStyle","bottomHeaderHeight","leftHeaderWidth","documentContainerLeftMargin","documentContainerClassName","isHeaderOpen","getClassName","documentClassName","showPageNav","footerStyle","onTransitionEnd","pageNavOnMouseEnter","pageNavOnMouseLeave","ConnectedDocumentContainer","ConnectedComponent","setIsMobile","RightPanel","isOfficeEditorToolsHeaderOpen","isMultiTabActive","topHeadersHeight","bottomHeadersHeight","legacyToolsHeaderOpen","legacyAllHeadersHidden","horizontalHeadersHeight","FilePickerHandler","SERVER","CopyTextHandler","aria-hidden","PrintHandler","printMargins","setDocumentType","canEmbeddedPrintServer","setCanEmbeddedPrintServer","fontPath","setFontPath","getFontPath","defaultFonts","family","weight","loadFont","fontType","isWebFont","fontDirectoryPaht","fontTypes","ttf","woff","woff2","__webpack_public_path__","FontFace","loadedFace","FontHandler","PropertyKeyValuePair","GeneralValuesSection","entities","entity","Group","setIsActive","GroupsContainer","combinedGroups","orderedGroup","orderArray","groupName","addOrderedGroups","HeaderTitle","createDataSet","dataMap","propertySet","combinedMap","dataPoint","checkForEmptyKeys","PropertiesElement","defaultItems","groupsItems","combinedGroupMap","generateGroupDataSet","Wv3dPropertiesPanel","closeWv3dPropertiesPanel","propertiesCollection","Wv3dPropertiesPanelContainer","SnippingToolPopup","snippingMode","onSnippingModeChange","closeSnippingPopup","applySnipping","isSnipping","snippingNames","openSnippingConfirmationWarning","openSnippingCancellationWarning","useOnSnippingAnnotationChangedOrSelected","openSnippingPopup","snippingAnnotation","setSnippingAnnotation","SnippingToolPopupContainer","snippingToolName","snippingCreateTool","getIsSnipping","setIsSnipping","handleSnippingCancellation","SnippingCreateTool","setSnippingMode","snippingPopupRef","getSnippingPopupOffset","SNIPPING","EmbeddedJSPopupMenuOption","EmbeddedJSPopupSubMenu","popUpMenuItems","isSubMenuOpen","setSubMenuOpen","optionRef","alignSelf","isSubOpen","onSelectOption","EmbeddedJSPopupMenu","setMaxHeight","setScrollTop","containerRect","mHeight","customMenuStyle","EmbeddedJSPopup","overflowY","popUpMenuItem","EmbeddedJSPopupOption","fieldManager","getFieldManager","setPopUpMenuItems","popupData","setPopupData","onFieldClick","onPopUpMenu","getField","onSelect","useOnFormFieldsChanged","formFieldAnnotationsList","setFormFieldAnnotationsList","setFormFieldIndicators","formFieldIndicators","fieldNameMap","field","getFieldLabels","FIELD_NAME","getShowIndicator","FormFieldIndicator","parameters","viewerBoundingRect","appBoundingRect","visiblePages","getVisiblePages","annotationBottomRight","annotationTopLeft","annotHeightInPixels","INDICATOR_HEIGHT","setIndicatorYPosition","isRightSidePage","isPlaceholder","isPageVisible","indicatorText","FormFieldIndicatorContainer","notePanelWidth","indicators","setIndicators","getIndicators","fieldAnnotation","createFormFieldIndicator","resetIndicators","MultiTabEmptyPage","addNewTab","DropArea","fileInput","docLoaded","isSyncing","DocumentHeader","setFileName","saveButtonDisabled","stopSyncing","onLoaded","unLoaded","onReady","scrollingUp","scrollingDown","pagesToNavigate","_container","_setCurrentPage","zoom1","zoom2","CompareZoomOverlay","onClickMarqueeZoom1","onClickMarqueeZoom2","onClickZoomLevelOption1","onClickZoomLevelOption2","setPreRenderLevel","DisplayModes","getDefaultPageLabels","checkStampAnnotation","crossStampAnnotation","setIdsForChildren","parentLayerId","isParentDisabled","createNewLayer","layerId","newOCGLayers","currentOCGLayers","_isEqual","layersToSet","onFirstLoad","getIsCustomUIEnabled","documentCompletePromise","enableAnnotations","disableAnnotations","outlineUtils","setNextActivePanelDueToEmptyCurrentPanel","currentActivePanel","nextActivePanel","getLayersArray","currentLayers","onLayersUpdated","docType","setZoomLevel","searchShortcutKeys","handleEditModeUpdate","isDocumentClosed","documentUnloadedHandler","checkIfDocumentClosed","totalPageCount","displayedPageCount","errorLoadingDocument","getPageLabel","pageLabel","getLabelTitle","defaultPageLabels","newLabel","loadedFromServer","serverFailed","setPrintHandler","DOCUMENT_LOADED","overlays","storeStyle","currentTool","isLastPickedGroupUndefined","toolbarGroupNames","toolbarGroupName","groupItem","setActiveToolGroupAndToolsOverlay","stampAnnotation","signatureAnnotation","deleteReplies","InReplyTo","isUndoRedo","isInlineCommentDisabled","moved","movedKeys","isEmptySignature","isEmptyInitialsSignature","requiresInitials","isCustomizableUI","signatureIndex","activeSavedSignatureTab","dotStampAnnotation","rubberStampAnnotation","boundTranslator","loadPageText","textContainer","pageContainerElement","existingTextContainer","fileMeta","previewsPromise","newAnnotations","oldStrokeThickness","preview","numberOfSignaturesToRemove","getSignatureDataToStore","signaturesToStore","coreSavedSignatures","newSavedSignatures","formBuilderDefaultDisabledKeys","keysToEnable","BackendTypes","WASM","numberOfInitialsToRemove","initialsToStore","newSavedInitials","isLoadingModalOpen","passwordCheckCallback","successPasswordCallback","addPasswordRequiredHeaderItem","checkPasswordCallback","removePasswordRequiredHeaderItem","attempts","searchButton","passwordLockHeaderItem","passwordRequiredButton","skipHotkeys","onBeforeDocumentLoaded","eventListeners","onCheckStampAnnotationAdded","onCrossStampAnnotationAdded","onDisplayModeUpdated","onFitModeUpdated","onRotationUpdated","onToolUpdated","onToolModeUpdated","onPageNumberUpdated","onUpdateAnnotationPermission","onStampAnnotationAdded","onSignatureAnnotationAdded","onStickyAnnotationAdded","onCaretAnnotationAdded","onFullScreenChange","onLocationSelected","onDotStampAnnotationAdded","onRubberStampAnnotationAdded","onRubberStampsUpdated","onReadOnlyModeChanged","onPageComplete","onFileAttachmentAnnotationAdded","onFileAttachmentDataAvailable","onSignatureSaved","onSignatureDeleted","onHistoryChanged","onFormFieldCreationModeStarted","onFormFieldCreationModeEnded","onDigitalSignatureAvailable","onImageContentAdded","onInitialSaved","onInitialDeleted","onContentEditModeStarted","onContentEditModeEnded","onContentBoxEditStarted","onContentBoxEditEnded","onContentEditDocumentDigitalSigned","onContentEditPasswordRequired","addEventHandlers","removeEventHandlers","ComparisonButton","semanticDiffAnnotations","checkDisabled","documentsLoaded","document1IsValidType","document2IsValidType","startComparison","documentViewer2","startSemanticDiff","toggleComparisonOverlay","documentViewerOne","documentViewerTwo","stopSemanticDiff","isSwitch","addToolsToDocViewer","FreeHandCreateTool","FREEHAND2","FREEHAND3","FREEHAND4","FreeHandHighlightCreateTool","FREEHAND_HIGHLIGHT2","FREEHAND_HIGHLIGHT3","FREEHAND_HIGHLIGHT4","FreeTextCreateTool","FREETEXT2","FREETEXT3","FREETEXT4","MarkInsertTextCreateTool","MARK_INSERT_TEXT2","MARK_INSERT_TEXT3","MARK_INSERT_TEXT4","MarkReplaceTextCreateTool","MARK_REPLACE_TEXT2","MARK_REPLACE_TEXT3","MARK_REPLACE_TEXT4","DateFreeTextCreateTool","DATEFREETEXT2","DATEFREETEXT3","DATEFREETEXT4","CalloutCreateTool","CALLOUT2","CALLOUT3","CALLOUT4","StickyCreateTool","STICKY2","STICKY3","STICKY4","UNDERLINE2","UNDERLINE3","UNDERLINE4","STRIKEOUT2","STRIKEOUT3","STRIKEOUT4","SQUIGGLY2","SQUIGGLY3","SQUIGGLY4","RectangleCreateTool","RECTANGLE2","RECTANGLE3","RECTANGLE4","EllipseCreateTool","ELLIPSE2","ELLIPSE3","ELLIPSE4","PolygonCreateTool","POLYGON2","POLYGON3","POLYGON4","PolygonCloudCreateTool","POLYGON_CLOUD2","POLYGON_CLOUD3","POLYGON_CLOUD4","LineCreateTool","LINE2","LINE3","LINE4","PolylineCreateTool","POLYLINE2","POLYLINE3","POLYLINE4","AnnotationCreateArrow2","ArrowCreateTool","ARROW2","AnnotationCreateArrow3","ARROW3","AnnotationCreateArrow4","ARROW4","CountMeasurementCreateTool","COUNT_MEASUREMENT2","COUNT_MEASUREMENT3","COUNT_MEASUREMENT4","DistanceMeasurementCreateTool","DISTANCE_MEASUREMENT2","DISTANCE_MEASUREMENT3","DISTANCE_MEASUREMENT4","PerimeterMeasurementCreateTool","PERIMETER_MEASUREMENT2","PERIMETER_MEASUREMENT3","PERIMETER_MEASUREMENT4","AreaMeasurementCreateTool","AREA_MEASUREMENT2","AREA_MEASUREMENT3","AREA_MEASUREMENT4","EllipseMeasurementCreateTool","ELLIPSE_MEASUREMENT2","ELLIPSE_MEASUREMENT3","ELLIPSE_MEASUREMENT4","RectangularAreaMeasurementCreateTool","RECTANGULAR_AREA_MEASUREMENT2","RECTANGULAR_AREA_MEASUREMENT3","RECTANGULAR_AREA_MEASUREMENT4","TextFormFieldCreateTool2","TextFormFieldCreateTool","TEXT_FORM_FIELD2","TextFormFieldCreateTool3","TEXT_FORM_FIELD3","TextFormFieldCreateTool4","TEXT_FORM_FIELD4","SignatureFormFieldCreateTool2","SignatureFormFieldCreateTool","SIG_FORM_FIELD2","SignatureFormFieldCreateTool3","SIG_FORM_FIELD3","SignatureFormFieldCreateTool4","SIG_FORM_FIELD4","ListBoxFormFieldCreateTool2","ListBoxFormFieldCreateTool","LIST_BOX_FIELD2","ListBoxFormFieldCreateTool3","LIST_BOX_FIELD3","ListBoxFormFieldCreateTool4","LIST_BOX_FIELD4","ComboBoxFormFieldCreateTool2","ComboBoxFormFieldCreateTool","COMBO_BOX_FIELD2","ComboBoxFormFieldCreateTool3","COMBO_BOX_FIELD3","ComboBoxFormFieldCreateTool4","COMBO_BOX_FIELD4","CloudyRectangularAreaMeasurementCreateTool","CLOUDY_RECTANGULAR_AREA_MEASUREMENT2","CLOUDY_RECTANGULAR_AREA_MEASUREMENT3","CLOUDY_RECTANGULAR_AREA_MEASUREMENT4","ArcMeasurementCreateTool","ARC_MEASUREMENT2","ARC_MEASUREMENT3","ARC_MEASUREMENT4","ArcCreateTool","ARC2","ARC3","ARC4","REDACTION2","RedactionCreateTool","REDACTION3","REDACTION4","AnnotationCreateChangeViewTool","ChangeViewCreateTool","CHANGEVIEW","AnnotationCreateChangeViewTool2","CHANGEVIEW2","AnnotationCreateChangeViewTool3","CHANGEVIEW3","AnnotationCreateChangeViewTool4","CHANGEVIEW4","setupDocViewer","DEFAULT_MARGIN","AnnotationCreateRedaction2","AnnotationCreateRedaction3","AnnotationCreateRedaction4","setDefaultToolStyle","defaultToolStylesMap","getParsedToolStyles","isKeyColorProperty","setDefaultToolStyles","addDocumentViewer","DocumentViewer","setupOpenURLHandler","setOpenURIHandler","MultiViewer","documentViewerKeys","initialSetup","setInitialSetup","oldHeaderItems","container2","doc1Loaded","setDoc1Loaded","doc2Loaded","setDoc2Loaded","width2","setWidth2","setIsSyncing","removeHandlerFunctions","funcRefs","updateScrollView","resizeObserverFunc","records","syncState","scrollTop1","scrollLeft1","scrollTop2","scrollLeft2","currentScrollContainer","topOverflow1","topOverflow2","page1","page2","rootContainerRef","resizeOberver","removeHandlersRef","readyDefaultState","eventFired","addHeaderItems","zoomOverlay","hiddenOnMobileDevices","resetHeaderItems","indexOfButton","onLoaded1","unLoaded1","onLoaded2","unLoaded2","force","keyWord","isDoc1Loaded","newDocViewer","primarydocumentViewerKey","secondarydocumentViewerKey","annotationManager2","syncDocumentViewers","setupMultiViewer","updateActiveDocumentViewerKey","setFirstViewerActive","setSecondViewerActive","shouldSkipSyncEvent","onZoomHandler","startSyncing","primaryDocumentViewerKey","isScrollable","onScrollHandler","otherViewerNumber","diffTop","diffLeft","otherContainer","topOverflow","bottomOverflow","otherDocumentViewer","mainPage","mainPageBoundingRect","otherSidePageBoundingRect","scrollRatio","heightRatio","currentDiffTop","adjustedDiffTop","visiblePageOtherSide","otherMainPage","secondaryPage","isTopOverflowPositive","isDiffTopPositive","isZero","createOnScrollHandler","onPageUpdatedHandler","newPage2","createOnPageUpdateHandler","removeHandler","MULTI_VIEWER_READY","_width","maxAllowedWidth","minValue","TextWatermarkPanel","WatermarkList","watermarks","watermark","ImageWatermarkPanel","imageWatermark","setImageData","redrawAnnotation","WatermarkPanelHeader","activeWatermarkType","setActiveWatermarkType","WatermarkPanelContainer","closeWatermarkPanel","useResizeObserver","dimensions","setDimensions","elementRef","observedWidth","borderBoxSize","inlineSize","observedHeight","blockSize","minimumSizeForPanel","MobilePanelWrapper","isContentOpen","documentContainerWidthStyle","isSearchAndReplaceDisabled","setStyle","wrapperBodyStyle","setWrapperBodyStyle","panelsStartingAtHalfSize","closePanel","isAreaScrollable","onContainerClick","currentMobilePanelSize","isSearchPanelActiveWithSearchAndReplace","DesktopPanel","isCustom","activeTopHeaders","widthStyle","isLeftSide","isRightSide","CustomButton","preset","headerPlacement","updateState","setActiveState","sizeManager","useSizeStore","isVertical","freeSpace","getCurrentFreeSpace","sizeToWidth","sizeToHeight","cssNonNumberValues","pixelToNumber","pixel","getCSSValue","isChild","widthOrHeight","calculatedFreeSpace","leftOrTop","rightOrBottom","columnOrRow","SIZE_CHANGE_TYPES","lastSizedElementMap","elementToPreventLoop","findItemToResize","parentDataElement","parentDomElement","lastSizedElement","getElement","hasToShrink","hasToGrow","canGrow","getGrowSizeIncrease","newSizeChangeEntry","sortResponsiveItems","itemList","groupedItemList","itemToGrow","findItemToGrow","shrink","itemToShrink","findItemToShrink","arrayToSearch","newItems","innerItemList","innerGroupedItemList","searchIndex","rawItem","canShrink","sizeToGet","itemToBeAddedIndex","itemToBeAdded","itemsCount","paddingSizeIncrease","itemToBeAddedSize","getZoomFlyoutItems","zoomOptionsList","zoomItems","onZoomChanged","getZoomHandlers","onMarqueeZoom","onZoomInClicked","onZoomOutClicked","fitToWidthButton","fitToPageButton","marqueeButton","zoomInButton","zoomOutButton","divider","zoomOptionsItem","getCurrentZoom","menuItems","presetDataElement","getPresetButtonDOM","itemToFlyout","useOverrideClickOnly","extraProps","itemProps","isDisabledItem","flyoutItem","dataElementToLabel","getFlyoutItemType","GroupedItems","itemsGap","setItemsGap","itemValidTypes","validItems","flyoutDataElement","alwaysVisibleGroupedItems","flyoutItems","moreButtonIcon","setMoreButtonIcon","findActiveToolInFlyout","activeTool","firstToolButton","isActiveToolInFlyout","isGroupedItemsActive","responsiveItems","indexToExclude","indexesToExclude","isLastIndexAndDivider","overflowLabel","FlyoutItemContainer","additionalClass","elementDOM","onKeyDownHandler","finalLabel","aria-disabled","getFlyoutItemContent","RibbonItem","direction","isFlyoutItem","isRibbonItemDisabled","someActiveGroupedItemsBelongToCurrentRibbonItem","translatedLabel","iconDOMElement","FlexDropdown","validateItems","RibbonGroup","ribbonItems","setRibbonItems","groupedItemsOfActiveCustomRibbon","isRibbonGroupDisabled","FLYOUT_NAME","MIN_SIZE","ribbon","indexToExcludeFrom","renderRibbonItems","renderDropdownItem","getArrowDirection","ZoomControls","setZoomHandler","isZoomFlyoutMenuActive","isZoomValueValid","ZoomContainer","ZoomControlsContainer","flyoutElement","setZoomValue","zoomFlyoutMenu","getIconDOMElement","currentItem","areAllitemsWithoutIcons","iconElement","allFlyoutItems","isSignatureListPanelOpen","isRubberStampPanelOpen","isToolInActiveGroupedItems","isButtonActive","setIsButtonActive","isToolWithPanelAssociatedActive","checkIfNeedsToOpenAPanel","isEditToolAndItIsActive","isSignatureToolActive","isRubberStampToolActive","shouldActivateButton","noActiveGroupedItems","toolDoesNotBelongToAGroupAndIsActive","toolBelongsToAGroupAndIsActive","isDefaultToolActive","combinedGroupedItems","groupedItemsArray","toolTipTitle","displayTitle","PageControls","onFlyoutToggle","leftChevron","rightChevron","minHeight","onMouseOver","unfocused","onFlyoutToggled","PageControlsContainer","currentFlyout","setIsFirstPage","setIsLastPage","setIsFocused","setInput","pageNavFlyoutMenu","NewDocumentButton","handleNewDocumentClick","FilePickerButton","UndoButton","RedoButton","DownloadButton","FullScreenButton","toggleFullscreen","SaveAsButton","handleSaveAsButtonClick","PrintButton","handlePrintButtonClick","isGrayscaleModeEnabled","NewPortfolioButton","isCreatePortfolioButtonEnabled","handleCreatePortfolioButtonClick","SettingsButton","handleClickWithFocus","FormFieldEditButton","ContentEditButton","FontStyleToggleButton","updateSelectionAndCursorStyle","ListToggleButton","activeListType","bulletListObjects","numberListOptions","listTypeName","toggleListSelection","setListPreset","Undo","Redo","NewDocument","FullScreen","SaveAs","NewPortfolio","Settings","FormFieldEdit","ViewControlsToggleButton","pointSizeSelectionKey","fontPointSize","FontFaceDropdown","currentFontFace","StylePresetDropdown","cursorStyleToPreset","stylePreset","parsedFontColor","newTextStyle","updateParagraphStylePresets","setMainCursorStyle","TableButton","CreateTableDropdown","DataElement","OfficeEditorModeDropdown","InnerItem","ResponsiveContainer","lastCheckedFreeSpaceRef","isResizingRef","defaultLoopCounterState","loopingCounterRef","resizeResponsively","propertyToCheck","itemToResizeFunc","resizeFunction","resizeObserver","ModularHeaderItems","headerId","ModularHeader","autoHide","canRemoveItems","setCanRemoveItems","isClosed","originalItems","parentRef","ModularHeaderContainer","memoizedItems","useFloatingHeaderSelectors","rightPanelWidth","rightHeaderWidth","topStartFloatingHeaders","bottomStartFloatingHeaders","bottomEndFloatingHeaders","topEndFloatingHeaders","FloatingHeader","scrollViewContainer","hideFloatingHeader","FloatSection","FloatingHeaderContainer","floatingHeaders","isHorizontalHeader","verticalHeaderWidth","panelsWidth","leftOffset","topFloatingHeaderOffset","bottomFloatingHeaderOffset","computeFloatContainerStyle","renderHeaders","positionPrefix","LeftHeaderContainer","genericLeftPanelOpen","leftPanelOpen","leftHeaders","fullLengthHeaders","userDefinedStyle","styleObject","renderLeftHeader","RightHeaderContainer","rightHeaders","renderRightHeader","BottomHeaderContainer","fullLengthHeader","TopHeaderContainer","sortedTopHeaders","sortedHeaders","ZoomText","currentZoom","PageControlsFlyout","pageControlsFlyoutItem","FlyoutItem","typesToGetExtraInfo","newFlyoutItemState","StaticItem","activeItem","allProps","itemsToRender","isZoomOptions","alabel","itemIsAPanelTab","itemIsAZoomButton","isItemActive","flyoutItemClasses","staticItemPropTypes","Flyout","isFlyoutOpen","flyoutProperties","horizontalHeadersUsedHeight","activePath","setActivePath","currentFocusIndex","setCurrentFocusIndex","setFocusableElements","flyoutRef","flyoutItemRef","correctedPosition","setCorrectedPosition","maxHeightValue","setMaxHeightValue","activeChildren","getElementDOMRef","tempRefElement","appRect","referenceElement","referenceButtonRect","parentHeader","targetElement","availableSpaceLeft","availableSpaceRight","flyoutX","availableSpaceAbove","availableSpaceBelow","flyoutY","getFlyoutPositionOnElement","widthOverflow","maxElementHeight","heightOverflow","closeFlyout","newActivePath","moveFocus","newFocusIndex","Event","renderItems","flyoutStyles","FlyoutContainer","RibbonOverflowFlyout","ViewControlsFlyout","isPageTransitionEnabled","showReaderButton","showCompareButton","toggleCompareMode","displayModeObject","displayModeObjects","getViewControlsFlyoutItems","viewControlsFlyoutItems","continuousPageTransitionButton","defaultPageTransitionButton","readerPageTransitionButton","rotateClockwiseButton","rotateCounterClockwiseButton","singleLayoutButton","doubleLayoutButton","coverLayoutButton","toggleCompareModeButton","fullScreenButton","viewControlsFlyout","useOnTextSelected","popupItems","selectedTextQuads","setSelectedTextQuads","textSelectTool","onSelectionComplete","startQuad","useOnRightClick","clickedOnInput","clickedOnTextarea","clickedOnFreeTextarea","useOnContextMenuOpen","clickPosition","setClickPosition","isMobileCSS","isRightClickAnnotationPopupEnabledRef","onRightClick","useOnAnnotationPopupOpen","isScaleOverlayContainerOpen","focusedAnnotation","setFocusedAnnotation","selectedMultipleAnnotations","setSelectedMultipleAnnotations","setCanModify","focusedAnnotationStyle","setFocusedAnnotationStyle","isStylePopupOpen","setIsStylePopupOpen","isDatePickerOpen","setDatePickerOpen","isDatePickerMount","setDatePickerMount","hasAssociatedLink","setHasAssociatedLink","includesFormFieldAnnotation","setIncludesFormFieldAnnotation","stylePopupRepositionFlag","setStylePopupRepositionFlag","openPopup","closePopup","canAnnotationBeModified","isSignedByAppearance","groupedLinkAnnotations","getGroupedLinkAnnotations","isInContentEditFocusMode","getAnnotationStyles","actionOnOtherAnnotation","onMouseLeftUp","annotUnderMouse","useOnAlignmentPopupOpen","useOnFormFieldAnnotationAddedOrSelected","currentFormAnnotation","setCurrentlyEditingFormAnnotation","useOnInlineCommentPopupOpen","isFreeTextAnnotationAdded","setFreeTextAnnotationAdded","reopenFlag","setReopenFlag","isNotesPanelOpenOrActive","closeAndReset","isFreeTextAnnotation","onAnnotationDoubleClicked","selectedAnnotationTool","isCommentingAnnotationSelected","useOnRightClickAnnotation","rightClickedAnnotation","setRightClickedAnnotation","useOnAnnotationContentOverlayOpen","customHandler","clientXY","setClientXY","isUsingCustomHandler","viewElement","onMouseHover","ungroupedAnnots","useOnLinkAnnotationPopupOpen","isEnterComponent","setIsEnterComponent","hidePopup","_debounce","linkAnnot","getAnnotationsByMouseEvent","getLinkDestination","handleOnMouseEnter","handleOnMouseLeave","useOnAnnotationCreateSignatureToolMode","handleToolModeUpdated","useOnAnnotationCreateRubberStampToolMode","createDisableFeatures","defaultOfficeEditorModularHeaders","defaultOfficeEditorModularComponents","fontSizeDropdown","fontFaceDropdown","stylePresetDropdown","createTableDropdown","boldButton","italicButton","underlineButton","officeEditorModeDropdown","orderedListButton","unorderedListButton","officeEditorHomeToolsGroupedItems","officeEditorHomeGroupedItems","officeEditorInsertToolsGroupedItems","officeEditorInsertGroupedItems","officeEditorReviewToolsGroupedItems","officeEditorReviewGroupedItems","defaultOfficeEditorPanels","tabletBreakpoint","App","timeoutReturn","isAccessibileMode","getNextFocusableElement","currentElement","focusableArray","nextIndex","nextElement","isActiveElementInContainers","isOfficeEditingEnabled","isMultiTabAlreadyEnabled","isMultiDoc","basePath","setBasePath","externalPath","showInvalidBookmarks","loadDocumentAndCleanup","loadInitialDocument","messageHandler","VIEWER_LOADED","visibilityState","setDefaultDisabledElements","onCursorPropertiesUpdated","onSelectionPropertiesUpdated","panels","panelName","isCustomPanel","renderPanel","VIEW","ANNOTATE","SHAPES","INSERT","MEASURE","EDIT_TEXT","FILL_AND_SIGN","FORMS","REDACT","EMAILS","CREDIT_CARDS","PHONE_NUMBERS","addSearchListenerHelper","PopupAPI","_getIndexByDataElement","getItems","createPopupAPI","castStringToArray","dataElementArray","extractPagesWithAnnotations","bbAnnotManager","serverURL","BlackBoxAnnotationManager","mapExposedSelectors","getSideWindowVisibility","prevPage","mentionsManager","expose","methodsToExpose","MenuOverlayAPI","customAnnotationCheckFunc","registerToolInToolModeMap","registerToolInRedux","updateColorMapInRedux","documentViewerNumber","removeSearchListenerHelper","docIdQuery","did","lowerCaseFirstLetter","SEARCH_UP","optionsForSearchListener","TYPES","checkTypes","STRING","mapPaletteToAnnotationColorProperty","mapAnnotationColorPropertyToPalette","currentOverride","isValidColor","isValidObject","customModal","FUNCTION","customPanel","fitFunction","headerGroups","_setIndex","getHeader","_resetIndex","newItem","_getIndexOfElement","_updateItems","translationObject","addResources","reloadResources","OBJECT","OPTIONAL","BOOLEAN","objectKeyCount","variables","walkRules","isInsideRoot","isVariableDeclaration","previousActiveTheme","Theme","previousIsHighContrastMode","previousIsCustomizableUI","isHighContrastMode","updateColors","setVariables","themeVarString","themeVariables","themeVariable","useDefaultElements","dataElementSuffix","otherInstances","instances","enableToolDefaultStyleUpdateFromAnnotationPopup","disableToolDefaultStyleUpdateFromAnnotationPopup","enableAnnotationToolStyleSyncing","disableAnnotationToolStyleSyncing","unregisterToolInHeader","unregisterToolInRedux","unregisterToolInToolModeMap","headerItem","setColorPalette","validateButtonOverrides","customOverlayInfo","customNoteSelectionFunction","newActiveResult","overrideSearchExecutionCallback","overrideSearchExecutionHelper","getPageNavOverlay","loadTrustList","enableOnlineCRLRevocationChecking","enableTextCollapse","disableTextCollapse","enableReplyCollapse","disableReplyCollapse","disableAutoExpandCommentThread","enableAutoExpandCommentThread","setCustomHeader","setCustomEmptyPanel","enableAttachmentPreview","disableAttachmentPreview","disableMultiSelect","setAttachmentHandler","attachmentHandler","enableMeasurementAnnotationFilter","disableMeasurementAnnotationFilter","previousDisplayMode","enableMultiselect","enableMultiSelect","disableMultiselect","selectPages","selectedIndex","alreadySelected","outOfRangePages","pagesToSelect","unselectPages","pageNumbersToDeselect","NUMBER","indexesToDeselect","selectedIndexes","getSelectedPageNumbers","thumbnailSelectionModes","enableClearSearchOnPanelCloseClosure","disableClearSearchOnPanelCloseClosure","PageManipulationOverlayAPI","operations","dataElementToInsertAfter","disableOpeningByRightClick","enableOpeningByRightClick","MultiPageManipulationControls","indexSmall","_getIndexByDataElementSmall","itemsSmall","getItemsSmall","indexLarge","_getIndexByDataElementLarge","itemsLarge","getItemsLarge","ThumbnailControlMenuAPI","FontsAPI","getAnnotationFonts","addAnnotationFont","removeAnnotationFont","fontIndex","setAnnotationFonts","addSignatureFont","removeSignatureFont","setSignatureFonts","TabManagerAPI","tabId","getAllTabs","presetName","presets","dateTimeFormat","validKeyFound","requiredKeys","redactionSearchPattern","annotationTabs","targetAnnotation","newColorMap","stepFactor","convertedZoomStepFactors","convertedZoomStepFactor","parsedStep","parsedStartZoom","signatureWidget","handleSignatureReady","currentSignature","getAssociatedSignatureAnnotation","isJustifyContentValid","validJustifications","isGapValid","isGrowValid","borderParts","borderProperty","side","isItemTypeValid","clonedItem","validateGroupedItems","float","validateStyle","_store","itemsToAdd","propsWithStore","MODULAR_HEADER_LIST_TYPE","MULTI_TYPE","headerList","_justifyContent","_grow","_gap","ANY","getGroupedItemProperty","setGap","setJustifyContent","setGrow","_dataElement","ONE_OF","ViewControls","panelItemType","UNSUPPORTED_PANELS","filteredPanelList","createModularInstance","nestedItem","hydratedHeader","_location","panelList","panelIndex","oldPanelObject","updatePanelInStore","_panelsList","PANEL_TYPE","panelsMap","validateComponents","componentObject","storedModularComponentFunctions","funcKey","validateHeaders","processItems","parentKey","allowedTypesString","newComponent","normalizedFlyouts","prepareFlyouts","setDefaultOptions","flyoutItemBase","flyoutItemType","setItems","MainMenu","additionalItems","SYNC","presetScale","enableMultipleScalesMode","disableMultipleScalesMode","isMultipleScalesModeEnabled","getLocalizedText","enableMultiViewerSync","primaryViewerKey","disableMultiViewerSync","isMultiViewerSyncing","SettingKeys","exportUserSettings","importUserSettings","userSettings","newShortcutKeyMap","darknessFactor","addFlyouts","flyoutList","getAllFlyouts","setClickMiddleware","_setClickMiddleware","minAllowedWidth","testAction","validateFlyouts","normalizedFlyout","validateFlyoutItems","validateJSONStructure","jsonData","normalizedHeader","normalizedPanel","normalizedComponent","COMPONENT_FUNCTION_KEYS","functions","componentsToValidate","cloneDeep","componentMap","getFunctionFromFunctionMap","functionString","setPanels","allFlyouts","prebuiltFlyouts","flyoutClassName","mapItems","importedComponents","ribbonItem","getDefaultBackendType","wildCardMatch","allowedOrigins","allowedOrigin","wildcardToRegExp","regExpEscape","loadScript","scriptSrc","loadConfig","loadPath","addPath","allowMultiLoading","parsePayload","reloadInterval","Backend","allOptions","_readAny","loadUrlLanguages","loadUrlNamespaces","resolvedLoadPath","loadUrl","parseErr","dataArray","resArray","_this$services","getAvailableLanguages","webViewerPath","boostrappedCb","_pStore","rootReducer","rehydrateAction","purge","purgeResult","flushResult","manualPersist","CanvasRenderingContext2D","fullAPIReady","enableFullPDF","disableLogs","disableObjectURLBlobs","_disableStreaming","setWorkerPath","setResourcesPath","workerTransportPromise","WebViewer","frameElement","apryseWorkerTransportPromise","pdf","office","setWorkerTransportPromise","forceBackendType","disableOptimizedWorkers","CSSFile","loadCustomCSS","coreVersion","getVersion","coreBuild","getBuild","uiVersion","webViewerJSVersion","wvServer","coreMajorVersion","coreMinorVersion","uiMajorVersion","uiMinorVersion","webViewerJSMajorVersion","webViewerJSMinorVersion","webViewerComponents","majorVersion","minorVersion","comparison","warningText","majorVersionOutdatedComponents","minorVersionOutdatedComponents","latestComponent","outdatedComponents","logDebugInfo","hideDetachedReplies","objForWebViewerCore","PartRetrievers","objForWebViewerUI","LayoutMode","ToolbarGroup","RedactionSearchPatterns","JustifyContent","displayErrorMessage","disableHighContrastMode","focusNote","getLayoutMode","hideOutlineControl","isToolDisabled","isHighContrastModeEnabled","settingsMenuOverlay","printInBackground","getActiveRibbonItem","setActiveRibbonItem","showOutlineControl","exportBookmarks","importBookmarks","setEmbeddedJSPopupStyle","setTranslations","setLayoutMode","setMeasurementUnits","setTheme","createToolbarGroup","dangerouslySetNoteTransformFunction","setActiveResult","toggleElementVisibility","toggleFullScreen","updateTool","updateElement","willUseEmbeddedPrinting","setCustomMeasurementOverlayInfo","setDisplayedSignaturesFilter","VerificationOptions","Panels","notesPanelDisableMultiSelect","importModularComponents","getModularHeader","getModularHeaderList","exportModularComponents","Flyouts","FlyoutsAPI","setGroupedItemsGap","setGroupedItemsJustifyContent","setGroupedItemsGrow","getPanels","Components","TopHeader","BottomHeader","LeftHeader","RightHeader","disableDownload","disableFilePicker","disableMeasurement","disableNotesPanel","disableNoteSubmissionWithEnter","disablePrint","disableTextSelection","disableTouchScrollLock","enableDownload","enableHighContrastMode","enableNotesPanel","enablePrint","enableTextSelection","enableTool","enableNativeScrolling","getAnnotationUser","getCurrentPageNumber","getShowSideWindow","setNotesPanelSort","disableTool","goToFirstPage","goToLastPage","saveAnnotations","setAnnotationUser","setCurrentPageNumber","toggleReaderMode","Fonts","reloadOutline","addDateTimeFormat","enableBookmarkIconShortcutVisibility","disableBookmarkIconShortcutVisibility","showFormFieldIndicators","hideFormFieldIndicators","signSignatureWidget","setSideWindowVisibility","getBBAnnotManager","getSelectors","reactElements","enableClearSearchOnPanelClose","disableClearSearchOnPanelClose","disableNativeScrolling","getAnnotationReadState","disableDesktopOnlyMode","getAnnotationStylePopupTabs","setAnnotationStylePopupTabs","enterMultiViewerMode","exitMultiViewerMode","closeTooltip","CORE_NAMESPACE_KEY","UI_NAMESPACE_KEY","defineWebViewerInstanceUIAPIs","Utilities","setAnnotationSubjectHandler","setTextHandler","setInitialsTextHandler","i18nURL","use","HttpApi","lang","addRule","setupI18n","setUserPermission","ENABLE_AUTO_SWITCH","initTransports","workersToLoad","workerType","getWorkersToLoad","getBackendPromise","pdfType","initPDFWorkerTransports","workerLoadingProgress","sampleL","officeType","initOfficeWorkerTransports","initOfficeEditorWorkerTransports","initLegacyOfficeWorkerTransports","disableVirtualDisplayMode","enableViewStateSaving","getAnnotsFromServer","originalData","getDocumentId","origData","setupLoadAnnotationsFromServer","DndProvider","retargetEvents","onTab","onMouse","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","setClientOffset","sourceClientOffset","without","xor","ResetCoordinatesAction","createBeginDrag","sourceIds","_options$publishSourc","verifyInvariants","getDraggableSource","verifyGetSourceClientOffsetIsFunction","getSource","verifyItemIsObject","pinSource","getSourceType","isSourcePublic","canDragSource","createPublishDragSource","matchesType","targetType","draggedItemType","createHover","targetIdsArg","verifyTargetIdsIsArray","targetIds","checkInvariants","removeNonMatchingTargetIds","hoverAllTargets","didDrop","getTargetType","createDrop","getDroppableTargets","dropResult","determineDropResult","verifyDropResultType","getDropResult","getTargetIds","createEndDrag","verifyIsDragging","unpinSource","DragDropManagerImpl","shouldSetUp","refCount","isSetUp","setup","teardown","handleRefCountChange","createDragDropActions","boundActions","strictEquality","areCoordsEqual","offsetA","offsetB","areArraysEqual","isEqual","initialSourceClientOffset","initialClientOffset","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","areDirty","dirtyIds","handlerIds","_action$payload","_action$payload$targe","_action$payload$prevT","prevTargetIds","didChange","prevInnermostTargetId","innermostTargetId","dirtyHandlerIds","dragOffset","dragOperation","stateId","__IS_NONE__","__IS_ALL__","HandlerRole","DragDropMonitorImpl","prevStateId","currentStateId","canDrag","canDrop","shallow","nextUniqueId","validateType","allowArray","getNextHandlerId","SOURCE","parseRoleFromHandlerId","handlerId","mapContainsValue","isDone","_entries$next","HandlerRegistryImpl","validateSourceContract","addHandler","validateTargetContract","dragSources","dropTargets","includePinned","isSourceId","isPinned","pinnedSourceId","pinnedSource","isTargetId","createDragDropManager","backendFactory","backendOptions","debugMode","makeStoreInstance","receiveBackend","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","tabObservable","AccessibleFocusObservable","_handleFirstTab","_setIsUserTabbing","_tabToMouseListener","_handleFirstMouse","_mouseToTabListener","_subscribers","_isUserTabbing","subscriber","_removeAllListeners","isUserTabbing","leftLabel","disabledLabelChange","setIsUserTabbing","useAccessibleFocus","useFocus","handleOnFocus","handleOnBlur","choiceID","_c","setChecked","choiceClass","inputClass","checkClass","labelElement","RadioObservable","_trigger","I18nextWithTranslation","forwardedRef","_useTranslation","_useTranslation2","passDownProps","INSTANCE_SYM","_getDndContextValue2","getGlobalContext","createSingletonDndContext","isGlobalInstance","getDndContextValue","_jsx","Check","ChevronDown","Circle","Close","Hide","Info","MultiPage","RotateRight","Show","SinglePage","Success","svgProps","iconClass","IconChild","randomUUID","crypto","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","rnds"],"mappings":"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AAOD,QAAU,2b,cCAjBC,EAAOD,QAAU,md,cCAjBC,EAAOD,QAAU,siB,cCAjBC,EAAOD,QAAU,g8E,cCAjBC,EAAOD,QAAU,wW,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,uN,cCAjBC,EAAOD,QAAU,4L,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,uL,cCAjBC,EAAOD,QAAU,4P,cCAjBC,EAAOD,QAAU,2Q,cCAjBC,EAAOD,QAAU,+M,cCAjBC,EAAOD,QAAU,ivB,cCAjBC,EAAOD,QAAU,6pB,cCAjBC,EAAOD,QAAU,yiC,cCAjBC,EAAOD,QAAU,0d,cCAjBC,EAAOD,QAAU,6T,cCAjBC,EAAOD,QAAU,yvB,cCAjBC,EAAOD,QAAU,6+D,cCAjBC,EAAOD,QAAU,o0I,cCAjBC,EAAOD,QAAU,6P,cCAjBC,EAAOD,QAAU,k9B,cCAjBC,EAAOD,QAAU,s9B,cCAjBC,EAAOD,QAAU,4e,cCAjBC,EAAOD,QAAU,wY,cCAjBC,EAAOD,QAAU,ya,cCAjBC,EAAOD,QAAU,mf,cCAjBC,EAAOD,QAAU,g7B,cCAjBC,EAAOD,QAAU,o0B,cCAjBC,EAAOD,QAAU,wwB,cCAjBC,EAAOD,QAAU,s0B,cCAjBC,EAAOD,QAAU,+pB,cCAjBC,EAAOD,QAAU,u7B,cCAjBC,EAAOD,QAAU,0wB,cCAjBC,EAAOD,QAAU,sN,cCAjBC,EAAOD,QAAU,mJ,cCAjBC,EAAOD,QAAU,iK,cCAjBC,EAAOD,QAAU,sJ,cCAjBC,EAAOD,QAAU,oJ,cCAjBC,EAAOD,QAAU,oP,cCAjBC,EAAOD,QAAU,+K,cCAjBC,EAAOD,QAAU,iK,cCAjBC,EAAOD,QAAU,8Y,cCAjBC,EAAOD,QAAU,uN,cCAjBC,EAAOD,QAAU,uN,cCAjBC,EAAOD,QAAU,wN,cCAjBC,EAAOD,QAAU,sN,cCAjBC,EAAOD,QAAU,ob,cCAjBC,EAAOD,QAAU,oJ,cCAjBC,EAAOD,QAAU,ooB,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,y2B,cCAjBC,EAAOD,QAAU,2V,cCAjBC,EAAOD,QAAU,4Y,cCAjBC,EAAOD,QAAU,8+C,cCAjBC,EAAOD,QAAU,y9C,cCAjBC,EAAOD,QAAU,qU,cCAjBC,EAAOD,QAAU,0W,cCAjBC,EAAOD,QAAU,kiB,cCAjBC,EAAOD,QAAU,gb,cCAjBC,EAAOD,QAAU,kyB,cCAjBC,EAAOD,QAAU,2/C,cCAjBC,EAAOD,QAAU,oS,cCAjBC,EAAOD,QAAU,s9B,cCAjBC,EAAOD,QAAU,owC,cCAjBC,EAAOD,QAAU,8sC,cCAjBC,EAAOD,QAAU,yoC,cCAjBC,EAAOD,QAAU,g6F,cCAjBC,EAAOD,QAAU,owE,cCAjBC,EAAOD,QAAU,qY,cCAjBC,EAAOD,QAAU,i9B,cCAjBC,EAAOD,QAAU,od,cCAjBC,EAAOD,QAAU,kS,cCAjBC,EAAOD,QAAU,kU,cCAjBC,EAAOD,QAAU,0+B,cCAjBC,EAAOD,QAAU,u7B,cCAjBC,EAAOD,QAAU,q0B,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,mjB,cCAjBC,EAAOD,QAAU,slB,cCAjBC,EAAOD,QAAU,+c,cCAjBC,EAAOD,QAAU,4hB,cCAjBC,EAAOD,QAAU,uoC,cCAjBC,EAAOD,QAAU,60I,cCAjBC,EAAOD,QAAU,oW,cCAjBC,EAAOD,QAAU,wV,cCAjBC,EAAOD,QAAU,wuB,cCAjBC,EAAOD,QAAU,kyC,cCAjBC,EAAOD,QAAU,oX,cCAjBC,EAAOD,QAAU,6e,cCAjBC,EAAOD,QAAU,o0B,cCAjBC,EAAOD,QAAU,mT,cCAjBC,EAAOD,QAAU,qkB,cCAjBC,EAAOD,QAAU,iS,cCAjBC,EAAOD,QAAU,8jB,cCAjBC,EAAOD,QAAU,sqB,cCAjBC,EAAOD,QAAU,u9B,cCAjBC,EAAOD,QAAU,03C,cCAjBC,EAAOD,QAAU,4jE,cCAjBC,EAAOD,QAAU,0S,cCAjBC,EAAOD,QAAU,yV,cCAjBC,EAAOD,QAAU,+Q,cCAjBC,EAAOD,QAAU,uS,cCAjBC,EAAOD,QAAU,0S,cCAjBC,EAAOD,QAAU,0M,cCAjBC,EAAOD,QAAU,gN,cCAjBC,EAAOD,QAAU,sP,cCAjBC,EAAOD,QAAU,mP,cCAjBC,EAAOD,QAAU,2S,cCAjBC,EAAOD,QAAU,gI,cCAjBC,EAAOD,QAAU,2d,cCAjBC,EAAOD,QAAU,8O,cCAjBC,EAAOD,QAAU,qO,cCAjBC,EAAOD,QAAU,oM,cCAjBC,EAAOD,QAAU,8J,cCAjBC,EAAOD,QAAU,8J,cCAjBC,EAAOD,QAAU,uO,cCAjBC,EAAOD,QAAU,sP,cCAjBC,EAAOD,QAAU,qR,cCAjBC,EAAOD,QAAU,sT,cCAjBC,EAAOD,QAAU,4J,cCAjBC,EAAOD,QAAU,8d,cCAjBC,EAAOD,QAAU,6R,cCAjBC,EAAOD,QAAU,gP,cCAjBC,EAAOD,QAAU,+O,cCAjBC,EAAOD,QAAU,4W,cCAjBC,EAAOD,QAAU,0wB,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,oY,cCAjBC,EAAOD,QAAU,2X,cCAjBC,EAAOD,QAAU,yX,cCAjBC,EAAOD,QAAU,6U,cCAjBC,EAAOD,QAAU,8V,cCAjBC,EAAOD,QAAU,uY,cCAjBC,EAAOD,QAAU,oU,cCAjBC,EAAOD,QAAU,8O,cCAjBC,EAAOD,QAAU,0a,cCAjBC,EAAOD,QAAU,wT,cCAjBC,EAAOD,QAAU,mU,cCAjBC,EAAOD,QAAU,+0B,cCAjBC,EAAOD,QAAU,0f,cCAjBC,EAAOD,QAAU,kqB,cCAjBC,EAAOD,QAAU,s5B,cCAjBC,EAAOD,QAAU,+O,cCAjBC,EAAOD,QAAU,yW,cCAjBC,EAAOD,QAAU,u7C,cCAjBC,EAAOD,QAAU,q2B,cCAjBC,EAAOD,QAAU,klC,cCAjBC,EAAOD,QAAU,20F,cCAjBC,EAAOD,QAAU,6/T,cCAjBC,EAAOD,QAAU,0oY,cCAjBC,EAAOD,QAAU,ylU,cCAjBC,EAAOD,QAAU,opW,cCAjBC,EAAOD,QAAU,4zN,cCAjBC,EAAOD,QAAU,spD,cCAjBC,EAAOD,QAAU,+4B,cCAjBC,EAAOD,QAAU,k/C,cCAjBC,EAAOD,QAAU,gzB,cCAjBC,EAAOD,QAAU,suB,cCAjBC,EAAOD,QAAU,+c,cCAjBC,EAAOD,QAAU,yb,cCAjBC,EAAOD,QAAU,sb,cCAjBC,EAAOD,QAAU,goB,cCAjBC,EAAOD,QAAU,6iC,cCAjBC,EAAOD,QAAU,mhB,cCAjBC,EAAOD,QAAU,mhB,cCAjBC,EAAOD,QAAU,qf,cCAjBC,EAAOD,QAAU,6a,cCAjBC,EAAOD,QAAU,sgB,cCAjBC,EAAOD,QAAU,inB,cCAjBC,EAAOD,QAAU,mgB,cCAjBC,EAAOD,QAAU,8pB,cCAjBC,EAAOD,QAAU,+xB,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,wV,cCAjBC,EAAOD,QAAU,oS,cCAjBC,EAAOD,QAAU,gnB,cCAjBC,EAAOD,QAAU,ooB,cCAjBC,EAAOD,QAAU,yZ,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,itB,cCAjBC,EAAOD,QAAU,g1E,cCAjBC,EAAOD,QAAU,ub,cCAjBC,EAAOD,QAAU,qW,cCAjBC,EAAOD,QAAU,ib,cCAjBC,EAAOD,QAAU,mL,cCAjBC,EAAOD,QAAU,4f,cCAjBC,EAAOD,QAAU,uf,cCAjBC,EAAOD,QAAU,of,cCAjBC,EAAOD,QAAU,4rB,cCAjBC,EAAOD,QAAU,qW,cCAjBC,EAAOD,QAAU,slB,cCAjBC,EAAOD,QAAU,wZ,cCAjBC,EAAOD,QAAU,4tB,cCAjBC,EAAOD,QAAU,yoB,cCAjBC,EAAOD,QAAU,wrB,cCAjBC,EAAOD,QAAU,8b,cCAjBC,EAAOD,QAAU,oe,cCAjBC,EAAOD,QAAU,0lB,cCAjBC,EAAOD,QAAU,2/C,cCAjBC,EAAOD,QAAU,44B,cCAjBC,EAAOD,QAAU,iuB,cCAjBC,EAAOD,QAAU,+wB,cCAjBC,EAAOD,QAAU,ikC,cCAjBC,EAAOD,QAAU,ujB,cCAjBC,EAAOD,QAAU,wkB,cCAjBC,EAAOD,QAAU,4zM,cCAjBC,EAAOD,QAAU,4V,cCAjBC,EAAOD,QAAU,6wB,cCAjBC,EAAOD,QAAU,6+C,cCAjBC,EAAOD,QAAU,24B,cCAjBC,EAAOD,QAAU,gnB,cCAjBC,EAAOD,QAAU,mmD,cCAjBC,EAAOD,QAAU,4hB,cCAjBC,EAAOD,QAAU,iV,cCAjBC,EAAOD,QAAU,80B,cCAjBC,EAAOD,QAAU,wR,cCAjBC,EAAOD,QAAU,0pB,cCAjBC,EAAOD,QAAU,mlB,cCAjBC,EAAOD,QAAU,2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,IAEvBA,EAAUrvE,UAAYivE,EAASjvE,iBAIhC,CACL,MAAMqvE,EAAYJ,EAAS7uE,WAAU,GACrCgvE,EAAatoI,WAAWz9B,YAAYgmK,GACpCF,EAAgB3oK,KAAK6oK,MAIzC,WAAoB,GAEPL,EAAIh0J,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQs0J,QAAU,I,iBClEnCvoK,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,wkJAAykJ,KAGlmJe,EAAQuoK,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAI5+J,EAAM,CACT,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,aAAc,CACb,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,IAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,gBAAiB,CAChB,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,cAAe,CACd,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,eAAgB,CACf,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,WAAY,CACX,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,WAAY,CACX,KACA,KAED,UAAW,CACV,KACA,KAED,WAAY,CACX,KACA,KAED,gBAAiB,CAChB,KACA,KAED,WAAY,CACX,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,eAAgB,CACf,KACA,KAED,UAAW,CACV,KACA,KAED,UAAW,CACV,KACA,KAED,gBAAiB,CAChB,KACA,KAED,UAAW,CACV,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,aAAc,CACb,KACA,KAED,UAAW,CACV,KACA,MAGF,SAASwzR,EAAoB/yH,GAC5B,IAAIrqK,EAAoB6C,EAAE+G,EAAKygK,GAC9B,OAAO7pK,QAAQC,UAAU4Q,MAAK,WAC7B,IAAIjR,EAAI,IAAImB,MAAM,uBAAyB8oK,EAAM,KAEjD,MADAjqK,EAAE0hC,KAAO,mBACH1hC,KAIR,IAAIymL,EAAMj9K,EAAIygK,GAAM5mI,EAAKojJ,EAAI,GAC7B,OAAO7mL,EAAoBI,EAAEymL,EAAI,IAAIx1K,MAAK,WACzC,OAAOrR,EAAoBqD,EAAEogC,EAAI,MAGnC25P,EAAoB/uQ,KAAO,WAC1B,OAAOhvB,OAAOgvB,KAAKzkB,IAEpBwzR,EAAoB35P,GAAK,KACzBvjC,EAAOD,QAAUm9R,G,gBChlBjB,IAAIl1H,EAAM,EAAQ,IACFh0J,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ+qB,QAAU/qB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAUq6J,GAgBX,IAAKhkK,OAAOq7B,8BAEV,YADA3+B,SAASyB,KAAKC,YAAY4lK,GAI5B,IAAIC,EAEJA,EAAgBvnK,SAAS4+B,qBAAqB,oBAEzC2oI,EAAchpK,SACjBgpK,EAzBF,SAAS1oI,EAAwBC,EAASC,EAAO/+B,UAC/C,MAAMg/B,EAAW,GAYjB,OATAD,EAAKE,iBAAiBH,GAASp2B,QAAQw2B,GAAMF,EAASngC,KAAKqgC,IAG3DH,EAAKE,iBAAiB,KAAKv2B,QAAQw2B,IAC7BA,EAAGC,YACLH,EAASngC,QAAQggC,EAAwBC,EAASI,EAAGC,eAIlDH,EAYSH,CAAwB,qBAG1C,MAAM2oI,EAAkB,GACxB,IAAK,IAAInpK,EAAI,EAAGA,EAAIkpK,EAAchpK,OAAQF,IAAK,CAC7C,MAAMopK,EAAeF,EAAclpK,GACnC,GAAU,IAANA,EACFopK,EAAatoI,WAAWz9B,YAAY4lK,GACpCA,EAASzmK,OAAS,WACZ2mK,EAAgBjpK,OAAS,GAC3BipK,EAAgB9+J,QAASg/J,IAEvBA,EAAUrvE,UAAYivE,EAASjvE,iBAIhC,CACL,MAAMqvE,EAAYJ,EAAS7uE,WAAU,GACrCgvE,EAAatoI,WAAWz9B,YAAYgmK,GACpCF,EAAgB3oK,KAAK6oK,MAIzC,WAAoB,GAEPL,EAAIh0J,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQs0J,QAAU,I,iBClEnCvoK,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,otRAAqtR,KAG9uRe,EAAQuoK,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFh0J,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ+qB,QAAU/qB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAUq6J,GAgBX,IAAKhkK,OAAOq7B,8BAEV,YADA3+B,SAASyB,KAAKC,YAAY4lK,GAI5B,IAAIC,EAEJA,EAAgBvnK,SAAS4+B,qBAAqB,oBAEzC2oI,EAAchpK,SACjBgpK,EAzBF,SAAS1oI,EAAwBC,EAASC,EAAO/+B,UAC/C,MAAMg/B,EAAW,GAYjB,OATAD,EAAKE,iBAAiBH,GAASp2B,QAAQw2B,GAAMF,EAASngC,KAAKqgC,IAG3DH,EAAKE,iBAAiB,KAAKv2B,QAAQw2B,IAC7BA,EAAGC,YACLH,EAASngC,QAAQggC,EAAwBC,EAASI,EAAGC,eAIlDH,EAYSH,CAAwB,qBAG1C,MAAM2oI,EAAkB,GACxB,IAAK,IAAInpK,EAAI,EAAGA,EAAIkpK,EAAchpK,OAAQF,IAAK,CAC7C,MAAMopK,EAAeF,EAAclpK,GACnC,GAAU,IAANA,EACFopK,EAAatoI,WAAWz9B,YAAY4lK,GACpCA,EAASzmK,OAAS,WACZ2mK,EAAgBjpK,OAAS,GAC3BipK,EAAgB9+J,QAASg/J,IAEvBA,EAAUrvE,UAAYivE,EAASjvE,iBAIhC,CACL,MAAMqvE,EAAYJ,EAAS7uE,WAAU,GACrCgvE,EAAatoI,WAAWz9B,YAAYgmK,GACpCF,EAAgB3oK,KAAK6oK,MAIzC,WAAoB,GAEPL,EAAIh0J,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQs0J,QAAU,I,iBClEzBtoK,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,+pBAAgqB,M,gBCLzrB,IAAIgpK,EAAM,EAAQ,IACFh0J,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ+qB,QAAU/qB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAUq6J,GAgBX,IAAKhkK,OAAOq7B,8BAEV,YADA3+B,SAASyB,KAAKC,YAAY4lK,GAI5B,IAAIC,EAEJA,EAAgBvnK,SAAS4+B,qBAAqB,oBAEzC2oI,EAAchpK,SACjBgpK,EAzBF,SAAS1oI,EAAwBC,EAASC,EAAO/+B,UAC/C,MAAMg/B,EAAW,GAYjB,OATAD,EAAKE,iBAAiBH,GAASp2B,QAAQw2B,GAAMF,EAASngC,KAAKqgC,IAG3DH,EAAKE,iBAAiB,KAAKv2B,QAAQw2B,IAC7BA,EAAGC,YACLH,EAASngC,QAAQggC,EAAwBC,EAASI,EAAGC,eAIlDH,EAYSH,CAAwB,qBAG1C,MAAM2oI,EAAkB,GACxB,IAAK,IAAInpK,EAAI,EAAGA,EAAIkpK,EAAchpK,OAAQF,IAAK,CAC7C,MAAMopK,EAAeF,EAAclpK,GACnC,GAAU,IAANA,EACFopK,EAAatoI,WAAWz9B,YAAY4lK,GACpCA,EAASzmK,OAAS,WACZ2mK,EAAgBjpK,OAAS,GAC3BipK,EAAgB9+J,QAASg/J,IAEvBA,EAAUrvE,UAAYivE,EAASjvE,iBAIhC,CACL,MAAMqvE,EAAYJ,EAAS7uE,WAAU,GACrCgvE,EAAatoI,WAAWz9B,YAAYgmK,GACpCF,EAAgB3oK,KAAK6oK,MAIzC,WAAoB,GAEPL,EAAIh0J,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQs0J,QAAU,I,iBClEnCvoK,EAAUC,EAAOD,QAAU,EAAQ,GAAR,EAAkE,IAKrFP,KAAK,CAACQ,EAAOhB,EAAI,q9EAAs9E,KAG/+Ee,EAAQuoK,OAAS,CAChB,kBAAqB,OACrB,mBAAsB,S,gBCVvB,IAAIN,EAAM,EAAQ,IACFh0J,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ+qB,QAAU/qB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAUq6J,GAgBX,IAAKhkK,OAAOq7B,8BAEV,YADA3+B,SAASyB,KAAKC,YAAY4lK,GAI5B,IAAIC,EAEJA,EAAgBvnK,SAAS4+B,qBAAqB,oBAEzC2oI,EAAchpK,SACjBgpK,EAzBF,SAAS1oI,EAAwBC,EAASC,EAAO/+B,UAC/C,MAAMg/B,EAAW,GAYjB,OATAD,EAAKE,iBAAiBH,GAASp2B,QAAQw2B,GAAMF,EAASngC,KAAKqgC,IAG3DH,EAAKE,iBAAiB,KAAKv2B,QAAQw2B,IAC7BA,EAAGC,YACLH,EAASngC,QAAQggC,EAAwBC,EAASI,EAAGC,eAIlDH,EAYSH,CAAwB,qBAG1C,MAAM2oI,EAAkB,GACxB,IAAK,IAAInpK,EAAI,EAAGA,EAAIkpK,EAAchpK,OAAQF,IAAK,CAC7C,MAAMopK,EAAeF,EAAclpK,GACnC,GAAU,IAANA,EACFopK,EAAatoI,WAAWz9B,YAAY4lK,GACpCA,EAASzmK,OAAS,WACZ2mK,EAAgBjpK,OAAS,GAC3BipK,EAAgB9+J,QAASg/J,IAEvBA,EAAUrvE,UAAYivE,EAASjvE,iBAIhC,CACL,MAAMqvE,EAAYJ,EAAS7uE,WAAU,GACrCgvE,EAAatoI,WAAWz9B,YAAYgmK,GACpCF,EAAgB3oK,KAAK6oK,MAIzC,WAAoB,GAEPL,EAAIh0J,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQs0J,QAAU,I,iBClEzBtoK,EAAOD,QAAU,EAAQ,GAAR,EAAqE,IAKxFP,KAAK,CAACQ,EAAOhB,EAAI,GAAI,M,cCL7B,IAAIqN,EAAEmuB,OACFj3B,EAAO,WAAY,MAAO,CAACw4L,kBAAiB,EAAMp1I,MAAMt6C,EAAEylG,KAAKzlG,EAAE8wR,IAAI9wR,EAAE4oK,OAAO5oK,EAAE+oK,UAAU/oK,EAAE+wR,QAAQ/wR,EAAEquC,OAAOruC,EAAEgxR,cAAchxR,EAAEixR,MAAMjxR,EAAE8vL,IAAI9vL,EAAEkxR,MAAMlxR,EAAEmxR,OAAOnxR,EAAEoxR,KAAKpxR,EAAEqxR,QAAQrxR,EAAEsxR,KAAKtxR,EAAEuxR,MAAMvxR,EAAE6vL,KAAK7vL,EAAEwxR,QAAQxxR,EAAEyxR,MAAMzxR,EAAE0xR,QAAQ1xR,EAAE2xR,SAAS3xR,EAAE4xR,OAAO5xR,EAAE6xR,UAAU7xR,EAAE8xR,OAAO9xR,EAAE+xR,QAAQ/xR,IACtRrM,EAAOD,QAAQwD,IACfvD,EAAOD,QAAQq8L,aAAe74L,G,6BCH9B,iGAEI86R,EAAiB,CAACC,EAAUC,EAAc,KACrC,CAACxsL,EAAOwsL,KACb,IAAIh7P,EAAK,GACLvkC,EAAI+yG,EACR,KAAO/yG,KACLukC,GAAM+6P,EAAUngQ,KAAK0wD,SAAWyvM,EAASp/R,OAAU,GAErD,OAAOqkC,GAGPy7I,EAAS,CAACjtE,EAAO,MACnB,IAAIxuE,EAAK,GACLvkC,EAAI+yG,EACR,KAAO/yG,KACLukC,GAfF,mEAeqC,GAAhBpF,KAAK0wD,SAAiB,GAE3C,OAAOtrD,I,6CChBT,IAAIipF,EAAc,EAAQ,KACtBgyK,EAAY,EAAQ,MACpB/xK,EAAU,EAAQ,KAClBL,EAAS,EAAQ,KACjBC,EAAO,EAAQ,KACfF,EAAO,EAAQ,KAEnB,MAAMsyK,EAAwB,CAC5B1mH,OAAO,EACPp7E,OAAO,GAqlBT38F,EAAOD,QA1kBP,MACE,YAAY66K,GACVzgJ,KAAKygJ,MAAQA,EAEbzgJ,KAAKuF,KAAO,IAAI2sF,EAChBlyF,KAAK1P,QAAU0P,KAAKuF,KACpBvF,KAAKukQ,OAAS,GACdvkQ,KAAKipM,WAAY,EAEjBjpM,KAAKwkQ,kBACLxkQ,KAAKuF,KAAKmH,OAAS,CAAE+zI,QAAOv8I,MAAO,CAAEi/I,OAAQ,EAAGD,KAAM,EAAGtwG,OAAQ,IAGnE,OAAO6xN,GACL,IAOIh9R,EACAimB,EACAloB,EATAilE,EAAO,IAAIwnD,EACfxnD,EAAK5iE,KAAO48R,EAAM,GAAGz6R,MAAM,GACT,KAAdygE,EAAK5iE,MACPm4B,KAAK0kQ,cAAcj6N,EAAMg6N,GAE3BzkQ,KAAK0jB,KAAK+mB,EAAMg6N,EAAM,IAKtB,IAAIv3Q,GAAO,EACP4sE,GAAO,EACP8lI,EAAS,GACT1f,EAAW,GAEf,MAAQlgL,KAAKqkQ,UAAUM,aAAa,CAYlC,GAVAl9R,GADAg9R,EAAQzkQ,KAAKqkQ,UAAUO,aACV,GAEA,MAATn9R,GAAyB,MAATA,EAClBy4M,EAAS76M,KAAc,MAAToC,EAAe,IAAM,KACjB,MAATA,GAAgBy4M,EAASn7M,OAAS,EAC3Cm7M,EAAS76M,KAAK,KACLoC,IAASy4M,EAASA,EAASn7M,OAAS,IAC7Cm7M,EAAStyJ,MAGa,IAApBsyJ,EAASn7M,OAAc,CACzB,GAAa,MAAT0C,EAAc,CAChBgjE,EAAK/9B,OAAOvI,IAAMnE,KAAK6kQ,YAAYJ,EAAM,IACzCh6N,EAAK/9B,OAAOvI,IAAIyuC,SAChB5yC,KAAKipM,WAAY,EACjB,MACK,GAAa,MAATxhO,EAAc,CACvBqyF,GAAO,EACP,MACK,GAAa,MAATryF,EAAc,CACvB,GAAIm4N,EAAO76N,OAAS,EAAG,CAGrB,IAFAS,EAAQo6N,EAAO76N,OAAS,EACxB2oB,EAAOkyM,EAAOp6N,GACPkoB,GAAoB,UAAZA,EAAK,IAClBA,EAAOkyM,IAASp6N,GAEdkoB,IACF+8C,EAAK/9B,OAAOvI,IAAMnE,KAAK6kQ,YAAYn3Q,EAAK,IAAMA,EAAK,IACnD+8C,EAAK/9B,OAAOvI,IAAIyuC,UAGpB5yC,KAAKmE,IAAIsgQ,GACT,MAEA7kE,EAAOv6N,KAAKo/R,QAGd7kE,EAAOv6N,KAAKo/R,GAGd,GAAIzkQ,KAAKqkQ,UAAUM,YAAa,CAC9Bz3Q,GAAO,EACP,OAIJu9C,EAAKkpD,KAAK2vD,QAAUtjJ,KAAK8kQ,yBAAyBllE,GAC9CA,EAAO76N,QACT0lE,EAAKkpD,KAAKw1G,UAAYnpM,KAAK+kQ,2BAA2BnlE,GACtD5/L,KAAKogJ,IAAI31G,EAAM,SAAUm1J,GACrB1yM,IACFu3Q,EAAQ7kE,EAAOA,EAAO76N,OAAS,GAC/B0lE,EAAK/9B,OAAOvI,IAAMnE,KAAK6kQ,YAAYJ,EAAM,IAAMA,EAAM,IACrDh6N,EAAK/9B,OAAOvI,IAAIyuC,SAChB5yC,KAAKukQ,OAAS95N,EAAKkpD,KAAK2vD,QACxB74G,EAAKkpD,KAAK2vD,QAAU,MAGtB74G,EAAKkpD,KAAKw1G,UAAY,GACtB1+J,EAAKm1J,OAAS,IAGZ9lI,IACFrvB,EAAKgoD,MAAQ,GACbzyF,KAAK1P,QAAUm6C,GAInB,qBAAqBu6N,GACnB,IAAIp8D,EAAQ5oM,KAAK4oM,MAAMo8D,GACvB,IAAc,IAAVp8D,EAAiB,OAErB,IACI67D,EADAQ,EAAU,EAEd,IAAK,IAAIj9P,EAAI4gM,EAAQ,EAAG5gM,GAAK,IAC3By8P,EAAQO,EAAOh9P,GACE,UAAby8P,EAAM,KACRQ,GAAW,EACK,IAAZA,IAJwBj9P,KAUhC,MAAMhI,KAAKygJ,MAAMx5K,MACf,mBACa,SAAbw9R,EAAM,GAAgBA,EAAM,GAAK,EAAIA,EAAM,IAI/C,MAAMO,GACJ,IACIP,EAAOh9R,EAAMimB,EADbwyL,EAAW,EAEf,IAAK,IAAKr7M,EAAGoP,KAAY+wR,EAAOpyL,UAAW,CAUzC,GATA6xL,EAAQxwR,EACRxM,EAAOg9R,EAAM,GAEA,MAATh9R,IACFy4M,GAAY,GAED,MAATz4M,IACFy4M,GAAY,GAEG,IAAbA,GAA2B,MAATz4M,EAAc,CAClC,GAAKimB,EAEE,IAAgB,SAAZA,EAAK,IAA6B,WAAZA,EAAK,GACpC,SAEA,OAAO7oB,EAJPm7B,KAAKklQ,YAAYT,GAQrB/2Q,EAAO+2Q,EAET,OAAO,EAGT,QAAQA,GACN,IAAIh6N,EAAO,IAAI6nD,EACftyF,KAAK0jB,KAAK+mB,EAAMg6N,EAAM,IACtBh6N,EAAK/9B,OAAOvI,IAAMnE,KAAK6kQ,YAAYJ,EAAM,IAAMA,EAAM,IACrDh6N,EAAK/9B,OAAOvI,IAAIyuC,SAEhB,IAAIskC,EAAOutL,EAAM,GAAGz6R,MAAM,GAAI,GAC9B,GAAI,QAAQgsC,KAAKkhE,GACfzsC,EAAKysC,KAAO,GACZzsC,EAAKkpD,KAAK9gD,KAAOqkC,EACjBzsC,EAAKkpD,KAAKjxB,MAAQ,OACb,CACL,IAAI3rE,EAAQmgF,EAAKngF,MAAM,wBACvB0zC,EAAKysC,KAAOngF,EAAM,GAClB0zC,EAAKkpD,KAAK9gD,KAAO97C,EAAM,GACvB0zC,EAAKkpD,KAAKjxB,MAAQ3rE,EAAM,IAI5B,kBACEiJ,KAAKqkQ,UAAYA,EAAUrkQ,KAAKygJ,OAGlC,KAAKukH,EAAQG,GACX,IAAI16N,EAAO,IAAI4nD,EACfryF,KAAK0jB,KAAK+mB,EAAMu6N,EAAO,GAAG,IAE1B,IA4BIP,EA5BAv3Q,EAAO83Q,EAAOA,EAAOjgS,OAAS,GAWlC,IAVgB,MAAZmoB,EAAK,KACP8S,KAAKipM,WAAY,EACjB+7D,EAAOp3O,OAGT6c,EAAK/9B,OAAOvI,IAAMnE,KAAK6kQ,YACrB33Q,EAAK,IAAMA,EAAK,IA/LtB,SAA8B83Q,GAC5B,IAAK,IAAIngS,EAAImgS,EAAOjgS,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC3C,IAAI4/R,EAAQO,EAAOngS,GACfs2F,EAAMspM,EAAM,IAAMA,EAAM,GAC5B,GAAItpM,EAAK,OAAOA,GA2LQiqM,CAAqBJ,IAE7Cv6N,EAAK/9B,OAAOvI,IAAIyuC,SAEQ,SAAjBoyN,EAAO,GAAG,IACO,IAAlBA,EAAOjgS,QAAci7B,KAAKqlQ,YAAYL,GAC1Cv6N,EAAKkpD,KAAKC,QAAUoxK,EAAOx/R,QAAQ,GAKrC,IAHAilE,EAAK/9B,OAAOxI,MAAQlE,KAAK6kQ,YAAYG,EAAO,GAAG,IAE/Cv6N,EAAKtkB,KAAO,GACL6+O,EAAOjgS,QAAQ,CACpB,IAAI0C,EAAOu9R,EAAO,GAAG,GACrB,GAAa,MAATv9R,GAAyB,UAATA,GAA6B,YAATA,EACtC,MAEFgjE,EAAKtkB,MAAQ6+O,EAAOx/R,QAAQ,GAM9B,IAHAilE,EAAKkpD,KAAK2vD,QAAU,GAGb0hH,EAAOjgS,QAAQ,CAGpB,GAFA0/R,EAAQO,EAAOx/R,QAEE,MAAbi/R,EAAM,GAAY,CACpBh6N,EAAKkpD,KAAK2vD,SAAWmhH,EAAM,GAC3B,MAEiB,SAAbA,EAAM,IAAiB,KAAKzuP,KAAKyuP,EAAM,KACzCzkQ,KAAKqlQ,YAAY,CAACZ,IAEpBh6N,EAAKkpD,KAAK2vD,SAAWmhH,EAAM,GAIV,MAAjBh6N,EAAKtkB,KAAK,IAA+B,MAAjBskB,EAAKtkB,KAAK,KACpCskB,EAAKkpD,KAAKC,QAAUnpD,EAAKtkB,KAAK,GAC9BskB,EAAKtkB,KAAOskB,EAAKtkB,KAAKn8C,MAAM,IAG9B,IACIsjB,EADAg4Q,EAAc,GAElB,KAAON,EAAOjgS,SACZuoB,EAAO03Q,EAAO,GAAG,GACJ,UAAT13Q,GAA6B,YAATA,IACxBg4Q,EAAYjgS,KAAK2/R,EAAOx/R,SAG1Bw6B,KAAKulQ,wBAAwBP,GAE7B,IAAK,IAAIngS,EAAImgS,EAAOjgS,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAE3C,GADA4/R,EAAQO,EAAOngS,GACgB,eAA3B4/R,EAAM,GAAGzvP,cAAgC,CAC3Cy1B,EAAK6+J,WAAY,EACjB,IAAIhpM,EAASN,KAAKwlQ,WAAWR,EAAQngS,GACrCy7B,EAASN,KAAKylQ,cAAcT,GAAU1kQ,EACvB,gBAAXA,IAA0BmqC,EAAKkpD,KAAK21G,UAAYhpM,GACpD,MACK,GAA+B,cAA3BmkQ,EAAM,GAAGzvP,cAA+B,CACjD,IAAIukJ,EAAQyrG,EAAOh7R,MAAM,GACrBq8C,EAAM,GACV,IAAK,IAAIre,EAAInjC,EAAGmjC,EAAI,EAAGA,IAAK,CAC1B,IAAIvgC,EAAO8xL,EAAMvxJ,GAAG,GACpB,GAAgC,IAA5Bqe,EAAI1f,OAAO0M,QAAQ,MAAuB,UAAT5rC,EACnC,MAEF4+C,EAAMkzI,EAAM3rI,MAAM,GAAKvH,EAEO,IAA5BA,EAAI1f,OAAO0M,QAAQ,OACrBo3B,EAAK6+J,WAAY,EACjB7+J,EAAKkpD,KAAK21G,UAAYjjL,EACtB2+O,EAASzrG,GAIb,GAAiB,UAAbkrG,EAAM,IAA+B,YAAbA,EAAM,GAChC,MAIUO,EAAOprO,KAAK/0D,GAAc,UAATA,EAAE,IAA2B,YAATA,EAAE,MAGnD4lE,EAAKkpD,KAAK2vD,SAAWgiH,EAAY/1R,IAAI1K,GAAKA,EAAE,IAAIoZ,KAAK,IACrDqnR,EAAc,IAEhBtlQ,KAAKogJ,IAAI31G,EAAM,QAAS66N,EAAY/7P,OAAOy7P,GAASG,GAEhD16N,EAAK1hE,MAAM4mC,SAAS,OAASw1P,GAC/BnlQ,KAAK0lQ,qBAAqBV,GAI9B,YAAYP,GACV,MAAMzkQ,KAAKygJ,MAAMx5K,MACf,eACA,CAAE2rE,OAAQ6xN,EAAM,IAChB,CAAE7xN,OAAQ6xN,EAAM,GAAKA,EAAM,GAAG1/R,SAIlC,UAAU0/R,GACR,IAAIh6N,EAAO,IAAIunD,EACfhyF,KAAK0jB,KAAK+mB,EAAMg6N,EAAM,IACtBh6N,EAAK3xC,SAAW,GAChB2xC,EAAKkpD,KAAK2vD,QAAU,GACpBtjJ,KAAK1P,QAAUm6C,EAGjB,IAAIg6N,GACEzkQ,KAAK1P,QAAQmiG,OAASzyF,KAAK1P,QAAQmiG,MAAM1tH,SAC3Ci7B,KAAK1P,QAAQqjG,KAAKs1G,UAAYjpM,KAAKipM,WAErCjpM,KAAKipM,WAAY,EAEjBjpM,KAAK1P,QAAQqjG,KAAK0vD,OAASrjJ,KAAK1P,QAAQqjG,KAAK0vD,OAAS,IAAMrjJ,KAAKukQ,OACjEvkQ,KAAKukQ,OAAS,GAEVvkQ,KAAK1P,QAAQ0jE,QACfh0D,KAAK1P,QAAQoc,OAAOvI,IAAMnE,KAAK6kQ,YAAYJ,EAAM,IACjDzkQ,KAAK1P,QAAQoc,OAAOvI,IAAIyuC,SACxB5yC,KAAK1P,QAAU0P,KAAK1P,QAAQ0jE,QAE5Bh0D,KAAK2lQ,gBAAgBlB,GAIzB,UACMzkQ,KAAK1P,QAAQ0jE,QAAQh0D,KAAK4lQ,gBAC1B5lQ,KAAK1P,QAAQmiG,OAASzyF,KAAK1P,QAAQmiG,MAAM1tH,SAC3Ci7B,KAAK1P,QAAQqjG,KAAKs1G,UAAYjpM,KAAKipM,WAErCjpM,KAAK1P,QAAQqjG,KAAK0vD,OAASrjJ,KAAK1P,QAAQqjG,KAAK0vD,OAAS,IAAMrjJ,KAAKukQ,OACjEvkQ,KAAKuF,KAAKmH,OAAOvI,IAAMnE,KAAK6kQ,YAAY7kQ,KAAKqkQ,UAAUx2R,YAGzD,cAAc42R,GAEZ,GADAzkQ,KAAKukQ,QAAUE,EAAM,GACjBzkQ,KAAK1P,QAAQmiG,MAAO,CACtB,IAAI/kG,EAAOsS,KAAK1P,QAAQmiG,MAAMzyF,KAAK1P,QAAQmiG,MAAM1tH,OAAS,GACtD2oB,GAAsB,SAAdA,EAAKjmB,OAAoBimB,EAAKimG,KAAKg2G,eAC7Cj8M,EAAKimG,KAAKg2G,aAAe3pM,KAAKukQ,OAC9BvkQ,KAAKukQ,OAAS,KAOpB,YAAY3xN,GACV,IAAIuoB,EAAMn7D,KAAKygJ,MAAMgF,WAAW7yG,GAChC,MAAO,CACLuwG,OAAQhoF,EAAIuqF,IACZxC,KAAM/nF,EAAI+nF,KACVtwG,UAIJ,KAAKnI,EAAMmI,GACT5yC,KAAK1P,QAAQjrB,KAAKolE,GAClBA,EAAK/9B,OAAS,CACZ+zI,MAAOzgJ,KAAKygJ,MACZv8I,MAAOlE,KAAK6kQ,YAAYjyN,IAE1BnI,EAAKkpD,KAAKC,OAAS5zF,KAAKukQ,OACxBvkQ,KAAKukQ,OAAS,GACI,YAAd95N,EAAKhjE,OAAoBu4B,KAAKipM,WAAY,GAGhD,MAAM/kM,GACJ,IAAIC,GAAM,EACN18B,EAAO,KACPmhO,GAAQ,EACRi9D,EAAU,KACV3lF,EAAW,GACXilF,EAAiBjhQ,EAAM,GAAG8c,WAAW,MAErCgkP,EAAS,GACTP,EAAQvgQ,EACZ,KAAOugQ,GAAO,CAIZ,GAHAh9R,EAAOg9R,EAAM,GACbO,EAAO3/R,KAAKo/R,GAEC,MAATh9R,GAAyB,MAATA,EACbo+R,IAASA,EAAUpB,GACxBvkF,EAAS76M,KAAc,MAAToC,EAAe,IAAM,UAC9B,GAAI09R,GAAkBv8D,GAAkB,MAATnhO,EAC/Bo+R,IAASA,EAAUpB,GACxBvkF,EAAS76M,KAAK,UACT,GAAwB,IAApB66M,EAASn7M,OAAc,CAChC,GAAa,MAAT0C,EAAc,CAChB,GAAImhO,EAEF,YADA5oM,KAAKg0F,KAAKgxK,EAAQG,GAGlB,MAEG,GAAa,MAAT19R,EAET,YADAu4B,KAAKwxB,KAAKwzO,GAEL,GAAa,MAATv9R,EAAc,CACvBu4B,KAAKqkQ,UAAUyB,KAAKd,EAAOp3O,OAC3BzpB,GAAM,EACN,MACkB,MAAT18B,IACTmhO,GAAQ,QAEDnhO,IAASy4M,EAASA,EAASn7M,OAAS,KAC7Cm7M,EAAStyJ,MACe,IAApBsyJ,EAASn7M,SAAc8gS,EAAU,OAGvCpB,EAAQzkQ,KAAKqkQ,UAAUO,YAMzB,GAHI5kQ,KAAKqkQ,UAAUM,cAAaxgQ,GAAM,GAClC+7K,EAASn7M,OAAS,GAAGi7B,KAAK+lQ,gBAAgBF,GAE1C1hQ,GAAOykM,EAAO,CAChB,IAAKu8D,EACH,KAAOH,EAAOjgS,SACZ0/R,EAAQO,EAAOA,EAAOjgS,OAAS,GAAG,GACpB,UAAV0/R,GAA+B,YAAVA,IACzBzkQ,KAAKqkQ,UAAUyB,KAAKd,EAAOp3O,OAG/B5tB,KAAKg0F,KAAKgxK,EAAQG,QAElBnlQ,KAAKqlQ,YAAYL,GAIrB,QACE,IAAIP,EACJ,MAAQzkQ,KAAKqkQ,UAAUM,aAGrB,OAFAF,EAAQzkQ,KAAKqkQ,UAAUO,YAEfH,EAAM,IACZ,IAAK,QACHzkQ,KAAKukQ,QAAUE,EAAM,GACrB,MAEF,IAAK,IACHzkQ,KAAKgmQ,cAAcvB,GACnB,MAEF,IAAK,IACHzkQ,KAAKmE,IAAIsgQ,GACT,MAEF,IAAK,UACHzkQ,KAAK+pM,QAAQ06D,GACb,MAEF,IAAK,UACHzkQ,KAAK8pM,OAAO26D,GACZ,MAEF,IAAK,IACHzkQ,KAAKimQ,UAAUxB,GACf,MAEF,QACEzkQ,KAAKozF,MAAMqxK,GAIjBzkQ,KAAKkmQ,UAGP,2BAIA,IAAIz7N,EAAMtkB,EAAM6+O,EAAQG,GACtB,IAAIV,EAAOh9R,EAIP6lB,EAAMI,EAHN3oB,EAASigS,EAAOjgS,OAChBgE,EAAQ,GACRo9R,GAAQ,EAGZ,IAAK,IAAIthS,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAC/B4/R,EAAQO,EAAOngS,GACf4C,EAAOg9R,EAAM,GACA,UAATh9R,GAAoB5C,IAAME,EAAS,GAAMogS,EAEzB,YAAT19R,GACTimB,EAAOs3Q,EAAOngS,EAAI,GAAKmgS,EAAOngS,EAAI,GAAG,GAAK,QAC1CyoB,EAAO03Q,EAAOngS,EAAI,GAAKmgS,EAAOngS,EAAI,GAAG,GAAK,QACrCy/R,EAAsB52Q,IAAU42Q,EAAsBh3Q,IACjC,MAApBvkB,EAAMiB,OAAO,GAMjBm8R,GAAQ,EAHNp9R,GAAS07R,EAAM,IAMnB17R,GAAS07R,EAAM,GAdf0B,GAAQ,EAiBZ,IAAKA,EAAO,CACV,IAAI/lH,EAAM4kH,EAAOzoP,OAAO,CAACp0C,EAAKtD,IAAMsD,EAAMtD,EAAE,GAAI,IAChD4lE,EAAKkpD,KAAKxtE,GAAQ,CAAEi6H,MAAKr3K,SAE3B0hE,EAAKtkB,GAAQp9C,EAGf,KAAKi8R,GACHA,EAAOp3O,MAEP,IAAI6c,EAAO,IAAIunD,EACfhyF,KAAK0jB,KAAK+mB,EAAMu6N,EAAO,GAAG,IAE1Bv6N,EAAKkpD,KAAK2vD,QAAUtjJ,KAAK8kQ,yBAAyBE,GAClDhlQ,KAAKogJ,IAAI31G,EAAM,WAAYu6N,GAC3BhlQ,KAAK1P,QAAUm6C,EAGjB,yBAAyBu6N,GACvB,IAAIoB,EACA7B,EAAS,GACb,KAAOS,EAAOjgS,SACZqhS,EAAgBpB,EAAOA,EAAOjgS,OAAS,GAAG,GACpB,UAAlBqhS,GAA+C,YAAlBA,IACjC7B,EAASS,EAAOp3O,MAAM,GAAK22O,EAE7B,OAAOA,EAKT,2BAA2BS,GACzB,IAAI13Q,EACAi3Q,EAAS,GACb,KAAOS,EAAOjgS,SACZuoB,EAAO03Q,EAAO,GAAG,GACJ,UAAT13Q,GAA6B,YAATA,IACxBi3Q,GAAUS,EAAOx/R,QAAQ,GAE3B,OAAO++R,EAGT,cAAcS,GACZ,IAAIoB,EACA7B,EAAS,GACb,KAAOS,EAAOjgS,SACZqhS,EAAgBpB,EAAOA,EAAOjgS,OAAS,GAAG,GACpB,UAAlBqhS,IACJ7B,EAASS,EAAOp3O,MAAM,GAAK22O,EAE7B,OAAOA,EAGT,WAAWS,EAAQt2R,GACjB,IAAI8G,EAAS,GACb,IAAK,IAAI3Q,EAAI6J,EAAM7J,EAAImgS,EAAOjgS,OAAQF,IACpC2Q,GAAUwvR,EAAOngS,GAAG,GAGtB,OADAmgS,EAAO54P,OAAO19B,EAAMs2R,EAAOjgS,OAAS2J,GAC7B8G,EAGT,gBACE,IAAI2lF,EAAMn7D,KAAK1P,QAAQoc,OAAOxI,MAC9B,MAAMlE,KAAKygJ,MAAMx5K,MAAM,iBAAkBk0F,EAAI+nF,KAAM/nF,EAAIgoF,QAGzD,gBAAgB0iH,GACd,MAAM7lQ,KAAKygJ,MAAMx5K,MACf,mBACA,CAAE2rE,OAAQizN,EAAQ,IAClB,CAAEjzN,OAAQizN,EAAQ,GAAK,IAI3B,gBAAgBpB,GACd,MAAMzkQ,KAAKygJ,MAAMx5K,MACf,eACA,CAAE2rE,OAAQ6xN,EAAM,IAChB,CAAE7xN,OAAQ6xN,EAAM,GAAK,IAIzB,YAAYO,GACV,MAAMhlQ,KAAKygJ,MAAMx5K,MACf,eACA,CAAE2rE,OAAQoyN,EAAO,GAAG,IACpB,CAAEpyN,OAAQoyN,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAGjgS,SAI1C,cAAc0lE,EAAMg6N,GAClB,MAAMzkQ,KAAKygJ,MAAMx5K,MACf,uBACA,CAAE2rE,OAAQ6xN,EAAM,IAChB,CAAE7xN,OAAQ6xN,EAAM,GAAKA,EAAM,GAAG1/R,Y,6BCzlBpC,MAAMshS,EAAe,IAAIr/P,WAAW,GAC9Bs/P,EAAe,IAAIt/P,WAAW,GAC9Bu/P,EAAY,KAAKv/P,WAAW,GAC5Bw/P,EAAQ,IAAIx/P,WAAW,GACvBy/P,EAAU,KAAKz/P,WAAW,GAC1Bm3B,EAAQ,IAAIn3B,WAAW,GACvB0/P,EAAO,KAAK1/P,WAAW,GACvB2/P,EAAM,KAAK3/P,WAAW,GACtB4/P,EAAK,KAAK5/P,WAAW,GACrB6/P,EAAc,IAAI7/P,WAAW,GAC7B8/P,EAAe,IAAI9/P,WAAW,GAC9B+/P,EAAmB,IAAI//P,WAAW,GAClCggQ,EAAoB,IAAIhgQ,WAAW,GACnCigQ,EAAa,IAAIjgQ,WAAW,GAC5BkgQ,EAAc,IAAIlgQ,WAAW,GAC7BmgQ,EAAY,IAAIngQ,WAAW,GAC3BogQ,EAAW,IAAIpgQ,WAAW,GAC1BqgQ,EAAQ,IAAIrgQ,WAAW,GACvBsgQ,EAAK,IAAItgQ,WAAW,GAEpBugQ,EAAY,6BACZC,EAAc,wCACdC,EAAiB,gBACjBC,EAAgB,WAEtB7hS,EAAOD,QAAU,SAAmB66K,EAAOhtK,EAAU,IACnD,IAGIg0B,EAAMna,EAAMo7P,EAAO7uQ,EAASu4C,EAC5Bu1O,EAASC,EAAWl6Q,EAAMnkB,EAAGs+R,EAJ7Bp+P,EAAMg3I,EAAMh3I,IAAIpH,UAChB+kI,EAAS3zJ,EAAQq0R,aAKjB/iS,EAAS0kC,EAAI1kC,OACbo2F,EAAM,EACNkgE,EAAS,GACT0sI,EAAW,GAMf,SAASC,EAASvyO,GAChB,MAAMgrH,EAAMx5K,MAAM,YAAcwuD,EAAM0lC,GAuNxC,MAAO,CACL2qM,KALF,SAAcrB,GACZsD,EAAS1iS,KAAKo/R,IAKdE,UAtNF,WACE,OAA2B,IAApBoD,EAAShjS,QAAgBo2F,GAAOp2F,GAsNvC6/R,UAnNF,SAAmBpsO,GACjB,GAAIuvO,EAAShjS,OAAQ,OAAOgjS,EAASn6O,MACrC,GAAIutC,GAAOp2F,EAAQ,OAEnB,IAAIkjS,IAAiBzvO,GAAOA,EAAKyvO,eAIjC,OAFAxgQ,EAAOgC,EAAIzC,WAAWm0D,GAEd1zD,GACN,KAAKg/P,EACL,KAAKtoO,EACL,KAAKwoO,EACL,KAAKC,EACL,KAAKF,EACHp5Q,EAAO6tE,EACP,GACE7tE,GAAQ,EACRma,EAAOgC,EAAIzC,WAAW1Z,SAEtBma,IAAS02B,GACT12B,IAASg/P,GACTh/P,IAASk/P,GACTl/P,IAASm/P,GACTn/P,IAASi/P,GAGXmB,EAAe,CAAC,QAASp+P,EAAIz/B,MAAMmxF,EAAK7tE,IACxC6tE,EAAM7tE,EAAO,EACb,MAGF,KAAKu5Q,EACL,KAAKC,EACL,KAAKG,EACL,KAAKC,EACL,KAAKG,EACL,KAAKF,EACL,KAAKH,EAAmB,CACtB,IAAIkB,EAAc7nQ,OAAOsxD,aAAalqD,GACtCogQ,EAAe,CAACK,EAAaA,EAAa/sM,GAC1C,MAGF,KAAK4rM,EAGH,GAFAr5Q,EAAO2tI,EAAOt2J,OAASs2J,EAAOztG,MAAM,GAAK,GACzCrkD,EAAIkgC,EAAIzC,WAAWm0D,EAAM,GAEd,QAATztE,GACAnkB,IAAM88R,GACN98R,IAAM+8R,GACN/8R,IAAM40D,GACN50D,IAAMk9R,GACNl9R,IAAMo9R,GACNp9R,IAAMm9R,GACNn9R,IAAMq9R,EACN,CACAt5Q,EAAO6tE,EACP,EAAG,CAGD,GAFAwsM,GAAU,EACVr6Q,EAAOmc,EAAI4J,QAAQ,IAAK/lB,EAAO,IACjB,IAAVA,EAAa,CACf,GAAI85I,GAAU6gI,EAAgB,CAC5B36Q,EAAO6tE,EACP,MAEA6sM,EAAS,WAIb,IADAJ,EAAYt6Q,EACLmc,EAAIzC,WAAW4gQ,EAAY,KAAOrB,GACvCqB,GAAa,EACbD,GAAWA,QAENA,GAETE,EAAe,CAAC,WAAYp+P,EAAIz/B,MAAMmxF,EAAK7tE,EAAO,GAAI6tE,EAAK7tE,GAE3D6tE,EAAM7tE,OAENA,EAAOmc,EAAI4J,QAAQ,IAAK8nD,EAAM,GAC9BthF,EAAU4vB,EAAIz/B,MAAMmxF,EAAK7tE,EAAO,IAElB,IAAVA,GAAem6Q,EAAezxP,KAAKn8B,GACrCguR,EAAe,CAAC,IAAK,IAAK1sM,IAE1B0sM,EAAe,CAAC,WAAYhuR,EAASshF,EAAK7tE,GAC1C6tE,EAAM7tE,GAIV,MAGF,KAAK+4Q,EACL,KAAKC,EACH5d,EAAQjhP,IAAS4+P,EAAe,IAAM,IACtC/4Q,EAAO6tE,EACP,EAAG,CAGD,GAFAwsM,GAAU,EACVr6Q,EAAOmc,EAAI4J,QAAQq1O,EAAOp7P,EAAO,IACnB,IAAVA,EAAa,CACf,GAAI85I,GAAU6gI,EAAgB,CAC5B36Q,EAAO6tE,EAAM,EACb,MAEA6sM,EAAS,UAIb,IADAJ,EAAYt6Q,EACLmc,EAAIzC,WAAW4gQ,EAAY,KAAOrB,GACvCqB,GAAa,EACbD,GAAWA,QAENA,GAETE,EAAe,CAAC,SAAUp+P,EAAIz/B,MAAMmxF,EAAK7tE,EAAO,GAAI6tE,EAAK7tE,GACzD6tE,EAAM7tE,EACN,MAGF,KAAKg6Q,EACHC,EAAUvzO,UAAYmnC,EAAM,EAC5BosM,EAAUvxP,KAAKvM,GAEbnc,EAD0B,IAAxBi6Q,EAAUvzO,UACLvqB,EAAI1kC,OAAS,EAEbwiS,EAAUvzO,UAAY,EAG/B6zO,EAAe,CAAC,UAAWp+P,EAAIz/B,MAAMmxF,EAAK7tE,EAAO,GAAI6tE,EAAK7tE,GAE1D6tE,EAAM7tE,EACN,MAGF,KAAKi5Q,EAGH,IAFAj5Q,EAAO6tE,EACP/oC,GAAS,EACF3oB,EAAIzC,WAAW1Z,EAAO,KAAOi5Q,GAClCj5Q,GAAQ,EACR8kC,GAAUA,EAGZ,GADA3qB,EAAOgC,EAAIzC,WAAW1Z,EAAO,GAE3B8kC,GACA3qB,IAAS++P,GACT/+P,IAAS02B,GACT12B,IAASg/P,GACTh/P,IAASk/P,GACTl/P,IAASm/P,GACTn/P,IAASi/P,IAETp5Q,GAAQ,EACJo6Q,EAAc1xP,KAAKvM,EAAIrJ,OAAO9S,KAAQ,CACxC,KAAOo6Q,EAAc1xP,KAAKvM,EAAIrJ,OAAO9S,EAAO,KAC1CA,GAAQ,EAENmc,EAAIzC,WAAW1Z,EAAO,KAAO6wC,IAC/B7wC,GAAQ,GAKdu6Q,EAAe,CAAC,OAAQp+P,EAAIz/B,MAAMmxF,EAAK7tE,EAAO,GAAI6tE,EAAK7tE,GAEvD6tE,EAAM7tE,EACN,MAGF,QACMma,IAAS++P,GAAS/8P,EAAIzC,WAAWm0D,EAAM,KAAOisM,GAChD95Q,EAAOmc,EAAI4J,QAAQ,KAAM8nD,EAAM,GAAK,EACvB,IAAT7tE,IACE85I,GAAU6gI,EACZ36Q,EAAOmc,EAAI1kC,OAEXijS,EAAS,YAIbH,EAAe,CAAC,UAAWp+P,EAAIz/B,MAAMmxF,EAAK7tE,EAAO,GAAI6tE,EAAK7tE,GAC1D6tE,EAAM7tE,IAENk6Q,EAAYxzO,UAAYmnC,EAAM,EAC9BqsM,EAAYxxP,KAAKvM,GAEfnc,EAD4B,IAA1Bk6Q,EAAYxzO,UACPvqB,EAAI1kC,OAAS,EAEbyiS,EAAYxzO,UAAY,EAGjC6zO,EAAe,CAAC,OAAQp+P,EAAIz/B,MAAMmxF,EAAK7tE,EAAO,GAAI6tE,EAAK7tE,GACvD+tI,EAAOh2J,KAAKwiS,GACZ1sM,EAAM7tE,GAQZ,OADA6tE,IACO0sM,GAWPh6R,SAhOF,WACE,OAAOstF,M,6BCtCX,IAAIgtM,EAAe,EAAQ,MACvBjhI,EAAa,EAAQ,KACrB1+F,EAAW,EAAQ,KACnB0pD,EAAO,EAAQ,KAEnB,MAAMi1C,EACJ,YAAYokE,EAAU,IACpBvrM,KAAK6vF,QAAU,SACf7vF,KAAKurM,QAAUvrM,KAAK0yF,UAAU64G,GAGhC,UAAUA,GACR,IAAI4mD,EAAa,GACjB,IAAK,IAAIttR,KAAK0mO,EAOZ,IANkB,IAAd1mO,EAAEomO,QACJpmO,EAAIA,IACKA,EAAEomO,UACXpmO,EAAIA,EAAEomO,SAGS,iBAANpmO,GAAkB4J,MAAM40B,QAAQx+B,EAAE0mO,SAC3C4mD,EAAaA,EAAW5oP,OAAO1kC,EAAE0mO,cAC5B,GAAiB,iBAAN1mO,GAAkBA,EAAE29L,cACpC2vF,EAAW9sR,KAAKR,QACX,GAAiB,mBAANA,EAChBstR,EAAW9sR,KAAKR,OACX,IAAiB,iBAANA,IAAmBA,EAAEgnD,QAAShnD,EAAEymC,UAShD,MAAM,IAAIpkC,MAAMrC,EAAI,4BAGxB,OAAOstR,EAGT,QAAQ1oP,EAAK+uB,EAAO,IAClB,OACGx4B,KAAKurM,QAAQxmO,QACbyzD,EAAKkqI,QACLlqI,EAAK8rH,aACL9rH,EAAK6yK,OAIC,IAAInkE,EAAWlnI,KAAMyJ,EAAK+uB,GAF1B,IAAI2vO,EAAanoQ,KAAMyJ,EAAK+uB,GAMvC,IAAImtH,GAEF,OADA3lJ,KAAKurM,QAAUvrM,KAAKurM,QAAQhiM,OAAOvJ,KAAK0yF,UAAU,CAACizD,KAC5C3lJ,MAIXn6B,EAAOD,QAAUuhK,EACjBA,EAAUviI,QAAUuiI,EAEpBj1C,EAAKo1C,kBAAkBH,GACvB3+F,EAAS8+F,kBAAkBH,I,6BChE3B,IAAIyiE,EAAe,EAAQ,KACvBt+L,EAAY,EAAQ,KAEpBugB,GADW,EAAQ,KACX,EAAQ,MACpB,MAAM0yH,EAAS,EAAQ,KAEvB,MAAM4pH,EACJ,YAAYtgP,EAAWpe,EAAK+uB,GAC1B/uB,EAAMA,EAAIxK,WACVe,KAAKkrM,aAAc,EAEnBlrM,KAAKooQ,WAAavgP,EAClB7nB,KAAKqoQ,KAAO5+P,EACZzJ,KAAKsoQ,MAAQ9vO,EACbx4B,KAAKuoQ,UAAOxgS,EAGZ,IAAIs+C,EAAM/a,EACVtL,KAAKxqB,OAAS,IAAI+oK,EAAOv+I,KAAKooQ,gBAH1B7iQ,EAG4CvF,KAAKsoQ,OACrDtoQ,KAAKxqB,OAAOi0B,IAAMA,EAElB,IAAIgJ,EAAOzS,KACXh7B,OAAOyD,eAAeu3B,KAAKxqB,OAAQ,OAAQ,CACzC7M,IAAG,IACM8pC,EAAKlN,OAIhB,IAAIh2B,EAAM,IAAIq6N,EAAavjL,OAbvB9gB,EAakCvF,KAAKsoQ,MAAO7+P,GAClD,GAAIl6B,EAAIw+N,QAAS,CACf,IAAKy6D,EAAcC,GAAgBl5R,EAAI88N,WACnCm8D,IACFxoQ,KAAKxqB,OAAOi0B,IAAM++P,GAEhBC,IACFzoQ,KAAKxqB,OAAOjG,IAAMk5R,QAGpBl5R,EAAIu+N,kBACJ9tM,KAAKxqB,OAAOi0B,IAAMl6B,EAAIk6B,IAI1B,QACE,OAAIzJ,KAAK/4B,MAAcd,QAAQE,OAAO25B,KAAK/4B,OACpCd,QAAQC,QAAQ45B,KAAKxqB,QAG9B,MAAMk2N,GACJ,OAAO1rM,KAAKq4B,QAAQszK,MAAMD,GAG5B,QAAQE,GACN,OAAO5rM,KAAKq4B,QAAQrhD,KAAK40N,EAAWA,GAGtC,OACE,GAAI5rM,KAAK/4B,MAAO,MAAM+4B,KAAK/4B,MAC3B,OAAO+4B,KAAKxqB,OAGd,KAAKi3N,EAAaf,GAWhB,OAAO1rM,KAAKq4B,QAAQrhD,KAAKy1N,EAAaf,GAGxC,WACE,OAAO1rM,KAAKqoQ,KAGd,WACE,MAAO,GAGT,cACE,OAAOroQ,KAAKxqB,OAAOi0B,IAGrB,UACE,OAAOzJ,KAAKxqB,OAAOi0B,IAGrB,UACE,OAAOzJ,KAAKxqB,OAAOjG,IAGrB,eACE,MAAO,GAGT,WACE,OAAOywB,KAAKxqB,OAAOgjD,KAGrB,gBACE,OAAOx4B,KAAKxqB,OAAOqyC,UAGrB,WACE,GAAI7nB,KAAK0oQ,MACP,OAAO1oQ,KAAK0oQ,MAGd,IAAInjQ,EACAm9J,EAAS72I,EAEb,IACEtmB,EAAOm9J,EAAO1iK,KAAKqoQ,KAAMroQ,KAAKsoQ,OAC9B,MAAOrhS,GACP+4B,KAAK/4B,MAAQA,EAGf,GAAI+4B,KAAK/4B,MACP,MAAM+4B,KAAK/4B,MAGX,OADA+4B,KAAK0oQ,MAAQnjQ,EACNA,EAIX58B,IAAKE,OAAOC,eACV,MAAO,gBAIXjD,EAAOD,QAAUuiS,EACjBA,EAAavjQ,QAAUujQ,G,6BCvIvB,IAAI91K,EAAc,EAAQ,KACtB0yD,EAAc,EAAQ,KACtBzyD,EAAU,EAAQ,KAClBL,EAAS,EAAQ,KACjBkzD,EAAQ,EAAQ,KAChBjzD,EAAO,EAAQ,KACfF,EAAO,EAAQ,KAEnB,SAAS4sH,EAASv4D,EAAMvC,GACtB,GAAIr1K,MAAM40B,QAAQgjJ,GAAO,OAAOA,EAAK92K,IAAIhG,GAAKq1O,EAASr1O,IAEvD,IAAMu6K,OAAQ6kH,KAAc5rP,GAAaspI,EACzC,GAAIsiH,EAAW,CACb7kH,EAAS,GACT,IAAK,IAAIrD,KAASkoH,EAAW,CAC3B,IAAIC,EAAgB,IAAKnoH,EAAO9iF,UAAWwnF,EAAMlgL,WAC7C2jS,EAAcr5R,MAChBq5R,EAAcr5R,IAAM,IACfq5R,EAAcr5R,IACjBouF,UAAWonF,EAAY9/K,YAG3B6+K,EAAOz+K,KAAKujS,IAMhB,GAHI7rP,EAAS01E,QACX11E,EAAS01E,MAAQ4zD,EAAK5zD,MAAMljH,IAAIhG,GAAKq1O,EAASr1O,EAAGu6K,KAE/C/mI,EAASrQ,OAAQ,CACnB,IAAI,QAAEw3I,KAAYx3I,GAAWqQ,EAASrQ,OACtCqQ,EAASrQ,OAASA,EACH,MAAXw3I,IACFnnI,EAASrQ,OAAO+zI,MAAQqD,EAAOI,IAGnC,GAAsB,SAAlBnnI,EAASt1C,KACX,OAAO,IAAIyqH,EAAKn1E,GACX,GAAsB,SAAlBA,EAASt1C,KAClB,OAAO,IAAI4qH,EAAYt1E,GAClB,GAAsB,SAAlBA,EAASt1C,KAClB,OAAO,IAAIuqH,EAAKj1E,GACX,GAAsB,YAAlBA,EAASt1C,KAClB,OAAO,IAAI6qH,EAAQv1E,GACd,GAAsB,WAAlBA,EAASt1C,KAClB,OAAO,IAAIwqH,EAAOl1E,GAElB,MAAM,IAAI71C,MAAM,sBAAwBm/K,EAAK5+K,MAIjD5B,EAAOD,QAAUg5O,EACjBA,EAASh6M,QAAUg6M,G,gBCrDnB,IAAIt9M,EAAI,EAAQ,IACZn8B,EAAO,EAAQ,IACfo+B,EAAW,EAAQ,IACnBurC,EAAW,EAAQ,IACnB+5N,EAAmB,EAAQ,MAC3BliO,EAAiC,EAAQ,KACzCxkB,EAAiB,EAAQ,KAe7B7gB,EAAE,CAAE35B,OAAQ,UAAWk9B,MAAM,GAAQ,CACnCl8B,IAZF,SAASA,EAAIhB,EAAQqlI,GACnB,IACIvqF,EAAYx9C,EADZm1L,EAAWllK,UAAUnwB,OAAS,EAAI4C,EAASutB,UAAU,GAEzD,OAAI45C,EAASnnE,KAAYyyL,EAAiBzyL,EAAOqlI,IACjDvqF,EAAakkB,EAA+BpnC,EAAE53B,EAAQqlI,IAC/B67J,EAAiBpmP,GACpCA,EAAW15C,WACQhB,IAAnB06C,EAAW95C,SAAoBZ,EAAY5C,EAAKs9C,EAAW95C,IAAKyxL,GAChE72J,EAASt+B,EAAYk9C,EAAex6C,IAAiBgB,EAAI1D,EAAW+nI,EAAaotD,QAArF,M,gBClBF,IAAI54J,EAAS,EAAQ,IAErB37B,EAAOD,QAAU,SAAU68C,GACzB,YAAsB16C,IAAf06C,IAA6BjhB,EAAOihB,EAAY,UAAYjhB,EAAOihB,EAAY,e,gBCHxF,IAAI89O,EAAQ,EAAQ,KAChBuI,EAAY,EAAQ,MACpBtiH,EAAc,EAAQ,KACtBuiH,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MACvBC,EAAc,EAAQ,MACtBC,EAAY,EAAQ,MACpBC,EAAc,EAAQ,MACtBC,EAAgB,EAAQ,MACxB7G,EAAa,EAAQ,KACrB9pD,EAAe,EAAQ,KACvBkoD,EAAS,EAAQ,KACjB0I,EAAiB,EAAQ,MACzBC,EAAiB,EAAQ,MACzBC,EAAkB,EAAQ,MAC1BlmQ,EAAU,EAAQ,KAClB83H,EAAW,EAAQ,KACnB4yE,EAAQ,EAAQ,MAChBxqM,EAAW,EAAQ,KACnBimQ,EAAQ,EAAQ,MAChBx1Q,EAAO,EAAQ,KACfy1Q,EAAS,EAAQ,KAqCjBC,EAAgB,GACpBA,EA9Bc,sBA8BWA,EA7BV,kBA8BfA,EAfqB,wBAeWA,EAdd,qBAelBA,EA9Bc,oBA8BWA,EA7BX,iBA8BdA,EAfiB,yBAeWA,EAdX,yBAejBA,EAdc,sBAcWA,EAbV,uBAcfA,EAbe,uBAaWA,EA5Bb,gBA6BbA,EA5BgB,mBA4BWA,EA3BX,mBA4BhBA,EA3BgB,mBA2BWA,EA1Bd,gBA2BbA,EA1BgB,mBA0BWA,EAzBX,mBA0BhBA,EAhBe,uBAgBWA,EAfJ,8BAgBtBA,EAfgB,wBAeWA,EAdX,yBAcsC,EACtDA,EArCe,kBAqCWA,EApCZ,qBAqCdA,EA5BiB,qBA4BW,EA8F5B7jS,EAAOD,QA5EP,SAAS6qO,EAAU1nO,EAAOu3R,EAAS55G,EAAYr9K,EAAKG,EAAQiwB,GAC1D,IAAIjkB,EACAm0R,EAnEgB,EAmEPrJ,EACTsJ,EAnEgB,EAmEPtJ,EACTuJ,EAnEmB,EAmEVvJ,EAKb,GAHI55G,IACFlxK,EAAShM,EAASk9K,EAAW39K,EAAOM,EAAKG,EAAQiwB,GAASitJ,EAAW39K,SAExDhB,IAAXyN,EACF,OAAOA,EAET,IAAK+tB,EAASx6B,GACZ,OAAOA,EAET,IAAI+gS,EAAQzmQ,EAAQt6B,GACpB,GAAI+gS,GAEF,GADAt0R,EAAS6zR,EAAetgS,IACnB4gS,EACH,OAAOT,EAAUngS,EAAOyM,OAErB,CACL,IAAI46G,EAAMuwK,EAAO53R,GACbghS,EA9EM,qBA8EG35K,GA7EJ,8BA6EsBA,EAE/B,GAAI+qC,EAASpyJ,GACX,OAAOkgS,EAAYlgS,EAAO4gS,GAE5B,GA/EY,mBA+ERv5K,GAxFM,sBAwFcA,GAAmB25K,IAAWvgS,GAEpD,GADAgM,EAAUo0R,GAAUG,EAAU,GAAKR,EAAgBxgS,IAC9C4gS,EACH,OAAOC,EACHR,EAAcrgS,EAAOigS,EAAaxzR,EAAQzM,IAC1CogS,EAAYpgS,EAAOggS,EAAWvzR,EAAQzM,QAEvC,CACL,IAAK2gS,EAAct5K,GACjB,OAAO5mH,EAAST,EAAQ,GAE1ByM,EAAS8zR,EAAevgS,EAAOqnH,EAAKu5K,IAIxClwQ,IAAUA,EAAQ,IAAI8mQ,GACtB,IAAIyJ,EAAUvwQ,EAAM9wB,IAAII,GACxB,GAAIihS,EACF,OAAOA,EAETvwQ,EAAM3qB,IAAI/F,EAAOyM,GAEbg0R,EAAMzgS,GACRA,EAAMmG,SAAQ,SAAS+6R,GACrBz0R,EAAOokE,IAAI62J,EAAUw5D,EAAU3J,EAAS55G,EAAYujH,EAAUlhS,EAAO0wB,OAE9Ds0M,EAAMhlO,IACfA,EAAMmG,SAAQ,SAAS+6R,EAAU5gS,GAC/BmM,EAAO1G,IAAIzF,EAAKonO,EAAUw5D,EAAU3J,EAAS55G,EAAYr9K,EAAKN,EAAO0wB,OAIzE,IAIIhH,EAAQq3Q,OAAQ/hS,GAJL8hS,EACVD,EAASnxD,EAAe8pD,EACxBqH,EAASH,EAASz1Q,GAEkBjrB,GASzC,OARA+/R,EAAUr2Q,GAAS1pB,GAAO,SAASkhS,EAAU5gS,GACvCopB,IAEFw3Q,EAAWlhS,EADXM,EAAM4gS,IAIRzjH,EAAYhxK,EAAQnM,EAAKonO,EAAUw5D,EAAU3J,EAAS55G,EAAYr9K,EAAKN,EAAO0wB,OAEzEjkB,I,cC7IT3P,EAAOD,QAZP,SAAmBmsC,EAAO44O,GAIxB,IAHA,IAAI1qP,GAAS,EACTl7B,EAAkB,MAATgtC,EAAgB,EAAIA,EAAMhtC,SAE9Bk7B,EAAQl7B,IAC8B,IAAzC4lR,EAAS54O,EAAM9R,GAAQA,EAAO8R,KAIpC,OAAOA,I,gBClBT,IAAIm4P,EAAa,EAAQ,KACrBl2Q,EAAO,EAAQ,KAenBnuB,EAAOD,QAJP,SAAoB4D,EAAQkjC,GAC1B,OAAOljC,GAAU0gS,EAAWx9P,EAAQ1Y,EAAK0Y,GAASljC,K,gBCbpD,IAAI0gS,EAAa,EAAQ,KACrBT,EAAS,EAAQ,KAerB5jS,EAAOD,QAJP,SAAsB4D,EAAQkjC,GAC5B,OAAOljC,GAAU0gS,EAAWx9P,EAAQ+8P,EAAO/8P,GAASljC,K,iBCbtD,kBAAW,EAAQ,KAGf2gS,EAA4CvkS,IAAYA,EAAQmsM,UAAYnsM,EAG5EwkS,EAAaD,GAAgC,iBAAVtkS,GAAsBA,IAAWA,EAAOksM,UAAYlsM,EAMvFu0J,EAHgBgwI,GAAcA,EAAWxkS,UAAYukS,EAG5B5kQ,EAAK60H,YAASryJ,EACvC0yJ,EAAcL,EAASA,EAAOK,iBAAc1yJ,EAqBhDlC,EAAOD,QAXP,SAAqBy1J,EAAQsuI,GAC3B,GAAIA,EACF,OAAOtuI,EAAOrxJ,QAEhB,IAAIjF,EAASs2J,EAAOt2J,OAChByQ,EAASilJ,EAAcA,EAAY11J,GAAU,IAAIs2J,EAAOp5H,YAAYl9B,GAGxE,OADAs2J,EAAOxxG,KAAKr0C,GACLA,K,oCCZT3P,EAAOD,QAXP,SAAmB8mC,EAAQqF,GACzB,IAAI9R,GAAS,EACTl7B,EAAS2nC,EAAO3nC,OAGpB,IADAgtC,IAAUA,EAAQtjC,MAAM1J,MACfk7B,EAAQl7B,GACfgtC,EAAM9R,GAASyM,EAAOzM,GAExB,OAAO8R,I,gBChBT,IAAIm4P,EAAa,EAAQ,KACrBG,EAAa,EAAQ,MAczBxkS,EAAOD,QAJP,SAAqB8mC,EAAQljC,GAC3B,OAAO0gS,EAAWx9P,EAAQ29P,EAAW39P,GAASljC,K,cCUhD3D,EAAOD,QAJP,WACE,MAAO,K,gBCnBT,IAAIskS,EAAa,EAAQ,KACrBI,EAAe,EAAQ,MAc3BzkS,EAAOD,QAJP,SAAuB8mC,EAAQljC,GAC7B,OAAO0gS,EAAWx9P,EAAQ49P,EAAa59P,GAASljC,K,cCUlD3D,EAAOD,QAJP,WACE,MAAO,K,cClBT,IAGIV,EAHcF,OAAOC,UAGQC,eAqBjCW,EAAOD,QAZP,SAAwBmsC,GACtB,IAAIhtC,EAASgtC,EAAMhtC,OACfyQ,EAAS,IAAIu8B,EAAM9P,YAAYl9B,GAOnC,OAJIA,GAA6B,iBAAZgtC,EAAM,IAAkB7sC,EAAeC,KAAK4sC,EAAO,WACtEv8B,EAAOyqB,MAAQ8R,EAAM9R,MACrBzqB,EAAOirK,MAAQ1uI,EAAM0uI,OAEhBjrK,I,cCFT3P,EAAOD,QAJP,SAAkBmD,GAChB,OAAOA,I,gBCjBT,IAAIwhS,EAAa,EAAQ,MACrB9+C,EAAe,EAAQ,KACvB++C,EAAc,EAAQ,MAe1B3kS,EAAOD,QANP,SAAyB4D,GACvB,MAAqC,mBAAtBA,EAAOy4B,aAA8BuoQ,EAAYhhS,GAE5D,GADA+gS,EAAW9+C,EAAajiP,M,gBCb9B,IAAI+5B,EAAW,EAAQ,KAGnBknQ,EAAezlS,OAAOoE,OAUtBmhS,EAAc,WAChB,SAAS/gS,KACT,OAAO,SAASy6B,GACd,IAAKV,EAASU,GACZ,MAAO,GAET,GAAIwmQ,EACF,OAAOA,EAAaxmQ,GAEtBz6B,EAAOvE,UAAYg/B,EACnB,IAAIzuB,EAAS,IAAIhM,EAEjB,OADAA,EAAOvE,eAAY8C,EACZyN,GAZM,GAgBjB3P,EAAOD,QAAU2kS,G,cCZjB1kS,EAAOD,QAJP,WACE,OAAO,I,cCGTC,EAAOD,QAJP,WACE,OAAO,I,cCGTC,EAAOD,QAJP,WACE,OAAO,I,cCdT,IAAI46B,EAAyB,oBAATiS,KAAuBA,KAAOzS,KAC9C0qQ,EAAW,WACf,SAASnsO,IACTv+B,KAAKqyI,OAAQ,EACbryI,KAAK2qQ,aAAenqQ,EAAOmqQ,aAG3B,OADApsO,EAAEt5D,UAAYu7B,EACP,IAAI+9B,EANI,IAQf,SAAU9rB,IAEO,SAAW7sC,GAE1B,IAAIglS,EACY,oBAAqBn4P,EADjCm4P,EAEQ,WAAYn4P,GAAQ,aAAc5pC,OAF1C+hS,EAIA,eAAgBn4P,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAI8gE,MACG,EACP,MAAOxtG,GACP,OAAO,GALX,GANA6kS,EAcQ,aAAcn4P,EAdtBm4P,EAeW,gBAAiBn4P,EAOhC,GAAIm4P,EACF,IAAIC,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFpwI,YAAYpjF,QACZ,SAAS9tC,GACP,OAAOA,GAAOqhQ,EAAYx3P,QAAQruC,OAAOC,UAAUg6B,SAAS95B,KAAKqkC,KAAS,GAIhF,SAASuhQ,EAAcljS,GAIrB,GAHoB,iBAATA,IACTA,EAAOw4B,OAAOx4B,IAEZ,4BAA4BmuC,KAAKnuC,GACnC,MAAM,IAAIi/B,UAAU,0CAEtB,OAAOj/B,EAAKmtC,cAGd,SAASg2P,EAAejiS,GAItB,MAHqB,iBAAVA,IACTA,EAAQs3B,OAAOt3B,IAEVA,EAIT,SAASkiS,EAAYx7N,GACnB,IAAI+qC,EAAW,CACbltF,KAAM,WACJ,IAAIvkB,EAAQ0mE,EAAMjqE,QAClB,MAAO,CAAC06B,UAAgBn4B,IAAVgB,EAAqBA,MAAOA,KAU9C,OANI6hS,IACFpwL,EAAS3xG,OAAO2xG,UAAY,WAC1B,OAAOA,IAIJA,EAGT,SAASukH,EAAQ1lG,GACfr5F,KAAKzwB,IAAM,GAEP8pH,aAAmB0lG,EACrB1lG,EAAQnqH,SAAQ,SAASnG,EAAOlB,GAC9Bm4B,KAAK+3B,OAAOlwD,EAAMkB,KACjBi3B,MACMvxB,MAAM40B,QAAQg2F,GACvBA,EAAQnqH,SAAQ,SAASixG,GACvBngF,KAAK+3B,OAAOooD,EAAO,GAAIA,EAAO,MAC7BngF,MACMq5F,GACTr0H,OAAOwhC,oBAAoB6yF,GAASnqH,SAAQ,SAASrH,GACnDm4B,KAAK+3B,OAAOlwD,EAAMwxH,EAAQxxH,MACzBm4B,MAgEP,SAASkrQ,EAASj3M,GAChB,GAAIA,EAAKk3M,SACP,OAAOhlS,QAAQE,OAAO,IAAIygC,UAAU,iBAEtCmtD,EAAKk3M,UAAW,EAGlB,SAASC,EAAgBC,GACvB,OAAO,IAAIllS,SAAQ,SAASC,EAASC,GACnCglS,EAAOhkS,OAAS,WACdjB,EAAQilS,EAAO71R,SAEjB61R,EAAOjkS,QAAU,WACff,EAAOglS,EAAOpkS,WAKpB,SAASqkS,EAAsB90L,GAC7B,IAAI60L,EAAS,IAAIt/J,WACb7lI,EAAUklS,EAAgBC,GAE9B,OADAA,EAAOE,kBAAkB/0L,GAClBtwG,EAoBT,SAASslS,EAAY/uI,GACnB,GAAIA,EAAIzyJ,MACN,OAAOyyJ,EAAIzyJ,MAAM,GAEjB,IAAIw9M,EAAO,IAAItxI,WAAWumF,EAAI7B,YAE9B,OADA4sD,EAAK14M,IAAI,IAAIonE,WAAWumF,IACjB+qD,EAAKnsD,OAIhB,SAASowI,IA0FP,OAzFAzrQ,KAAKmrQ,UAAW,EAEhBnrQ,KAAK0rQ,UAAY,SAASz3M,GAhM5B,IAAoBzqD,EAiMhBxJ,KAAK2rQ,UAAY13M,EACZA,EAEsB,iBAATA,EAChBj0D,KAAK4rQ,UAAY33M,EACR22M,GAAgBr3L,KAAKtuG,UAAUy8B,cAAcuyD,GACtDj0D,KAAK6rQ,UAAY53M,EACR22M,GAAoBkB,SAAS7mS,UAAUy8B,cAAcuyD,GAC9Dj0D,KAAK+rQ,cAAgB93M,EACZ22M,GAAwBvsE,gBAAgBp5N,UAAUy8B,cAAcuyD,GACzEj0D,KAAK4rQ,UAAY33M,EAAKh1D,WACb2rQ,GAAuBA,KA5MlBphQ,EA4M6CyqD,IA3MjD6sH,SAAS77M,UAAUy8B,cAAc8H,KA4M3CxJ,KAAKgsQ,iBAAmBR,EAAYv3M,EAAKonE,QAEzCr7H,KAAK2rQ,UAAY,IAAIp4L,KAAK,CAACvzE,KAAKgsQ,oBACvBpB,IAAwBlwI,YAAYz1J,UAAUy8B,cAAcuyD,IAAS62M,EAAkB72M,IAChGj0D,KAAKgsQ,iBAAmBR,EAAYv3M,GAEpCj0D,KAAK4rQ,UAAY33M,EAAOjvF,OAAOC,UAAUg6B,SAAS95B,KAAK8uF,GAhBvDj0D,KAAK4rQ,UAAY,GAmBd5rQ,KAAKq5F,QAAQ1wH,IAAI,kBACA,iBAATsrF,EACTj0D,KAAKq5F,QAAQvqH,IAAI,eAAgB,4BACxBkxB,KAAK6rQ,WAAa7rQ,KAAK6rQ,UAAUpkS,KAC1Cu4B,KAAKq5F,QAAQvqH,IAAI,eAAgBkxB,KAAK6rQ,UAAUpkS,MACvCmjS,GAAwBvsE,gBAAgBp5N,UAAUy8B,cAAcuyD,IACzEj0D,KAAKq5F,QAAQvqH,IAAI,eAAgB,qDAKnC87R,IACF5qQ,KAAKw2E,KAAO,WACV,IAAIy1L,EAAWf,EAASlrQ,MACxB,GAAIisQ,EACF,OAAOA,EAGT,GAAIjsQ,KAAK6rQ,UACP,OAAO1lS,QAAQC,QAAQ45B,KAAK6rQ,WACvB,GAAI7rQ,KAAKgsQ,iBACd,OAAO7lS,QAAQC,QAAQ,IAAImtG,KAAK,CAACvzE,KAAKgsQ,oBACjC,GAAIhsQ,KAAK+rQ,cACd,MAAM,IAAI7kS,MAAM,wCAEhB,OAAOf,QAAQC,QAAQ,IAAImtG,KAAK,CAACvzE,KAAK4rQ,cAI1C5rQ,KAAK60H,YAAc,WACjB,OAAI70H,KAAKgsQ,iBACAd,EAASlrQ,OAAS75B,QAAQC,QAAQ45B,KAAKgsQ,kBAEvChsQ,KAAKw2E,OAAOx/F,KAAKs0R,KAK9BtrQ,KAAKk3E,KAAO,WACV,IA3FoBV,EAClB60L,EACAnlS,EAyFE+lS,EAAWf,EAASlrQ,MACxB,GAAIisQ,EACF,OAAOA,EAGT,GAAIjsQ,KAAK6rQ,UACP,OAjGkBr1L,EAiGIx2E,KAAK6rQ,UAhG3BR,EAAS,IAAIt/J,WACb7lI,EAAUklS,EAAgBC,GAC9BA,EAAOa,WAAW11L,GACXtwG,EA8FE,GAAI85B,KAAKgsQ,iBACd,OAAO7lS,QAAQC,QA5FrB,SAA+Bq2J,GAI7B,IAHA,IAAI+qD,EAAO,IAAItxI,WAAWumF,GACtB8wB,EAAQ,IAAI9+K,MAAM+4M,EAAKziN,QAElBF,EAAI,EAAGA,EAAI2iN,EAAKziN,OAAQF,IAC/B0oL,EAAM1oL,GAAKw7B,OAAOsxD,aAAa61H,EAAK3iN,IAEtC,OAAO0oL,EAAMtvK,KAAK,IAqFSkuR,CAAsBnsQ,KAAKgsQ,mBAC7C,GAAIhsQ,KAAK+rQ,cACd,MAAM,IAAI7kS,MAAM,wCAEhB,OAAOf,QAAQC,QAAQ45B,KAAK4rQ,YAI5BhB,IACF5qQ,KAAKosQ,SAAW,WACd,OAAOpsQ,KAAKk3E,OAAOlgG,KAAKq1R,KAI5BrsQ,KAAKqmJ,KAAO,WACV,OAAOrmJ,KAAKk3E,OAAOlgG,KAAKq0B,KAAKwgB,QAGxB7rB,KA1MT++L,EAAQ95N,UAAU8yD,OAAS,SAASlwD,EAAMkB,GACxClB,EAAOkjS,EAAcljS,GACrBkB,EAAQiiS,EAAejiS,GACvB,IAAIujS,EAAWtsQ,KAAKzwB,IAAI1H,GACxBm4B,KAAKzwB,IAAI1H,GAAQykS,EAAWA,EAAW,KAAOvjS,EAAQA,GAGxDg2N,EAAQ95N,UAAkB,OAAI,SAAS4C,UAC9Bm4B,KAAKzwB,IAAIw7R,EAAcljS,KAGhCk3N,EAAQ95N,UAAU0D,IAAM,SAASd,GAE/B,OADAA,EAAOkjS,EAAcljS,GACdm4B,KAAK0yD,IAAI7qF,GAAQm4B,KAAKzwB,IAAI1H,GAAQ,MAG3Ck3N,EAAQ95N,UAAUytF,IAAM,SAAS7qF,GAC/B,OAAOm4B,KAAKzwB,IAAIrK,eAAe6lS,EAAcljS,KAG/Ck3N,EAAQ95N,UAAU6J,IAAM,SAASjH,EAAMkB,GACrCi3B,KAAKzwB,IAAIw7R,EAAcljS,IAASmjS,EAAejiS,IAGjDg2N,EAAQ95N,UAAUiK,QAAU,SAAS4H,EAAU22E,GAC7C,IAAK,IAAI5lF,KAAQm4B,KAAKzwB,IAChBywB,KAAKzwB,IAAIrK,eAAe2C,IAC1BiP,EAAS3R,KAAKsoF,EAASztD,KAAKzwB,IAAI1H,GAAOA,EAAMm4B,OAKnD++L,EAAQ95N,UAAU+uB,KAAO,WACvB,IAAIy7C,EAAQ,GAIZ,OAHAzvC,KAAK9wB,SAAQ,SAASnG,EAAOlB,GAC3B4nE,EAAMpqE,KAAKwC,MAENojS,EAAYx7N,IAGrBsvJ,EAAQ95N,UAAU0J,OAAS,WACzB,IAAI8gE,EAAQ,GAIZ,OAHAzvC,KAAK9wB,SAAQ,SAASnG,GACpB0mE,EAAMpqE,KAAK0D,MAENkiS,EAAYx7N,IAGrBsvJ,EAAQ95N,UAAU2tG,QAAU,WAC1B,IAAInjC,EAAQ,GAIZ,OAHAzvC,KAAK9wB,SAAQ,SAASnG,EAAOlB,GAC3B4nE,EAAMpqE,KAAK,CAACwC,EAAMkB,OAEbkiS,EAAYx7N,IAGjBm7N,IACF7rE,EAAQ95N,UAAU4D,OAAO2xG,UAAYukH,EAAQ95N,UAAU2tG,SAqJzD,IAAIsuE,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAAS0/C,EAAQngD,EAAOhtK,GAEtB,IAPuB47E,EACnBk9M,EAMAt4M,GADJxgF,EAAUA,GAAW,IACFwgF,KAEnB,GAAIwsF,aAAiBmgD,EAAS,CAC5B,GAAIngD,EAAM0qH,SACR,MAAM,IAAIrkQ,UAAU,gBAEtB9G,KAAKmhE,IAAMs/E,EAAMt/E,IACjBnhE,KAAKwsQ,YAAc/rH,EAAM+rH,YACpB/4R,EAAQ4lH,UACXr5F,KAAKq5F,QAAU,IAAI0lG,EAAQt+C,EAAMpnD,UAEnCr5F,KAAKqvD,OAASoxF,EAAMpxF,OACpBrvD,KAAK/2B,KAAOw3K,EAAMx3K,KAClB+2B,KAAKysQ,OAAShsH,EAAMgsH,OACfx4M,GAA2B,MAAnBwsF,EAAMkrH,YACjB13M,EAAOwsF,EAAMkrH,UACblrH,EAAM0qH,UAAW,QAGnBnrQ,KAAKmhE,IAAM9gE,OAAOogJ,GAYpB,GATAzgJ,KAAKwsQ,YAAc/4R,EAAQ+4R,aAAexsQ,KAAKwsQ,aAAe,eAC1D/4R,EAAQ4lH,SAAYr5F,KAAKq5F,UAC3Br5F,KAAKq5F,QAAU,IAAI0lG,EAAQtrN,EAAQ4lH,UAErCr5F,KAAKqvD,QAjCkBA,EAiCO57E,EAAQ47E,QAAUrvD,KAAKqvD,QAAU,MAhC3Dk9M,EAAUl9M,EAAOlhC,cACd+yH,EAAQ7tI,QAAQk5P,IAAY,EAAIA,EAAUl9M,GAgCjDrvD,KAAK/2B,KAAOwK,EAAQxK,MAAQ+2B,KAAK/2B,MAAQ,KACzC+2B,KAAKysQ,OAASh5R,EAAQg5R,QAAUzsQ,KAAKysQ,OACrCzsQ,KAAK0sQ,SAAW,MAEK,QAAhB1sQ,KAAKqvD,QAAoC,SAAhBrvD,KAAKqvD,SAAsB4E,EACvD,MAAM,IAAIntD,UAAU,6CAEtB9G,KAAK0rQ,UAAUz3M,GAOjB,SAASo4M,EAAOp4M,GACd,IAAI+tL,EAAO,IAAI8pB,SAYf,OAXA73M,EACGttD,OACAoB,MAAM,KACN74B,SAAQ,SAAS+wJ,GAChB,GAAIA,EAAO,CACT,IAAIl4H,EAAQk4H,EAAMl4H,MAAM,KACpBlgC,EAAOkgC,EAAMviC,QAAQ+8B,QAAQ,MAAO,KACpCx5B,EAAQg/B,EAAM9pB,KAAK,KAAKskB,QAAQ,MAAO,KAC3Cy/O,EAAKjqN,OAAOmnK,mBAAmBr3N,GAAOq3N,mBAAmBn2N,QAGxDi5Q,EAqBT,SAAS2qB,EAASC,EAAUn5R,GACrBA,IACHA,EAAU,IAGZusB,KAAKv4B,KAAO,UACZu4B,KAAK6vE,YAA4B9nG,IAAnB0L,EAAQo8F,OAAuB,IAAMp8F,EAAQo8F,OAC3D7vE,KAAK6/M,GAAK7/M,KAAK6vE,QAAU,KAAO7vE,KAAK6vE,OAAS,IAC9C7vE,KAAK8/M,WAAa,eAAgBrsO,EAAUA,EAAQqsO,WAAa,KACjE9/M,KAAKq5F,QAAU,IAAI0lG,EAAQtrN,EAAQ4lH,SACnCr5F,KAAKmhE,IAAM1tF,EAAQ0tF,KAAO,GAC1BnhE,KAAK0rQ,UAAUkB,GAjDjBhsE,EAAQ37N,UAAUu0D,MAAQ,WACxB,OAAO,IAAIonK,EAAQ5gM,KAAM,CAACi0D,KAAMj0D,KAAK2rQ,aAmCvCF,EAAKtmS,KAAKy7N,EAAQ37N,WAgBlBwmS,EAAKtmS,KAAKwnS,EAAS1nS,WAEnB0nS,EAAS1nS,UAAUu0D,MAAQ,WACzB,OAAO,IAAImzO,EAAS3sQ,KAAK2rQ,UAAW,CAClC97L,OAAQ7vE,KAAK6vE,OACbiwI,WAAY9/M,KAAK8/M,WACjBzmH,QAAS,IAAI0lG,EAAQ/+L,KAAKq5F,SAC1Bl4B,IAAKnhE,KAAKmhE,OAIdwrM,EAAS1lS,MAAQ,WACf,IAAIokI,EAAW,IAAIshK,EAAS,KAAM,CAAC98L,OAAQ,EAAGiwI,WAAY,KAE1D,OADAz0G,EAAS5jI,KAAO,QACT4jI,GAGT,IAAIwhK,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CF,EAASG,SAAW,SAAS3rM,EAAK0O,GAChC,IAA0C,IAAtCg9L,EAAiBx5P,QAAQw8D,GAC3B,MAAM,IAAI0qD,WAAW,uBAGvB,OAAO,IAAIoyI,EAAS,KAAM,CAAC98L,OAAQA,EAAQwpB,QAAS,CAACp4B,SAAUE,MAGjEv7F,EAAQ+kS,aAAel4P,EAAKk4P,aAC5B,IACE,IAAI/kS,EAAQ+kS,aACZ,MAAOhhS,GACP/D,EAAQ+kS,aAAe,SAAS/iS,EAASC,GACvCm4B,KAAKp4B,QAAUA,EACfo4B,KAAKn4B,KAAOA,EACZ,IAAIZ,EAAQC,MAAMU,GAClBo4B,KAAKvG,MAAQxyB,EAAMwyB,OAErB7zB,EAAQ+kS,aAAa1lS,UAAYD,OAAOoE,OAAOlC,MAAMjC,WACrDW,EAAQ+kS,aAAa1lS,UAAUg9B,YAAcr8B,EAAQ+kS,aAGvD,SAASt4H,EAAMoO,EAAO/8H,GACpB,OAAO,IAAIv9C,SAAQ,SAASC,EAASC,GACnC,IAAIyB,EAAU,IAAI84N,EAAQngD,EAAO/8H,GAEjC,GAAI57C,EAAQ2kS,QAAU3kS,EAAQ2kS,OAAOM,QACnC,OAAO1mS,EAAO,IAAIT,EAAQ+kS,aAAa,UAAW,eAGpD,IAAIqC,EAAM,IAAItgL,eAEd,SAASugL,IACPD,EAAIE,QAGNF,EAAI3lS,OAAS,WACX,IAxFgB8lS,EAChB9zK,EAuFI5lH,EAAU,CACZo8F,OAAQm9L,EAAIn9L,OACZiwI,WAAYktD,EAAIltD,WAChBzmH,SA3Fc8zK,EA2FQH,EAAII,yBAA2B,GA1FvD/zK,EAAU,IAAI0lG,EAGQouE,EAAW5qQ,QAAQ,eAAgB,KACzCwF,MAAM,SAAS74B,SAAQ,SAASg0K,GAClD,IAAI16H,EAAQ06H,EAAKn7I,MAAM,KACnB1+B,EAAMm/C,EAAMhjD,QAAQmhC,OACxB,GAAIt9B,EAAK,CACP,IAAIN,EAAQy/C,EAAMvqC,KAAK,KAAK0oB,OAC5B0yF,EAAQthE,OAAO1uD,EAAKN,OAGjBswH,IAgFH5lH,EAAQ0tF,IAAM,gBAAiB6rM,EAAMA,EAAIK,YAAc55R,EAAQ4lH,QAAQ1wH,IAAI,iBAC3E,IAAIsrF,EAAO,aAAc+4M,EAAMA,EAAI3hK,SAAW2hK,EAAI1sD,aAClDl6O,EAAQ,IAAIumS,EAAS14M,EAAMxgF,KAG7Bu5R,EAAI5lS,QAAU,WACZf,EAAO,IAAIygC,UAAU,4BAGvBkmQ,EAAIM,UAAY,WACdjnS,EAAO,IAAIygC,UAAU,4BAGvBkmQ,EAAIO,QAAU,WACZlnS,EAAO,IAAIT,EAAQ+kS,aAAa,UAAW,gBAG7CqC,EAAIlzM,KAAKhyF,EAAQunF,OAAQvnF,EAAQq5F,KAAK,GAEV,YAAxBr5F,EAAQ0kS,YACVQ,EAAI9sD,iBAAkB,EACW,SAAxBp4O,EAAQ0kS,cACjBQ,EAAI9sD,iBAAkB,GAGpB,iBAAkB8sD,GAAOpC,IAC3BoC,EAAI5hK,aAAe,QAGrBtjI,EAAQuxH,QAAQnqH,SAAQ,SAASnG,EAAOlB,GACtCmlS,EAAI/sD,iBAAiBp4O,EAAMkB,MAGzBjB,EAAQ2kS,SACV3kS,EAAQ2kS,OAAOryR,iBAAiB,QAAS6yR,GAEzCD,EAAI5sD,mBAAqB,WAEA,IAAnB4sD,EAAI3sD,YACNv4O,EAAQ2kS,OAAOlyR,oBAAoB,QAAS0yR,KAKlDD,EAAI9hP,UAAkC,IAAtBpjD,EAAQ6jS,UAA4B,KAAO7jS,EAAQ6jS,cAIvEt5H,EAAMm7H,UAAW,EAEZ/6P,EAAK4/H,QACR5/H,EAAK4/H,MAAQA,EACb5/H,EAAKssL,QAAUA,EACftsL,EAAKmuL,QAAUA,EACfnuL,EAAKk6P,SAAWA,GAGlB/mS,EAAQm5N,QAAUA,EAClBn5N,EAAQg7N,QAAUA,EAClBh7N,EAAQ+mS,SAAWA,EACnB/mS,EAAQysK,MAAQA,EAEhBrtK,OAAOyD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,IA5gBvC,CAghBd,IAlhBH,CAmhBG2hS,GACHA,EAASr4H,MAAMo7H,UAAW,SAEnB/C,EAASr4H,MAAMm7H,SAGtB,IAAI17L,EAAM44L,GACV9kS,EAAUksG,EAAIugE,OACNztI,QAAUktE,EAAIugE,MACtBzsK,EAAQysK,MAAQvgE,EAAIugE,MACpBzsK,EAAQm5N,QAAUjtH,EAAIitH,QACtBn5N,EAAQg7N,QAAU9uH,EAAI8uH,QACtBh7N,EAAQ+mS,SAAW76L,EAAI66L,SACvB9mS,EAAOD,QAAUA,G,gBCziBjB,IAAIioK,EAAM,EAAQ,IACFh0J,EAAU,EAAQ,MAIC,iBAFvBA,EAAUA,EAAQ3Q,WAAa2Q,EAAQ+qB,QAAU/qB,KAG/CA,EAAU,CAAC,CAAChU,EAAOhB,EAAIgV,EAAS,MAG9C,IAAIpG,EAAU,CAEd,OAAiB,SAAUq6J,GAgBX,IAAKhkK,OAAOq7B,8BAEV,YADA3+B,SAASyB,KAAKC,YAAY4lK,GAI5B,IAAIC,EAEJA,EAAgBvnK,SAAS4+B,qBAAqB,oBAEzC2oI,EAAchpK,SACjBgpK,EAzBF,SAAS1oI,EAAwBC,EAASC,EAAO/+B,UAC/C,MAAMg/B,EAAW,GAYjB,OATAD,EAAKE,iBAAiBH,GAASp2B,QAAQw2B,GAAMF,EAASngC,KAAKqgC,IAG3DH,EAAKE,iBAAiB,KAAKv2B,QAAQw2B,IAC7BA,EAAGC,YACLH,EAASngC,QAAQggC,EAAwBC,EAASI,EAAGC,eAIlDH,EAYSH,CAAwB,qBAG1C,MAAM2oI,EAAkB,GACxB,IAAK,IAAInpK,EAAI,EAAGA,EAAIkpK,EAAchpK,OAAQF,IAAK,CAC7C,MAAMopK,EAAeF,EAAclpK,GACnC,GAAU,IAANA,EACFopK,EAAatoI,WAAWz9B,YAAY4lK,GACpCA,EAASzmK,OAAS,WACZ2mK,EAAgBjpK,OAAS,GAC3BipK,EAAgB9+J,QAASg/J,IAEvBA,EAAUrvE,UAAYivE,EAASjvE,iBAIhC,CACL,MAAMqvE,EAAYJ,EAAS7uE,WAAU,GACrCgvE,EAAatoI,WAAWz9B,YAAYgmK,GACpCF,EAAgB3oK,KAAK6oK,MAIzC,WAAoB,GAEPL,EAAIh0J,EAASpG,GAI1B5N,EAAOD,QAAUiU,EAAQs0J,QAAU,I,iBClEzBtoK,EAAOD,QAAU,EAAQ,GAAR,EAA4D,IAK/EP,KAAK,CAACQ,EAAOhB,EAAI,st/BAAyt/B,M;;;;;;;;GCGru/B,EAAQ,KAAiB,IAAI06B,EAAE,EAAQ,GAAS85C,EAAE,MAA6B,GAAvBzzE,EAAQ+lG,SAAS,MAAS,mBAAoB9iG,QAAQA,OAAOgmP,IAAI,CAAC,IAAI51K,EAAEpwE,OAAOgmP,IAAIx1K,EAAEJ,EAAE,iBAAiBrzE,EAAQ+lG,SAAS1yB,EAAE,kBAAkB,IAAI7wE,EAAEm3B,EAAE4wN,mDAAmDL,kBAAkBvmP,EAAEvE,OAAOC,UAAUC,eAAe6B,EAAE,CAACsC,KAAI,EAAGkqB,KAAI,EAAG67N,QAAO,EAAGC,UAAS,GACrW,SAAS95L,EAAEltD,EAAE8uB,EAAEmN,GAAG,IAAIlN,EAAE9uB,EAAE,GAAGvC,EAAE,KAAKD,EAAE,KAAiF,IAAIsxB,UAAhF,IAASkN,IAAIv+B,EAAE,GAAGu+B,QAAG,IAASnN,EAAE9tB,MAAMtD,EAAE,GAAGoxB,EAAE9tB,UAAK,IAAS8tB,EAAE5D,MAAMztB,EAAEqxB,EAAE5D,KAAc4D,EAAE5tB,EAAEpE,KAAKgyB,EAAEC,KAAKrwB,EAAE7B,eAAekyB,KAAK9uB,EAAE8uB,GAAGD,EAAEC,IAAI,GAAG/uB,GAAGA,EAAEmyF,aAAa,IAAIpjE,KAAKD,EAAE9uB,EAAEmyF,kBAAe,IAASlyF,EAAE8uB,KAAK9uB,EAAE8uB,GAAGD,EAAEC,IAAI,MAAM,CAACm4N,SAASl2K,EAAE5xE,KAAKY,EAAEgB,IAAItD,EAAEwtB,IAAIztB,EAAE2sB,MAAMnqB,EAAEknP,OAAOpnP,EAAEkoB,SAAS1qB,EAAQ8nS,IAAIn4O,EAAE3vD,EAAQ+nS,KAAKp4O,G,6BCTvV,M,mDAegBq4O,KAAT,SAAcr8D,GACpBs8D,EAAUC,YAAYC,EAAY3kS,OAAOmoO,KAhBhB,MAAgB,EAAhB,KACE,EAAkB,EAAlB,KAGtBs8D,EAAY,IAAIl9D,EAAS,UACzBo9D,EAAc,IAAIv8D,EAAW,YAACq8D,EAAU38D,uB,8BCC9C,wB,mDAIgBI,2B,EAwBA08D,sC,yBA5BhB,IAAMnsO,OAA0B,IAAXrhC,EAAyBA,EAASiS,KACjDw7P,EACLpsO,EAAe6nC,kBAAoB7nC,EAAeisL,uBAE5C,SAASxc,EAAyBx6N,GACxC,OAAO,WAKN,IAAM+oQ,EAAgB73Q,WAAWkmS,EAAa,GAIxCC,EAAiBxyE,YAAYuyE,EAAa,IAEhD,SAASA,IAGR5mS,aAAau4Q,GACbwb,cAAc8S,GACdr3R,MAOI,SAASk3R,EAAoCl3R,GACnD,IAAI42O,EAAS,EACP3oM,EAAW,IAAIkpP,EAAwBn3R,GACvC2zD,EAAOjkE,SAASokC,eAAe,IAErC,OADAma,EAAS+kD,QAAQr/B,EAAM,CAAEu/B,eAAe,IACjC,WACN0jJ,GAAUA,EACTjjL,EAAcjmE,KAAOkpP,GAIjB,IAAMrc,EACuB,mBAA5B48D,EAYJD,EA4BA18D,E,EAzCSD,oB,gDC3Cb,6PAAAxsO,EAAA,EAAAA,EAAA,SAAAA,IAAA,SAAAA,GAAA,gf,qDAGa8sO,EAAO,WAGnB,WACSryJ,EACA8uN,IARV,4FASG,S,KAFO9uN,U,KACA8uN,U,KAJF78D,KAAsB,KAJ9B,UAoBE,OApBF,EASK,GATL,EASK,mBAEJ,WACC,IACCvxM,KAAKuxM,MAAQvxM,KAAKuxM,OACjB,MAAOtqO,GACR+4B,KAAKs/C,QAAQr4E,GACZ,QACD+4B,KAAKuxM,KAAO,KACZvxM,KAAKouQ,QAAQpuQ,YAlBhB,8EAoBE,EAjBkB,G,EAAP2xM,W,6BCLb,M,wNCEO,SAAS08D,EAAgB3/Q,GAC9B,IAAIsyE,EAAOtyE,EAAKsyE,KACZt6C,EAAYh4B,EAAKg4B,UACjB93B,EAAWF,EAAKE,SAChB7lB,EAAQ,mBAAQ,WAClB,MAAO,CACLi4F,KAAMA,EACNt6C,UAAWA,KAEZ,CAACs6C,EAAMt6C,IACV,OAAO,wBAAc,IAAYz3B,SAAU,CACzClmB,MAAOA,GACN6lB,G,YCXL,SAAS0/Q,EAAsBC,GAqB7B,OAlBiB,SAAoB7/Q,GACnC,IAAIsE,EAAWtE,EAAKsE,SAChBjE,EAAWL,EAAKK,SACpB,OAAO,SAAUzB,GACf,OAAO,SAAUiC,GAGf,MAAsB,mBAAXA,EAEFA,EAAOyD,EAAUjE,EAAUw/Q,GAI7BjhR,EAAKiC,MAQpB,IAAIi/Q,EAAQF,IAGZE,EAAMC,kBAAoBH,EACX,Q,4yCCdf,ICfeI,EDeW,SAAH,GAA0C,QAApCxkS,yBAAiB,IAAG,OAAAnC,EAAS,EACjDiB,EAAqB,EAAhBq3C,cAAgB,GAApB,GAEFgzI,EAAcnpL,EAAoB,cAAH,OAAiBA,GAAsBqU,IAAaiF,aACnFspL,EAAa5iM,EAAoB,oBAAH,OAAuBA,GAAsBqU,IAAakF,oBAExF8wB,EAAWsyB,cAKhB,IAHqCznB,aACpC,SAACljC,GAAK,MAAK,CAACmjC,IAAUsjB,cAAczmD,EAAOm3K,GAAch0I,IAAUwjB,kBAAkB3mD,MACrF0X,KACD,GAHMsqB,EAAQ,KAAE2kB,EAAiB,KAI5B7vC,EAAW2F,cACwB,IAAf64C,mBAAS,OAAM,GAAlCzoE,EAAK,KAAE2hI,EAAQ,KAEtB53D,qBAAU,WACR,IAAM6kG,EAAmB,WAAH,OAASjtC,EAAS1mG,KAAK61C,KAAuC,IAAlC1vE,IAAK4H,QAAQ7H,IAA0B+0B,aACnF0vQ,EAAgB,WAAH,OAASjkK,EAAS1mG,KAAK61C,KAAuC,IAAlC1vE,IAAK4H,QAAQ7H,IAA0B+0B,aAChF2vQ,EAAqB,WAAH,OAASlkK,EAAS,QAM1C,OAJAvgI,IAAKiQ,iBAAiB,iBAAkBu9J,OAAkB5vK,EAAWmC,GACrEC,IAAKiQ,iBAAiB,cAAeu0R,OAAe5mS,EAAWmC,GAC/DC,IAAKiQ,iBAAiB,mBAAoBw0R,OAAoB7mS,EAAWmC,GAElE,WACLC,IAAKoQ,oBAAoB,iBAAkBo9J,EAAkBztK,GAC7DC,IAAKoQ,oBAAoB,cAAeo0R,EAAezkS,GACvDC,IAAKoQ,oBAAoB,mBAAoBq0R,EAAoB1kS,MAElE,IAEH,IAsCM2kS,EAAa9lS,EAA6B,GAApBA,EAAMhE,OAAS,GAAS,EAEpD,OACE,yBAAKwuC,UAAU,iBACXgB,GACA,yBAAKhB,UAAU,qBACb,yBACEA,UAAW/O,IAAW,CACpBsqQ,kBAAkB,EAClBttP,OAAQtD,IAEVs2B,UAAW,SAACzuE,GACI,UAAVA,EAAEsD,KACJ2pB,EAASuvC,IAAQK,cAAcrkD,IAAaiF,gBAGhDw8B,SAAU,GAEV,yBAAKzM,UAAU,cAAciL,QAAS,kBAAMxrB,EAASuvC,IAAQK,cAAcywH,MACzE,2BACE5rL,KAAK,OACL8rC,UAAU,WACVxqC,MAAOA,EACPwrE,SA5CG,SAACxuE,IACL,cACJiwC,KAAKjwC,EAAE4B,OAAOoB,QAA6B,KAAnBhD,EAAE4B,OAAOoB,QACtC2hI,EAAS3kI,EAAE4B,OAAOoB,QA0CRgmS,WA9DK,SAAChpS,GAClB,GAA0B,UAAtBA,EAAEqsF,YAAY/oF,KAA6C,KAA1BtD,EAAEqsF,YAAYsT,QAAgB,CACjE,IAAMvqF,EAAO6oB,KAAK61C,KAAuC,IAAlC1vE,IAAK4H,QAAQ7H,IAA0B+0B,WAC9D,GAAIl5B,EAAE4B,OAAOoB,QAAUoS,EACrB,OAEF,GAAuB,KAAnBpV,EAAE4B,OAAOoB,MACX2hI,EAASvvH,OACJ,CACL,IAAIkyL,EAAYtnM,EAAE4B,OAAOoB,MAAQ,IACjCskM,EAAYrpK,KAAKD,IAAIspK,EAAW2hG,IAAY3jO,mBAC5CgiI,EAAYrpK,KAAKqqC,IAAIg/H,EAAW2hG,IAAY1jO,mBAC5Cr5D,YAAOo7L,EAAWxqI,EAAmB34D,MAmD7B6oE,OAvCC,SAAChtE,GACd+D,OAAOsvL,eAAeC,kBACtB,IAAMl+K,EAAO6oB,KAAK61C,KAAuC,IAAlC1vE,IAAK4H,QAAQ7H,IAA0B+0B,WAC1Dl5B,EAAE4B,OAAOoB,QAAUoS,IAGA,KAAnBpV,EAAE4B,OAAOoB,OAAgBqzJ,MAAMtsG,OAAO/pD,EAAE4B,OAAOoB,QACjD2hI,EAASvvH,IAETuvH,EAAS56E,OAAO/pD,EAAE4B,OAAOoB,OAAOk2B,YAChChtB,YAAOlM,EAAE4B,OAAOoB,MAAQ,IAAKmB,MA8BnB81C,UAAW,EACXjmC,MAAO,CAAEP,MAAOq1R,GAChBntP,aAAY14C,EAAE,oBAEhB,8BAAM,MAER,kBAAC,IAAmB,CAClBuqC,UAAU,gBACV6K,IAAG,uBAAkBF,EAAW,KAAO,QACvCjqC,QAASo/K,EACT90I,YAAauuJ,EACbjuJ,UAAW71C,EAAE,uBACbg3C,UAAW,MAKnB,kBAACooC,EAAA,EAAY,CACXhqC,IAAI,4BACJI,QAAS,kBAAMukB,YAAQF,EAAmB34D,IAC1ConC,MAAM,iBACNiN,YAAY,kBAEd,0BAAMhL,UAAU,mBACd,uBAAG63E,YAAU,YAAYrsE,KAAK,UAAU/1C,EAAE,sBAAsB,IAAED,EAAM,MAE1E,kBAACq/E,EAAA,EAAY,CACXhqC,IAAI,2BACJI,QAAS,kBAAMskB,YAAOD,EAAmB34D,IACzConC,MAAM,gBACNiN,YAAY,mB,sjCEpIpB,IAAMkxB,EAAQ,CACZ,CACEpmE,IAAKigE,IAAwBC,QAC7BznC,YAAa,sBAEf,CACEz4B,IAAKigE,IAAwBE,UAC7B1nC,YAAa,wBAEf,CACEz4B,IAAKigE,IAAwBG,UAC7B3nC,YAAa,wBCnBFmtQ,EDwBY,WACzB,IAAOjmS,EAAqB,EAAhBq3C,cAAgB,GAApB,GAENipE,EAMD,EALGlqE,aACF,SAACljC,GAAK,MAAK,CACTmjC,IAAUgxG,wBAAwBn0I,MAEpC0X,KACD,GANS,GAmBV,OACE,yBAAK2f,UAAU,wBACb,kBAACq9B,EAAA,EAAQ,CACPnB,MAAOA,EACPO,mBAAoB,iBAAO,CAAEx2D,MAAO,QAASC,OAAQ,SACrDw2D,0BAA0B,EAC1BL,oBAAsB05C,IAAahgD,IAAwBI,QAAWJ,IAAwBE,UAAY8/C,EAC1Gv5C,YAXc,SAAC9mE,GACnBkB,IAAKsT,kBAAkByxR,YAAYjmS,IAW/BonE,gBAAiB,SAAClnC,GAAI,OAAKngC,EAAE,GAAD,OAhCV,iBAgC+B,OAAGmgC,EAAK9/B,OACzD+mE,OAAQ,SAACjnC,GAAI,OAAKA,EAAK9/B,KACvBonE,WArBqB,SAACtnC,GAAI,OAC9B,yBAAKoK,UAAU,8BACb,yBAAKA,UAAU,uBAAuBvqC,EAAE,GAAD,OAfnB,iBAewC,OAAGmgC,EAAK9/B,OACpE,yBAAKkqC,UAAU,8BAA8BvqC,EAAE,GAAD,OAhB1B,iBAgB+C,OAAGmgC,EAAKrH,qB,ynCE7BjF,IA6CeqtQ,EA7CM,SAAH,GAGZ,IAFJlgS,EAAQ,EAARA,SACAmgS,EAAe,EAAfA,gBAGElxP,EAKD,EAJGkB,aACF,SAACljC,GAAK,MAAK,CACTmjC,IAAU81F,kBAAkBj5H,KAAWjN,MAE1C,GALS,GAOJ+jB,EAAW2F,cAmBjB,OACE,yBACE4a,UAAW/O,IAAW,CACpB,yBAAyB,KAG3B,kBAAC,IAAU,CACTv1B,SAAUA,IAvBZ,yBACEskC,UAAU,+BAET2K,GACC,yBACE3K,UAAU,oCACViL,QAAS,kBAAMxrB,EAASuvC,IAAQK,cAAc,qBAE5CwsO,EACA,kBAAC18P,EAAA,EAAI,CAACa,UAAU,uBAAuBR,MAAM,oBAC7C,kBAACL,EAAA,EAAI,CAACa,UAAU,yBAAyBR,MAAM,0BC7B7D,SAASw1I,EAAgB//K,EAAGzB,GAM1B,OALAwhL,EAAkBvjL,OAAOo9C,gBAAkB,SAAyB55C,EAAGzB,GAErE,OADAyB,EAAEm1F,UAAY52F,EACPyB,IAGcA,EAAGzB,GAkB5B,SAASqlG,EAAuB35D,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI45D,eAAe,6DAG3B,OAAO55D,EAIT,SAAS48P,EAAY/+Q,EAASg/Q,EAAeC,GAC3C,OAAIj/Q,IAAYg/Q,IAUZh/Q,EAAQk/Q,qBACHl/Q,EAAQk/Q,qBAAqBz7M,UAAU5gB,SAASo8N,GAGlDj/Q,EAAQyjE,UAAU5gB,SAASo8N,IAgEpC,IAVmBE,EAUKC,EAApBnhO,QATW,IAATkhO,IACFA,EAAO,GAGF,WACL,QAASA,IAKTE,EAAc,GACdC,EAAmB,GACnBC,EAAc,CAAC,aAAc,aAMjC,SAASC,GAAuBhjO,EAAUhH,GACxC,IAAIiqO,EAAiB,KASrB,OARuD,IAApCF,EAAYx8P,QAAQyyB,IAEnB4pO,IAClBK,EAAiB,CACfrtN,SAAU5V,EAASr6C,MAAMurB,iBAItB+xP,EAyNO,OA9MhB,SAA2B79Q,EAAkByiL,GAC3C,IAAI3mF,EAAQ12F,EAER+qJ,EAAgBnwJ,EAAiBE,aAAeF,EAAiBrqB,MAAQ,YAC7E,OAAOyvB,EAAQ02F,EAAsB,SAAUC,GAzJ+B,IAAwB3wB,EAAUC,EA4J9G,SAASrqB,EAAezgD,GACtB,IAAIoyB,EAyGJ,OAvGAA,EAAQopE,EAAW9oH,KAAK66B,KAAMvN,IAAUuN,MAElCgwQ,sBAAwB,SAAU7oS,GACtC,GAA+C,mBAApC09C,EAAMorP,0BAAjB,CAMA,IAAInjO,EAAWjoB,EAAM61L,cAErB,GAAiD,mBAAtC5tK,EAASr6C,MAAMy9Q,mBAA1B,CAKA,GAA2C,mBAAhCpjO,EAASojO,mBAKpB,MAAM,IAAIhpS,MAAM,qBAAuBm7K,EAAgB,oFAJrDv1G,EAASojO,mBAAmB/oS,QAL5B2lE,EAASr6C,MAAMy9Q,mBAAmB/oS,QARlC09C,EAAMorP,0BAA0B9oS,IAoBpC09C,EAAMsrP,mBAAqB,WACzB,IAAIrjO,EAAWjoB,EAAM61L,cAErB,OAAI/lC,GAA+C,mBAA9BA,EAAOy7F,mBACnBz7F,EAAOy7F,oBAAPz7F,CAA4B7nI,GAGM,mBAAhCA,EAASsjO,mBACXtjO,EAASsjO,qBAGX,sBAAYtjO,IAGrBjoB,EAAMwrP,qBAAuB,WAC3B,GAAwB,oBAAb7pS,WAA4BopS,EAAiB/qP,EAAMyrP,MAA9D,MAImC,IAAxBZ,IACTA,EA/GoB,WAC5B,GAAsB,oBAAX5lS,QAA6D,mBAA5BA,OAAOsQ,iBAAnD,CAIA,IAAIsoE,GAAU,EACVjvE,EAAUzO,OAAOyD,eAAe,GAAI,UAAW,CACjDE,IAAK,WACH+5E,GAAU,KAIV9rB,EAAO,aAIX,OAFA9sD,OAAOsQ,iBAAiB,0BAA2Bw8C,EAAMnjD,GACzD3J,OAAOyQ,oBAAoB,0BAA2Bq8C,EAAMnjD,GACrDivE,GA+FuB6tN,IAGxBX,EAAiB/qP,EAAMyrP,OAAQ,EAC/B,IAAI1rP,EAASC,EAAMpyB,MAAM+9Q,WAEpB5rP,EAAO11C,UACV01C,EAAS,CAACA,IAGZ+qP,EAAY9qP,EAAMyrP,MAAQ,SAAUnpS,GA7H5C,IAA0BmxL,EA8HY,OAAxBzzI,EAAMyqP,gBAENzqP,EAAMpyB,MAAMurB,gBACd72C,EAAM62C,iBAGJ6G,EAAMpyB,MAAMsrB,iBACd52C,EAAM42C,kBAGJ8G,EAAMpyB,MAAMg+Q,mBAxIAn4G,EAwIqCnxL,EAvItDX,SAAS+uC,gBAAgBb,aAAe4jJ,EAAI5qH,SAAWlnE,SAAS+uC,gBAAgBouB,cAAgB20H,EAAI3qH,UA3B7G,SAAqBr9C,EAASg/Q,EAAeC,GAC3C,GAAIj/Q,IAAYg/Q,EACd,OAAO,EAST,KAAOh/Q,EAAQsb,YAActb,EAAQyV,MAAM,CAEzC,GAAIzV,EAAQsb,YAAcyjQ,EAAY/+Q,EAASg/Q,EAAeC,GAC5D,OAAO,EAGTj/Q,EAAUA,EAAQsb,YAActb,EAAQyV,KAG1C,OAAOzV,EAiJKogR,CAFUvpS,EAAMwpS,UAAYxpS,EAAMykN,cAAgBzkN,EAAMykN,eAAepmN,SAAW2B,EAAMQ,OAEnEk9C,EAAMyqP,cAAezqP,EAAMpyB,MAAMm+Q,2BAA6BpqS,UAIvFq+C,EAAMmrP,sBAAsB7oS,KAG9By9C,EAAO11C,SAAQ,SAAU42D,GACvBt/D,SAAS4T,iBAAiB0rD,EAAW6pO,EAAY9qP,EAAMyrP,MAAOR,GAAuB1jM,EAAuBvnD,GAAQihB,SAIxHjhB,EAAMgsP,sBAAwB,kBACrBjB,EAAiB/qP,EAAMyrP,MAC9B,IAAIlpO,EAAKuoO,EAAY9qP,EAAMyrP,MAE3B,GAAIlpO,GAA0B,oBAAb5gE,SAA0B,CACzC,IAAIo+C,EAASC,EAAMpyB,MAAM+9Q,WAEpB5rP,EAAO11C,UACV01C,EAAS,CAACA,IAGZA,EAAO11C,SAAQ,SAAU42D,GACvB,OAAOt/D,SAAS+T,oBAAoBurD,EAAWsB,EAAI0oO,GAAuB1jM,EAAuBvnD,GAAQihB,cAEpG6pO,EAAY9qP,EAAMyrP,QAI7BzrP,EAAMisP,OAAS,SAAUv9Q,GACvB,OAAOsxB,EAAMksP,YAAcx9Q,GAG7BsxB,EAAMyrP,KAAO/hO,IACN1pB,EAtQqG04C,EA0J/E0wB,GA1JqE3wB,EA0JrFpqB,GAzJRjuE,UAAYD,OAAOoE,OAAOm0F,EAAWt4F,WAC9Cq4F,EAASr4F,UAAUg9B,YAAcq7D,EAEjCirF,EAAgBjrF,EAAUC,GAyQxB,IAAIuxB,EAAS57C,EAAejuE,UA4E5B,OA1EA6pH,EAAO4rH,YAAc,WACnB,GAAIxoN,EAAiBjtB,YAAcitB,EAAiBjtB,UAAUiqP,iBAC5D,OAAOlvN,KAGT,IAAIzM,EAAMyM,KAAK+wQ,YACf,OAAOx9Q,EAAImnN,YAAcnnN,EAAImnN,cAAgBnnN,GAO/Cu7F,EAAOC,kBAAoB,WAIzB,GAAwB,oBAAbvoH,UAA6BA,SAASC,cAAjD,CAIA,IAAIqmE,EAAW9sC,KAAK06M,cAEpB,GAAI/lC,GAA+C,mBAA9BA,EAAOu7F,qBAC1BlwQ,KAAKiwQ,0BAA4Bt7F,EAAOu7F,mBAAmBpjO,GAEb,mBAAnC9sC,KAAKiwQ,2BACd,MAAM,IAAI/oS,MAAM,qBAAuBm7K,EAAgB,4GAI3DriJ,KAAKsvQ,cAAgBtvQ,KAAKmwQ,qBAEtBnwQ,KAAKvN,MAAMo+Q,uBACf7wQ,KAAKqwQ,yBAGPvhL,EAAOiqJ,mBAAqB,WAC1B/4O,KAAKsvQ,cAAgBtvQ,KAAKmwQ,sBAO5BrhL,EAAOG,qBAAuB,WAC5BjvF,KAAK6wQ,yBAWP/hL,EAAOlxB,OAAS,WAEd,IAAIC,EAAc79D,KAAKvN,MACnBorE,EAAY4yM,iBACZ,IAAIh+Q,EA5Td,SAAuCia,EAAQu/D,GAC7C,GAAc,MAAVv/D,EAAgB,MAAO,GAC3B,IAEIrjC,EAAKxE,EAFL8C,EAAS,GACTukG,EAAalnG,OAAOgvB,KAAK0Y,GAG7B,IAAK7nC,EAAI,EAAGA,EAAIqnG,EAAWnnG,OAAQF,IACjCwE,EAAM6iG,EAAWrnG,GACbonG,EAAS54D,QAAQhqC,IAAQ,IAC7B1B,EAAO0B,GAAOqjC,EAAOrjC,IAGvB,OAAO1B,EAgTaqkG,CAA8BnO,EAAa,CAAC,qBAU5D,OARI3rE,EAAiBjtB,WAAaitB,EAAiBjtB,UAAUiqP,iBAC3Dz8N,EAAMc,IAAMyM,KAAK8wQ,OAEjBr+Q,EAAMu+Q,WAAahxQ,KAAK8wQ,OAG1Br+Q,EAAMo+Q,sBAAwB7wQ,KAAK6wQ,sBACnCp+Q,EAAM49Q,qBAAuBrwQ,KAAKqwQ,qBAC3B,wBAAcn+Q,EAAkBO,IAGlCygD,EAhM4B,CAiMnC,aAAY86C,EAAO57F,YAAc,kBAAoBiwJ,EAAgB,IAAKr0D,EAAOxzB,aAAe,CAChGg2M,WAAY,CAAC,YAAa,cAC1BC,iBAAkB97F,GAAUA,EAAO87F,mBAAoB,EACvDG,wBAlOoB,8BAmOpB5yP,gBAAgB,EAChBD,iBAAiB,GAChBiwE,EAAOijL,SAAW,WACnB,OAAO/+Q,EAAiB++Q,SAAW/+Q,EAAiB++Q,WAAa/+Q,GAChEoF,G,qDC9UU45Q,I,OAfa,SAAH,GAA+C,IAAzC1yP,EAAO,EAAPA,QAASq6E,EAAM,EAANA,OAAQ36E,EAAQ,EAARA,SAAUizP,EAAO,EAAPA,QACxD,OACE,4BACE59P,UAAW/O,IAAW,CACpB,yBAAyB,EACzB,aAAgBga,EAChB,OAAUN,IAEZM,QAASA,GAET,yBAAK6lD,IAAK8sM,EAASrqS,IAAK+xH,O,UCwBfw0C,I,OAAAA,gBA5BS,SAAH,GAAwB,IAAlBrkK,EAAC,EAADA,EAAG2qC,EAAQ,EAARA,SACtB3gB,EAAW2F,cAWXy4Q,EAAqCpoS,EADbo2C,aAAY,SAACljC,GAAK,OAAKmjC,IAAUu8F,yBAAyB1/H,MAC3C,iDAAsD,wCAEnG,OACE,4BACEq3B,UAAW/O,IACT,gCACA,CAAEmP,aAEJ6K,QAjBuB,WACpB7K,IACH3gB,EAASuvC,IAAQ25D,iBAAiBhzC,KAAeC,iBACjDn2D,EAASuvC,IAAQa,YAAY,mBAC7BpwC,EAASuvC,IAAQC,aAAa,sBAe9B,kBAAC9vB,EAAA,EAAI,CAACa,UAAU,wBAAwBR,MAAOY,EAAW,+BAAiC,6BAC3F,yBAAKJ,UAAU,WAAWjC,MAAO8/P,GAAaA,Q,qaCjCpD,gmGAAAvsS,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,kbAAAA,EAAA,gDAAAA,GAAA,oCAAAA,OAAA,ssBAAAA,GAAA,gEAAAA,GAAA,0JAAAA,EAAA,6FAAAA,GAAA,mIAAAA,IAAA,KAAAA,IAAA,6gBAAAA,EAAA,iBAAAA,EAAA,EAAAA,IAAA,EAAAA,GAAA,EAAAA,GAAA,SAgBA,IAAMwsS,GAAkB,SAAC5+Q,GACvB,IACEspG,EAMEtpG,EANFspG,gBACAu1K,EAKE7+Q,EALF6+Q,aACAC,EAIE9+Q,EAJF8+Q,cACAnzL,EAGE3rF,EAHF2rF,eACAozL,EAEE/+Q,EAFF++Q,uBACAC,EACEh/Q,EADFg/Q,iBAGMzoS,EAAMq3C,cAANr3C,EAER,OACE,oCAEI+yH,EAEGxsH,KAAI,SAACmiS,EAAWzxQ,GAAK,MAAK,CAACyxQ,EAAWzxQ,MACtC1wB,KAAI,0BAAIspH,EAAM,KAANA,OAAU84K,EAAmB,YAAM,yBAC1CtoS,IAAKsoS,EACLp+P,UAAU,iBAEV,kBAAC,GAAmB,CAClBiL,QAAS,kBAAM8yP,EAAaK,IAC5B94K,OAAQA,EACR36E,SAAUszP,IAA2BG,GAA0C,8BAAnBvzL,EAC5D+yL,QAAO,UAAKnoS,EAAE,wCAAuC,YAAI2oS,EAAsB,MAE/EF,GACA,4BACEl+P,UAAU,cACVkO,eAAa,+BACbjD,QAAS,kBAAM+yP,EAAcI,KAE7B,kBAACj/P,EAAA,EAAI,CAACK,MAAM,4BCjDb6+P,GDgMAvkI,gBArIa,SAAC56I,GAC3B,IAAQzpB,EAAMypB,EAANzpB,EAyBP,KAbGo2C,aACF,SAACljC,GAAK,MAAK,CACTmjC,IAAU81F,kBAAkBj5H,GAC5BmjC,IAAU47F,mBAAmB/+H,GAC7BmjC,IAAU67F,uBAAuBh/H,GACjCmjC,IAAU+7F,mCAAmCl/H,GAC7CmjC,IAAU+oG,sBAAsBlsI,GAChCmjC,IAAUk8F,qCAAqCr/H,GAC/CmjC,IAAUC,kBAAkBpjC,EAAO,gCACnCmjC,IAAUo8F,iBAAiBv/H,GAC3BmjC,IAAUq8F,kCAAkCx/H,GAC5CmjC,IAAUm8F,iBAAiBt/H,OAE9B,IAvBCkiG,EAAc,KACd2d,EAAe,KACf81K,EAAmB,KACnBx2J,EAA+B,KAC/BpX,EAAkB,KAClBkX,EAAiC,KACjC22J,EAA+B,KAC/Bz1K,EAAa,KACbsf,EAA8B,KAC9Bxf,EAAa,KAgBT41K,EAAqB5nS,IAAKmF,+BAA+B,6BACzD0jB,EAAW2F,cAEXq5Q,EAAY,+BAAG,WAAO/xQ,GAAK,8EAC/BjN,EAASuvC,IAAQs5D,mCAAmC57F,IAC5CprB,EAAeg9R,EAAoB5xQ,GAAnCprB,WACR1K,IAAK6E,YAAY,6BAA6B,KAClB+iS,GAAkB,yDAAtB,OAAbE,EAAa,kBAChBA,EAAcD,aAAan9R,GAAW,YACxCo9R,EAAcC,cAAe,CAAF,iCACvBD,EAAcE,eAAc,iDAE5BF,EAAcG,cAAa,QACjCp/Q,EAASuvC,IAAQ25D,iBAAiBhzC,KAAeC,iBAAiB,uMAGvE,gBAbiB,sCAeZkpN,EAAW,+BAAG,WAAOpyQ,GAAK,8EAC9BjN,EAASuvC,IAAQ+5D,kCAAkCr8F,IAC3CprB,EAAewnH,EAAcp8F,GAA7BprB,WACR1K,IAAK6E,YAAY,6BAA6B,KAClB+iS,GAAkB,yDAAtB,OAAbE,EAAa,kBAChBA,EAAcI,YAAYx9R,GAAW,YACvCo9R,EAAcC,cAAe,CAAF,iCACvBD,EAAcK,cAAa,QAGjCt/Q,EAASuvC,IAAQ25D,iBAAiBhzC,KAAeC,iBAAiB,yCAE5D8oN,EAAcM,sBAAqB,QACzCv/Q,EAASuvC,IAAQ25D,iBAAiBhzC,KAAeI,WAAW,uMAGjE,gBAhBgB,sCAkBXkpN,EAA0B,+BAAG,WAAOvyQ,GAAK,gFAM7C,GALMwyQ,EAAkBt2K,IAAkBjzC,KAAeC,eACzD4oN,EAAmB,GAAGW,oBAAoBzyQ,GAC1C8xQ,EAAmB,GAAGY,qBAAqB1yQ,GAErC2yQ,EAA6Bj3J,IAAmC17G,GADhE4yQ,EAA8Bx3J,IAAoCp7G,IAErC2yQ,EAA4B,CAC7D5/Q,EAASuvC,IAAQswO,EAA8B,qCAAuC,qCAAqC,IAAI,KACnGd,GAAkB,IAA9C,IAAK,EAAL,qBAAwB,QACRe,cACf,8BACD3oS,IAAK6E,YAAY4rH,MACyE,KAAlE63K,EAAkBZ,EAAsBx1K,GAAet3H,QAE7EiuB,EAASuvC,IAAQyB,cAAc,CAAC,yBAEzB/jC,GAASwyQ,EAAkBp3J,EAAkCM,IACtE3oH,EAASuvC,IAAQs5D,mCAAmCwf,EAAkC,IACvF,2CACF,gBAnB+B,sCAqB1B03J,EAAsBh3K,EAAgBzxF,QAAO,SAAConQ,EAAWzxQ,GAAK,OAAKk7G,EAAkCu2J,EAAWzxQ,MAEtH,OACE,yBACEsT,UAAU,yBAEV,kBAACg8C,GAAA,EAAI,CAACnmD,GAAG,mBACP,kBAACshC,GAAA,EAAkB,CACjBnsB,YAAY,gCACZhL,UAAU,YACV,kBAAC,KAAG,CAACgL,YAAahgC,IAAa0K,+BAC7B,4BAAQsqB,UAAU,sBACfvqC,EAAE,2BAGP,kBAAC,KAAG,CAACu1C,YAAahgC,IAAa2K,4BAC7B,4BAAQqqB,UAAU,sBACfvqC,EAAE,2BAKT,kBAAC,KAAQ,CAACu1C,YAAahgC,IAAa4K,6BAClC,kBAAC,GAAe,CACd4yG,gBAAiBg3K,EACjBzB,aAAc,SAACrxQ,GAAK,OAAK+xQ,EAAa/xQ,IACtCsxQ,cAAe,SAACtxQ,GAAK,OAAKuyQ,EAA2BvyQ,IACrDuxQ,uBAAwBn2J,EACxBo2J,iBAAkBK,EAClB1zL,eAAgBA,KAEpB,kBAAC,KAAQ,CAAC7/D,YAAahgC,IAAa6K,sBAClC,kBAAC,GAAe,CACd2yG,gBAAiBM,EACjBi1K,aAAc,SAACrxQ,GAAK,OAAKoyQ,EAAYpyQ,IACrCsxQ,cAAe,SAACtxQ,GAAK,OAAKuyQ,EAA2BvyQ,IACrDuxQ,uBAAwB71J,EACxB81J,iBAAkBK,EAClB1zL,eAAgBA,MAGtB,kBAAC,GAAe,CACdzqE,SAAUooF,EAAgBh3H,QAAUk/H,GAAsB5H,EAAct3H,OAASk/H,Q,grBE3LzF,gmGAAAp/H,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,q1BAAAA,EAAA,gDAAAA,GAAA,oCAAAA,OAAA,qbAAAA,EAAA,iBAAAA,EAAA,EAAAA,IAAA,EAAAA,GAAA,EAAAA,GAAA,kCAAAA,EAAA,EAAAA,EAAA,SAAAA,IAAA,SAAAA,GAAA,0hDAkBA,IAAMmuS,GAAY,8BAEZ/0P,GAAY,CAChB26E,eAAgB5kF,IAAUjC,MAAMkC,WAChCilF,aAAcllF,IAAUjC,MAAMkC,WAC9BwnF,sBAAuBznF,IAAUyK,KAAKxK,YAGlCg/P,GAAkB,aA1BxB,sRA0BwB,UA1BxB,QA6CG,EAnBqB,QAgBtB,WAAYxgR,GAAO,MAEoD,OA5CzE,4FA0CqB,SACJ,MAAb,cAAMA,IAAO,uBAeO,YAEpB2wC,EADwB,EAAK3wC,MAArB2wC,aACI,uBACb,8BAEmB,SAAAnjC,GAAS,IACS,EADT,KACV,EAAKizQ,gBAAc,IAApC,IAAK,EAAL,qBAAsC,KAA7Bx2P,EAAI,QACLy2P,EAASz2P,EAAKg+F,kBACpBh+F,EAAK02P,mBAAmB,CAACD,EAAOlzQ,MACjC,kCAvBD,EAAKizQ,eAAiB/oS,IAAKmF,+BAA+B0jS,IAAW,EA2GtE,OAvJH,EA6CG,GA7CH,EA6CG,8BA7CH,EA6CG,WAED,WAAqBn+R,EAAYorB,GAAK,8EACpC91B,IAAK6E,YAAYgkS,IACjBhzQ,KAAKvN,MAAM+vC,aAAa,kBAAkB,KACzBxiC,KAAKkzQ,gBAAc,yDAC4B,OADvDx2P,EAAI,QACLw6D,EAAOl3E,KAAKvN,MAAMzpB,EAAE,eAAD,OAAgB6L,EAAiB,OAAI,UACxD6nC,EAAK22P,eAAex+R,EAAYqiG,GAAK,QAC3Cx6D,EAAK01P,cACLpyQ,KAAKvN,MAAMgpG,sBAAsBx7F,GAAO,sMAT3C,EA7CH,gLAwDG,oEAcD,WAAS,WACP,EAAmDD,KAAKvN,MAAtCmmG,GAAF,EAARrkF,SAAwB,EAAdqkF,gBAAgBM,EAAY,EAAZA,aAE5Bo6K,EAAe16K,EAAerpH,KAAI,WAAyB0wB,GAAK,IAA3B44F,EAAM,EAANA,OAAQhkH,EAAU,EAAVA,WAAU,OAC3D,4BACExL,IAAK42B,EACLsT,UAAU,eACVmO,aAAA,UAAe,EAAKjvB,MAAMzpB,EAAE,oBAAmB,YAAIi3B,EAAQ,GAC3Due,QAAS,kBAAM,EAAK60P,eAAex+R,EAAYorB,KAE/C,yBAAKn5B,IAAK+xH,EAAQx0B,IAAI,SAIpBkvM,EAAar6K,EAAa3pH,KAAI,WAAyB0wB,GAAK,IAA3B44F,EAAM,EAANA,OAAQhkH,EAAU,EAAVA,WAAU,OACvD,yBAAKxL,IAAK42B,EAAOsT,UAAU,aACzB,4BACEA,UAAU,iCACVmO,aAAA,UAAe,EAAKjvB,MAAMzpB,EAAE,0BAAyB,YAAIi3B,EAAQ,GACjEue,QAAS,kBAAM,EAAK60P,eAAex+R,EAAY+jH,EAAe7zH,OAASk7B,KAEvE,yBAAKn5B,IAAK+xH,EAAQx0B,IAAI,MAExB,kBAAC35B,GAAA,EAAkB,CACjBnsB,YAAahgC,IAAauG,2BAC1ByuB,UAAU,OACViL,QAAS,kBAAM,EAAKg1P,kBAAkBvzQ,KACtC,kBAACyS,EAAA,EAAI,CAACK,MAAM,0BAKlB,OACE,yBAAKQ,UAAU,uBAAuBkO,eAAa,sBACjD,kBAAC8tC,GAAA,EAAI,CAACnmD,GAAG,kBACP,kBAAC,KAAS,CAACmV,YAAahgC,IAAaiG,yBACnC,yBAAK+uB,UAAU,qBACb,yBAAKA,UAAU,YACb,kBAAC,KAAG,CAACgL,YAAahgC,IAAakG,8BAC7B,4BAAQ8uB,UAAU,qBAAqBjC,MAAOtR,KAAKvN,MAAMzpB,EAAE,kBACxDg3B,KAAKvN,MAAMzpB,EAAE,mBAGlB,yBAAKuqC,UAAU,wBACf,kBAAC,KAAG,CAACgL,YAAahgC,IAAamG,4BAC7B,4BAAQ6uB,UAAU,qBAAqBjC,MAAOtR,KAAKvN,MAAMzpB,EAAE,gBACxDg3B,KAAKvN,MAAMzpB,EAAE,oBAMxB,kBAAC,KAAQ,CAACu1C,YAAahgC,IAAaoG,uBAIlC,kBAAC,KAAS,CACR4uB,UAAU,uBACVopD,SAAU,YAAQ,EAALx1F,MACL42C,oBAGPu1P,IAGL,kBAAC,KAAQ,CAAC/0P,YAAahgC,IAAaqG,qBAClC,yBAAK2uB,UAAU,sBAAsBggQ,GACrC,kBAAC7oO,GAAA,EAAkB,CACjBnsB,YAAahgC,IAAasG,2BAC1B0uB,UAAW/O,IAAW,CACpB,qBAAqB,EACrB,WAAW,IAEbga,QAASxe,KAAKyzQ,qBAEbzzQ,KAAKvN,MAAMzpB,EAAE,wCAjJ5B,gFAuJG,EA7HqB,CAAS2pC,IAAM45E,WAAS,GAA1C0mL,GAAkB,YACH,CACjB70L,eAAgBpqE,IAAU1T,OAC1BqvD,WAAY37C,IAAUE,KACtBu9B,OAAQz9B,IAAUE,KAClBK,SAAUP,IAAUE,KACpBgK,SAAUlK,IAAUE,KACpBlrC,EAAGgrC,IAAUyK,KAAKxK,WAClB+sD,KAAMhtD,IAAUk2O,IAChB9mN,YAAapvB,IAAUyK,KAAKxK,WAC5BuuB,aAAcxuB,IAAUyK,KAAKxK,WAC7B+vB,cAAehwB,IAAUyK,KAAKxK,WAC9BsK,YAAavK,IAAU1T,OAAO2T,WAC9B2uB,cAAe5uB,IAAUyK,KAAKxK,aAmHlCg/P,GAAmBh1P,UAAYA,GAE/B,IAQMppB,GAAqB,CACzBmvC,cAAezB,IAAQyB,cACvBxB,aAAcD,IAAQC,aACtBY,YAAab,IAAQa,YACrBR,cAAeL,IAAQK,cACvB64D,sBAAuBl5D,IAAQk5D,sBAC/BpD,kBAAmB91D,IAAQ81D,kBAC3BS,gBAAiBv2D,IAAQu2D,iBAGrB46K,GAA8BxrN,aAlBZ,SAAAhsE,GAAK,MAAK,CAChCkiG,eAAgB/+D,IAAU81F,kBAAkBj5H,GAC5CgiC,SAAUmB,IAAU81F,kBAAkBj5H,KAAW82R,GACjDz0P,YAAac,IAAU8gG,qBAAqBjkI,GAAO82R,IAAWz0P,YAC9Dq6E,eAAgBv5E,IAAUo7F,kBAAkBv+H,GAC5Cg9G,aAAc75E,IAAUq7F,gBAAgBx+H,MAamB2Y,GAAzBqzD,CAA6CmlF,eAAkB4lI,KC7KpFA,GD+KA,SAAAxgR,GACb,IAAM8hB,EAAWsyB,cAEjB,OAAO,kBAAC6sO,GAA2B,MAAKjhR,EAAK,CAAE8hB,SAAUA,M,8nFE9Jb,IAExCo/P,GAAc,a,sRAAA,U,MAAA,QAalB,WAAYlhR,GAAO,MAMf,O,4FANe,SACJ,MAAb,cAAMA,IAAO,sBAQM,SAAC1sB,GAEpB,IAAM6tS,EAAgBnlS,MAAMC,KAAKu2B,eAAcQ,iBAC7C,kCAEIouQ,EAAkBplS,MAAMC,KAAKu2B,eAAcQ,iBAC/C,oCAEIquQ,EAAepjL,eACfqjL,EAAcpjL,eACdqjL,EAAcvlS,MAAMC,KAAKkiH,gBAEzBjpH,EAAS5B,EAAE6lN,eAAe,GAE1BqoF,EAAwBL,EAAch6O,MAAK,SAACs6O,GAChD,OAAOA,aAAY,EAAZA,EAAc/gO,SAASxrE,MAE1BwsS,EAA0BN,EAAgBj6O,MAAK,SAACw6O,GACpD,OAAOA,aAAc,EAAdA,EAAgBjhO,SAASxrE,MAE5B0sS,EAA4BL,EAAYp6O,MAAK,SAAC06O,GAClD,OAAOA,EAAUvgN,UAAU5gB,SAAS,uBAGjC8gO,GAA0BE,GAA4BE,GAA8BP,GAAiBC,GACxG,EAAKthR,MAAM+vC,aAAa,qBAE3B,8BAcmB,SAAC/4D,EAAUV,GAC7B,IAAQq1G,EAAmB,EAAK3rF,MAAxB2rF,eACF1hE,EAAOvyC,IAAKiF,QAAQgvG,GACG,mBAAlB1hE,EAAK63P,UACd73P,EAAK63P,WAEPC,aAAcp2L,EAAgB30G,EAAUV,GAAO,MAChD,sCAE2B,SAACU,EAAUV,GACrC,MAA4C,EAAK0pB,MAAzC2rF,EAAc,EAAdA,eAAgBq2L,EAAe,EAAfA,gBAClB/3P,EAAOvyC,IAAKiF,QAAQgvG,GACpBs2L,EAA0BD,EAA+B,cAAE,GAEpC,mBAAlB/3P,EAAK63P,UACd73P,EAAK63P,WAGU,cAAb9qS,GAAyC,iBAAbA,IAC9BV,EAAQ4rS,aAAkB,MAAGlrS,EAAWV,GAAS2rS,GACjDjrS,EAAW,mBAGb,IAAMqjN,EAAgB,CACpBpK,EAAG,GAAF,MACIgyF,GAAuB,SACzBjrS,EAAWV,KAIhByrS,aAAcp2L,EAAgB,gBAAiB0uG,MAChD,kCAEuB,SAAC8nF,EAAS7rS,GAChC,IAAQq1G,EAAmB,EAAK3rF,MAAxB2rF,eACQ,UAAZw2L,EACFJ,aAAcp2L,EAAgB,iBAAkBr1G,GAC3B,QAAZ6rS,EACTJ,aAAcp2L,EAAgB,eAAgBr1G,GACzB,WAAZ6rS,GACTJ,aAAcp2L,EAAgB,cAAer1G,MAEhD,2BAEgB,WACf,MAA4C,EAAK0pB,MAAzC2rF,EAAc,EAAdA,eAAgBq2L,EAAe,EAAfA,gBACxBD,aAAcp2L,EAAgB,kBAAmBq2L,EAAgBI,mBA9FjE,EAAKxsI,MAAQ11H,IAAMC,YACnB,EAAK12B,MAAQ,CACX22D,KAAM,EACNJ,IAAK,GACL,EAuMH,O,EAtMA,G,EAAA,iCA+BD,SAAmB3/B,GACZA,EAAU2+B,SAAUzxC,KAAKvN,MAAMg/C,QAAWzxC,KAAKvN,MAAMk9D,YACxD3vD,KAAKvN,MAAMuxC,cAAc,CACvBzlD,IAAa4E,sBACb5E,IAAa+E,aACb/E,IAAawF,kBACbxF,IAAaiF,aACbjF,IAAayF,sBAGlB,oBAmDD,WACE,IA6BgB,MA7BhB,EAAyEgc,KAAKvN,MAAtEmzH,EAAe,EAAfA,gBAAiBj2D,EAAU,EAAVA,WAAYyuB,EAAc,EAAdA,eAAgBq2L,EAAe,EAAfA,gBAC/Cp+H,EAAaj4D,EAAezuE,SAAS,aAAeyuE,EAAezuE,SAAS,WAC9E2M,EAAa,GACXqkE,EAAc3kE,aAAiBoiE,GAC/Bi6D,EAAcj6D,EAAezuE,SAAS,6BACtCklI,EAAYz2D,EAAezuE,SAAS,2BAEpC2oI,EAAuBt7H,aAAe2jE,GAAaxmE,eAEzD,GAAIw1C,EACF,OAAO,KAkCT,GA/BI8kN,EAA6B,cAC/Bn4P,EAAa,CACXw4H,YAAa2/H,EAA6B,cAI1Cp8H,IACF/7H,EAAa,CACX83K,YAAaqgF,EAA6B,YAC1C5+I,KAAM4+I,EAAsB,KAC5Bt+H,SAAUs+H,EAA0B,SACpCx4H,UAAWw4H,EAA2B,YAKtCp+H,IACF/5H,EAAa,CACXu5G,KAAM4+I,EAAgB5+I,KACtBsgB,SAAUs+H,EAAgBt+H,SAC1B8F,UAAWw4H,EAAgBx4H,UAC3BI,kBAAmBo4H,EAAgBp4H,kBACnC1kE,KAA6D,SAAvD88L,EAA+B,cAAE,GAAG,eAC1C35H,OAA8D,WAAtD25H,EAA+B,cAAE,GAAG,cAC5Cx5H,WAAiE,QAAtD,EAAAw5H,EAA+B,cAAE,GAAG,0BAAkB,aAAtD,EAAwD9kQ,SAAS,gBAAkD,QAAtC,EAAI8kQ,EAAgB,0BAAkB,aAAlC,EAAoC9kQ,SAAS,SACzIwrI,UAAiE,QAAxD,EAAEs5H,EAA+B,cAAE,GAAG,0BAAkB,aAAtD,EAAwD9kQ,SAAS,gBAC5EmlQ,eAAgBL,EAAgBI,eAChC//H,YAAa2/H,EAA6B,cAI1Cn8H,EAAsB,CACxB,IAAMj6D,EAAaq3B,aAAct3B,GACjC9hE,EAAa,CACX+4H,eAAgBh3D,EAAWg3D,eAC3BG,aAAcn3D,EAAWm3D,aACzBV,YAAaz2D,EAAWy2D,aAI5B,IAAMigI,EAA2B32L,EAAezuE,SAAS,sCAErD48E,EACF,kBAACopD,GAAA,EAAU,CACTtsK,IAAK+0G,EACLnvG,SAAUmvG,EACVuC,YAAaA,EACb5mG,MAAO06R,EACPp+H,WAAYA,EACZxB,UAAWA,EACX4D,mBAAoBn8H,EAAWw4P,eAC/Bt8H,qBAAsBx4I,KAAKg1Q,eAC3Bl9H,qBAAsBi9H,IAA6B5qS,IAAK0O,mBACxDs/J,iBAAkBn4I,KAAKi1Q,kBACvBxoI,cAAezsI,KAAKi1Q,kBACpB7+H,eAAgBp2I,KAAKi1Q,kBACrB78H,sBAAuBp4I,KAAKk1Q,0BAC5BtgI,kBAAmB50I,KAAKm1Q,sBACxB74P,WAAYA,EACZ+7H,YAAaA,EACbC,qBAAsBA,IAoB1B,MAhBwB,mBAApB1yB,EACFr5B,EACE,kBAAC,IAAM5gB,SAAQ,KACb,kBAAC2O,GAAA,EAAiB,MAClB,kBAAC,GAAmB,OAGK,qBAApBsrC,IACTr5B,EACE,kBAAC,IAAM5gB,SAAQ,KACb,kBAAC2O,GAAA,EAAiB,MAClB,kBAAC,GAAqB,QAM1B,yBACE/mE,UAAW/O,IAAW,CACpBmvQ,gBAAgB,IAElBlyP,eAAa,iBACbluB,IAAKyM,KAAKqoI,OAGT97C,Q,gFAGN,EA1NiB,CAAS55E,IAAMoB,eAAa,GAA1C4/P,GAAc,YACC,CACjBv1L,eAAgBpqE,IAAU1T,OAC1Bm0Q,gBAAiBzgQ,IAAUxqC,OAC3BmmF,WAAY37C,IAAUE,KACtBu9B,OAAQz9B,IAAUE,KAClB+rE,kBAAmBjsE,IAAUxqC,OAAOyqC,WACpC0sE,YAAa3sE,IAAU1T,OACvBkiC,aAAcxuB,IAAUyK,KAAKxK,WAC7B+vB,cAAehwB,IAAUyK,KAAKxK,WAC9Bw6G,oBAAqBz6G,IAAUE,OAmNnC,IAgBMrf,GAAqB,CACzB2tC,aAAcD,IAAQC,aACtBwB,cAAezB,IAAQyB,eAGnBoxO,GAA0BltN,aArBR,SAAChsE,GACvB,IAAMkiG,EAAiB/+D,IAAU81F,kBAAkBj5H,GAC7Cm5R,EAAwBh2P,IAAUg2F,yBAAyBn5H,EAAOkiG,GAExE,MAAO,CACLA,iBACAwnC,gBAAiBvmG,IAAUu/D,mBAAmB1iG,GAC9Cm5R,wBACAZ,gBAAiBp1P,IAAU2mG,oBAAoB9pI,GAC/CyzE,WAAYtwC,IAAUC,kBAAkBpjC,EAAO,kBAC/Cu1D,OAAQpyB,IAAUsjB,cAAczmD,EAAO,kBACvC+jG,kBAAmB5gE,IAAU8gG,qBAAqBjkI,GAClDuyI,oBAAqBpvG,IAAUovG,oBAAoBvyI,MAWrD2Y,GAF8BqzD,CAG9BhV,GAAeygO,KC3QFzoK,GD6QY,SAACz4G,GAC1B,IAAM8hB,EAAWsyB,cAEXyuO,EAAWvuO,cAEXwuO,EAAYruO,cAElB,OACE,kBAACkuO,GAAuB,MAAK3iR,EAAK,CAAE8hB,SAAUA,EAAU+gQ,SAAUA,EAAUC,UAAWA,MErR5EC,I,OCKO,SAAH,GAAiD,IAA3Ct3P,EAAQ,EAARA,SAAUyxC,EAAU,EAAVA,WAAYnxC,EAAO,EAAPA,QAASzkC,EAAK,EAALA,MACtD,OACE,4BACEw5B,UAAW/O,IAAW,CACpB,4BAA4B,EAC5Bgd,OAAQtD,EACRvK,SAAUg8C,IAEZluC,eAAa,iBACbjD,QAASA,EACTzkC,MAAOA,GAENmkC,EACC,kBAACxL,EAAA,EAAI,CAACa,UAAU,iBAAiBR,MAAM,oBACvC,kBAACL,EAAA,EAAI,CAACa,UAAU,mBAAmBR,MAAM,yB,gZCpBjD,gmGAAAluC,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,kbAAAA,EAAA,gDAAAA,GAAA,oCAAAA,OAAA,ggBAAAA,GAAA,gEAAAA,GAAA,0JAAAA,EAAA,6FAAAA,GAAA,mIAAAA,IAAA,KAAAA,IAAA,6gBAAAA,EAAA,iBAAAA,EAAA,EAAAA,IAAA,EAAAA,GAAA,EAAAA,GAAA,SAYA,IAkEe4wS,GAlEc,WAC3B,IAkBC,KAVGr2P,aACF,SAACljC,GAAK,MAAK,CACTmjC,IAAU81F,kBAAkBj5H,GAC5BmjC,IAAUsjB,cAAczmD,EAAO,kBAC/BmjC,IAAUi8F,8BAA8Bp/H,GACxCmjC,IAAU67F,uBAAuBh/H,GACjCmjC,IAAUo8F,iBAAiBv/H,GAC3BmjC,IAAUy8F,oBAAoB5/H,GAC9BmjC,IAAUm8F,iBAAiBt/H,OAE9B,GAjBCkiG,EAAc,KACdgxL,EAAe,KACfsG,EAAkB,KAClB7D,EAAmB,KACnBx1K,EAAa,KACbs5K,EAAgB,KAChBx5K,EAAa,KAYPnzH,EAAMq3C,cAANr3C,EACFgqB,EAAW2F,cAQXq5Q,EAAY,eAzCpB,EAyCoB,GAzCpB,EAyCoB,WAAG,6FACbS,EAAkBt2K,IAAkBjzC,KAAeC,eACjDt0E,GAAe49R,EAAkBiD,EAAqBC,GAAtD9gS,WACR1K,IAAK6E,YAAY,6BAA6B,KAClB+iS,GAAkB,yDAAtB,OAAbE,EAAa,kBAChBA,EAAcQ,EAAkB,eAAiB,eAAe59R,GAAW,YAC7Eo9R,EAAcC,cAAe,CAAF,iCACvBD,EAAcQ,EAAkB,eAAiB,iBAAgB,iDAEjER,EAAcQ,EAAkB,cAAgB,yBAAwB,sMAlDtF,iLAqDG,kBAZiB,mCAcZV,EAAqB5nS,IAAKmF,+BAA+B,6BACzDsmS,EAAoBz5K,IAAkBjzC,KAAeI,SAAWqsN,EAAmBD,EACzF,OACE,yBACEniQ,UAAU,0BAETqiQ,EACC,kBAAC,GAAmB,CAClB/8K,OAAQ+8K,EAAkB/8K,OAC1Br6E,QAASwzP,EACT9zP,SAA6B,8BAAnBkgE,EACV+yL,QAASnoS,EAAE,0CAEb,kBAAC,GAAe,MAClB,kBAAC,GAAa,CACZw1C,QAnCkB,YAClBqzP,EAAoB9sS,OAAS,GAAKs3H,EAAct3H,OAAS,IAC3DiuB,EAASuvC,IAAQK,cAAc,oBAkC7B1kB,SAAUkxP,EACVz/M,WAA2C,IAA/BkiN,EAAoB9sS,QAAyC,IAAzBs3H,EAAct3H,W,gZCxEtE,gmGAAAF,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,kbAAAA,EAAA,gDAAAA,GAAA,oCAAAA,OAAA,ssBAAAA,GAAA,gEAAAA,GAAA,0JAAAA,EAAA,6FAAAA,GAAA,mIAAAA,IAAA,KAAAA,IAAA,6gBAAAA,EAAA,iBAAAA,EAAA,EAAAA,IAAA,EAAAA,GAAA,EAAAA,GAAA,SAaA,IA+FegxS,GAvFa,WAC1B,IATmB9sS,EACbwqB,EAQAP,EAAW2F,cACiB,KAAhB0nB,cAAgB,GAA3Br3C,EAAC,KAAEg4F,EAAI,KACR80M,GAXa/sS,EAWci4F,EAAK94C,SAVhC30B,EAAM89C,mBACZyB,qBAAU,WACRv/C,EAAIjD,QAAUvnB,KAETwqB,EAAIjD,SAQFmzL,EAA0C,GAA3BqtC,sBAAW,SAAC5+O,GAAC,OAAKA,EAAI,IAAG,GAAE,GAA/B,GAQlB,KAHEktC,aAAY,SAACljC,GAAK,MAAK,CACzBmjC,IAAU81F,kBAAkBj5H,GAC5BmjC,IAAU07F,iBAAiB7+H,OAC3B,GALAkiG,EAAc,KACd48B,EAAa,KAMfloE,qBAAU,WACR9/C,EAASuvC,IAAQ81D,kBAAkBrvH,IACnCgqB,EAASuvC,IAAQu2D,gBAAgB9vH,MAEhC,IAEH8pE,qBAAU,WACkBgjO,IAAiB90M,EAAK94C,WAE9Cl1B,EAASuvC,IAAQ81D,kBAAkBrvH,IACnCgqB,EAASuvC,IAAQu2D,gBAAgB9vH,QAIrC,IAAM+sS,EAAuB5rS,IAAKmF,+BAA+B,+BAC3D0mS,EAAmB,WACvBhjR,EAASuvC,IAAQ81D,kBAAkBrvH,IACnCgqB,EAASuvC,IAAQu2D,gBAAgB9vH,KAGnC8pE,qBAAU,WAGR,OAFAijO,EAAqB,GAAG37R,iBAAiB,gBAAiB47R,GAC1DD,EAAqB,GAAG37R,iBAAiB,sBAAuB47R,GACzD,WACLD,EAAqB,GAAGx7R,oBAAoB,gBAAiBy7R,GAC7DD,EAAqB,GAAGx7R,oBAAoB,sBAAuBy7R,MAEpE,IAEH,IAAO5G,EAIN,GAJyBhwP,aACxB,SAACljC,GAAK,MAAK,CACTmjC,IAAUsjB,cAAczmD,EAAO,sBAElC,GAJqB,GAWtB,OALA42D,qBAAU,WAER3oE,IAAK6E,YAAY4rH,QAChB,IAGD,yBACErnF,UAAU,mCAEV,yBACEA,UAAU,yBAETynG,GACC,kBAAC,GAAmB,CAClBniB,OAAQmiB,EAAcniB,OACtBr6E,QAAO,cAAE,2FACPr0C,IAAK6E,YAAY,+BACXkoG,EAAOluG,EAAE,eAAD,OAAgBgyI,EAAcnmI,WAAiB,OAAI,KACnCkhS,GAAoB,yDAAxB,OAAfz9K,EAAe,iBAClBA,EAAgB+6K,eAAer4J,EAAcnmI,WAAYqiG,GAAK,OACpEohB,EAAgB85K,cAAc,+IAEhC3uF,IAAc,gEAEhBvlK,SAA6B,gCAAnBkgE,IAAqD23L,EAAqB,GAAGE,eACvF9E,QAASnoS,EAAE,uCAIjB,kBAAC,GAAa,CACZw1C,QAAS,kBAAMxrB,EAASuvC,IAAQK,cAAc,oBAC9C1kB,SAAUkxP,M,0iCChGlB,IAmBe8G,GAnBO,SAAH,GAA6B,IAAvBhlO,EAAM,EAANA,OAAQjiE,EAAQ,EAARA,SACxBjG,EAAqB,GAAhBq3C,cAAgB,GAApB,GAOR,OANAyyB,qBAAU,WACR,IAAMqjO,EAAqBhsS,IAAKmF,+BAA+BL,GAC/D9E,IAAK6E,YAAYC,GACjBknS,EAAmBjnS,SAAQ,SAAC8rI,GAAa,OAAKA,EAAco3J,mBAC3D,CAACnjS,IAGF,yBACEskC,UAAU,iBAEV,yBAAKA,UAAU,cACZ29B,EAASloE,EAAE,iCAAmC,M,+iECE1B,IAEvBotS,GAAY,a,sRAAA,U,MAAA,QAchB,aAAc,MASV,O,4FATU,SACJ,MAAR,gBAAQ,sBAmDW,WACnB,EAAKC,qBACL,EAAK5yF,iBACN,+BAEoB,WACnB,MAA+C,EAAKhxL,MAA5CmzH,EAAe,EAAfA,gBACF3xI,EADoC,EAAjBqiS,kBACSr6P,MAChC,SAAC9S,GAAI,OAAKA,EAAKovC,YAAcqtE,KAG3B3xI,GACF,EAAKy6G,SACHorC,aAA0B7lJ,EAAQsqC,YAAa,EAAK6vH,aAGzD,6BAEkB,YAEjBpqG,EAD0B,EAAKvxC,MAAvBuxC,eACM,CAACzlD,IAAasF,mBAtE5B,EAAKuqJ,QAAUz7H,IAAMC,YACrB,EAAK12B,MAAQ,CACX22D,KAAM,EACN6vB,MAAO,OACPjwB,IAAK,OACL8jO,eAAe,EACfC,aAAc,GACd,EA8LH,O,EA7LA,G,EAAA,gCAED,WACE1sS,OAAOsQ,iBAAiB,SAAU4lB,KAAKy2Q,oBAKnCz2Q,KAAKvN,MAAMg/C,QACbzxC,KAAKq2Q,uBAER,gCAED,SAAmBvjQ,GACjB,IAAM4jQ,EACJ5jQ,EAAU8yG,kBAAoB5lH,KAAKvN,MAAMmzH,iBAEtC9yG,EAAU2+B,QAAUzxC,KAAKvN,MAAMg/C,SAClCzxC,KAAKvN,MAAMuxC,cAAc,CACvBzlD,IAAa4E,sBACb5E,IAAa+E,aACb/E,IAAa6G,iBACb7G,IAAawF,kBACbxF,IAAaiF,aACbjF,IAAayF,oBAEfgc,KAAKq2Q,sBAGHK,GACF12Q,KAAKq2Q,qBAG4B,KAA/Br2Q,KAAKvN,MAAMmzH,iBACb5lH,KAAKvN,MAAMuxC,cAAc,CAAC,qBAE7B,kCAED,WACEl6D,OAAOyQ,oBAAoB,SAAUylB,KAAKy2Q,sBAC3C,oBAyBD,WAAS,WACP,EAYIz2Q,KAAKvN,MAXPzpB,EAAC,EAADA,EACAkoE,EAAM,EAANA,OACAye,EAAU,EAAVA,WACAle,EAAM,EAANA,OACAh4B,EAAS,EAATA,UACAmsG,EAAe,EAAfA,gBACAwpJ,EAAe,EAAfA,gBACA76P,EAAQ,EAARA,SACAk6G,EAAmB,EAAnBA,oBACAkB,EAAW,EAAXA,YACAnwG,EAAc,EAAdA,eAGIm3P,EAAmB7sS,OAAOq7B,8BAAgC0hC,cAAiBtyB,EAGjF,GADuCo7C,EAErC,OAAO,KAGT,IAWMinN,GAAahxJ,GAXe,CAChC,aACA,YACA,sBACA,wBACA,qBACA,mBACA,oBACA,mBACA,wBAE8Dj2G,SAASi2G,GACrEr5B,EACF,yBACEh5E,UAAU,0BAETkG,EAAUlqC,KAAI,SAACN,EAAUpK,GAAC,OACzB,kBAAC,EAAY,CACXwE,IAAG,UAAK4F,EAAQ,YAAIpK,GACpBoK,SAAUA,EACVmgS,gBAAiBA,QAgCzB,MA1BwB,mBAApBxpJ,EACFr5B,EACE,kBAAC,GAAoB,MAEM,qBAApBq5B,EACTr5B,EACE,kBAAC,GAAmB,MAEO,iBAApBq5B,EACTr5B,EACE,yBAAKh5E,UAAU,uBAAuBiL,QAAS,kBAAM,EAAK/rB,MAAM2wC,YAAY,kBACzEp6D,EAAE,kBAGE4tS,IAAcjnJ,EACvBpjC,EACE,yBAAKh5E,UAAU,cACZ29B,EAASloE,EAAE,iCAAmC,IAG1C,CAAC,kBAAmB,kBAAmB,iBAAiB2mC,SAASi2G,KAC1Er5B,EACE,kBAAC,GAAa,CAACr7C,OAAQA,EAAQjiE,SAAUwqC,EAAU,MAIlDm9P,GAAcD,IAAqBloJ,GAAyBjvG,EACxD,KAIP,kBAAC,KAAS,CACR2+C,WAAY,kBAAM,EAAK1rE,MAAMuxC,cAAc,CAAC,oBAC5Cq6B,aAAc,kBAAM,EAAK5rE,MAAMuxC,cAAc,CAAC,oBAC9Cy2B,8BAA4B,EAC5BlnD,UAAW/O,IAAW,CACpBqyQ,uBAAuB,KAGzB,yBACEtjQ,UAAW/O,IAAW,CACpBsyQ,SAAS,EACTV,cAAc,EACdt8M,KAAMroB,EACNslO,OAAQ3H,GAAoB76P,IAAak6G,IAE3Cl7H,IAAKyM,KAAKouI,QACV3sH,eAAcljC,IAAasF,eAE3B,yBACE0vB,UAAW/O,IAAW,CACpB,mBAAmB,EACnB,kBAAmB4qQ,KAGpB7iL,EACCoqL,IAAqBloJ,GACrB,4BACEl7G,UAAU,uBACViL,QAAS,WACP,EAAK/rB,MAAMuxC,cAAc,CAACzlD,IAAasF,gBACvC1Z,IAAK6E,YAAY4rH,MACjB,EAAKnoG,MAAMsmD,mBAAmB,MAGhC,kBAACrmC,EAAA,EAAI,CACHK,MAAM,sBACNQ,UAAU,iBAIjB67P,GACC,kBAAC,GAAc,a,gFAIxB,EArNe,CAASz8P,IAAMoB,eAAa,GAAxCqiQ,GAAY,YACG,CACjBzmN,WAAY37C,IAAUE,KACtBu9B,OAAQz9B,IAAUE,KAClB+rE,kBAAmBjsE,IAAUxqC,OAC7B8sS,kBAAmBtiQ,IAAUq0I,QAAQr0I,IAAUxqC,QAC/Co8I,gBAAiB5xG,IAAU1T,OAC3B0jC,cAAehwB,IAAUyK,KAAKxK,WAC9B8kC,mBAAoB/kC,IAAUyK,KAAKxK,WACnCw6G,oBAAqBz6G,IAAUE,KAC/By7G,YAAa37G,IAAUE,KACvBsL,eAAgBxL,IAAUE,OA6M9B,IAaMrf,GAAqB,CACzB+tC,cAAeL,IAAQK,cACvBQ,YAAab,IAAQa,YACrBY,cAAezB,IAAQyB,cACvB+U,mBAAoBxW,IAAQwW,oBAGxBi+N,GAAwB9uN,aApBN,SAAChsE,GAAK,MAAM,CAClCyzE,WAAYtwC,IAAUC,kBAAkBpjC,EAAOqC,IAAasF,eAC5D4tD,OAAQpyB,IAAUsjB,cAAczmD,EAAOqC,IAAasF,eACpDurR,gBAAiB/vP,IAAUsjB,cAAczmD,EAAO,kBAChDu9B,UAAW4F,IAAUsmG,qCAAqCzpI,GAC1Do6R,kBAAmBj3P,IAAUolG,oBAAoBvoI,GACjD0pI,gBAAiBvmG,IAAUu/D,mBAAmB1iG,GAC9CkiG,eAAgB/+D,IAAU81F,kBAAkBj5H,GAC5CuyI,oBAAqBpvG,IAAUovG,oBAAoBvyI,GACnDyzI,YAAatwG,IAAUqwG,kBAAkBxzI,GACzCsjC,eAAgBtjC,EAAM+nD,aAAazkB,kBAUkB3qB,GAAzBqzD,CAA6CmlF,eAAkB+oI,KClQ9ElrK,GDoQY,SAACz4G,GAC1B,IAAM8hB,EAAWsyB,cAEXyyF,EAAoBryF,cAEpBsuO,EAAYruO,cAElB,OACE,kBAAC8vO,GAAqB,MAAKvkR,EAAK,CAAE8hB,SAAUA,EAAU+kH,kBAAmBA,EAAmBi8I,UAAWA,M,ukCE9P3G,IAAM0B,GAAW,WAAM,MAC4B,KAAfzlO,oBAAS,GAAM,GAA1C0lO,EAAS,KAAEC,EAAY,KACgB,KAAZ3lO,mBAAS,IAAG,GAAvC0hC,EAAS,KAAEkkM,EAAY,KAC8C,KAAZ5lO,mBAAS,IAAG,GAArE+tB,EAAwB,KAAE83M,EAA2B,KAWtDC,EAAgB,WACU,MAA1B/3M,IACgB,QAAlB,EAAAp1F,IAAK2D,qBAAa,OAAlB,EAAoBypS,YAAY,GAAD,OAAIh4M,GAAwB,OAAG2T,KAEhEikM,GAAa,IAYf,OACE,kBAACzsO,GAAA,EAAkB,CAACnsB,YAAahgC,IAAakL,yBAC3CytR,EACC,2BACEnuS,MAAOw2F,EACPhrB,SAAU,SAACxuE,GAAC,OAAKsxS,EAA4BtxS,EAAE4B,OAAOoB,QACtDgqE,OAAQukO,EACR9iO,UAhBc,SAACzuE,GACP,UAAVA,EAAEsD,KACJiuS,IAEY,WAAVvxS,EAAEsD,KACJ8tS,GAAa,IAYThzF,WAAS,IAGX,yBAAK5wK,UAAU,qBAAqBiL,QApCxB,WAAM,MAChB32C,EAAyB,QAArB,EAAGsC,IAAK2D,qBAAa,aAAlB,EAAoBK,cAC3BqpS,EAAY3vS,aAAI,EAAJA,EAAMkgC,MAAM,KACxBmrE,EAAY,IAAH,OAAOskM,EAAUA,EAAUzyS,OAAS,IACnDsyS,EAA4BxvS,EAAKmC,MAAM,GAAIkpG,EAAUnuG,SAAW8C,GAChEuvS,EAAalkM,GACbikM,GAAa,KA8BkE,QAApB,EAAEhtS,IAAK2D,qBAAa,aAAlB,EAAoBK,iBCvDtE6+B,GD6DC,WACd,IAUE,KALEoS,aAAY,SAACljC,GAAK,MAAK,CACzBmjC,IAAUs8D,wBAAwBz/F,GAClCmjC,IAAUo8D,uBAAuBv/F,GACjCmjC,IAAUwjB,kBAAkB3mD,GAC5BmjC,IAAUihG,qCAAqCpkI,OAC/C,GATAu7R,EAAa,KACbjuH,EAAmB,KACnB3mH,EAAiB,KACjB09E,EAAiC,KAOnC,EAA6BlgG,cAArBr3C,EAAC,EAADA,EAAUkoE,EAAM,EAAbC,MACwC,KAAXK,mBAAS,GAAE,GAA5CkmO,EAAY,KAAEC,EAAe,KACmB,KAAXnmO,mBAAS,GAAE,GAAhDomO,EAAc,KAAEC,EAAiB,KACmC,KAAfrmO,oBAAS,GAAM,GAApEsmO,EAAsB,KAAEC,EAAyB,KAClDC,EAAa3mO,mBACb4mO,EAAe5mO,mBACfr+C,EAAW2F,cAEXyrC,EAAkB2N,uBAAY,SAAC0G,EAAOkiD,GAC1C3nG,EAASuvC,IAAQ6B,gBAAgBqU,EAAOkiD,MACvC,CAAC3nG,IAIEklR,EAAiB,SAACr5L,GAAY,MAAsB,sBAAjBA,GAAyD,0BAAjBA,GAE3Es5L,EAA8B,SAAC5/N,GACnC,IAAMxtE,EAA2BZ,IAAKa,8BACpB,uBAAdutE,EACGxtE,EAAyBwuH,6BAC5BxuH,EAAyBqtS,6BAElBrtS,EAAyBwuH,6BAClCxuH,EAAyBstS,4BAIvBC,EAAwB,SAAC//N,GAC7B,IAAM9tE,EAAqBN,IAAKO,wBACd,0BAAd6tE,EACG9tE,EAAmB67L,uBACtB77L,EAAmB8tS,uBAEZ9tS,EAAmB67L,uBAC5B77L,EAAmB+tS,sBAsCvB,GAlCA1lO,qBAAU,WAQoB,uBAAxB02G,GAAwE,0BAAxBA,GAClDplH,EAAgB,wBAAyB8zO,EAAe,4BAEzD,IAEHplO,qBAAU,WACR,GAAIklO,WAAY1nR,SAAZ0nR,MAAuBC,KAAc3nR,QAAS,CAChD,IAAMonR,EAAeM,EAAW1nR,QAAQ6hD,wBAAwB34D,MAAQ,EAClEo+R,EAAiBK,EAAa3nR,QAAQ6hD,wBAAwB34D,MAE9Di/R,EAAuB3uS,OAAO0qC,WAAa,EAAIyjQ,EAAa3nR,QAAQ6hD,wBAAwBU,KAC5F6lO,EAA4BhB,EAAe,EAG3CiB,EAAkB30Q,KAAKD,IAAI00Q,EAAsBC,GAEvDV,EAAW1nR,QAAQvW,MAAM84D,KAAO,GAAH,OAAM8lO,EAAe,MAGhDZ,EADEL,EAAeE,MAMpB,CAACF,EAAcE,EAAgBI,EAAYC,IAEjB,IAAzBR,EAAc1yS,SAAiBmsE,EACjC,OAAO,KAGT,IAAM0nO,EAA8B,SAAC/5L,GACnC,IAAMg6L,EAAyBt4J,EAAkC1hC,GACjE,OAAIg6L,GAA0BA,EAAuBhxS,KAC5CgxS,EAAuBhxS,KAEzB,uBAAP,OAA8Bg3G,IAG1Bi6L,EAAuBj2O,EAC3B40O,EAAcntQ,QAAO,SAACmuC,GAAK,OAAMwW,KAAqBt/C,SAAS8oC,MAAUg/N,EAE3E,OAAIlsO,eACK,kBAAC,GAAQ,MAIhB,kBAAC,KAAO,CACNiiD,QAAM,EACNxvB,SAAUi6M,EACVtpL,SAAU,YAAgB,IAAbnB,EAAM,EAANA,OACXqqL,EAAkBrqL,EAAOh0G,UAG1B,gBAAG21G,EAAU,EAAVA,WAAU,OACZ,kBAACzkD,GAAA,EAAkB,CACjBnsB,YAAY,UACZhL,UAAW/O,IAAW,6CACtBjR,IAAK47F,GAEL,kBAAC,KAAO,CACN3B,QAAM,EACNxvB,SAAUg6M,EACVrpL,SAAU,YAAgB,IAAbnB,EAAM,EAANA,OACXmqL,EAAgBnqL,EAAOh0G,UAGxB,gBAAG21G,EAAU,EAAVA,WAAU,OACZ,yBACE57F,IAAK47F,EACL57E,UAAW/O,IAAW,CACpB,SAAW,EACX,aAAcszQ,KAGfgB,EAAqBvpS,KAAI,SAACsvG,GAAY,OACrC,4BACEx1G,IAAKw1G,EACLp9D,eAAA,UAAiBo9D,GACjBtrE,UAAW/O,IAAW,CACpB,gBAAgB,EAChB,OAAUq6E,IAAiB2qE,IAE7BhrI,QAAS,WACP25P,EAA4Bt5L,GAC5By5L,EAAsBz5L,GACtBz6C,EAAgBy6C,EAAcq5L,EAAer5L,MAG9C71G,EAAE4vS,EAA4B/5L,YAOzC,yBACEtrE,UAAW/O,IAAW,CACpB,SAAW,EACX,YAAaszQ,KAGf,kBAAClnO,EAAA,EAAQ,CACPryB,YAAY,kBACZkxB,MAAOqpO,EACPhpO,oBAAqB8oO,EACrBhpO,oBAAqB45G,EACrBz5G,YAAa,SAAC8uC,GACZs5L,EAA4Bt5L,GAC5By5L,EAAsBz5L,GACtBz6C,EAAgBy6C,EAAcq5L,EAAer5L,a,SEpO9Ck6L,I,OCKc,WAC3B,IAAM/lR,EAAW2F,cACX5tB,EAA2BZ,IAAKa,8BAEhCguS,EAAkBjnO,uBAAY,WAClChnE,EAAyBstS,2BACzBrlR,EAASuvC,IAAQ6B,gBAAgB,wBAChC,CAACr5D,EAA0BioB,IAE9B,OACE,kBAACmsB,GAAA,EAAM,CACLZ,YAAY,uBACZF,MAAM,kBACN9K,UAAU,0BACViL,QAASw6P,M,6BCnBFC,GAAa,CACxBxxS,KAAM,eACNsS,MAAO,CAAE,WAAc,OACvBwkC,YAAa,aACbjN,MAAO,cACP8M,IAAK,sBACLI,QAAS,SAACsB,GACR31C,IAAK4R,KAAK+jC,IAEZZ,mDAAmD,EACnDipC,uBAAwB,SAACjsE,GAAK,OAAMA,EAAM86E,OAAOkhC,QAAQh8G,EAAM86E,OAAOl3C,2BAG3Do5P,GAAa,CACxBzxS,KAAM,eACN82C,YAAa,aACbjN,MAAO,cACP8M,IAAK,sBACLI,QAAS,SAACsB,GACR31C,IAAK6R,KAAK8jC,IAEZZ,mDAAmD,EACnDipC,uBAAwB,SAACjsE,GAAK,OAAMA,EAAM86E,OAAOohC,QAAQl8G,EAAM86E,OAAOl3C,2BCrBzD,IACb,QACA,UACA,UACA,UACA,mBACA,YACA,SACA,cACA,SCAaouG,OARf,WACE,IAAMirJ,EAAarzQ,eACnB,SAAIujJ,KAAoB+vH,0BAA2BtvS,OAAOk4E,aAAaC,QAAQ,GAAD,OAAIk3N,EAAU,8BACnF9tQ,KAAKwgB,MAAM/hD,OAAOk4E,aAAaC,QAAQ,GAAD,OAAIk3N,EAAU,8B,6BCNhD,IACbrvS,OAAO+F,KAAKo9B,YAAYiO,wBACxBpxC,OAAO+F,KAAKo9B,YAAY+N,wBACxBlxC,OAAO+F,KAAKo9B,YAAY6M,mBACxBhwC,OAAO+F,KAAKo9B,YAAYiN,gBACxBpwC,OAAO+F,KAAKo9B,YAAY2N,iBACxB9wC,OAAO+F,KAAKo9B,YAAYkO,uBACxBrxC,OAAO+F,KAAKo9B,YAAYmO,yB,uOCE1B,I,wBAAMi+P,GAAwB,CAC5B,qBAAsB,CACpB96P,YAAa,qBACbokG,UAAW,MACX22J,KAAM,EACN37K,IAAK,GACL9vH,SAAU,QACV,OAAS,EACT6kG,QAAQ,EACRsxI,UAAW,CACTjsD,WAAY,EACZC,cAAe,EACfuhH,YAAa,GAEfx/R,MAAO,GACP01D,MAAO,CACL,2BACA,uBACA,oBACA,qBAGJ,eAAgB,CACdlxB,YAAa,eACbokG,UAAW,MACX7kB,eAAgB,SAChBw7K,KAAM,EACN37K,IAAK,GACL9vH,SAAU,MACV,OAAS,EACT6kG,QAAQ,EACRsxI,UAAW,CACTjsD,WAAY,EACZC,cAAe,EACfuhH,YAAa,GAEfx/R,MAAO,GACP01D,MAAO,CACL,uBACA,qBACA,qBACA,wBACA,sBACA,mBACA,0BACA,0BACA,sBAGJ,2BAA4B,CAC1BlxB,YAAa,2BACbokG,UAAW,SACX22J,KAAM,EACN37K,IAAK,GACL9vH,SAAU,SACV2rS,YAAa,UACb/wM,QAAS,OACT,OAAS,EACTiK,QAAQ,EACRsxI,UAAW,CACTjsD,WAAY,EACZC,cAAe,EACfuhH,YAAa,GAEfx/R,MAAO,CACL42F,WAAY,gBACZwF,QAAS,MACT++D,YAAa,QACbqkI,YAAa,EACbE,YAAa,iBAEfhqO,MAAO,CACL,6BAIAiqO,GAA2B,CAC/BC,iBAAkB,CAChBp7P,YAAa,mBACbjN,MAAO,kBACP+M,MAAO,kBACPhN,KAAM,+BACNkP,QAAQ,EACR94C,KAAM,gBAERmyS,eAAgB,CACdr7P,YAAa,iBACbjN,MAAO,kBACP+M,MAAO,kBACPhN,KAAM,gBACNkP,QAAQ,EACR94C,KAAM,gBAERoyS,aAAc,CACZt7P,YAAa,eACbjN,MAAO,mBACP4M,UAAU,EACVG,MAAO,mBACPhN,KAAM,YACNkP,QAAQ,EACR94C,KAAM,gBAERqyS,YAAa,CACXv7P,YAAa,cACbjN,MAAO,eACP4M,UAAU,EACVG,MAAO,eACPhN,KAAM,yBACNkP,QAAQ,EACR94C,KAAM,gBAERM,UAAW,GACXgyS,sBAAuB,CACrBx7P,YAAa,wBACbjN,MAAO,+BACP4M,UAAU,EACVG,MAAO,+BACPhN,KAAM,qBACNkP,QAAQ,EACR94C,KAAM,gBAERuyS,eAAgB,CACdz7P,YAAa,iBACbjN,MAAO,2BACP4M,UAAU,EACVG,MAAO,2BACPhN,KAAM,4BACNkP,QAAQ,EACR94C,KAAM,gBAER,cAAe,CACb82C,YAAa,cACb92C,KAAM,WAER,oBAAqB,CACnB82C,YAAa,oBACbjN,MAAO,aACP7pC,KAAM,eACN22C,IAAK,2BACLwkB,cAAe,YAEjB,gBAAiB,CACfrkB,YAAa,gBACb92C,KAAM,gBAER,cAAe,CACb82C,YAAa,cACb92C,KAAM,WAER,iBAAkB,CAChB82C,YAAa,iBACb92C,KAAM,QAER,cAAe,CACb82C,YAAa,cACb92C,KAAM,WAERwyS,cAAe,CACb17P,YAAa,gBACb92C,KAAM,aACNwH,SAAU,OAEZirS,yBAA0B,CACxB37P,YAAa,2BACb92C,KAAM,aACNwH,SAAU,kBAEZ,qBAAsB,CACpBsvC,YAAa,qBACbH,IAAK,oBACL9M,MAAO,wBACPsxB,cAAe,iBACfn7D,KAAM,gBAER0yS,yBAA0B,CACxB57P,YAAa,2BACbkxB,MAAO,CACL,qBACA,cACA,oBACA,gBACA,cACA,iBACA,cACA,gBACA,4BAEFhoE,KAAM,eACN6xS,KAAM,EACN37K,IAAK,GACLknB,eAAe,EACf9qI,MA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5hT,YAAa,mBACb92C,KAAM,oBAER24V,oBAAqB,CACnB7hT,YAAa,sBACb92C,KAAM,uBAER44V,oBAAqB,CACnB9hT,YAAa,sBACb92C,KAAM,uBAER64V,WAAY,CACV/hT,YAAa,aACb92C,KAAM,eACNyzS,WAAY,cAEdqlD,aAAc,CACZhiT,YAAa,eACb92C,KAAM,eACNyzS,WAAY,gBAEdslD,gBAAiB,CACfjiT,YAAa,kBACb92C,KAAM,eACNyzS,WAAY,mBAEdulD,yBAA0B,CACxBliT,YAAa,2BACb92C,KAAM,4BAERi5V,kBAAmB,CACjBniT,YAAa,oBACb92C,KAAM,eACNyzS,WAAY,qBAEdylD,oBAAqB,CACnBpiT,YAAa,sBACb92C,KAAM,eACNyzS,WAAY,uBAEdnzS,UAAW,GACX,cAAe,CACbw2C,YAAa,cACb92C,KAAM,WAER,oBAAqB,CACnB82C,YAAa,oBACbjN,MAAO,aACP7pC,KAAM,eACN22C,IAAK,2BACLwkB,cAAe,YAEjB,gBAAiB,CACfrkB,YAAa,gBACb92C,KAAM,gBAER,cAAe,CACb82C,YAAa,cACb92C,KAAM,WAER,iBAAkB,CAChB82C,YAAa,iBACb92C,KAAM,QAER,cAAe,CACb82C,YAAa,cACb92C,KAAM,WAER,qBAAsB,CACpB82C,YAAa,qBACbH,IAAK,oBACL9M,MAAO,wBACPsxB,cAAe,iBACfn7D,KAAM,gBAER0yS,yBAA0B,CACxB57P,YAAa,2BACbkxB,MAAO,CACL,qBACA,cACA,iBACA,eAGFhoE,KAAM,eACN6xS,KAAM,EACN37K,IAAK,GACLknB,eAAe,EACf9qI,MAAO,IAET,uBAAwB,CACtBwkC,YAAa,uBACbjN,MAAO,OACP7pC,KAAM,aACN42C,MAAO,OACPwgE,aAAc,uBACd1nB,aAAc,CACZ,iCAGJ,yBAA0B,CACxB54C,YAAa,yBACbjN,MAAO,SACP7pC,KAAM,aACN42C,MAAO,SACPwgE,aAAc,yBACd1nB,aAAc,CACZ,mCAGJ,yBAA0B,CACxB54C,YAAa,yBACbjN,MAAO,SACP7pC,KAAM,aACN42C,MAAO,SACPwgE,aAAc,yBAC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","file":"webviewer-ui.min.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t22: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"chunks/\" + ({\"13\":\"vendors.html2canvas\"}[chunkId]||chunkId) + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1235);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setDisplayMode__anchor\n * @fires displayModeUpdated on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:displayModeUpdated__anchor\n * @fires zoomUpdated on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:zoomUpdated__anchor\n */\nexport default (mode) => {\n  for (const documentViewer of core.getDocumentViewers()) {\n    const displayModeManager = documentViewer.getDisplayModeManager();\n    const displayMode = (displayModeManager.isVirtualDisplayEnabled())\n      ? new window.Core.VirtualDisplayMode(documentViewer, mode)\n      : new window.Core.DisplayMode(documentViewer, mode);\n\n    displayModeManager.setDisplayMode(displayMode);\n  }\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getAnnotationManager__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setActiveSearchResult__anchor\n */\nexport default (result, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setActiveSearchResult(result);\n};\n","import core from 'core';\nimport Events from 'constants/events';\n\nexport const addEventListener = (event, eventListener, options = null, documentViewerKey = 1) => {\n  const eventToObjectMap = getEventToObjectMap(documentViewerKey);\n  const object = eventToObjectMap[event];\n\n  options ? object.addEventListener(event, eventListener, options) : object.addEventListener(event, eventListener);\n};\n\nexport const removeEventListener = (event, eventListener, documentViewerKey = 1) => {\n  if (!core.getDocumentViewer(documentViewerKey)) {\n    return;\n  }\n  const eventToObjectMap = getEventToObjectMap(documentViewerKey);\n  const object = eventToObjectMap[event];\n\n  object.removeEventListener(event, eventListener);\n};\n\nconst getEventToObjectMap = (documentViewerKey = 1) => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  const annotManager = documentViewer.getAnnotationManager();\n  const contentEditManager = documentViewer.getContentEditManager();\n  const historyManager = documentViewer.getAnnotationHistoryManager();\n  const editBoxManager = annotManager.getEditBoxManager();\n  const formFieldCreationManager = annotManager.getFormFieldCreationManager();\n  const measurementManager = documentViewer.getMeasurementManager();\n\n  return {\n    cursorPropertiesUpdated: documentViewer,\n    selectionPropertiesUpdated: documentViewer,\n    officeDocumentEdited: documentViewer,\n    signatureSaved: documentViewer,\n    signatureDeleted: documentViewer,\n    annotationsLoaded: documentViewer,\n    tap: documentViewer,\n    longTap: documentViewer,\n    click: documentViewer,\n    dblClick: documentViewer,\n    displayPageLocation: documentViewer,\n    keyDown: documentViewer,\n    keyUp: documentViewer,\n    mouseEnter: documentViewer,\n    mouseLeave: documentViewer,\n    mouseLeftDown: documentViewer,\n    mouseLeftUp: documentViewer,\n    mouseMove: documentViewer,\n    mouseRightDown: documentViewer,\n    mouseRightUp: documentViewer,\n    pageComplete: documentViewer,\n    readOnlyModeChanged: documentViewer,\n    searchInProgress: documentViewer,\n    activeSearchResultChanged: documentViewer,\n    searchResultsChanged: documentViewer,\n    textSelected: documentViewer,\n    beginRendering: documentViewer,\n    finishedRendering: documentViewer,\n    beforeDocumentLoaded: documentViewer,\n    displayModeUpdated: documentViewer,\n    documentLoaded: documentViewer,\n    documentUnloaded: documentViewer,\n    fitModeUpdated: documentViewer,\n    rotationUpdated: documentViewer,\n    toolUpdated: documentViewer,\n    toolModeUpdated: documentViewer,\n    zoomUpdated: documentViewer,\n    pageNumberUpdated: documentViewer,\n    pagesUpdated: documentViewer,\n    'fitModeUpdated.fitbutton': documentViewer,\n    [Events.COMPARE_ANNOTATIONS_LOADED]: documentViewer,\n    historyChanged: historyManager,\n    annotationSelected: annotManager,\n    annotationChanged: annotManager,\n    outlineSetDestination: annotManager,\n    updateAnnotationPermission: annotManager,\n    addReply: annotManager,\n    deleteReply: annotManager,\n    annotationHidden: annotManager,\n    annotationDoubleClicked: annotManager,\n    annotationNumberingUpdated: annotManager,\n    annotationFiltered: annotManager,\n    annotationToggled: annotManager,\n    fieldChanged: annotManager,\n    notify: annotManager,\n    setNoteText: annotManager,\n    fileAttachmentDataAvailable: annotManager,\n    digitalSignatureAvailable: annotManager,\n    editorFocus: editBoxManager,\n    editorBlur: editBoxManager,\n    editorTextChanged: editBoxManager,\n    editorSelectionChanged: editBoxManager,\n    formFieldCreationModeStarted: formFieldCreationManager,\n    formFieldCreationModeEnded: formFieldCreationManager,\n    scaleUpdated: measurementManager,\n    contentEditModeStarted: contentEditManager,\n    contentEditModeEnded: contentEditManager,\n    contentBoxEditStarted: contentEditManager,\n    contentBoxEditEnded: contentEditManager,\n    contentEditSelectionChange: contentEditManager,\n    contentEditDocumentDigitallySigned: contentEditManager,\n    contentEditPasswordRequired: contentEditManager,\n    createAnnotationWithNoScale: measurementManager,\n  };\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#mergeDocument__anchor\n */\n\nexport default async (documentToMerge, position, documentViewerKey = 1) => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  if (documentViewer.getDocument()) {\n    return documentViewer.getDocument().mergeDocument(documentToMerge, position);\n  }\n\n  await documentViewer.loadDocument(documentToMerge);\n  const doc = documentViewer.getDocument();\n  return { filename: doc.getFilename(), pages: [1] };\n};\n","const documentViewerMap = new Map();\n\nexport const setDocumentViewer = (number, documentViewer) => {\n  documentViewerMap.set(number, documentViewer);\n  return documentViewer;\n};\n\nexport const deleteDocumentViewer = (number) => {\n  documentViewerMap.delete(number);\n};\n\nexport const getDocumentViewer = (number = 1) => {\n  return documentViewerMap.get(number);\n};\n\nexport const getDocumentViewers = () => {\n  return Array.from(documentViewerMap.values());\n};","import setToolMode from './setToolMode';\nimport getToolMode from './getToolMode';\nimport getToolsFromAllDocumentViewers from './getToolsFromAllDocumentViewers';\nimport setDisplayMode from './setDisplayMode';\nimport getDisplayMode from './getDisplayMode';\nimport rotateClockwise from './rotateClockwise';\nimport rotateCounterClockwise from './rotateCounterClockwise';\nimport rotatePages from './rotatePages';\nimport movePages from './movePages';\nimport removePages from './removePages';\nimport getFitMode from './getFitMode';\nimport fitToPage from './fitToPage';\nimport fitToWidth from './fitToWidth';\nimport fitToHeight from './fitToHeight';\nimport fitToZoom from './fitToZoom';\nimport zoomToMouse from './zoomToMouse';\nimport getZoom from './getZoom';\nimport zoomTo from './zoomTo';\nimport getAnnotationManager from './getAnnotationManager';\nimport getTotalPages from './getTotalPages';\nimport getCurrentPage from './getCurrentPage';\nimport setCurrentPage from './setCurrentPage';\nimport getType from './getType';\nimport isWebViewerServerDocument from './isWebViewerServerDocument';\nimport getSelectedText from './getSelectedText';\nimport clearSelection from './clearSelection';\nimport closeDocument from './closeDocument';\nimport getToolModeMap from './getToolModeMap';\nimport getCurrentUser from './getCurrentUser';\nimport getIsAdminUser from './getIsAdminUser';\nimport setIsAdminUser from './setIsAdminUser';\nimport exportAnnotations from './exportAnnotations';\nimport setCurrentUser from './setCurrentUser';\nimport setReadOnly from './setReadOnly';\nimport setScrollViewElement from './setScrollViewElement';\nimport setViewerElement from './setViewerElement';\nimport isContinuousDisplayMode from './isContinuousDisplayMode';\nimport isScrollableDisplayMode from './isScrollableDisplayMode';\nimport isSearchResultEqual from './isSearchResultEqual';\nimport scrollViewUpdated from './scrollViewUpdated';\nimport canModify from './canModify';\nimport canModifyContents from './canModifyContents';\nimport deleteAnnotations from './deleteAnnotations';\nimport getDisplayAuthor from './getDisplayAuthor';\nimport getDocument from './getDocument';\nimport getCompleteRotation from './getCompleteRotation';\nimport getRotation from './getRotation';\nimport getPageInfo from './getPageInfo';\nimport clearSearchResults from './clearSearchResults';\nimport getPageSearchResults from './getPageSearchResults';\nimport displayAdditionalSearchResult from './displayAdditionalSearchResult';\nimport displayAdditionalSearchResults from './displayAdditionalSearchResults';\nimport displaySearchResult from './displaySearchResult';\nimport getActiveSearchResult from './getActiveSearchResult';\nimport setActiveSearchResult from './setActiveSearchResult';\nimport textSearchInit from './textSearchInit';\nimport getSearchMode from './getSearchMode';\nimport getResultCode from './getResultCode';\nimport getPageWidth from './getPageWidth';\nimport getPageHeight from './getPageHeight';\nimport getScales from './getScales';\nimport drawAnnotations from './drawAnnotations';\nimport getOutlines from './getOutlines';\nimport getSelectedAnnotations from './getSelectedAnnotations';\nimport updateCopiedAnnotations from './updateCopiedAnnotations';\nimport pasteCopiedAnnotations from './pasteCopiedAnnotations';\nimport selectAnnotation from './selectAnnotation';\nimport selectAnnotations from './selectAnnotations';\nimport addAnnotations from './addAnnotations';\nimport applyRedactions from './applyRedactions';\nimport isCreateRedactionEnabled from './isCreateRedactionEnabled';\nimport isApplyRedactionEnabled from './isApplyRedactionEnabled';\nimport isAnnotationRedactable from './isAnnotationRedactable';\nimport enableRedaction from './enableRedaction';\nimport drawAnnotationsFromList from './drawAnnotationsFromList';\nimport setInternalAnnotationsTransform from './setInternalAnnotationsTransform';\nimport setPagesUpdatedInternalAnnotationsTransform from './setPagesUpdatedInternalAnnotationsTransform';\nimport loadDocument from './loadDocument';\nimport loadThumbnailAsync from './loadThumbnailAsync';\nimport getSelectedTextQuads from './getSelectedTextQuads';\nimport getDisplayModeObject from './getDisplayModeObject';\nimport getScrollViewElement from './getScrollViewElement';\nimport getAnnotationById from './getAnnotationById';\nimport getAnnotationByMouseEvent from './getAnnotationByMouseEvent';\nimport isFullPDFEnabled from './isFullPDFEnabled';\nimport isBlendModeSupported from './isBlendModeSupported';\nimport isAnnotationSelected from './isAnnotationSelected';\nimport setAnnotationStyles from './setAnnotationStyles';\nimport deselectAnnotation from './deselectAnnotation';\nimport deselectAnnotations from './deselectAnnotations';\nimport deselectAllAnnotations from './deselectAllAnnotations';\nimport jumpToAnnotation from './jumpToAnnotation';\nimport insertBlankPages from './insertBlankPages';\nimport createAnnotationReply from './createAnnotationReply';\nimport getIsReadOnly from './getIsReadOnly';\nimport setNoteContents from './setNoteContents';\nimport setAnnotationRichTextStyle from './setAnnotationRichTextStyle';\nimport updateAnnotationRichTextStyle from './updateAnnotationRichTextStyle';\nimport getAnnotationsList from './getAnnotationsList';\nimport getAnnotationsLoadedPromise from './getAnnotationsLoadedPromise';\nimport getPrintablePDF from './getPrintablePDF';\nimport cancelLoadThumbnail from './cancelLoadThumbnail';\nimport showAnnotations from './showAnnotations';\nimport hideAnnotations from './hideAnnotations';\nimport goToOutline from './goToOutline';\nimport getViewerElement from './getViewerElement';\nimport { addEventListener, removeEventListener } from './eventListener';\nimport setAnnotationCanvasTransform from './setAnnotationCanvasTransform';\nimport getAnnotationCopy from './getAnnotationCopy';\nimport setWatermark from './setWatermark';\nimport getWatermark from './getWatermark';\nimport groupAnnotations from './groupAnnotations';\nimport ungroupAnnotations from './ungroupAnnotations';\nimport getNumberOfGroups from './getNumberOfGroups';\nimport getGroupAnnotations from './getGroupAnnotations';\nimport undo from './undo';\nimport redo from './redo';\nimport updateAnnotationState from './updateAnnotationState';\nimport getFontStyles from './getFontStyles';\nimport mergeDocument from './mergeDocument';\nimport getFormFieldCreationManager from './getFormFieldCreationManager';\nimport syncNamespaces from './syncNamespaces';\nimport createDocument from './createDocument';\nimport getContentEditManager from './getContentEditManager';\nimport getTool from './getTool';\nimport { getDocumentViewer, setDocumentViewer, getDocumentViewers, deleteDocumentViewer } from './documentViewers';\nimport setUserBookmarks from './setUserBookmarks';\nimport setBookmarkIconShortcutVisibility from './setBookmarkIconShortcutVisibility';\nimport setBookmarkShortcutToggleOnFunction from './setBookmarkShortcutToggleOnFunction';\nimport setBookmarkShortcutToggleOffFunction from './setBookmarkShortcutToggleOffFunction';\nimport createAndApplyScale from './createAndApplyScale';\nimport replaceScales from './replaceScales';\nimport deleteScale from './deleteScale';\nimport getScalePrecision from './getScalePrecision';\nimport enableAnnotationNumbering from './enableAnnotationNumbering';\nimport getSemanticDiffAnnotations from './getSemanticDiffAnnotations';\nimport loadBlankOfficeEditorDocument from './loadBlankOfficeEditorDocument';\nimport getOfficeEditor from './getOfficeEditor';\nimport isValidURI from './isValidURI';\nimport openURI from './openURI';\nimport getAllowedFileExtensions from './getAllowedFileExtensions';\n\nexport default {\n  getSemanticDiffAnnotations,\n  getDocumentViewers,\n  getDocumentViewer,\n  setDocumentViewer,\n  deleteDocumentViewer,\n  setToolMode,\n  getToolMode,\n  getTool,\n  getToolsFromAllDocumentViewers,\n  setDisplayMode,\n  getDisplayMode,\n  rotateClockwise,\n  rotateCounterClockwise,\n  rotatePages,\n  movePages,\n  removePages,\n  getFitMode,\n  fitToPage,\n  fitToWidth,\n  fitToHeight,\n  fitToZoom,\n  zoomToMouse,\n  getZoom,\n  zoomTo,\n  getAnnotationManager,\n  getTotalPages,\n  getCurrentPage,\n  setCurrentPage,\n  getType,\n  getScales,\n  isWebViewerServerDocument,\n  getSelectedText,\n  clearSelection,\n  closeDocument,\n  getToolModeMap,\n  getCurrentUser,\n  getIsAdminUser,\n  setIsAdminUser,\n  exportAnnotations,\n  setCurrentUser,\n  setReadOnly,\n  setScrollViewElement,\n  setViewerElement,\n  isContinuousDisplayMode,\n  isScrollableDisplayMode,\n  isSearchResultEqual,\n  scrollViewUpdated,\n  canModify,\n  canModifyContents,\n  deleteAnnotations,\n  getDisplayAuthor,\n  getDocument,\n  getCompleteRotation,\n  getRotation,\n  getPageInfo,\n  clearSearchResults,\n  getPageSearchResults,\n  displayAdditionalSearchResult,\n  displayAdditionalSearchResults,\n  getActiveSearchResult,\n  setActiveSearchResult,\n  textSearchInit,\n  displaySearchResult,\n  getSearchMode,\n  getResultCode,\n  getPageWidth,\n  getPageHeight,\n  drawAnnotations,\n  getOutlines,\n  getSelectedAnnotations,\n  updateCopiedAnnotations,\n  pasteCopiedAnnotations,\n  selectAnnotation,\n  selectAnnotations,\n  addAnnotations,\n  applyRedactions,\n  isCreateRedactionEnabled,\n  isApplyRedactionEnabled,\n  isAnnotationRedactable,\n  enableRedaction,\n  drawAnnotationsFromList,\n  setInternalAnnotationsTransform,\n  setPagesUpdatedInternalAnnotationsTransform,\n  loadThumbnailAsync,\n  loadDocument,\n  getSelectedTextQuads,\n  getDisplayModeObject,\n  getScrollViewElement,\n  getAnnotationById,\n  isFullPDFEnabled,\n  isBlendModeSupported,\n  isAnnotationSelected,\n  setAnnotationStyles,\n  deselectAnnotation,\n  deselectAnnotations,\n  deselectAllAnnotations,\n  jumpToAnnotation,\n  insertBlankPages,\n  createAnnotationReply,\n  setNoteContents,\n  setAnnotationRichTextStyle,\n  updateAnnotationRichTextStyle,\n  getAnnotationsList,\n  getAnnotationsLoadedPromise,\n  getPrintablePDF,\n  addEventListener,\n  removeEventListener,\n  getIsReadOnly,\n  cancelLoadThumbnail,\n  showAnnotations,\n  hideAnnotations,\n  goToOutline,\n  getViewerElement,\n  setAnnotationCanvasTransform,\n  getAnnotationCopy,\n  setWatermark,\n  getWatermark,\n  getAnnotationByMouseEvent,\n  groupAnnotations,\n  ungroupAnnotations,\n  getNumberOfGroups,\n  getGroupAnnotations,\n  undo,\n  redo,\n  updateAnnotationState,\n  getFontStyles,\n  mergeDocument,\n  getFormFieldCreationManager,\n  syncNamespaces,\n  createDocument,\n  getContentEditManager,\n  setUserBookmarks,\n  setBookmarkIconShortcutVisibility,\n  setBookmarkShortcutToggleOnFunction,\n  setBookmarkShortcutToggleOffFunction,\n  createAndApplyScale,\n  replaceScales,\n  deleteScale,\n  getScalePrecision,\n  enableAnnotationNumbering,\n  getOfficeEditor,\n  loadBlankOfficeEditorDocument,\n  isValidURI,\n  openURI,\n  getAllowedFileExtensions,\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getSemanticDiffAnnotations__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getSemanticDiffAnnotations();","import core from 'core';\n\n/**\n * Set the tool that a user will be using\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @fires toolModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:toolModeUpdated__anchor\n */\nexport default (toolName) => {\n  core.getDocumentViewers().forEach((docViewer) => docViewer.setToolMode(docViewer.getTool(toolName)));\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getToolMode__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getToolMode();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getTool__anchor\n */\nexport default (toolName, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getTool(toolName);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getTool__anchor\n */\nexport default (toolName) => core.getDocumentViewers().map((documentViewer) => documentViewer.getTool(toolName));\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DisplayModeManager.html#getDisplayMode__anchor\n * Note that getDisplayMode returns an object and this function returns mode property of that object.\n * If you want to get the object please use getDisplayModeObject\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)?.getDisplayModeManager().getDisplayMode().mode;\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#rotateClockwise__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).rotateClockwise();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#rotateCounterClockwise__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).rotateCounterClockwise();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#rotatePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.html#event:pagesUpdated__anchor\n */\nexport default (arr, rotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().rotatePages(arr, rotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#movePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:pagesUpdated\n */\nexport default (pageArray, newLocation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().movePages(pageArray, newLocation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#removePages__anchor\n * @fires pagesUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:pagesUpdated__anchor\n */\nexport default (arr, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().removePages(arr);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getFitMode__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getFitMode();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.FitPage);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.FitWidth);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.FitHeight);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setFitMode__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setFitMode(core.getDocumentViewer(documentViewerKey).FitMode.Zoom);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#zoomToMouse__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (zoomFactor, documentViewerKey = 1, mouseEvent) => {\n  // left panel width when it's not closed\n  // it still maintains its width when closed\n  const xOffset = document.querySelector('[data-element=leftPanel]:not(.closed)')?.offsetWidth || 0;\n\n  // height of main header and the header tools that may appear below\n  const headerHeight = document.querySelector('[data-element=header]')?.offsetHeight || 0;\n  const headerToolsHeight = document.querySelector('[data-element=toolsHeader]')?.offsetHeight || 0;\n  const yOffset = headerHeight + headerToolsHeight;\n\n  core.getDocumentViewer(documentViewerKey).zoomToMouse(zoomFactor, xOffset, yOffset, mouseEvent);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getZoom__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)?.getZoomLevel();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#zoomTo__anchor\n * @fires fitModeUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:fitModeUpdated__anchor\n * @fires zoomUpdated on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:zoomUpdated__anchor\n */\nexport default (zoomFactor, x, y, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).zoomTo(zoomFactor, x, y);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageCount__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getPageCount();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getCurrentPage__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getCurrentPage();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setCurrentPage__anchor\n * @fires pageNumberUpdated on DocumentViewer if set to a different page number\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:pageNumberUpdated__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).setCurrentPage(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#getType__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getType();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#getScales__anchor\n */\nexport default (documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getMeasurementManager().getScales();\n};\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().isWebViewerServerDocument();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getSelectedText__anchor\n */\nexport default (documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getSelectedText();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#clearSelection__anchor\n * @fires textSelected on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:textSelected__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).clearSelection();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#closeDocument__anchor\n * @fires documentUnloaded on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:documentUnloaded__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).closeDocument();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getToolModeMap__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getToolModeMap();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getCurrentUser__anchor\n */\nexport default () => core.getDocumentViewer(1).getAnnotationManager().getCurrentUser();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getIsAdminUser__anchor\n */\nexport default () => core.getDocumentViewer(1).getAnnotationManager().isUserAdmin();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setIsAdminUser__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:updateAnnotationPermission__anchor\n */\nexport default (isAdmin) => {\n  const documentViewers = core.getDocumentViewers();\n  if (isAdmin) {\n    documentViewers.forEach((documentViewer) => documentViewer.getAnnotationManager().promoteUserToAdmin());\n  } else {\n    documentViewers.forEach((documentViewer) => documentViewer.getAnnotationManager().demoteUserFromAdmin());\n  }\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#exportAnnotations__anchor\n */\nexport default (options, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().exportAnnotations(options);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setCurrentUser__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:updateAnnotationPermission__anchor\n */\nexport default (userName, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setCurrentUser(userName);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#enableReadOnlyMode__anchor\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#disableReadOnlyMode__anchor\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#enableReadOnlyMode__anchor\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#disableReadOnlyMode__anchor\n * @fires updateAnnotationPermission on AnnotationManager\n * @fires readyOnlyModeChanged on DocumentViewer\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:readOnlyModeChanged__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#event:readOnlyModeChanged__anchor\n */\nexport default (isReadOnly) => {\n  for (const documentViewer of core.getDocumentViewers()) {\n    if (isReadOnly) {\n      documentViewer.getAnnotationManager().enableReadOnlyMode();\n      documentViewer.enableReadOnlyMode();\n    } else {\n      documentViewer.getAnnotationManager().disableReadOnlyMode();\n      documentViewer.disableReadOnlyMode();\n    }\n  }\n};\n","import core from 'core';\n\n/**\n * @see componentDidMount in DocumentContainer.js about how to use this api\n */\nexport default (element, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setScrollViewElement(element);\n};\n","import core from 'core';\n\n/**\n * @see componentDidMount in DocumentContainer.js about how to use this api\n */\nexport default (element, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setViewerElement(element);\n};\n","import core from 'core';\n\n/**\n * @see displayModeObjects.js for more information\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDisplayModeManager().getDisplayMode().isContinuous();\n","import core from 'core';\n\n/**\n * @see displayModeObjects.js for more information\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDisplayModeManager().getDisplayMode().IsScrollable();\n","export default (resultA, resultB) => window.Core.Search.isSearchResultEqual(resultA, resultB);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#scrollViewUpdated__anchor\n */\nexport default (documentViewerKey) => {\n  if (!documentViewerKey) {\n    core.getDocumentViewers().forEach((documentViewer) => {\n      documentViewer.scrollViewUpdated();\n    });\n  } else {\n    core.getDocumentViewer(documentViewerKey).scrollViewUpdated();\n  }\n};\n","import core from 'core';\n\n/**\n * Whether or not the current user can modify the annotation.\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().canModify(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#canModifyContents__anchor\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().canModifyContents(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deleteAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n * @fires deleteReply on AnnotationManager if the annotation deleted is a reply\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:deleteReply__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n * @fires notify on DocumentViewer if requires delete notification\n */\nexport default (annotation, options = undefined, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().deleteAnnotations(annotation, options);\n};\n","import core from 'core';\n\n/**\n * Annotations may set the author to a unique id which isn't suitable for display in the UI.\n * this function gets the author name of the annotation that should be displayed based on a unique userID/GUID.\n */\nexport default (userId, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getDisplayAuthor(userId);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getDocument__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getCompleteRotation__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getCompleteRotation(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getRotation__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getRotation(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#getPageInfo__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getPageInfo(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#clearSearchResults__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).clearSearchResults();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageSearchResults__anchor\n */\nexport default function getPageSearchResults(pageNumber, documentViewerKey = 1) {\n  return core.getDocumentViewer(documentViewerKey).getPageSearchResults(pageNumber);\n}\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displayAdditionalSearchResult__anchor\n */\nexport default (result, documentViewerKey) => {\n  core.getDocumentViewer(documentViewerKey).displayAdditionalSearchResult(result);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displayAdditionalSearchResults__anchor\n */\nexport default (results, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).displayAdditionalSearchResults(results);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getActiveSearchResult__anchor\n */\nexport default function getActiveSearchResult(documentViewerKey = 1) {\n  return core.getDocumentViewer(documentViewerKey).getActiveSearchResult();\n}\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#textSearchInit__anchor\n */\nexport default (searchValue, searchMode, isFullSearch, handleSearchResult, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).textSearchInit(searchValue, searchMode, isFullSearch, handleSearchResult);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displaySearchResult__anchor\n */\nexport default (result, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).displaySearchResult(result);\n};\n","export default () => window.Core.Search.Mode;\n","export default () => window.Core.Search.ResultCode;\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageWidth__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getPageWidth(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getPageHeight__anchor\n */\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getPageHeight(pageNumber);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#drawAnnotations__anchor\n */\nexport default (pageNumber, overrideCanvas, majorRedraw, overrideContainer, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)\n  .getAnnotationManager()\n  .drawAnnotations(\n    pageNumber,\n    overrideCanvas,\n    majorRedraw,\n    overrideContainer,\n  );\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#getBookmarks__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getDocument().getBookmarks().then((outlines) => {\n    callback(outlines);\n  });\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getSelectedAnnotations__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getSelectedAnnotations();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#updateCopiedAnnotations__anchor\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().updateCopiedAnnotations();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#pasteCopiedAnnotations__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n * AnnotationSelected will be fired at most twice:\n * it will be fired with deselect action if you selected any annotations before paste\n * it will be fired with select action after the annotation is pasted\n */\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().pasteCopiedAnnotations();\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#selectAnnotation__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotation, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().selectAnnotation(annotation);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#selectAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().selectAnnotations(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#addAnnotations__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().addAnnotations(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#applyRedactions__anchor\n * If the redaction annotations overlap with other annotations, it calls deleteAnnotations on the other annotations.\n * See deleteAnnotations.js for any events that are trigger by delete annotations\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().applyRedactions(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isCreateRedactionEnabled__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#isCreateRedactionEnabled__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isCreateRedactionEnabled();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isApplyRedactionEnabled__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:isApplyRedactionEnabled__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isApplyRedactionEnabled();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isAnnotationRedactable__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:isAnnotationRedactable__anchor\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isAnnotationRedactable(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#enableRedaction__anchor\n */\nexport default (enable) => {\n  if (enable) {\n    core.getDocumentViewers().forEach((documentViewer) => documentViewer.getAnnotationManager().enableRedaction());\n  } else {\n    core.getDocumentViewers().forEach((documentViewer) => documentViewer.getAnnotationManager().disableRedaction());\n  }\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#drawAnnotationsFromList__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().drawAnnotationsFromList(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setInternalAnnotationsTransform__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setInternalAnnotationsTransform(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setPagesUpdatedInternalAnnotationsTransform__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setPagesUpdatedInternalAnnotationsTransform(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#loadThumbnailAsync\n * RequestId will be used if we cancel that thumbnail loading\n */\nexport default (pageNum, callback, documentViewerKey = 1) => {\n  const requestId = core.getDocumentViewer(documentViewerKey).getDocument().loadThumbnail(pageNum, (thumb) => {\n    callback(thumb);\n  });\n  return requestId;\n};\n","import core from 'core';\n\nexport default (src, options, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).loadDocument(src, options);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#getSelectedTextQuads__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getSelectedTextQuads();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DisplayModeManager.html#getDisplayMode__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDisplayModeManager().getDisplayMode();\n","import core from 'core';\n\n/**\n * Return the scroll view element set when document is loaded\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getScrollViewElement();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getAnnotationById__anchor\n */\nexport default (Id, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getAnnotationById(Id);\n","/**\n * https://docs.apryse.com/api/web/Core.html#.isFullPDFEnabled\n */\nexport default () => window.Core.isFullPDFEnabled();\n","/**\n * https://docs.apryse.com/api/web/Core.html#isBlendModeSupported__anchor\n * @see https://docs.apryse.com/api/web/Core.html#isBlendModeSupported__anchor\n */\nexport default (type) => window.Core.isBlendModeSupported(type);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#isAnnotationSelected__anchor\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isAnnotationSelected(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationStyles__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, newStyles, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setAnnotationStyles(annotation, newStyles);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deselectAnnotation__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotation, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().deselectAnnotation(annotation);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deselectAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default (annotations, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().deselectAnnotations(annotations);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#deselectAllAnnotations__anchor\n * @fires annotationSelected on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationSelected__anchor\n */\nexport default () => {\n  core.getDocumentViewers().forEach((documentViewer) => documentViewer.getAnnotationManager().deselectAllAnnotations());\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#jumpToAnnotationd__anchor\n */\nexport default (annotation, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().jumpToAnnotation(annotation);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#insertblankpages\n */\nexport default (insertBeforeThesePages, width, height, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().insertBlankPages(insertBeforeThesePages, width, height);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#createAnnotationReply__anchor\n * @fires addReply on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:addReply__anchor\n */\nexport default (annotation, reply, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().createAnnotationReply(annotation, reply);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setNoteContents__anchor\n * @fires annotationChanged(Modify) on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, content, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setNoteContents(annotation, content);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationRichTextStyle__anchor\n * @fires annotationChanged(Modify) on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, style, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setAnnotationRichTextStyle(annotation, style);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#updateAnnotationRichTextStyle__anchor\n * @fires annotationChanged on AnnotationManager\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged__anchor\n */\nexport default (annotation, callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().updateAnnotationRichTextStyle(annotation, callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getAnnotationsList__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getAnnotationsList();\n","import core from 'core';\n\n/**\n * Gets a promise that resolves when the annotations in the current document have all been loaded\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationsLoadedPromise();\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getPrintablePDF();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getReadOnly__anchor\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().isReadOnlyModeEnabled();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.Document.html#cancelLoadThumbnail__anchor\n */\nexport default (requestId, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().cancelLoadThumbnail(requestId);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#showAnnotations__anchor\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().showAnnotations(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#hideAnnotations__anchor\n */\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().hideAnnotations(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#displayBookmark__anchor\n */\nexport default (outline, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).displayBookmark(outline);\n};\n","import core from 'core';\n\n/**\n * Return the viewer element. It is the div with class name \"document\" in DocumentContainer.js\n */\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getViewerElement();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationCanvasTransform__anchor\n * @see https://docs.apryse.com/api/web/Core.AnnotationManager.html#setAnnotationCanvasTransform__anchor\n */\nexport default (annotCanvasContext, zoom, rotation, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationManager().setAnnotationCanvasTransform(annotCanvasContext, zoom, rotation);\n};\n","import core from 'core';\n\nexport default (annotation) => core.getDocumentViewer(1).getAnnotationManager().getAnnotationCopy(annotation);","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setWatermark__anchor\n */\nexport default (watermarkOptions, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).setWatermark(watermarkOptions);\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getWatermark();\n","import core from 'core';\n\nexport default (e, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getAnnotationByMouseEvent(e);\n","import core from 'core';\n\nexport default (primaryAnnotation, annotationsToGroup, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().groupAnnotations(\n  primaryAnnotation,\n  annotationsToGroup,\n);\n","import core from 'core';\n\nexport default (annotations, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().ungroupAnnotations(annotations);\n","import core from 'core';\n\nexport default (annotations, documentViewerKey) => core.getDocumentViewer(documentViewerKey).getAnnotationManager().getNumberOfGroups(annotations);\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#getGroupAnnotations__anchor\n */\nexport default (annotation, documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getAnnotationManager().getGroupAnnotations(annotation);\n};\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationHistoryManager().undo();\n};\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getAnnotationHistoryManager().redo();\n};\n","import core from 'core';\n\nexport default (annotation, state, stateModel, message, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey)\n  .getAnnotationManager()\n  .updateAnnotationState(annotation, state, stateModel, message);\n","export default () => window.Core.FontStyles;\n","import getAnnotationManager from './getAnnotationManager';\n\nexport default (documentViewerKey = 1) => {\n  const annotManager = getAnnotationManager(documentViewerKey);\n  return annotManager.getFormFieldCreationManager();\n};\n","/**\n * https://docs.apryse.com/api/web/Core.html#.syncNamespaces__anchor\n */\nexport default (namespaces) => window.Core.syncNamespaces(namespaces);\n","/**\n * https://docs.apryse.com/api/web/Core.html#.createDocument\n */\nexport default (sourceDoc, docOptions) => {\n  return window.Core.createDocument(sourceDoc, docOptions);\n};\n","import core from 'core';\n\nexport default (pageNumber, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getContentEditManager();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setUserBookmarks__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setUserBookmarks__anchor\n */\nexport default (bookmarks, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setUserBookmarks(bookmarks);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkIconShortcutVisibility__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkIconShortcutVisibility__anchor\n */\nexport default (isEnabled, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setBookmarkIconShortcutVisibility(isEnabled);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOnFunction__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOnFunction__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setBookmarkShortcutToggleOnFunction(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOffFunction__anchor\n * @see https://docs.apryse.com/api/web/Core.DocumentViewer.html#setBookmarkShortcutToggleOffFunction__anchor\n */\nexport default (callback, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).setBookmarkShortcutToggleOffFunction(callback);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#createScale__anchor\n */\nexport default (scale, applyTo, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getMeasurementManager().createAndApplyScale({ scale, applyTo });\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#replaceScales__anchor\n */\nexport default (originalScales, scale, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getMeasurementManager().replaceScales(originalScales, scale);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#deleteScale__anchor\n */\nexport default (scale, documentViewerKey = 1) => {\n  core.getDocumentViewer(documentViewerKey).getMeasurementManager().deleteScale(scale);\n};\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.MeasurementManager.html#getScalePrecision__anchor\n */\nexport default (scale, documentViewerKey = 1) => {\n  return core.getDocumentViewer(documentViewerKey).getMeasurementManager().getScalePrecision(scale);\n};\n","import getAnnotationManager from './getAnnotationManager';\n\n/**\n * https://docs.apryse.com/api/web/Core.AnnotationManager.html#enableAnnotationNumbering__anchor\n */\nexport default (documentViewerKey = 1) => {\n  getAnnotationManager(documentViewerKey).enableAnnotationNumbering();\n};","import core from 'core';\n\nexport default (documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).getDocument().getOfficeEditor();\n","import core from 'core';\n\n/**\n * https://docs.apryse.com/api/web/Core.DocumentViewer.html#loadBlankOfficeEditorDocument\n */\nexport default (options, documentViewerKey = 1) => core.getDocumentViewer(documentViewerKey).loadBlankOfficeEditorDocument(options);\n","export default (uri) => window.Core.isValidURI(uri);\n","export default (uri, isOpenInNewWindow) => window.Core.openURI(uri, isOpenInNewWindow);\n","/**\n * https://docs.apryse.com/api/web/Core.html#.getAllowedFileExtensions__anchor\n */\nexport default () => {\n  return window.Core.getAllowedFileExtensions().length > 0 ?\n    window.Core.getAllowedFileExtensions().map((format) => `.${format}`,).join(', ') :\n    window.Core.SupportedFileFormats.CLIENT.map((format) => `.${format}`,).join(', ');\n};\n","import * as exposedActions from './exposedActions';\nimport * as internalActions from './internalActions';\n\nexport default { ...exposedActions, ...internalActions };","import * as exposedSelectors from './exposedSelectors';\n\nexport default exposedSelectors;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","const DataElements = {\n  LEGACY_RICH_TEXT_POPUP: 'legacyRichTextPopup',\n  ANNOTATION_NOTE_CONNECTOR_LINE: 'annotationNoteConnectorLine',\n  ANNOTATION_STYLE_POPUP: 'annotationStylePopup',\n  ANNOTATION_STYLE_POPUP_BACK_BUTTON: 'annotationStylePopupBackButton',\n  ANNOTATION_STYLE_POPUP_BACK_BUTTON_CONTAINER: 'annotationStylePopupBackButtonContainer',\n  INLINE_COMMENT_POPUP_EXPAND_BUTTON: 'inlineCommentPopupExpandButton',\n  INLINE_COMMENT_POPUP_CLOSE_BUTTON: 'inlineCommentPopupCloseButton',\n\n  LOGO_BAR: 'logoBar',\n  COLOR_PALETTE: 'colorPalette',\n  OPACITY_SLIDER: 'opacitySlider',\n  STROKE_THICKNESS_SLIDER: 'strokeThicknessSlider',\n  FONT_SIZE_SLIDER: 'fontSizeSlider',\n  STYLE_OPTION: 'styleOption',\n  STYLE_POPUP: 'stylePopup',\n  STYLE_PANEL: 'stylePanel',\n  SIGNATURE_LIST_PANEL: 'signatureListPanel',\n  RUBBER_STAMP_PANEL: 'rubberStampPanel',\n  SCALE_INPUT_CONTAINER: 'scaleInputContainer',\n  PRECISION_INPUT_CONTAINER: 'precisionInputContainer',\n  STYLE_POPUP_TEXT_STYLE_CONTAINER: 'stylePopupTextStyleContainer',\n  STYLE_POPUP_COLORS_CONTAINER: 'stylePopupColorsContainer',\n  STYLE_POPUP_LABEL_TEXT_CONTAINER: 'stylePopupLabelTextContainer',\n  REDACTION_PANEL: 'redactionPanel',\n  REDACTION_PANEL_TOGGLE: 'redactionPanelToggle',\n  WV3D_PROPERTIES_PANEL: 'wv3dPropertiesPanel',\n  WV3D_PROPERTIES_PANEL_TOGGLE: 'wv3dPropertiesPanelToggle',\n  LEFT_PANEL: 'leftPanel',\n  OUTLINE_PANEL: 'outlinesPanel',\n  STROKE_STYLE_CONTAINER: 'strokeStyleContainer',\n  FILL_COLOR_CONTAINER: 'fillColorContainer',\n  OPACITY_CONTAINER: 'opacityContainer',\n  OUTLINE_MULTI_SELECT: 'outlineMultiSelect',\n  OUTLINE_CONTROLS: 'outlineControls',\n  OUTLINE_ADD_NEW_BUTTON_CONTAINER: 'addNewOutlineButtonContainer',\n  OUTLINE_ADD_NEW_BUTTON: 'addNewOutlineButton',\n  OUTLINE_MOVE_UP_BUTTON: 'moveOutlineUpButton',\n  OUTLINE_MOVE_DOWN_BUTTON: 'moveOutlineDownButton',\n  OUTLINE_MOVE_OUTWARD_BUTTON: 'moveOutlineOutwardButton',\n  OUTLINE_MOVE_INWARD_BUTTON: 'moveOutlineInwardButton',\n  BOOKMARK_PANEL: 'bookmarksPanel',\n  BOOKMARK_MULTI_SELECT: 'bookmarkMultiSelect',\n  BOOKMARK_SHORTCUT_OPTION: 'bookmarkShortcutOption',\n  BOOKMARK_ADD_NEW_BUTTON_CONTAINER: 'addNewBookmarkButtonContainer',\n  BOOKMARK_ADD_NEW_BUTTON: 'addNewBookmarkButton',\n  NOTES_PANEL: 'notesPanel',\n  FORM_FIELD_INDICATOR_CONTAINER: 'formFieldIndicatorContainer',\n  WATERMARK_PANEL: 'watermarkPanel',\n  WATERMARK_PANEL_TOGGLE: 'watermarkPanelToggle',\n  WATERMARK_PANEL_IMAGE_TAB: 'watermarkPanelImageTab',\n  WATERMARK_PANEL_TEXT_TAB: 'watermarkPanelTextTab',\n  SEARCH_PANEL: 'searchPanel',\n  TEXT_EDITING_PANEL: 'textEditingPanel',\n  COMPARE_PANEL: 'comparePanel',\n  PORTFOLIO_PANEL: 'portfolioPanel',\n  PORTFOLIO_PANEL_BUTTON: 'portfolioPanelButton',\n  LAYERS_PANEL: 'layersPanel',\n  SIGNATURE_PANEL: 'signaturePanel',\n  ATTACHMENT_PANEL: 'attachmentPanel',\n  MOBILE_PANEL_WRAPPER: 'MobilePanelWrapper',\n  PORTFOLIO_ADD_FILE: 'portfolioAddFile',\n  PORTFOLIO_ADD_FOLDER: 'portfolioAddFolder',\n  PORTFOLIO_ADD_NEW_BUTTON: 'portfolioAddNewButton',\n  RICH_TEXT_STYLE_CONTAINER: 'richTextStyleContainer',\n  CALIBRATION_POPUP_BUTTON: 'calibratePopupButton',\n  CALIBRATION_MODAL: 'calibrationModal',\n\n  NotesPanel: {\n    DefaultHeader: {\n      INPUT_CONTAINER: 'notesPanelHeader-inputContainer',\n      COMMENTS_COUNTER: 'notesPanelHeader-commentsCounter',\n      SORT_ROW: 'notesPanelHeader-sortRow',\n      FILTER_ANNOTATION_BUTTON: 'filterAnnotationButton'\n    },\n    ADD_REPLY_ATTACHMENT_BUTTON: 'addReplyAttachmentButton'\n  },\n  MULTITABS_EMPTY_PAGE: 'multiTabsEmptyPage',\n\n  // Overlays\n  SCALE_OVERLAY_CONTAINER: 'scaleOverlayContainer',\n  MEASUREMENT_OVERLAY: 'measurementOverlay',\n  VIEW_CONTROLS_OVERLAY: 'viewControlsOverlay',\n  VIEW_CONTROLS_OVERLAY_BUTTON: 'viewControlsButton',\n  SEARCH_OVERLAY: 'searchOverlay',\n  MENU_OVERLAY: 'menuOverlay',\n  MENU_OVERLAY_BUTTON: 'menuButton',\n  ZOOM_OVERLAY: 'zoomOverlay',\n  ZOOM_OVERLAY_BUTTON: 'zoomOverlayButton',\n  TRACK_CHANGE_OVERLAY_BUTTON: 'trackChangeOverlayButton',\n  PAGE_MANIPULATION_OVERLAY: 'pageManipulationOverlay',\n  PAGE_MANIPULATION_OVERLAY_BUTTON: 'pageManipulationOverlayButton',\n  TOOLS_OVERLAY: 'toolsOverlay',\n  STAMP_OVERLAY: 'stampOverlay',\n  SIGNATURE_OVERLAY: 'signatureOverlay',\n  REDACTION_OVERLAY: 'redactionOverlay',\n  ANNOTATION_CONTENT_OVERLAY: 'annotationContentOverlay',\n  THUMBNAILS_PANEL: 'thumbnailsPanel',\n  THUMBNAILS_CONTROL_ROTATE_POPUP_TRIGGER: 'thumbnailsControlRotatePopupTrigger',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP: 'thumbnailsControlManipulatePopup',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP_TRIGGER: 'thumbnailsControlManipulatePopupTrigger',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL: 'thumbnailsControlManipulatePopupSmall',\n  THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL_TRIGGER: 'thumbnailsControlManipulatePopupSmallTrigger',\n\n  // Stamps overlay\n  RUBBER_STAMP_TAB_HEADER: 'rubberStampTabHeader',\n  STANDARD_STAMPS_PANEL_BUTTON: 'standardStampPanelButton',\n  CUSTOM_STAMPS_PANEL_BUTTON: 'customStampPanelButton',\n  STANDARD_STAMPS_PANEL: 'standardStampPanel',\n  CUSTOM_STAMPS_PANEL: 'customStampPanel',\n  CREATE_CUSTOM_STAMP_BUTTON: 'createCustomStampButton',\n  DELETE_CUSTOM_STAMP_BUTTON: 'deleteCustomStampButton',\n\n  // Popups\n  ANNOTATION_POPUP: 'annotationPopup',\n  FORM_FIELD_EDIT_POPUP: 'formFieldEditPopup',\n  TEXT_POPUP: 'textPopup',\n  CONTEXT_MENU_POPUP: 'contextMenuPopup',\n  INLINE_COMMENT_POPUP: 'inlineCommentPopup',\n  TOOL_STYLE_POPUP: 'toolStylePopup',\n  RICH_TEXT_POPUP: 'richTextPopup',\n  RICH_TEXT_EDITOR: 'richTextEditor',\n  AUDIO_PLAYBACK_POPUP: 'audioPlaybackPopup',\n  ANNOTATION_ALIGNMENT_POPUP: 'annotationAlignmentPopup',\n  DOCUMENT_CROP_POPUP: 'documentCropPopup',\n  SNIPPING_TOOL_POPUP: 'snippingToolPopup',\n  LINK_ANNOTATION_POPUP: 'linkAnnotationPopup',\n  LINK_ANNOTATION_UNLINK_BUTTON: 'linkAnnotationUnlinkButton',\n  LINK_URI: 'linkUri',\n  EMBEDDED_JS_POPUP: 'embeddedJsPopup',\n  MAIN_MENU: 'MainMenuFlyout',\n  VIEWER_CONTROLS_FLYOUT: 'viewControlsFlyout',\n  NOTE_STATE_FLYOUT: 'noteStateFlyout',\n  BOOKMARK_OUTLINE_FLYOUT: 'bookmarkOutlineFlyout',\n  BOOKMARK_FLYOUT: 'bookmarkFlyout',\n\n  // Modals\n  PAGE_REDACT_MODAL: 'pageRedactionModal',\n  LINK_MODAL: 'linkModal',\n  LANGUAGE_MODAL: 'languageModal',\n  FILTER_MODAL: 'filterModal',\n  CONTENT_EDIT_LINK_MODAL: 'contentEditLinkModal',\n  SCALE_MODAL: 'scaleModal',\n  INSERT_PAGE_MODAL: 'insertPageModal',\n  SETTINGS_MODAL: 'settingsModal',\n  SAVE_MODAL: 'saveModal',\n  PRINT_MODAL: 'printModal',\n  SIGNATURE_MODAL: 'signatureModal',\n  SIGNATURE_VALIDATION_MODAL: 'signatureValidationModal',\n  ERROR_MODAL: 'errorModal',\n  PASSWORD_MODAL: 'passwordModal',\n  CUSTOM_STAMP_MODAL: 'customStampModal',\n  PAGE_REPLACEMENT_MODAL: 'pageReplacementModal',\n  LOADING_MODAL: 'loadingModal',\n  PROGRESS_MODAL: 'progressModal',\n  WARNING_MODAL: 'warningModal',\n  MODEL3D_MODAL: 'Model3DModal',\n  COLOR_PICKER_MODAL: 'ColorPickerModal',\n  OPEN_FILE_MODAL: 'OpenFileModal',\n  CUSTOM_MODAL: 'customModal',\n  CREATE_PORTFOLIO_MODAL: 'createPortfolioModal',\n\n  // Filter modal\n  ANNOTATION_USER_FILTER_PANEL_BUTTON: 'annotationUserFilterPanelButton',\n  ANNOTATION_COLOR_FILTER_PANEL_BUTTON: 'annotationColorFilterPanelButton',\n  ANNOTATION_TYPE_FILTER_PANEL_BUTTON: 'annotationTypeFilterPanelButton',\n  ANNOTATION_STATUS_FILTER_PANEL_BUTTON: 'annotationStatusFilterPanelButton',\n\n  // Settings modal\n  SETTINGS_GENERAL_BUTTON: 'settingsGeneralButton',\n  SETTINGS_KEYBOARD_BUTTON: 'settingsKeyboardButton',\n  SETTINGS_ADVANCED_BUTTON: 'settingsAdvancedButton',\n  SETTINGS_LANGUAGE_SECTION: 'settingsLanguageSection',\n  SETTINGS_LANGUAGE_DROPDOWN: 'settingsLanguageDropdown',\n  SETTINGS_THEME_SECTION: 'settingsThemeSection',\n\n  // Create portfolio modal\n  PORTFOLIO_UPLOAD_FILES_TAB: 'portfolioUploadFilesTab',\n  PORTFOLIO_UPLOAD_FOLDER_TAB: 'portfolioUploadFolderTab',\n  PORTFOLIO_MODAL_ADD_ITEM_TRIGGER: 'portfolioModalAddItemTrigger',\n\n  // Signature Modal\n  SAVED_SIGNATURES_TAB: 'signatureModalSavedSignaturesTab',\n\n  // Notes panel - multi select\n  NOTE_MULTI_SELECT_MODE_BUTTON: 'multiSelectModeButton',\n  NOTE_MULTI_REPLY_BUTTON: 'multiReplyButton',\n  NOTE_MULTI_STATE_BUTTON: 'multiStateButton',\n  NOTE_MULTI_STYLE_BUTTON: 'multiStyleButton',\n  NOTE_MULTI_GROUP_BUTTON: 'multiGroupButton',\n  NOTE_MULTI_UNGROUP_BUTTON: 'multiUngroupButton',\n  NOTE_MULTI_DELETE_BUTTON: 'multiDeleteButton',\n\n  // Saved Signatures overlay\n  SAVED_SIGNATURES_PANEL_BUTTON: 'savedFullSignaturePanelButton',\n  SAVED_INTIALS_PANEL_BUTTON: 'savedInitialsPanelButton',\n  SAVED_FULL_SIGNATURES_PANEL: 'savedFullSignaturePanel',\n  SAVED_INITIALS_PANEL: 'savedInitialsPanel',\n\n  // MultiViewer Mode (MultiViewer)\n  MULTI_VIEWER_SAVE_DOCUMENT_BUTTON: 'multiViewerSaveDocumentButton',\n\n  // Office Editor\n  OFFICE_EDITOR_TOOLS_HEADER: 'officeEditorToolsHeader',\n  OFFICE_EDITOR_TOOLS_HEADER_INSERT_IMAGE: 'officeEditorToolsHeaderInsertImage',\n  OFFICE_EDITOR_TOOLS_HEADER_INSERT_TABLE: 'officeEditorToolsHeaderInsertTable',\n  OFFICE_EDITOR_FILE_NAME: 'officeEditorFileName',\n  OFFICE_EDITOR_CUT: 'officeEditorCut',\n  OFFICE_EDITOR_COPY: 'officeEditorCopy',\n  OFFICE_EDITOR_PASTE: 'officeEditorPaste',\n  OFFICE_EDITOR_PASTE_WITHOUT_FORMATTING: 'officeEditorPasteWithoutFormatting',\n  OFFICE_EDITOR_DELETE: 'officeEditorDelete',\n  OFFICE_EDITOR_INSERT_ROW_ABOVE: 'officeEditorInsertRowAbove',\n  OFFICE_EDITOR_INSERT_ROW_BELOW: 'officeEditorInsertRowBelow',\n  OFFICE_EDITOR_INSERT_COLUMN_RIGHT: 'officeEditorInsertColumnRight',\n  OFFICE_EDITOR_INSERT_COLUMN_LEFT: 'officeEditorInsertColumnLeft',\n  OFFICE_EDITOR_DELETE_ROW: 'officeEditorDeleteRow',\n  OFFICE_EDITOR_DELETE_COLUMN: 'officeEditorDeleteColumn',\n  OFFICE_EDITOR_DELETE_TABLE: 'officeEditorDeleteTable',\n  OFFICE_EDITOR_PAGE_BREAK: 'officeEditorPageBreak',\n\n  // Insert Page Modal tabs\n  INSERT_BLANK_PAGE_TAB: 'insertBlankPagePanelButton',\n  INSERT_FROM_FILE_TAB: 'insertUploadedPagePanelButton',\n  INSERT_BLANK_PAGE_PANEL: 'insertBlankPagePanel',\n  INSERT_FROM_FILE_PANEL: 'insertUploadedPagePanel',\n\n  // Toolbar groups/Ribbons\n  VIEW_TOOLBAR_GROUP: 'toolbarGroup-View',\n  ANNOTATE_TOOLBAR_GROUP: 'toolbarGroup-Annotate',\n  SHAPES_TOOLBAR_GROUP: 'toolbarGroup-Shapes',\n  REDACT_TOOLBAR_GROUP: 'toolbarGroup-Redact',\n  INSERT_TOOLBAR_GROUP: 'toolbarGroup-Insert',\n  MEASURE_TOOLBAR_GROUP: 'toolbarGroup-Measure',\n  EDIT_TOOLBAR_GROUP: 'toolbarGroup-Edit',\n  EDIT_TEXT_TOOLBAR_GROUP: 'toolbarGroup-EditText',\n  FILL_AND_SIGN_TOOLBAR_GROUP: 'toolbarGroup-FillAndSign',\n  FORMS_TOOLBAR_GROUP: 'toolbarGroup-Forms',\n\n  TOOLBAR_GROUPS: [],\n\n  // Print modal\n  PRINT_QUALITY: 'printQuality',\n  PRINT_WATERMARK: 'printWatermark',\n\n  // Menu overlay items\n  CREATE_PORTFOLIO_BUTTON: 'createPortfolioButton',\n  NEW_DOCUMENT_BUTTON: 'newDocumentButton',\n  FILE_PICKER_BUTTON: 'filePickerButton',\n  DOWNLOAD_BUTTON: 'downloadButton',\n  SAVE_AS_BUTTON: 'saveAsButton',\n  PRINT_BUTTON: 'printButton',\n  FULLSCREEN_BUTTON: 'fullscreenButton',\n  SETTINGS_BUTTON: 'settingsButton',\n\n  // Preset Buttons\n  UNDO_PRESET_BUTTON: 'undoPresetButton',\n  REDO_PRESET_BUTTON: 'redoPresetButton',\n  NEW_DOCUMENT_PRESET_BUTTON: 'newDocumentPresetButton',\n  FILE_PICKER_PRESET_BUTTON: 'filePickerPresetButton',\n  DOWNLOAD_PRESET_BUTTON: 'downloadPresetButton',\n  FULLSCREEN_PRESET_BUTTON: 'fullscreenPresetButton',\n  SAVE_AS_PRESET_BUTTON: 'saveAsPresetButton',\n  PRINT_PRESET_BUTTON: 'printPresetButton',\n  CREATE_PORTFOLIO_PRESET_BUTTON: 'createPortfolioPresetButton',\n  SETTINGS_PRESET_BUTTON: 'settingsPresetButton',\n  FORM_FIELD_EDIT_PRESET_BUTTON: 'formFieldEditPresetButton',\n  CONTENT_EDIT_PRESET_BUTTON: 'contentEditPresetButton',\n\n  // Rubber Stamp Panel\n  CREATE_RUBBER_STAMP_BUTTON: 'createRubberStampButton',\n};\n\nDataElements.TOOLBAR_GROUPS = [\n  DataElements.VIEW_TOOLBAR_GROUP,\n  DataElements.ANNOTATE_TOOLBAR_GROUP,\n  DataElements.SHAPES_TOOLBAR_GROUP,\n  DataElements.REDACT_TOOLBAR_GROUP,\n  DataElements.INSERT_TOOLBAR_GROUP,\n  DataElements.MEASURE_TOOLBAR_GROUP,\n  DataElements.EDIT_TOOLBAR_GROUP,\n  DataElements.EDIT_TEXT_TOOLBAR_GROUP,\n  DataElements.FILL_AND_SIGN_TOOLBAR_GROUP,\n  DataElements.FORMS_TOOLBAR_GROUP,\n];\n\nexport default DataElements;\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar nullListeners = {\n  notify: function notify() {},\n  get: function get() {\n    return [];\n  }\n};\nexport function createSubscription(store, parentSub) {\n  var unsubscribe;\n  var listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  var subscription = {\n    addNestedSub: addNestedSub,\n    notifyNestedSubs: notifyNestedSubs,\n    handleChangeWrapper: handleChangeWrapper,\n    isSubscribed: isSubscribed,\n    trySubscribe: trySubscribe,\n    tryUnsubscribe: tryUnsubscribe,\n    getListeners: function getListeners() {\n      return listeners;\n    }\n  };\n  return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = createSubscription(store);\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n    _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return createSubscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n        if (newStoreState === latestStoreState.current) {\n          return;\n        }\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","const PLACEMENT = {\n  TOP: 'top',\n  BOTTOM: 'bottom',\n  LEFT: 'left',\n  RIGHT: 'right',\n};\n\nconst POSITION = {\n  START: 'start',\n  CENTER: 'center',\n  END: 'end',\n};\n\nconst JUSTIFY_CONTENT = {\n  START: 'start',\n  CENTER: 'center',\n  END: 'end',\n  SPACE_BETWEEN: 'space-between',\n  SPACE_AROUND: 'space-around',\n  SPACE_EVENLY: 'space-evenly',\n};\n\nconst DIRECTION = {\n  ROW: 'row',\n  COLUMN: 'column',\n};\n\nconst ITEM_TYPE = {\n  MODULAR_HEADER: 'modularHeader',\n  BUTTON: 'customButton',\n  STATEFUL_BUTTON: 'statefulButton',\n  GROUPED_ITEMS: 'groupedItems',\n  RIBBON_ITEM: 'ribbonItem',\n  DIVIDER: 'divider',\n  TOGGLE_BUTTON: 'toggleButton',\n  RIBBON_GROUP: 'ribbonGroup',\n  TOOL_BUTTON: 'toolButton',\n  ZOOM: 'zoom',\n  FLYOUT: 'flyout',\n  PAGE_CONTROLS: 'pageControls',\n  PRESET_BUTTON: 'presetButton',\n  VIEW_CONTROLS: 'viewControls',\n  TABS_PANEL: 'tabPanel',\n  FONT_SIZE_DROPDOWN: 'fontSizeDropdown',\n  FONT_FACE_DROPDOWN: 'fontFaceDropdown',\n  STYLE_PRESET_DROPDOWN: 'stylePresetDropdown',\n  CREATE_TABLE_DROPDOWN: 'createTableDropdown',\n  OFFICE_EDITOR_MODE_DROPDOWN: 'officeEditorModeDropdown',\n};\n\nconst FLYOUT_ITEM_TYPES = {\n  BUTTON: 'button',\n  PRESET_BUTTON: 'presetButton',\n  RIBBON_ITEM: 'ribbonItem',\n  TOOL_BUTTON: 'toolButton',\n  TOGGLE_BUTTON: 'toggleButton',\n  ZOOM_OPTIONS_BUTTON: 'zoomOptionsButton',\n  ZOOM_BUTTON: 'zoomButton',\n  PAGE_NAVIGATION_BUTTON: 'pageNavigationButton',\n  UNDO_BUTTON: 'undoButton',\n  REDO_BUTTON: 'redoButton',\n  TAB_PANEL_ITEM: 'tabPanelItem',\n  LABEL: 'label',\n  DIVIDER: 'divider',\n};\n\nconst PREBUILT_FLYOUTS = [\n  'ViewControlsFlyout',\n  'ZoomFlyoutMenu',\n  'pageNavFlyoutMenu',\n  'NoteStateFlyout',\n  'MoreOptionsContextMenuFlyout',\n];\n\nconst OVERFLOW_FLYOUTS = [\n  'GroupedItemsFlyout',\n  'RibbonOverflowFlyout',\n  'RibbonGroupFlyout',\n  'tabPanelOverflowFlyout',\n];\n\nconst RESPONSIVE_ITEMS = [\n  ITEM_TYPE.GROUPED_ITEMS,\n  ITEM_TYPE.RIBBON_GROUP,\n  ITEM_TYPE.ZOOM,\n  ITEM_TYPE.PAGE_CONTROLS,\n];\n\nconst BUTTON_TYPES = [\n  ITEM_TYPE.BUTTON,\n  ITEM_TYPE.STATEFUL_BUTTON,\n  ITEM_TYPE.TOGGLE_BUTTON,\n];\n\nconst OPACITY_MODES = {\n  STATIC: 'static',\n  DYANMIC: 'dynamic',\n};\n\nconst OPACITY_LEVELS = {\n  FULL: 'full',\n  LOW: 'low',\n  NONE: 'none',\n};\n\nconst DEFAULT_STYLES = {\n  PADDING: 8,\n  WIDTH: 1,\n  BORDER_COLOR: 'var(--gray-5)',\n  BORDER_STYLE: 'solid',\n};\n\n/**\n * Contains string enums for preset button types.\n * @name UI.PRESET_BUTTON_TYPES\n * @property {string} UNDO {@link UI.Components.PresetButton.undoButton}\n * @property {string} REDO {@link UI.Components.PresetButton.redoButton}\n * @property {string} NEW_DOCUMENT {@link UI.Components.PresetButton.newDocumentButton}\n * @property {string} FILE_PICKER {@link UI.Components.PresetButton.filePickerButton}\n * @property {string} DOWNLOAD {@link UI.Components.PresetButton.downloadButton}\n * @property {string} FULLSCREEN {@link UI.Components.PresetButton.fullscreenButton}\n * @property {string} SAVE_AS {@link UI.Components.PresetButton.saveAsButton}\n * @property {string} PRINT {@link UI.Components.PresetButton.printButton}\n * @property {string} CREATE_PORTFOLIO {@link UI.Components.PresetButton.createPortfolioButton}\n * @property {string} SETTINGS {@link UI.Components.PresetButton.settingsButton}\n * @property {string} FORM_FIELD_EDIT {@link UI.Components.PresetButton.formFieldEditButton}\n * @property {string} CONTENT_EDIT {@link UI.Components.PresetButton.contentEditButton}\n * @property {string} BOLD {@link UI.Components.PresetButton.boldButton}\n * @property {string} ITALIC {@link UI.Components.PresetButton.italicButton}\n * @property {string} UNDERLINE {@link UI.Components.PresetButton.underlineButton}\n * @property {string} ORDERED_LIST {@link UI.Components.PresetButton.orderedListButton}\n * @property {string} UNORDERED_LIST {@link UI.Components.PresetButton.unorderedListButton}\n * @example\n * const undoButton = new UI.Components.PresetButton({ buttonType: UI.PRESET_BUTTON_TYPES.UNDO });\n */\nconst PRESET_BUTTON_TYPES = {\n  UNDO: 'undoButton',\n  REDO: 'redoButton',\n  NEW_DOCUMENT: 'newDocumentButton',\n  FILE_PICKER: 'filePickerButton',\n  DOWNLOAD: 'downloadButton',\n  FULLSCREEN: 'fullscreenButton',\n  SAVE_AS: 'saveAsButton',\n  PRINT: 'printButton',\n  CREATE_PORTFOLIO: 'createPortfolioButton',\n  SETTINGS: 'settingsButton',\n  FORM_FIELD_EDIT: 'formFieldEditButton',\n  CONTENT_EDIT: 'contentEditButton',\n  RENAME: 'renameButton',\n  BOLD: 'boldButton',\n  ITALIC: 'italicButton',\n  UNDERLINE: 'underlineButton',\n  ORDERED_LIST: 'orderedListButton',\n  UNORDERED_LIST: 'unorderedListButton',\n};\n\nconst DEFAULT_GAP = 12;\n\nexport {\n  PLACEMENT,\n  POSITION,\n  JUSTIFY_CONTENT,\n  DIRECTION,\n  ITEM_TYPE,\n  PREBUILT_FLYOUTS,\n  OVERFLOW_FLYOUTS,\n  DEFAULT_GAP,\n  OPACITY_LEVELS,\n  OPACITY_MODES,\n  RESPONSIVE_ITEMS,\n  DEFAULT_STYLES,\n  PRESET_BUTTON_TYPES,\n  BUTTON_TYPES,\n  FLYOUT_ITEM_TYPES,\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n  var symbolToString = uncurryThis(SymbolPrototype.toString);\n  var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineProperty(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = symbolValueOf(this);\n      var string = symbolToString(symbol);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, constructor: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return regExpExec(nameRE, functionToString(this))[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return un$Slice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es-x/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","let rootNode;\n\nfunction findNestedWebComponents(tagName, root = document) {\n  const elements = [];\n\n  // Check direct children\n  root.querySelectorAll(tagName).forEach((el) => elements.push(el));\n\n  // Check shadow DOMs\n  root.querySelectorAll('*').forEach((el) => {\n    if (el.shadowRoot) {\n      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n    }\n  });\n\n  return elements;\n}\n\nconst getRootNode = () => {\n  if (!window.isApryseWebViewerWebComponent) {\n    return document;\n  }\n  if (rootNode) {\n    return rootNode;\n  }\n\n  let elementList;\n  elementList = document.getElementsByTagName('apryse-webviewer');\n  if (elementList.length === 0) {\n    elementList = findNestedWebComponents('apryse-webviewer');\n  }\n\n  if (elementList?.length) {\n    for (const element of elementList) {\n      const foundNode = element.shadowRoot;\n      if (foundNode && !foundNode.mounted) {\n        foundNode.mounted = true;\n        rootNode = foundNode;\n        return rootNode;\n      }\n    }\n  }\n  console.error('Cannot find root node');\n};\n\nexport const getInstanceID = () => {\n  const host = getRootNode().host;\n  return host ? host.getAttribute('id') : 'default';\n};\n\nexport const getInstanceNode = () => {\n  if (!window.isApryseWebViewerWebComponent) {\n    return window;\n  }\n  return rootNode ? rootNode.host : getRootNode().host;\n};\n\nexport default getRootNode;\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = arraySlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n    var dummy = this;\n    // check on 1..constructor(foo) case\n    return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n      ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n","var hasOwn = require('../internals/has-own-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/**\n * Contains string enums for all features for WebViewer UI\n * @name UI.Feature\n * @property {string} Measurement Measurement tools that can create annotations to measure distance, perimeter and area.\n * @property {string} Ribbons A collection of toolbar groups to switch between.\n * @property {string} Annotations Render annotations in the document and be able to edit them.\n * @property {string} Download A download button to download the current document.\n * @property {string} FilePicker Ctrl/Cmd + O hotkey and a open file button that can be clicked to load local files.\n * @property {string} LocalStorage Store and retrieve tool styles from window.localStorage.\n * @property {string} NotesPanel A panel that displays information of listable annotations.\n * @property {string} InlineComment A popup that allows to directly comment on the annotation when an annotation is selected.\n * @property {string} RightClickAnnotationPopup Ability to open the annotation menu popup on right click.\n * @property {string} Print Ctrl/Cmd + P hotkey and a print button that can be clicked to print the current document.\n * @property {string} Redaction Redaction tools that can redact text or areas. Need fullAPI to be on to use this feature.\n * @property {string} TextSelection Ability to select text in a document.\n * @property {string} TouchScrollLock Lock document scrolling in one direction in mobile devices.\n * @property {string} Copy Ability to copy text or annotations use Ctrl/Cmd + C hotkeys or the copy button.\n * @property {string} MultipleViewerMerging Ability to drag and drop pages from one instance of WebViewer into another\n * @property {string} ThumbnailMerging Ability to drag and drop a file into the thumbnail panel to merge\n * @property {string} ThumbnailReordering Ability to reorder pages using the thumbnail panel\n * @property {string} PageNavigation Ability to navigate through pages using mouse wheel, arrow up/down keys and the swipe gesture.\n * @property {string} MouseWheelZoom Ability to zoom when holding ctrl/cmd + mouse wheel.\n * @property {string} Search Ctrl/Cmd + F hotkey and a search button that can be clicked to search the current document.\n * @property {string} MathSymbols Ability to add math symbols in free text editor\n * @property {string} OutlineEditing Ability to add, move and delete outlines in the outlines panel. This feature is only available when `fullAPI: true` is used.\n * @property {string} NotesPanelVirtualizedList Ability to use a virtualized list in the note panel. Will limit the number of notes rendered on the DOM\n * @property {string} NotesShowLastUpdatedDate Show last updated date in notes panel instead of created date\n * @property {string} MultiTab toggle feature to open multiple documents in the same viewer instance\n * @property {string} MultiViewerMode toggle feature to activate 2 viewers in Compare Mode. Note that this property name is deprecated. Please use the enterMultiViewerMode and exitMultiViewerMode functions instead.\n * @property {string} SideBySideView toggle feature to show Side-by-side view in view controls dropdown\n * @property {string} ComparePages toggle feature to enable Show Comparison button in side-by-side view\n * @property {string} Initials toggle feature to activate initials signing mode in the Signature Modal\n * @property {string} SavedSignaturesTab toggle feature to enable the saved signatures tab in the Signature Modal and use it to sign elements.\n * @property {string} WatermarkPanel toggle feature to enable the watermark panel\n * @property {string} WatermarkPanelImageTab toggle feature to enable the image tab in watermark panel\n * @property {string} ContentEdit toggle feature to enable content editing in a pdf document\n * @property {string} LegacyRichTextPopup Toggle legacy richTextPopup\n * @property {string} Portfolio Toggle feature to create PDF portfolio and the portfolio panel\n * @example\n WebViewer(...)\n .then(function(instance) {\n    var Feature = instance.UI.Feature;\n    instance.UI.enableFeatures([Feature.Measurement]);\n    instance.UI.disableFeatures([Feature.Copy]);\n  });\n */\n\nexport default {\n  Measurement: 'Measurement',\n  Ribbons: 'Ribbons',\n  Annotations: 'Annotations',\n  Download: 'Download',\n  FilePicker: 'FilePicker',\n  LocalStorage: 'LocalStorage',\n  NotesPanel: 'NotesPanel',\n  InlineComment: 'InlineComment',\n  RightClickAnnotationPopup: 'RightClickAnnotationPopup',\n  Print: 'Print',\n  Redaction: 'Redaction',\n  TextSelection: 'TextSelection',\n  TouchScrollLock: 'TouchScrollLock',\n  Copy: 'Copy',\n  MultipleViewerMerging: 'MultipleViewerMerging',\n  ThumbnailMerging: 'ThumbnailMerging',\n  ThumbnailReordering: 'ThumbnailReordering',\n  ThumbnailMultiselect: 'ThumbnailMultiselect',\n  PageNavigation: 'PageNavigation',\n  MouseWheelZoom: 'MouseWheelZoom',\n  Search: 'Search',\n  MathSymbols: 'MathSymbols',\n  OutlineEditing: 'OutlineEditing',\n  NotesPanelVirtualizedList: 'NotesPanelVirtualizedList',\n  NotesShowLastUpdatedDate: 'NotesShowLastUpdatedDate',\n  MultiTab: 'MultiTab',\n  ChangeView: 'ChangeView',\n  ContentEdit: 'ContentEdit',\n  MultiViewerMode: 'MultiViewerMode',\n  SideBySideView: 'SideBySideView',\n  Initials: 'Initials',\n  SavedSignaturesTab: 'SavedSignaturesTab',\n  WatermarkPanel: 'WatermarkPanel',\n  WatermarkPanelImageTab: 'WatermarkPanelImageTab',\n  Panel: 'Panel',\n  LegacyRichTextPopup: 'LegacyRichTextPopup',\n  ComparePages: 'ComparePages',\n  Portfolio: 'Portfolio',\n};\n","import { getInstanceNode } from 'helpers/getRootNode';\n\nconst isUndefined = (val) => typeof val === 'undefined';\n\nconst paramCorrections = {\n  'd': 'initialDoc',\n  'filepicker': 'showLocalFilePicker',\n  'pdfnet': 'fullAPI',\n  'user': 'annotationUser',\n  'a': 'enableAnnotations',\n  'azureWorkaround': 'enableAzureWorkaround',\n  'admin': 'isAdminUser',\n  'l': 'licenseKey',\n  'pdf': 'backendType',\n  'office': 'backendType',\n  'legacyOffice': 'backendType',\n  'p': 'externalPath',\n  'did': 'documentId',\n  'toolbar': 'showToolbarControl',\n};\nconst paramsToStringify = ['initialDoc'];\n\nexport default window.isApryseWebViewerWebComponent ? (param, defaultValue = false) => {\n  const defaultType = typeof defaultValue;\n\n  const correctedParam = paramCorrections[param] ? paramCorrections[param] : param;\n\n  let val = getInstanceNode().getAttribute(correctedParam);\n  if (correctedParam === 'initialDoc' && val) {\n    val = val.split(',');\n    // If initialDoc is string with commas,\n    // we will split it and turn it to array\n    if (val && val.length === 1) {\n      val = val[0];\n    }\n  }\n  // Need to stringify because the Core function returns a string as well\n  if (val && paramsToStringify.includes(correctedParam)) {\n    return JSON.stringify(val);\n  }\n\n  if (defaultType === 'boolean' && !isUndefined(val)) {\n    const value = val;\n    if (value === 'true' || value === '1') {\n      return true;\n    }\n    if (value === 'false' || value === '0') {\n      return false;\n    }\n  }\n\n  return val || defaultValue;\n} : window.Core.getHashParameter;\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n","export const panelMinWidth = 264;\nexport const RESIZE_BAR_WIDTH = 14;\n\n/**\n * The different available pre-built panels options.\n * @name UI.Panels\n * @property {string} OUTLINE - Represents the OUTLINE panel.\n * @property {string} SIGNATURE - Represents the SIGNATURE panel.\n * @property {string} BOOKMARKS - Represents the BOOKMARKS panel.\n * @property {string} FILE_ATTACHMENT - Represents the FILE_ATTACHMENT panel.\n * @property {string} THUMBNAIL - Represents the THUMBNAIL panel.\n * @property {string} LAYERS - Represents the LAYERS panel.\n * @property {string} TEXT_EDITING - Represents the TEXT_EDITING panel.\n * @property {string} CHANGE_LIST - Represents the CHANGE_LIST panel.\n * @property {string} STYLE - Represents the STYLE panel.\n * @property {string} REDACTION - Represents the REDACTION panel.\n * @property {string} SEARCH - Represents the SEARCH panel.\n * @property {string} NOTES - Represents the NOTES panel.\n * @property {string} TABS - Represents the TABS panel.\n * @property {string} SIGNATURE_LIST - Represents the SIGNATURE_LIST panel.\n * @property {string} RUBBER_STAMP - Represents the RUBBER_STAMP panel.\n * @property {string} PORTFOLIO - Represents the PORTFOLIO panel.\n */\n\nexport const panelNames = {\n  OUTLINE: 'outlinesPanel',\n  SIGNATURE: 'signaturePanel',\n  BOOKMARKS: 'bookmarksPanel',\n  FILE_ATTACHMENT: 'fileAttachmentPanel',\n  THUMBNAIL: 'thumbnailsPanel',\n  LAYERS: 'layersPanel',\n  TEXT_EDITING: 'textEditingPanel',\n  CHANGE_LIST: 'changeListPanel',\n  STYLE: 'stylePanel',\n  REDACTION: 'redactionPanel',\n  SEARCH: 'searchPanel',\n  NOTES: 'notesPanel',\n  TABS: 'tabPanel',\n  SIGNATURE_LIST: 'signatureListPanel',\n  RUBBER_STAMP: 'rubberStampPanel',\n  PORTFOLIO: 'portfolioPanel',\n};\n\nexport const panelData = {\n  [panelNames.OUTLINE]: {\n    icon: 'icon-panel-outlines',\n    title: 'component.outlinesPanel',\n  },\n  [panelNames.SIGNATURE]: {\n    icon: 'icon-tool-signature',\n    title: 'component.signaturePanel',\n  },\n  [panelNames.BOOKMARKS]: {\n    icon: 'ic-bookmark',\n    title: 'component.bookmarksPanel',\n  },\n  [panelNames.FILE_ATTACHMENT]: {\n    icon: 'ic_fileattachment_24px',\n    title: 'component.attachmentPanel',\n  },\n  [panelNames.THUMBNAIL]: {\n    icon: 'icon-panel-thumbnail-line',\n    title: 'component.thumbnailsPanel',\n  },\n  [panelNames.LAYERS]: {\n    icon: 'ic-layer',\n    title: 'component.layersPanel',\n  },\n  [panelNames.TEXT_EDITING]: {\n    icon: 'icon-content-edit',\n    title: 'action.contentEditMode',\n  },\n  [panelNames.CHANGE_LIST]: {\n    icon: 'icon-header-compare',\n    title: 'component.comparePanel',\n  },\n  [panelNames.STYLE]: {\n    icon: 'icon-style-panel-toggle',\n    title: 'action.style',\n  },\n  [panelNames.REDACTION]: {\n    icon: 'icon-redact-panel',\n    title: 'annotation.redact',\n  },\n  [panelNames.SEARCH]: {\n    icon: 'icon-header-search',\n    title: 'component.searchPanel',\n  },\n  [panelNames.NOTES]: {\n    icon: 'icon-header-chat-line',\n    title: 'component.notesPanel',\n  },\n  [panelNames.PORTFOLIO]: {\n    icon: 'icon-pdf-portfolio',\n    title: 'portfolio.portfolioPanelTitle',\n  },\n  [panelNames.SIGNATURE_LIST]: {\n    icon: 'icon-tool-signature',\n    title: 'signatureListPanel.header',\n  },\n  [panelNames.RUBBER_STAMP]: {\n    icon: 'icon-tool-stamp-line',\n    title: 'annotation.rubberStamp',\n  },\n};\n\nexport const PANEL_SIZES = {\n  FULL_SIZE: 'full-size',\n  HALF_SIZE: 'half-size',\n  SMALL_SIZE: 'small-size',\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es-x/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './Icon.scss';\n\nclass Icon extends React.PureComponent {\n  static propTypes = {\n    className: PropTypes.string,\n    color: PropTypes.string,\n    glyph: PropTypes.string.isRequired,\n    fillColor: PropTypes.string,\n    strokeColor: PropTypes.string,\n    disabled: PropTypes.bool\n  }\n\n  constructor() {\n    super();\n    this.icon = React.createRef();\n  }\n\n  componentDidMount() {\n    this.updateSvg();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.glyph !== prevProps.glyph) {\n      this.updateSvg();\n    }\n  }\n\n  updateSvg() {\n    if (this.isInlineSvg()) {\n      const domElement = this.icon.current;\n\n      // remove existing svg\n      while (domElement.firstChild) {\n        domElement.removeChild(domElement.firstChild);\n      }\n\n      // innerHTML also works, but not in IE...\n      const svg = (new DOMParser()).parseFromString(this.props.glyph, 'image/svg+xml').querySelector('svg');\n      domElement.appendChild(svg);\n    }\n  }\n\n  isInlineSvg() {\n    const { glyph } = this.props;\n    return glyph && glyph.indexOf('<svg') === 0;\n  }\n\n  render() {\n    const { className = '', color, glyph, fillColor = '', strokeColor = '', disabled } = this.props;\n    // eslint-disable-next-line custom/no-hex-colors\n    const filter = (color && (color === 'rgba(255, 255, 255, 1)' || color === 'rgb(255, 255, 255)')) ? 'drop-shadow(0 0 .5px #333)' : undefined;\n    let svgElement;\n\n    try {\n      // eslint-disable-next-line global-require,import/no-dynamic-require\n      svgElement = this.isInlineSvg() ? glyph : require(`../../../assets/icons/${this.props.glyph}.svg`);\n    } catch {\n      svgElement = undefined;\n    }\n\n    const style = {\n      filter\n    };\n\n    if (!disabled) {\n      // eslint-disable-next-line custom/no-hex-colors\n      style.color = (color === 'rgba(0, 0, 0, 0)') ? '#808080' : color;\n      if (fillColor) {\n        svgElement = svgElement.replace('fill=\"none\"', `fill=\"#${fillColor}\"`);\n      }\n      if (strokeColor) {\n        svgElement = svgElement.replace('fill=\"stroke\"', `fill=\"#${strokeColor}\"`);\n      }\n    }\n\n    return (\n      <div\n        ref={this.icon}\n        className={classNames({\n          Icon: true,\n          [className]: true,\n          [fillColor]: true,\n          disabled,\n        })}\n        style={style}\n        /* eslint-disable react/no-danger */\n        dangerouslySetInnerHTML={{ __html: svgElement }}\n      />\n    );\n  }\n}\n\nexport default Icon;\n","import Icon from './Icon';\n\nexport default Icon;","import { MOBILE_SIZE, TABLET_SIZE } from 'constants/deviceSizes';\nimport getRootNode from 'helpers/getRootNode';\n\nconst isWebComponent = window.isApryseWebViewerWebComponent;\n\nexport const isDesktop = () => window.innerWidth > TABLET_SIZE || (isWebComponent && getRootNode()?.host.clientWidth > TABLET_SIZE);\nexport const isTabletAndMobile = () => window.innerWidth <= TABLET_SIZE || (isWebComponent && getRootNode()?.host.clientWidth <= TABLET_SIZE);\nexport const isMobile = () => window.innerWidth < MOBILE_SIZE || (isWebComponent && getRootNode()?.host.clientWidth < MOBILE_SIZE);\nexport const isIEEdge = navigator.userAgent.indexOf('Edge') > -1;\nexport const isIEEdgeChromium = navigator.userAgent.indexOf('Edg/') > -1;\nexport const isIE11 = navigator.userAgent.indexOf('Trident/7.0') > -1;\nexport const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\nexport const isIE = isIEEdge || isIE11;\n// https://stackoverflow.com/a/58064481\nexport const isIEEdgeLegacy = isIEEdge && !isIEEdgeChromium;\nconst checkForIOS13 = (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\nexport const isIOS = window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i) || checkForIOS13;\nexport const isIOSFullScreenSupported = !!document.documentElement.webkitRequestFullScreen;\nexport const isAndroid = window.navigator.userAgent.match(/Android/i);\nexport const isMobileDevice = isIOS || isAndroid || window.navigator.userAgent.match(/webOS|BlackBerry|IEMobile|Opera Mini/i);\nexport const isMobileDeviceFunc = () => window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) || window.navigator.userAgent.match(/Android/i) || window.navigator.userAgent.match(/webOS|BlackBerry|IEMobile|Opera Mini/i);\nexport const isMac = navigator.appVersion.indexOf('Mac') > -1;\nexport const isWindows = navigator.appVersion.indexOf('Windows') > -1;\n\nexport const isChrome = (function() {\n  // opera, edge, and maxthon have chrome in their useragent string so we need to be careful!\n  const opera = window.navigator.userAgent.match(/OPR/);\n  const maxthon = window.navigator.userAgent.match(/Maxthon/);\n  const edge = window.navigator.userAgent.match(/Edge/);\n\n  return (window.navigator.userAgent.match(/Chrome\\/(.*?) /) && !opera && !maxthon && !edge);\n})();\n\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (/^((?!chrome|android).)*$/.test(navigator.userAgent) && isIOS);\n\nexport const isChromeOniOS = window.navigator.userAgent.match(/CriOS\\/(.*?) /);\n\nexport const isFirefoxOniOS = window.navigator.userAgent.match(/(FxiOS)\\/(.*?) /);","import i18next from 'i18next';\nimport { OFFICE_EDITOR_TRACKED_CHANGE_KEY } from './officeEditor';\n\nexport const annotationMapKeys = {\n  SIGNATURE: 'signature',\n  FREE_HAND: 'freeHand',\n  FREE_HAND_HIGHLIGHT: 'freeHandHighlight',\n  FREE_TEXT: 'freeText',\n  MARK_INSERT_TEXT: 'markInsertText',\n  MARK_REPLACE_TEXT: 'markReplaceText',\n  DATE_FREE_TEXT: 'dateFreeText',\n  DISTANCE_MEASUREMENT: 'distanceMeasurement',\n  PERIMETER_MEASUREMENT: 'perimeterMeasurement',\n  ARC_MEASUREMENT: 'arcMeasurement',\n  RECTANGULAR_AREA_MEASUREMENT: 'rectangularAreaMeasurement',\n  CLOUDY_RECTANGULAR_AREA_MEASUREMENT: 'cloudyRectangularAreaMeasurement',\n  AREA_MEASUREMENT: 'areaMeasurement',\n  ELLIPSE_MEASUREMENT: 'ellipseMeasurement',\n  COUNT_MEASUREMENT: 'countMeasurement',\n  CALLOUT: 'callout',\n  LINE: 'line',\n  ARROW: 'arrow',\n  POLYGON: 'polygon',\n  CLOUD: 'cloud',\n  HIGHLIGHT: 'highlight',\n  UNDERLINE: 'underline',\n  SQUIGGLY: 'squiggly',\n  STRIKEOUT: 'strikeout',\n  REDACTION: 'redaction',\n  RECTANGLE: 'rectangle',\n  ELLIPSE: 'ellipse',\n  POLYLINE: 'polyline',\n  STICKY_NOTE: 'stickyNote',\n  STAMP: 'stamp',\n  IMAGE: 'image',\n  EDIT: 'edit',\n  PAN: 'pan',\n  CONTENT_EDIT_TOOL: 'ContentEditTool',\n  ADD_IMAGE_CONTENT: 'AddImageContentTool',\n  ADD_PARAGRAPH_TOOL: 'AddParagraphTool',\n  TEXT_SELECT: 'textSelect',\n  MARQUEE_ZOOM_TOOL: 'marqueeZoomTool',\n  MULTI_STYLE: 'MultiStyle',\n  ERASER: 'eraser',\n  CROP_PAGE: 'cropPage',\n  FILE_ATTACHMENT: 'fileattachment',\n  SOUND: 'sound',\n  THREE_D_ANNOTATION: 'threeDAnnotation',\n  TEXT_FIELD: 'textField',\n  SIGNATURE_FORM_FIELD: 'signatureFormField',\n  CHECK_BOX_FORM_FIELD: 'checkBoxFormField',\n  RADIO_BUTTON_FORM_FIELD: 'radioButtonFormField',\n  LIST_BOX_FORM_FIELD: 'listBoxFormField',\n  COMBO_BOX_FORM_FIELD: 'comboBoxFormField',\n  ARC: 'arc',\n  CHANGE_VIEW: 'changeView',\n  TRACKED_CHANGE: 'trackedChange',\n};\n\n/**\n * this is the map we used to get information about annotations and tools\n * for example, we can look for map.freeHand.currentStyleTab to get the current color palette for freeHandAnnotation and freeHandTool\n * ideally, this map file should be the only place which provides information about annotations and tools\n * if you are tempted to create a new map file(which maps a tool/annotation to something else) under this constants folder\n * please make sure that it is not possible to implement that map here\n * @ignore\n */\nconst map = {\n  [annotationMapKeys.SIGNATURE]: {\n    icon: 'icon-tool-signature',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['AnnotationCreateSignature'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation &&\n      annotation.Subject === i18next.t('annotation.signature'),\n  },\n  [annotationMapKeys.FREE_HAND]: {\n    icon: 'icon-tool-pen-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateFreeHand',\n      'AnnotationCreateFreeHand2',\n      'AnnotationCreateFreeHand3',\n      'AnnotationCreateFreeHand4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation,\n  },\n  [annotationMapKeys.FREE_HAND_HIGHLIGHT]: {\n    icon: 'icon-tool-pen-highlight',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateFreeHandHighlight',\n      'AnnotationCreateFreeHandHighlight2',\n      'AnnotationCreateFreeHandHighlight3',\n      'AnnotationCreateFreeHandHighlight4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation,\n  },\n  [annotationMapKeys.FREE_TEXT]: {\n    icon: 'icon-tool-text-free-text',\n    iconColor: 'TextColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateFreeText',\n      'AnnotationCreateFreeText2',\n      'AnnotationCreateFreeText3',\n      'AnnotationCreateFreeText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n      window.Core.Annotations.FreeTextAnnotation.Intent.FreeText,\n  },\n  [annotationMapKeys.MARK_INSERT_TEXT]: {\n    icon: 'ic-insert text',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateMarkInsertText',\n      'AnnotationCreateMarkInsertText2',\n      'AnnotationCreateMarkInsertText3',\n      'AnnotationCreateMarkInsertText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.CaretAnnotation\n  },\n  [annotationMapKeys.MARK_REPLACE_TEXT]: {\n    icon: 'ic-replace text',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateMarkReplaceText',\n      'AnnotationCreateMarkReplaceText2',\n      'AnnotationCreateMarkReplaceText3',\n      'AnnotationCreateMarkReplaceText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.CaretAnnotation\n  },\n  [annotationMapKeys.DATE_FREE_TEXT]: {\n    icon: 'icon-tool-fill-and-sign-calendar',\n    iconColor: 'TextColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateDateFreeText',\n      'AnnotationCreateDateFreeText2',\n      'AnnotationCreateDateFreeText3',\n      'AnnotationCreateDateFreeText4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n        window.Core.Annotations.FreeTextAnnotation.Intent.FreeText,\n  },\n  [annotationMapKeys.DISTANCE_MEASUREMENT]: {\n    icon: 'icon-tool-measurement-distance-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateDistanceMeasurement',\n      'AnnotationCreateDistanceMeasurement2',\n      'AnnotationCreateDistanceMeasurement3',\n      'AnnotationCreateDistanceMeasurement4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.LineAnnotation &&\n      annotation.IT === 'LineDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.PERIMETER_MEASUREMENT]: {\n    icon: 'icon-tool-measurement-perimeter',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreatePerimeterMeasurement',\n      'AnnotationCreatePerimeterMeasurement2',\n      'AnnotationCreatePerimeterMeasurement3',\n      'AnnotationCreatePerimeterMeasurement4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolylineAnnotation &&\n      annotation.IT === 'PolyLineDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.ARC_MEASUREMENT]: {\n    icon: 'icon-tool-measurement-arc',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArcMeasurement',\n      'AnnotationCreateArcMeasurement2',\n      'AnnotationCreateArcMeasurement3',\n      'AnnotationCreateArcMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.ArcAnnotation &&\n      annotation.IT === 'ArcDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.RECTANGULAR_AREA_MEASUREMENT]: {\n    icon: 'ic_annotation_rectangular_area_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRectangularAreaMeasurement',\n      'AnnotationCreateRectangularAreaMeasurement2',\n      'AnnotationCreateRectangularAreaMeasurement3',\n      'AnnotationCreateRectangularAreaMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure &&\n      annotation.isRectangularPolygon(),\n  },\n  [annotationMapKeys.CLOUDY_RECTANGULAR_AREA_MEASUREMENT]: {\n    icon: 'ic_annotation_cloudy_rectangular_area_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateCloudyRectangularAreaMeasurement',\n      'AnnotationCreateCloudyRectangularAreaMeasurement2',\n      'AnnotationCreateCloudyRectangularAreaMeasurement3',\n      'AnnotationCreateCloudyRectangularAreaMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure &&\n      annotation.isRectangularPolygon(),\n  },\n  [annotationMapKeys.AREA_MEASUREMENT]: {\n    icon: 'ic_annotation_area_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateAreaMeasurement',\n      'AnnotationCreateAreaMeasurement2',\n      'AnnotationCreateAreaMeasurement3',\n      'AnnotationCreateAreaMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.IT === 'PolygonDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.ELLIPSE_MEASUREMENT]: {\n    icon: 'ic_annotation_ellipse_area_black',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateEllipseMeasurement',\n      'AnnotationCreateEllipseMeasurement2',\n      'AnnotationCreateEllipseMeasurement3',\n      'AnnotationCreateEllipseMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.EllipseAnnotation &&\n      annotation.IT === 'EllipseDimension' &&\n      annotation.Measure,\n  },\n  [annotationMapKeys.COUNT_MEASUREMENT]: {\n    icon: 'ic_check_black_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateCountMeasurement',\n      'AnnotationCreateCountMeasurement2',\n      'AnnotationCreateCountMeasurement3',\n      'AnnotationCreateCountMeasurement4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.StickyAnnotation &&\n      annotation.getCustomData('trn-is-count')\n  },\n  [annotationMapKeys.CALLOUT]: {\n    icon: 'icon-tool-callout-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateCallout',\n      'AnnotationCreateCallout2',\n      'AnnotationCreateCallout3',\n      'AnnotationCreateCallout4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n      annotation.getIntent() ===\n      window.Core.Annotations.FreeTextAnnotation.Intent.FreeTextCallout,\n  },\n  [annotationMapKeys.LINE]: {\n    icon: 'icon-tool-shape-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateLine',\n      'AnnotationCreateLine2',\n      'AnnotationCreateLine3',\n      'AnnotationCreateLine4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.LineAnnotation &&\n    annotation.IT !== 'LineArrow',\n  },\n  [annotationMapKeys.ARROW]: {\n    icon: 'icon-tool-shape-arrow',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArrow',\n      'AnnotationCreateArrow2',\n      'AnnotationCreateArrow3',\n      'AnnotationCreateArrow4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.LineAnnotation &&\n    annotation.IT === 'LineArrow',\n  },\n  [annotationMapKeys.POLYGON]: {\n    icon: 'icon-tool-shape-polygon',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreatePolygon',\n      'AnnotationCreatePolygon2',\n      'AnnotationCreatePolygon3',\n      'AnnotationCreatePolygon4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.Style !== 'cloudy',\n  },\n  [annotationMapKeys.CLOUD]: {\n    icon: 'icon-tool-shape-cloud',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreatePolygonCloud',\n      'AnnotationCreatePolygonCloud2',\n      'AnnotationCreatePolygonCloud3',\n      'AnnotationCreatePolygonCloud4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolygonAnnotation &&\n      annotation.Style === 'cloudy',\n  },\n  [annotationMapKeys.HIGHLIGHT]: {\n    icon: 'icon-tool-text-manipulation-highlight',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextHighlight',\n      'AnnotationCreateTextHighlight2',\n      'AnnotationCreateTextHighlight3',\n      'AnnotationCreateTextHighlight4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextHighlightAnnotation &&\n      annotation.getCustomData(OFFICE_EDITOR_TRACKED_CHANGE_KEY) === '',\n  },\n  [annotationMapKeys.UNDERLINE]: {\n    icon: 'icon-tool-text-manipulation-underline',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextUnderline',\n      'AnnotationCreateTextUnderline2',\n      'AnnotationCreateTextUnderline3',\n      'AnnotationCreateTextUnderline4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextUnderlineAnnotation,\n  },\n  [annotationMapKeys.SQUIGGLY]: {\n    icon: 'icon-tool-text-manipulation-squiggly',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextSquiggly',\n      'AnnotationCreateTextSquiggly2',\n      'AnnotationCreateTextSquiggly3',\n      'AnnotationCreateTextSquiggly4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextSquigglyAnnotation,\n  },\n  [annotationMapKeys.STRIKEOUT]: {\n    icon: 'icon-tool-text-manipulation-strikethrough',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateTextStrikeout',\n      'AnnotationCreateTextStrikeout2',\n      'AnnotationCreateTextStrikeout3',\n      'AnnotationCreateTextStrikeout4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextStrikeoutAnnotation,\n  },\n  [annotationMapKeys.REDACTION]: {\n    icon: 'icon-tool-select-area-redaction',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRedaction',\n      'AnnotationCreateRedaction2',\n      'AnnotationCreateRedaction3',\n      'AnnotationCreateRedaction4'\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RedactionAnnotation,\n  },\n  [annotationMapKeys.RECTANGLE]: {\n    icon: 'icon-tool-shape-rectangle',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateRectangle',\n      'AnnotationCreateRectangle2',\n      'AnnotationCreateRectangle3',\n      'AnnotationCreateRectangle4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === '',\n  },\n  [annotationMapKeys.ELLIPSE]: {\n    icon: 'icon-tool-shape-oval',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor', 'FillColor'],\n    toolNames: [\n      'AnnotationCreateEllipse',\n      'AnnotationCreateEllipse2',\n      'AnnotationCreateEllipse3',\n      'AnnotationCreateEllipse4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.EllipseAnnotation,\n  },\n  [annotationMapKeys.ARC]: {\n    icon: 'icon-tool-arc',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateArc',\n      'AnnotationCreateArc2',\n      'AnnotationCreateArc3',\n      'AnnotationCreateArc4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.ArcAnnotation\n  },\n  [annotationMapKeys.POLYLINE]: {\n    icon: 'icon-tool-shape-polyline',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreatePolyline',\n      'AnnotationCreatePolyline2',\n      'AnnotationCreatePolyline3',\n      'AnnotationCreatePolyline4',\n    ],\n    hasLineEndings: true,\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.PolylineAnnotation,\n  },\n  [annotationMapKeys.STICKY_NOTE]: {\n    icon: 'icon-tool-comment-line',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateSticky',\n      'AnnotationCreateSticky2',\n      'AnnotationCreateSticky3',\n      'AnnotationCreateSticky4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.StickyAnnotation,\n  },\n  [annotationMapKeys.CHANGE_VIEW]: {\n    icon: 'icon-tool-changeview',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'AnnotationCreateChangeViewTool',\n      'AnnotationCreateChangeViewTool2',\n      'AnnotationCreateChangeViewTool3',\n      'AnnotationCreateChangeViewTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.StampAnnotation && annotation.ViewState,\n  },\n  [annotationMapKeys.IMAGE]: {\n    icon: 'icon-tool-image-line',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: [\n      'AnnotationCreateRubberStamp',\n    ],\n    annotationCheck: (annotation) => {\n      return annotation instanceof window.Core.Annotations.StampAnnotation &&\n      annotation.ToolName === 'AnnotationCreateStamp';\n    },\n  },\n  [annotationMapKeys.STAMP]: {\n    icon: 'icon-tool-stamp-line',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: [\n      'AnnotationCreateStamp',\n    ],\n    annotationCheck: (annotation) => {\n      return annotation instanceof window.Core.Annotations.StampAnnotation;\n    },\n  },\n  [annotationMapKeys.EDIT]: {\n    icon: 'ic_select_black_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AnnotationEdit'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.PAN]: {\n    icon: 'icon-header-pan',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['Pan'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.CONTENT_EDIT_TOOL]: {\n    icon: 'ic_edit_page_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['ContentEditTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.ADD_PARAGRAPH]: {\n    icon: 'ic-paragraph',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AddParagraphTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.ADD_IMAGE_CONTENT]: {\n    icon: 'icon-tool-image-line',\n    iconColor: null,\n    currentPalette: null,\n    availablePalettes: [],\n    toolNames: ['AddImageContentTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.TEXT_SELECT]: {\n    icon: 'textselect_cursor',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['TextSelect'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.MARQUEE_ZOOM_TOOL]: {\n    icon: null,\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['MarqueeZoomTool'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.MULTI_STYLE]: {\n    icon: '',\n    iconColor: null,\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: [],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.ERASER]: {\n    icon: 'ic_annotation_eraser_black_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AnnotationEraserTool'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FreeHandAnnotation,\n  },\n  [annotationMapKeys.CROP_PAGE]: {\n    icon: 'ic_crop_black_24px',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['CropPage'],\n    annotationCheck: null,\n  },\n  [annotationMapKeys.FILE_ATTACHMENT]: {\n    icon: 'ic_fileattachment_24px',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['AnnotationCreateFileAttachment'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.FileAttachmentAnnotation,\n  },\n  [annotationMapKeys.SOUND]: {\n    icon: 'ic_sound_24px',\n    iconColor: 'FillColor',\n    validStyleTabs: ['FillColor', 'StrokeColor'],\n    currentStyleTab: 'FillColor',\n    styleTabs: ['FillColor', 'StrokeColor'],\n    toolNames: [],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.SoundAnnotation,\n  },\n  [annotationMapKeys.THREE_D_ANNOTATION]: {\n    icon: 'icon-tool-model3d',\n    iconColor: null,\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: ['AnnotationCreateThreeD'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.Model3DAnnotation,\n  },\n  [annotationMapKeys.TEXT_FIELD]: {\n    icon: 'icon-form-field-text',\n    iconColor: 'TextColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'TextColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'TextFormFieldCreateTool',\n      'TextFormFieldCreateTool2',\n      'TextFormFieldCreateTool3',\n      'TextFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'TextFormField'\n  },\n  [annotationMapKeys.SIGNATURE_FORM_FIELD]: {\n    icon: 'icon-form-field-signature',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: [\n      'SignatureFormFieldCreateTool',\n      'SignatureFormFieldCreateTool2',\n      'SignatureFormFieldCreateTool3',\n      'SignatureFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'SignatureFormField'\n  },\n  [annotationMapKeys.CHECK_BOX_FORM_FIELD]: {\n    icon: 'icon-form-field-checkbox',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['CheckBoxFormFieldCreateTool'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'CheckBoxFormField'\n  },\n  [annotationMapKeys.RADIO_BUTTON_FORM_FIELD]: {\n    icon: 'icon-form-field-radiobutton',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['StrokeColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['StrokeColor'],\n    toolNames: ['RadioButtonFormFieldCreateTool'],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'RadioButtonFormField'\n  },\n  [annotationMapKeys.LIST_BOX_FORM_FIELD]: {\n    icon: 'icon-form-field-listbox',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'ListBoxFormFieldCreateTool',\n      'ListBoxFormFieldCreateTool2',\n      'ListBoxFormFieldCreateTool3',\n      'ListBoxFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'ListBoxFormField'\n  },\n  [annotationMapKeys.COMBO_BOX_FORM_FIELD]: {\n    icon: 'icon-form-field-combobox',\n    iconColor: 'StrokeColor',\n    validStyleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    currentStyleTab: 'StrokeColor',\n    styleTabs: ['TextColor', 'StrokeColor', 'FillColor'],\n    toolNames: [\n      'ComboBoxFormFieldCreateTool',\n      'ComboBoxFormFieldCreateTool2',\n      'ComboBoxFormFieldCreateTool3',\n      'ComboBoxFormFieldCreateTool4',\n    ],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.RectangleAnnotation &&\n      annotation.getCustomData('trn-form-field-type') === 'ComboBoxFormField'\n  },\n  [annotationMapKeys.TRACKED_CHANGE]: {\n    icon: 'ic-edit-page',\n    iconColor: 'FillColor',\n    validStyleTabs: [],\n    currentStyleTab: null,\n    styleTabs: [],\n    toolNames: [],\n    annotationCheck: (annotation) => annotation instanceof window.Core.Annotations.TextHighlightAnnotation &&\n      annotation.getCustomData(OFFICE_EDITOR_TRACKED_CHANGE_KEY)\n  },\n};\n\nexport const mapToolNameToKey = (toolName) => Object.keys(map).find((key) => map[key].toolNames.includes(toolName));\n\nexport const mapAnnotationToKey = (annotation) => Object.keys(map).find((key) => {\n  const { annotationCheck } = map[key];\n  return annotationCheck && annotationCheck(annotation);\n});\n\nexport const mapAnnotationToToolName = (annotation) => map[mapAnnotationToKey(annotation)].toolNames[0];\n\nexport const mapKeyToToolNames = (key) => map[key].toolNames;\n\nexport const copyMapWithDataProperties = (...properties) => Object.keys(map).reduce((newMap, key) => {\n  newMap[key] = {};\n  properties.forEach((property) => {\n    newMap[key][property] = map[key][property];\n  });\n\n  return newMap;\n}, {});\n\nexport const register = (tool, annotationConstructor, customAnnotCheckFunc) => {\n  const { toolName, buttonImage, toolObject } = tool;\n  const key = toolName;\n  const styleTabs = ['TextColor', 'StrokeColor', 'FillColor'].filter(\n    (property) => toolObject.defaults && toolObject.defaults[property],\n  );\n\n  map[key] = {\n    icon: buttonImage,\n    iconColor: styleTabs[0],\n    currentStyleTab: styleTabs[0],\n    styleTabs,\n    toolNames: [toolName],\n    annotationCheck: customAnnotCheckFunc ?\n      (annotation) => customAnnotCheckFunc(annotation) :\n      (annotationConstructor ? (annotation) => annotation instanceof annotationConstructor : null)\n  };\n};\n\n// we return an empty object here to prevent some components from accessing undefined\n// if the map doesn't have a key for some annotations\nexport const getDataWithKey = (key) => map[key] || { icon: 'ic_fileattachment_24px' };\n\nexport const getMap = () => map;\n\nexport const updateAnnotationStylePopupTabs = (annotationKey, newAnnotationStyleTabs, initialTab) => {\n  if (map[annotationKey] === undefined) {\n    return console.error(\n      'The annotation key is invalid. Please provide a valid annotation key. Valid annotation keys can be retrieved through instance.UI.AnnotationKeys.'\n    );\n  }\n\n  newAnnotationStyleTabs = [...new Set(newAnnotationStyleTabs)];\n\n  const { validStyleTabs } = map[annotationKey];\n  const invalidTabs = newAnnotationStyleTabs.filter((styleTab) => {\n    return !validStyleTabs.includes(styleTab);\n  });\n\n  if (invalidTabs.length > 0) {\n    return console.error(\n      `Please provide new valid annotation style tabs. The valid tabs are: ${map[annotationKey].validStyleTabs.join(', ')}`\n    );\n  }\n\n  if (initialTab && !newAnnotationStyleTabs.includes(initialTab)) {\n    return console.error(\n      `Initial tab is not valid. Valid initial tabs are: ${newAnnotationStyleTabs.join(', ')}`\n    );\n  }\n\n  map[annotationKey].styleTabs = newAnnotationStyleTabs;\n  if (!initialTab) {\n    map[annotationKey].currentStyleTab = newAnnotationStyleTabs[0];\n  } else {\n    map[annotationKey].currentStyleTab = initialTab;\n  }\n  return true;\n};\n\n\n/**\n * A constant containing keys that identify annotations.\n * @name UI.AnnotationKeys\n * @property {string} SIGNATURE The key represents the signature annotation\n * @property {string} FREE_HAND The key represents the free hand annotation\n * @property {string} FREE_HAND_HIGHLIGHT The key represents the free hand highlight annotation\n * @property {string} FREE_TEXT The key represents the free text annotation\n * @property {string} DATE_FREE_TEXT The key represents the date free text annotation\n * @property {string} DISTANCE_MEASUREMENT The key represents the distance measurement annotation\n * @property {string} PERIMETER_MEASUREMENT The key represents the perimeter measurement annotation\n * @property {string} ARC_MEASUREMENT The key represents the arc measurement annotation\n * @property {string} RECTANGULAR_AREA_MEASUREMENT The key represents the rectangular area measurement annotation\n * @property {string} CLOUDY_RECTANGULAR_AREA_MEASUREMENT The key represents the cloudy rectangular area measurement annotation\n * @property {string} AREA_MEASUREMENT The key represents the area measurement annotation\n * @property {string} ELLIPSE_MEASUREMENT The key represents the ellipse measurement annotation\n * @property {string} COUNT_MEASUREMENT The key represents the count measurement annotation\n * @property {string} CALLOUT The key represents the callout annotation\n * @property {string} LINE The key represents the line annotation\n * @property {string} ARROW The key represents the arrow annotation\n * @property {string} POLYGON The key represents the polygon annotation\n * @property {string} CLOUD The key represents the cloud annotation\n * @property {string} HIGHLIGHT The key represents the highlight annotation\n * @property {string} UNDERLINE The key represents the underline annotation\n * @property {string} SQUIGGLY The key represents the squiggly annotation\n * @property {string} STRIKEOUT The key represents the strikeout annotation\n * @property {string} REDACTION The key represents the redaction annotation\n * @property {string} RECTANGLE The key represents the rectangle annotation\n * @property {string} ELLIPSE The key represents the ellipse annotation\n * @property {string} ARC The key represents the arc annotation\n * @property {string} POLYLINE The key represents the polyline annotation\n * @property {string} STICKYNOTE The key represents the sticky note annotation\n * @property {string} IMAGE The key represents the image annotation\n * @property {string} STAMP The key represents the stamp annotaiton\n * @property {string} EDIT The key represents the edit annotation\n * @property {string} PAN The key represents the pan annotation\n * @property {string} CONTENT_EDIT_TOOL The key represents the content edit tool annotation\n * @property {string} ADD_PARAGRAPH_TOOL The key represents the add paragraph tool annotation\n * @property {string} TEXT_SELECT The key represents the text select annotation\n * @property {string} MARQUEE_ZOOM_TOOL The key represents the marquee zoom tool annotation\n * @property {string} ERASER The key represents the eraser annotation\n * @property {string} CROP_PAGE The key represents the crop page annotation\n * @property {string} FILE_ATTACHMENT The key represents the file attachment annotation\n * @property {string} SOUND The key represents the sound annotation\n * @property {string} THREE_D_ANNOTATION The key represents the 3D annotation\n * @property {string} TEXT_FIELD The key represents the text field annotation\n * @property {string} SIGNATURE_FORM_FIELD The key represents the signature form field annotation\n * @property {string} CHECK_BOX_FORM_FIELD The key represents the check box form field annotaiton\n * @property {string} RADIO_BUTTON_FORM_FIELD The key represents the radio button form field annotation\n * @property {string} LIST_BOX_FORM_FIELD The key represents list box form field annotation\n * @property {string} COMBO_BOX_FORM_FIELD The key represents the combo box form field annotation\n */\n\nexport const AnnotationKeys = {\n  SIGNATURE: 'signature',\n  FREE_HAND: 'freeHand',\n  FREE_HAND_HIGHLIGHT: 'freeHandHighlight',\n  FREE_TEXT: 'freeText',\n  DATE_FREE_TEXT: 'dateFreeText',\n  DISTANCE_MEASUREMENT: 'distanceMeasurement',\n  PERIMETER_MEASUREMENT: 'perimeterMeasurement',\n  ARC_MEASUREMENT: 'arcMeasurement',\n  RECTANGULAR_AREA_MEASUREMENT: 'rectangularAreaMeasurement',\n  CLOUDY_RECTANGULAR_AREA_MEASUREMENT: 'cloudyRectangularAreaMeasurement',\n  AREA_MEASUREMENT: 'areaMeasurement',\n  ELLIPSE_MEASUREMENT: 'ellipseMeasurement',\n  COUNT_MEASUREMENT: 'countMeasurement',\n  CALLOUT: 'callout',\n  LINE: 'line',\n  ARROW: 'arrow',\n  POLYGON: 'polygon',\n  CLOUD: 'cloud',\n  HIGHLIGHT: 'highlight',\n  UNDERLINE: 'underline',\n  SQUIGGLY: 'squiggly',\n  STRIKEOUT: 'strikeout',\n  REDACTION: 'redaction',\n  RECTANGLE: 'rectangle',\n  ELLIPSE: 'ellipse',\n  ARC: 'arc',\n  POLYLINE: 'polyline',\n  STICKYNOTE: 'stickyNote',\n  IMAGE: 'image',\n  STAMP: 'stamp',\n  EDIT: 'edit',\n  PAN: 'pan',\n  CONTENT_EDIT_TOOL: 'contentEditTool',\n  ADD_PARAGRAPH_TOOL: 'addParagraphTool',\n  TEXT_SELECT: 'textSelect',\n  MARQUEE_ZOOM_TOOL: 'marqueeZoomTool',\n  ERASER: 'eraser',\n  CROP_PAGE: 'cropPage',\n  FILE_ATTACHMENT: 'fileAttachment',\n  SOUND: 'sound',\n  THREE_D_ANNOTATION: 'threeDAnnotation',\n  TEXT_FIELD: 'textField',\n  SIGNATURE_FORM_FIELD: 'signatureFormField',\n  CHECK_BOX_FORM_FIELD: 'checkBoxFormField',\n  RADIO_BUTTON_FORM_FIELD: 'radioButtonFormField',\n  LIST_BOX_FORM_FIELD: 'listBoxFormField',\n  COMBO_BOX_FORM_FIELD: 'comboBoxFormField',\n};\n\n/**\n * The different available style tabs in the annotation popup.\n * @name UI.AnnotationStylePopupTabs\n * @property {string} TEXT_COLOR Indicates the text style tab in the annotation popup window\n * @property {string} STROKE_COLOR Indicates the stroke color tab in the annotation popup window\n * @property {string} FILL_COLOR Indicates the fill color tab in the annotation popup window\n */\n\nexport const AnnotationStylePopupTabs = {\n  TEXT_COLOR: 'TextColor',\n  STROKE_COLOR: 'StrokeColor',\n  FILL_COLOR: 'FillColor'\n};\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Tooltip from 'components/Tooltip';\nimport Icon from 'components/Icon';\nimport { shortcutAria } from 'helpers/hotkeysManager';\nimport selectors from 'selectors';\nimport { getClickMiddleWare, ClickedItemTypes } from 'helpers/clickTracker';\nimport { createAnnouncement } from 'helpers/accessibility';\n\nimport './Button.scss';\n\nconst NOOP = (e) => {\n  e?.stopPropagation();\n  e?.preventDefault();\n};\n\nconst propTypes = {\n  isActive: PropTypes.bool,\n  mediaQueryClassName: PropTypes.string,\n  img: PropTypes.string,\n  label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  title: PropTypes.string,\n  color: PropTypes.string,\n  dataElement: PropTypes.string,\n  className: PropTypes.string,\n  onClick: PropTypes.func,\n  onDoubleClick: PropTypes.func,\n  onMouseUp: PropTypes.func,\n  isSubmitType: PropTypes.bool,\n  /** Will override translated title if both given. */\n  ariaLabel: PropTypes.string,\n  ariaControls: PropTypes.string,\n  role: PropTypes.string,\n  hideTooltipShortcut: PropTypes.bool,\n  useI18String: PropTypes.bool,\n  shouldPassActiveDocumentViewerKeyToOnClickHandler: PropTypes.bool,\n};\n\nconst Button = (props) => {\n  const [removeElement, isCustomUI, customOverrides = {}, activeDocumentViewerKey = 1] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, props.dataElement),\n      selectors.getFeatureFlags(state)?.customizableUI,\n      selectors.getCustomElementOverrides(state, props.dataElement),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const {\n    // old name for disabled. We are keeping it for backwards compatibility\n    // should remove in the future .\n    disable,\n    disabled,\n    isActive,\n    mediaQueryClassName,\n    img,\n    tabIndex,\n    label,\n    useI18String = true,\n    color,\n    dataElement,\n    onClick,\n    onDoubleClick,\n    onMouseUp,\n    className,\n    title,\n    style,\n    ariaLabel,\n    ariaControls,\n    role,\n    strokeColor,\n    fillColor,\n    hideTooltipShortcut,\n    iconClassName,\n    forceTooltipPosition,\n    isSubmitType,\n    hideOnClick,\n    shouldPassActiveDocumentViewerKeyToOnClickHandler,\n    onClickAnnouncement,\n  } = { ...props, ...customOverrides };\n  const [t] = useTranslation();\n\n  const customOverrideClasses = {};\n  if (customOverrides && customOverrides.hidden && customOverrides.hidden.length) {\n    for (const screenSize of customOverrides.hidden) {\n      customOverrideClasses[`hide-in-${screenSize}`] = true;\n    }\n  }\n\n  const aLabel = ariaLabel || (title ? t(title) : undefined);\n  const aControls = ariaControls || '';\n\n  const shortcutKey = title ? title.slice(title.indexOf('.') + 1) : undefined;\n  const ariaKeyshortcuts = shortcutKey ? shortcutAria(shortcutKey) : undefined;\n\n  const isBase64 = img?.trim().startsWith('data:');\n\n  const imgToShow = img;\n\n  // for backwards compatibility\n  const actuallyDisabled = disable || disabled;\n  let onClickHandler;\n  if (shouldPassActiveDocumentViewerKeyToOnClickHandler) {\n    onClickHandler = () => {\n      createAnnouncement(onClickAnnouncement);\n      getClickMiddleWare()?.(dataElement, { type: ClickedItemTypes.BUTTON });\n      if (onClick) {\n        return onClick(activeDocumentViewerKey);\n      }\n    };\n  } else {\n    onClickHandler = (e) => {\n      createAnnouncement(onClickAnnouncement);\n      getClickMiddleWare()?.(dataElement, { type: ClickedItemTypes.BUTTON });\n      if (onClick) {\n        return onClick(e);\n      }\n    };\n  }\n\n  // if there is no file extension then assume that this is a glyph\n  const isGlyph =\n    img && !isBase64 && (!img.includes('.') || img.startsWith('<svg'));\n  const shouldRenderTooltip = !!title;\n  const children = (\n    <button\n      className={classNames({\n        Button: true,\n        active: isActive && !actuallyDisabled,\n        disabled: actuallyDisabled,\n        [mediaQueryClassName]: mediaQueryClassName,\n        [className]: className,\n        ...customOverrideClasses,\n        'modular-ui': isCustomUI,\n        'icon-only': isGlyph && !label,\n      })}\n      style={style}\n      data-element={dataElement}\n      // Can't use button disabled property here.\n      // Because mouse events won't fire and we want them to\n      // so that we can show the button tooltip\n      onClick={actuallyDisabled ? NOOP : onClickHandler}\n      onDoubleClick={actuallyDisabled ? NOOP : onDoubleClick}\n      onMouseUp={actuallyDisabled ? NOOP : onMouseUp}\n      aria-label={aLabel}\n      aria-controls={aControls}\n      role={role}\n      tabIndex={tabIndex}\n      aria-keyshortcuts={ariaKeyshortcuts}\n      aria-expanded={isActive}\n      type={isSubmitType ? 'submit' : 'button'}\n      disabled={actuallyDisabled}\n    >\n      {isGlyph && (\n        <Icon\n          disabled={actuallyDisabled}\n          glyph={imgToShow}\n          color={color}\n          fillColor={fillColor}\n          strokeColor={strokeColor}\n          className={iconClassName}\n        />\n      )}\n      {imgToShow && !isGlyph && <img src={imgToShow} />}\n      {\n        label && (useI18String ?\n          <span>{t(label)}</span> :\n          <span>{label}</span>)\n      }\n    </button>\n  );\n\n  return removeElement ? null : shouldRenderTooltip ? (\n    <Tooltip\n      content={title}\n      hideShortcut={hideTooltipShortcut || actuallyDisabled}\n      forcePosition={forceTooltipPosition}\n      hideOnClick={hideOnClick}\n    >\n      {children}\n    </Tooltip>\n  ) : (\n    children\n  );\n};\n\nButton.propTypes = propTypes;\n\nexport default React.memo(Button);\n","import Button from './Button';\n\nexport default Button;","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","/**\n * Contains string enums for WebViewer UI events.\n * @name UI.Events\n * @property {string} ANNOTATION_FILTER_CHANGED {@link UI#event:annotationFilterChanged UI.Events.annotationFilterChanged}\n * @property {string} DOCUMENT_LOADED {@link UI#event:documentLoaded UI.Events.documentLoaded}\n * @property {string} DOCUMENT_MERGED {@link UI#event:documentMerged UI.Events.documentMerged}\n * @property {string} FILE_DOWNLOADED {@link UI#event:fileDownloaded UI.Events.fileDownloaded}\n * @property {string} LOAD_ERROR {@link UI#event:loaderror UI.Events.loaderror}\n * @property {string} DRAG_OUTLINE {@link UI#event:dragOutline UI.Events.dragOutline}\n * @property {string} DROP_OUTLINE {@link UI#event:dropOutline UI.Events.dropOutline}\n * @property {string} PANEL_RESIZED {@link UI#event:panelResized UI.Events.panelResized}\n * @property {string} THEME_CHANGED {@link UI#event:themeChanged UI.Events.themeChanged}\n * @property {string} TOOLBAR_GROUP_CHANGED {@link UI#event:toolbarGroupChanged UI.Events.toolbarGroupChanged}\n * @property {string} SELECTED_THUMBNAIL_CHANGED {@link UI#event:selectedThumbnailChanged UI.Events.selectedThumbnailChanged}\n * @property {string} THUMBNAIL_DRAGGED {@link UI#event:thumbnailDragged UI.Events.thumbnailDragged}\n * @property {string} THUMBNAIL_DROPPED {@link UI#event:thumbnailDropped UI.Events.thumbnailDropped}\n * @property {string} USER_BOOKMARKS_CHANGED {@link UI#event:userBookmarksChanged UI.Events.userBookmarksChanged}\n * @property {string} OUTLINE_BOOKMARKS_CHANGED {@link UI#event:outlineBookmarksChanged UI.Events.outlineBookmarksChanged}\n * @property {string} VIEWER_LOADED {@link UI#event:viewerLoaded UI.Events.viewerLoaded}\n * @property {string} VISIBILITY_CHANGED {@link UI#event:visibilityChanged UI.Events.visibilityChanged}\n * @property {string} FULLSCREEN_MODE_TOGGLED {@link UI#event:fullscreenModeToggled UI.Events.fullscreenModeToggled}\n * @property {string} BEFORE_TAB_CHANGED {@link UI#event:beforeTabChanged UI.Events.beforeTabChanged}\n * @property {string} TAB_DELETED {@link UI#event:tabDeleted UI.Events.tabDeleted}\n * @property {string} TAB_ADDED {@link UI#event:tabAdded UI.Events.tabAdded}\n * @property {string} TAB_MOVED {@link UI#event:tabMoved UI.Events.tabMoved}\n * @property {string} LANGUAGE_CHANGED {@link UI#event:tabMoved UI.Events.languageChanged}\n * @property {string} MULTI_VIEWER_READY {@link UI#event:multiViewerReady  UI.Events.multiViewerReady }\n * @property {string} COMPARE_ANNOTATIONS_LOADED {@link UI#event:compareAnnotationsLoaded  UI.Events.compareAnnotationsLoaded }\n * @property {string} TAB_MANAGER_READY {@link UI#event:onTabManagerReady  UI.Events.onTabManagerReady }\n * @property {string} TOOLTIP_OPENED {@link UI#event:tooltipOpened  UI.Events.tooltipOpened }\n * @example\n  WebViewer(...).then(function(instance) {\n    const UIEvents = instance.UI.Events;\n    instance.UI.addEventListener(UIEvents.ANNOTATION_FILTER_CHANGED, e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n    });\n  });\n */\n\nexport default {\n  'ANNOTATION_FILTER_CHANGED': 'annotationFilterChanged',\n  'DOCUMENT_LOADED': 'documentLoaded',\n  'DOCUMENT_MERGED': 'documentMerged',\n  'FILE_DOWNLOADED': 'fileDownloaded',\n  'LOAD_ERROR': 'loaderror',\n  'DRAG_OUTLINE': 'dragOutline',\n  'DROP_OUTLINE': 'dropOutline',\n  'PANEL_RESIZED': 'panelResized',\n  'THEME_CHANGED': 'themeChanged',\n  'TOOLBAR_GROUP_CHANGED': 'toolbarGroupChanged',\n  'SELECTED_THUMBNAIL_CHANGED': 'selectedThumbnailChanged',\n  'THUMBNAIL_DRAGGED': 'thumbnailDragged',\n  'THUMBNAIL_DROPPED': 'thumbnailDropped',\n  'USER_BOOKMARKS_CHANGED': 'userBookmarksChanged',\n  'OUTLINE_BOOKMARKS_CHANGED': 'outlineBookmarksChanged',\n  'VIEWER_LOADED': 'viewerLoaded',\n  'VISIBILITY_CHANGED': 'visibilityChanged',\n  'FULLSCREEN_MODE_TOGGLED': 'fullscreenModeToggled',\n  'BEFORE_TAB_CHANGED': 'beforeTabChanged',\n  'TAB_DELETED': 'tabDeleted',\n  'TAB_ADDED': 'tabAdded',\n  'TAB_MOVED': 'tabMoved',\n  'LANGUAGE_CHANGED': 'languageChanged',\n  'MULTI_VIEWER_READY': 'multiViewerReady',\n  'COMPARE_ANNOTATIONS_LOADED': 'compareAnnotationsLoaded',\n  'TAB_MANAGER_READY': 'onTabManagerReady',\n  'MODULAR_UI_IMPORTED': 'modularUIImported',\n  'TOOLTIP_OPENED': 'tooltipOpened'\n};\n\n/**\n * Triggered when annotation filter in the notes panel has changed.\n * Returns empty arrays if the filter is cleared.\n * @name UI#annotationFilterChanged\n * @event\n * @type {object}\n * @property {string[]} types Types filter\n * @property {string[]} authors Author filter\n * @property {string[]} colors Color filter\n * @property {string[]} statuses Status filter\n */\n\n/**\n* Triggered when a new document has been loaded.\n* @name UI#documentLoaded\n* @event\n*/\n\n/**\n* Triggered when a new document has been merged into the thumbnails panel.\n* @name UI#documentMerged\n* @event\n* @type {object}\n* @property {string} filename File name\n* @property {number[]} pages Page numbers\n*/\n\n/**\n* Triggered when the file has finished downloading.\n* @name UI#fileDownloaded\n* @event\n*/\n\n/**\n* Triggered when there is an error loading the document.\n* @name UI#loaderror\n* @event\n* @param {object} err The error\n*/\n\n/**\n* Triggered when dragging Outline item.\n* @name UI#dragOutline\n* @event\n*/\n\n/**\n* Triggered when dropping Outline item.\n* @name UI#dropOutline\n* @event\n*/\n\n/**\n* Triggered when the panels are resized.\n* @name UI#panelResized\n* @event\n* @type {object}\n* @property {string} element DataElement name\n* @property {number} width New panel width\n*/\n\n/**\n* Triggered when the UI theme has changed.\n* @name UI#themeChanged\n* @event\n* @param {string} theme The new UI theme\n*/\n\n/**\n* Triggered when the toolbar group has changed.\n* @name UI#toolbarGroupChanged\n* @event\n* @param {string} toolbarGroup The new toolbar group\n*/\n\n/**\n* Triggered when the selected thumbnail changed.\n* @name UI#selectedThumbnailChanged\n* @event\n* @param {array} selectedThumbnailPageIndexes The array of indexes of currently selected thumbnails\n*/\n\n/**\n* Triggered when thumbnail(s) are dragged in the thumbnail panel\n* @name UI#thumbnailDragged\n* @event\n*/\n\n/**\n* Triggered when dragged thumbnail(s) are dropped to a new location in the thumbnail panel\n* @name UI#thumbnailDropped\n* @event\n* @type {object}\n* @property {Array<number>} pageNumbersBeforeMove The array of page numbers to be moved\n* @property {Array<number>} pageNumbersAfterMove The array of page numbers of where thumbnails being dropped\n* @property {number} numberOfPagesMoved Number of page(s) being moved\n*/\n\n/**\n* Triggered when user bookmarks have changed.\n* @name UI#userBookmarksChanged\n* @event\n* @param {object} bookmarks The new bookmarks\n*/\n\n/**\n* Triggered when outline bookmarks have changed.\n* @name UI#outlineBookmarksChanged\n* @event\n* @param {object} bookmarkData\n* @param {object} bookmarkData.bookmark The changed bookmark\n* @param {string} bookmarkData.bookmark.id Changed outline bookmark id\n* @param {string} bookmarkData.bookmark.name Changed outline bookmark name\n* @param {string} bookmarkData.path Changed outline path in the outline tree\n* @param {string} bookmarkData.action The action that triggered the outline bookmarks change\n*/\n\n/**\n* Triggered when the viewer has loaded.\n* @name UI#viewerLoaded\n* @event\n*/\n\n/**\n* Triggered when the visibility of an element has changed.\n* @name UI#visibilityChanged\n* @event\n* @type {object}\n* @property {object} detail\n* @property {string} detail.element DataElement name\n* @property {boolean} detail.isVisible The new visibility\n*/\n\n/**\n* Triggered when fullscreen mode is toggled.\n* @name UI#fullscreenModeToggled\n* @event\n* @type {object}\n* @property {boolean} isInFullscreen Whether in fullscreen mode or not.\n*/\n\n/**\n* Triggered before the UI switches tabs\n* @name UI#beforeTabChanged\n* @event\n* @type {object}\n* @property {object} currentTab An object containing the properties for the currently active tab (null if no currently active tab)\n* @property {number} currentTab.id The id of the tab being switched to\n* @property {string} currentTab.src Source of current tab\n* @property {string} currentTab.options Tab load options\n* @property {boolean} currentTab.annotationsChanged True if the annotations have been changed since loading the tab\n* @property {object} nextTab An object containing the properties for the tab being switched to\n* @property {number} nextTab.id The id of the tab being switched to\n* @property {string} nextTab.src Source of current tab\n* @property {string} nextTab.options Tab load options\n*/\n\n/**\n* Triggered when a Tab is deleted\n* @name UI#tabDeleted\n* @event\n* @type {object}\n* @property {number} id The id of the tab being deleted\n* @property {string} src Source of current tab\n* @property {string} options Tab load options\n*/\n\n/**\n* Triggered when a Tab is added\n* @name UI#tabAdded\n* @event\n* @type {object}\n* @property {number} id The id of the tab being added\n* @property {string} src Source of current tab\n* @property {string} options Tab load options\n*/\n\n/**\n* Triggered when a Tab is moved\n* @name UI#tabMoved\n* @event\n* @type {object}\n* @property {number} id The id of the tab being moved\n* @property {string} src Source of moved tab\n* @property {string} options Tab load options\n* @property {number} prevIndex Previous index of tab\n* @property {number} newIndex New index of tab\n*/\n\n/**\n* Triggered when the language changes in WebViewer via [setLanguage]{@link UI#setLanguage UI.setLanguage}\n* @name UI#languageChanged\n* @event\n* @type {object}\n* @property {string} prev The previous language\n* @property {string} next The new language that was just set\n*/\n\n/**\n* Triggered when MultiViewerMode is enabled and ready to be interacted with\n* @name UI#multiViewerReady\n* @event\n*/\n\n/** Triggered when the compare annotations are loaded\n* @name UI#compareAnnotationsLoaded\n* @event\n*/\n\n/** Triggered when the Multi-Tab is ready and TabManager can be interacted with\n* @name UI#onTabManagerReady\n* @event\n*/\n\n/** Triggered when a Modular UI JSON configuration is imported\n * @name UI#modularUIImported\n * @event\n * @property {object} importedComponents The JSON object containing the imported components\n */\n\n/** Triggered when a tooltip is opened\n * @name UI#tooltipOpened\n * @event\n */\n","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? Object(arguments[i]) : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n  type: 'logger',\n  log: function log(args) {\n    this.output('log', args);\n  },\n  warn: function warn(args) {\n    this.output('warn', args);\n  },\n  error: function error(args) {\n    this.output('error', args);\n  },\n  output: function output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\n\nvar Logger = function () {\n  function Logger(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Logger);\n\n    this.init(concreteLogger, options);\n  }\n\n  _createClass(Logger, [{\n    key: \"init\",\n    value: function init(concreteLogger) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      this.prefix = options.prefix || 'i18next:';\n      this.logger = concreteLogger || consoleLogger;\n      this.options = options;\n      this.debug = options.debug;\n    }\n  }, {\n    key: \"setDebug\",\n    value: function setDebug(bool) {\n      this.debug = bool;\n    }\n  }, {\n    key: \"log\",\n    value: function log() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.forward(args, 'log', '', true);\n    }\n  }, {\n    key: \"warn\",\n    value: function warn() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return this.forward(args, 'warn', '', true);\n    }\n  }, {\n    key: \"error\",\n    value: function error() {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return this.forward(args, 'error', '');\n    }\n  }, {\n    key: \"deprecate\",\n    value: function deprecate() {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n    }\n  }, {\n    key: \"forward\",\n    value: function forward(args, lvl, prefix, debugOnly) {\n      if (debugOnly && !this.debug) return null;\n      if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n      return this.logger[lvl](args);\n    }\n  }, {\n    key: \"create\",\n    value: function create(moduleName) {\n      return new Logger(this.logger, _objectSpread({}, {\n        prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n      }, this.options));\n    }\n  }]);\n\n  return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n  function EventEmitter() {\n    _classCallCheck(this, EventEmitter);\n\n    this.observers = {};\n  }\n\n  _createClass(EventEmitter, [{\n    key: \"on\",\n    value: function on(events, listener) {\n      var _this = this;\n\n      events.split(' ').forEach(function (event) {\n        _this.observers[event] = _this.observers[event] || [];\n\n        _this.observers[event].push(listener);\n      });\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(event, listener) {\n      if (!this.observers[event]) return;\n\n      if (!listener) {\n        delete this.observers[event];\n        return;\n      }\n\n      this.observers[event] = this.observers[event].filter(function (l) {\n        return l !== listener;\n      });\n    }\n  }, {\n    key: \"emit\",\n    value: function emit(event) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (this.observers[event]) {\n        var cloned = [].concat(this.observers[event]);\n        cloned.forEach(function (observer) {\n          observer.apply(void 0, args);\n        });\n      }\n\n      if (this.observers['*']) {\n        var _cloned = [].concat(this.observers['*']);\n\n        _cloned.forEach(function (observer) {\n          observer.apply(observer, [event].concat(args));\n        });\n      }\n    }\n  }]);\n\n  return EventEmitter;\n}();\n\nfunction defer() {\n  var res;\n  var rej;\n  var promise = new Promise(function (resolve, reject) {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\nfunction copy(a, s, t) {\n  a.forEach(function (m) {\n    if (s[m]) t[m] = s[m];\n  });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n  }\n\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n\n  var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n  while (stack.length > 1) {\n    if (canNotTraverseDeeper()) return {};\n    var key = cleanKey(stack.shift());\n    if (!object[key] && Empty) object[key] = new Empty();\n\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n  }\n\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack.shift())\n  };\n}\n\nfunction setPath(object, path, newValue) {\n  var _getLastOfPath = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath.obj,\n      k = _getLastOfPath.k;\n\n  obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n  var _getLastOfPath2 = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath2.obj,\n      k = _getLastOfPath2.k;\n\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n  var _getLastOfPath3 = getLastOfPath(object, path),\n      obj = _getLastOfPath3.obj,\n      k = _getLastOfPath3.k;\n\n  if (!obj) return undefined;\n  return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n  var value = getPath(data, key);\n\n  if (value !== undefined) {\n    return value;\n  }\n\n  return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n  for (var prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n\n  return target;\n}\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nfunction escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, function (s) {\n      return _entityMap[s];\n    });\n  }\n\n  return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar ResourceStore = function (_EventEmitter) {\n  _inherits(ResourceStore, _EventEmitter);\n\n  function ResourceStore(data) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n\n    _classCallCheck(this, ResourceStore);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.data = data || {};\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    return _this;\n  }\n\n  _createClass(ResourceStore, [{\n    key: \"addNamespaces\",\n    value: function addNamespaces(ns) {\n      if (this.options.ns.indexOf(ns) < 0) {\n        this.options.ns.push(ns);\n      }\n    }\n  }, {\n    key: \"removeNamespaces\",\n    value: function removeNamespaces(ns) {\n      var index = this.options.ns.indexOf(ns);\n\n      if (index > -1) {\n        this.options.ns.splice(index, 1);\n      }\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(lng, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var path = [lng, ns];\n      if (key && typeof key !== 'string') path = path.concat(key);\n      if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n      }\n\n      return getPath(this.data, path);\n    }\n  }, {\n    key: \"addResource\",\n    value: function addResource(lng, ns, key, value) {\n      var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n        silent: false\n      };\n      var keySeparator = this.options.keySeparator;\n      if (keySeparator === undefined) keySeparator = '.';\n      var path = [lng, ns];\n      if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        value = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      setPath(this.data, path, value);\n      if (!options.silent) this.emit('added', lng, ns, key, value);\n    }\n  }, {\n    key: \"addResources\",\n    value: function addResources(lng, ns, resources) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n        silent: false\n      };\n\n      for (var m in resources) {\n        if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n          silent: true\n        });\n      }\n\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"addResourceBundle\",\n    value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n        silent: false\n      };\n      var path = [lng, ns];\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        deep = resources;\n        resources = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      var pack = getPath(this.data, path) || {};\n\n      if (deep) {\n        deepExtend(pack, resources, overwrite);\n      } else {\n        pack = _objectSpread({}, pack, resources);\n      }\n\n      setPath(this.data, path, pack);\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"removeResourceBundle\",\n    value: function removeResourceBundle(lng, ns) {\n      if (this.hasResourceBundle(lng, ns)) {\n        delete this.data[lng][ns];\n      }\n\n      this.removeNamespaces(ns);\n      this.emit('removed', lng, ns);\n    }\n  }, {\n    key: \"hasResourceBundle\",\n    value: function hasResourceBundle(lng, ns) {\n      return this.getResource(lng, ns) !== undefined;\n    }\n  }, {\n    key: \"getResourceBundle\",\n    value: function getResourceBundle(lng, ns) {\n      if (!ns) ns = this.options.defaultNS;\n      if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n      return this.getResource(lng, ns);\n    }\n  }, {\n    key: \"getDataByLanguage\",\n    value: function getDataByLanguage(lng) {\n      return this.data[lng];\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.data;\n    }\n  }]);\n\n  return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor: function addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle: function handle(processors, value, key, options, translator) {\n    var _this = this;\n\n    processors.forEach(function (processor) {\n      if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n  _inherits(Translator, _EventEmitter);\n\n  function Translator(services) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Translator);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    _this.logger = baseLogger.create('translator');\n    return _this;\n  }\n\n  _createClass(Translator, [{\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng) {\n      if (lng) this.language = lng;\n    }\n  }, {\n    key: \"exists\",\n    value: function exists(key) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n      var resolved = this.resolve(key, options);\n      return resolved && resolved.res !== undefined;\n    }\n  }, {\n    key: \"extractFromKey\",\n    value: function extractFromKey(key, options) {\n      var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n      if (nsSeparator === undefined) nsSeparator = ':';\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var namespaces = options.ns || this.options.defaultNS;\n\n      if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n        var m = key.match(this.interpolator.nestingRegexp);\n\n        if (m && m.length > 0) {\n          return {\n            key: key,\n            namespaces: namespaces\n          };\n        }\n\n        var parts = key.split(nsSeparator);\n        if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n        key = parts.join(keySeparator);\n      }\n\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      return {\n        key: key,\n        namespaces: namespaces\n      };\n    }\n  }, {\n    key: \"translate\",\n    value: function translate(keys, options, lastKey) {\n      var _this2 = this;\n\n      if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n        options = this.options.overloadTranslationOptionHandler(arguments);\n      }\n\n      if (!options) options = {};\n      if (keys === undefined || keys === null) return '';\n      if (!Array.isArray(keys)) keys = [String(keys)];\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n      var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n          key = _this$extractFromKey.key,\n          namespaces = _this$extractFromKey.namespaces;\n\n      var namespace = namespaces[namespaces.length - 1];\n      var lng = options.lng || this.language;\n      var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n      if (lng && lng.toLowerCase() === 'cimode') {\n        if (appendNamespaceToCIMode) {\n          var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n          return namespace + nsSeparator + key;\n        }\n\n        return key;\n      }\n\n      var resolved = this.resolve(keys, options);\n      var res = resolved && resolved.res;\n      var resUsedKey = resolved && resolved.usedKey || key;\n      var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n      var resType = Object.prototype.toString.apply(res);\n      var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n      var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n      var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n      var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n      if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n        if (!options.returnObjects && !this.options.returnObjects) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n          return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n        }\n\n        if (keySeparator) {\n          var resTypeIsArray = resType === '[object Array]';\n          var copy = resTypeIsArray ? [] : {};\n          var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n          for (var m in res) {\n            if (Object.prototype.hasOwnProperty.call(res, m)) {\n              var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n              copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n                joinArrays: false,\n                ns: namespaces\n              }));\n              if (copy[m] === deepKey) copy[m] = res[m];\n            }\n          }\n\n          res = copy;\n        }\n      } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n        res = res.join(joinArrays);\n        if (res) res = this.extendTranslation(res, keys, options, lastKey);\n      } else {\n        var usedDefault = false;\n        var usedKey = false;\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var hasDefaultValue = Translator.hasDefaultValue(options);\n        var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n        var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n        if (!this.isValidLookup(res) && hasDefaultValue) {\n          usedDefault = true;\n          res = defaultValue;\n        }\n\n        if (!this.isValidLookup(res)) {\n          usedKey = true;\n          res = key;\n        }\n\n        var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n        if (usedKey || usedDefault || updateMissing) {\n          this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n          if (keySeparator) {\n            var fk = this.resolve(key, _objectSpread({}, options, {\n              keySeparator: false\n            }));\n            if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n          }\n\n          var lngs = [];\n          var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n          if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n            for (var i = 0; i < fallbackLngs.length; i++) {\n              lngs.push(fallbackLngs[i]);\n            }\n          } else if (this.options.saveMissingTo === 'all') {\n            lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n          } else {\n            lngs.push(options.lng || this.language);\n          }\n\n          var send = function send(l, k, fallbackValue) {\n            if (_this2.options.missingKeyHandler) {\n              _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n            } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n              _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n            }\n\n            _this2.emit('missingKey', l, namespace, k, res);\n          };\n\n          if (this.options.saveMissing) {\n            if (this.options.saveMissingPlurals && needsPluralHandling) {\n              lngs.forEach(function (language) {\n                _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n                  send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n                });\n              });\n            } else {\n              send(lngs, key, defaultValue);\n            }\n          }\n        }\n\n        res = this.extendTranslation(res, keys, options, resolved, lastKey);\n        if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n        if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"extendTranslation\",\n    value: function extendTranslation(res, key, options, resolved, lastKey) {\n      var _this3 = this;\n\n      if (this.i18nFormat && this.i18nFormat.parse) {\n        res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n          resolved: resolved\n        });\n      } else if (!options.skipInterpolation) {\n        if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n          interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n        }));\n        var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n        var nestBef;\n\n        if (skipOnVariables) {\n          var nb = res.match(this.interpolator.nestingRegexp);\n          nestBef = nb && nb.length;\n        }\n\n        var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n        if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n        res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n        if (skipOnVariables) {\n          var na = res.match(this.interpolator.nestingRegexp);\n          var nestAft = na && na.length;\n          if (nestBef < nestAft) options.nest = false;\n        }\n\n        if (options.nest !== false) res = this.interpolator.nest(res, function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n\n          if (lastKey && lastKey[0] === args[0] && !options.context) {\n            _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n            return null;\n          }\n\n          return _this3.translate.apply(_this3, args.concat([key]));\n        }, options);\n        if (options.interpolation) this.interpolator.reset();\n      }\n\n      var postProcess = options.postProcess || this.options.postProcess;\n      var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n      if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n        res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n          i18nResolved: resolved\n        }, options) : options, this);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"resolve\",\n    value: function resolve(keys) {\n      var _this4 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var found;\n      var usedKey;\n      var exactUsedKey;\n      var usedLng;\n      var usedNS;\n      if (typeof keys === 'string') keys = [keys];\n      keys.forEach(function (k) {\n        if (_this4.isValidLookup(found)) return;\n\n        var extracted = _this4.extractFromKey(k, options);\n\n        var key = extracted.key;\n        usedKey = key;\n        var namespaces = extracted.namespaces;\n        if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n        var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n        namespaces.forEach(function (ns) {\n          if (_this4.isValidLookup(found)) return;\n          usedNS = ns;\n\n          if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n            checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n            _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n          }\n\n          codes.forEach(function (code) {\n            if (_this4.isValidLookup(found)) return;\n            usedLng = code;\n            var finalKey = key;\n            var finalKeys = [finalKey];\n\n            if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n              _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n            } else {\n              var pluralSuffix;\n              if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n              if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n              if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n              if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n            }\n\n            var possibleKey;\n\n            while (possibleKey = finalKeys.pop()) {\n              if (!_this4.isValidLookup(found)) {\n                exactUsedKey = possibleKey;\n                found = _this4.getResource(code, ns, possibleKey, options);\n              }\n            }\n          });\n        });\n      });\n      return {\n        res: found,\n        usedKey: usedKey,\n        exactUsedKey: exactUsedKey,\n        usedLng: usedLng,\n        usedNS: usedNS\n      };\n    }\n  }, {\n    key: \"isValidLookup\",\n    value: function isValidLookup(res) {\n      return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(code, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n      return this.resourceStore.getResource(code, ns, key, options);\n    }\n  }], [{\n    key: \"hasDefaultValue\",\n    value: function hasDefaultValue(options) {\n      var prefix = 'defaultValue';\n\n      for (var option in options) {\n        if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n  }]);\n\n  return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n  function LanguageUtil(options) {\n    _classCallCheck(this, LanguageUtil);\n\n    this.options = options;\n    this.whitelist = this.options.supportedLngs || false;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n\n  _createClass(LanguageUtil, [{\n    key: \"getScriptPartFromCode\",\n    value: function getScriptPartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return null;\n      var p = code.split('-');\n      if (p.length === 2) return null;\n      p.pop();\n      if (p[p.length - 1].toLowerCase() === 'x') return null;\n      return this.formatLanguageCode(p.join('-'));\n    }\n  }, {\n    key: \"getLanguagePartFromCode\",\n    value: function getLanguagePartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return code;\n      var p = code.split('-');\n      return this.formatLanguageCode(p[0]);\n    }\n  }, {\n    key: \"formatLanguageCode\",\n    value: function formatLanguageCode(code) {\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n        var p = code.split('-');\n\n        if (this.options.lowerCaseLng) {\n          p = p.map(function (part) {\n            return part.toLowerCase();\n          });\n        } else if (p.length === 2) {\n          p[0] = p[0].toLowerCase();\n          p[1] = p[1].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        } else if (p.length === 3) {\n          p[0] = p[0].toLowerCase();\n          if (p[1].length === 2) p[1] = p[1].toUpperCase();\n          if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n          if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n        }\n\n        return p.join('-');\n      }\n\n      return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n    }\n  }, {\n    key: \"isWhitelisted\",\n    value: function isWhitelisted(code) {\n      this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n      return this.isSupportedCode(code);\n    }\n  }, {\n    key: \"isSupportedCode\",\n    value: function isSupportedCode(code) {\n      if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n        code = this.getLanguagePartFromCode(code);\n      }\n\n      return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n    }\n  }, {\n    key: \"getBestMatchFromCodes\",\n    value: function getBestMatchFromCodes(codes) {\n      var _this = this;\n\n      if (!codes) return null;\n      var found;\n      codes.forEach(function (code) {\n        if (found) return;\n\n        var cleanedLng = _this.formatLanguageCode(code);\n\n        if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n      });\n\n      if (!found && this.options.supportedLngs) {\n        codes.forEach(function (code) {\n          if (found) return;\n\n          var lngOnly = _this.getLanguagePartFromCode(code);\n\n          if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n          found = _this.options.supportedLngs.find(function (supportedLng) {\n            if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n          });\n        });\n      }\n\n      if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n      return found;\n    }\n  }, {\n    key: \"getFallbackCodes\",\n    value: function getFallbackCodes(fallbacks, code) {\n      if (!fallbacks) return [];\n      if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n      if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n      if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n      if (!code) return fallbacks[\"default\"] || [];\n      var found = fallbacks[code];\n      if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n      if (!found) found = fallbacks[this.formatLanguageCode(code)];\n      if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n      if (!found) found = fallbacks[\"default\"];\n      return found || [];\n    }\n  }, {\n    key: \"toResolveHierarchy\",\n    value: function toResolveHierarchy(code, fallbackCode) {\n      var _this2 = this;\n\n      var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n      var codes = [];\n\n      var addCode = function addCode(c) {\n        if (!c) return;\n\n        if (_this2.isSupportedCode(c)) {\n          codes.push(c);\n        } else {\n          _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n        }\n      };\n\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n        if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n        if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n      } else if (typeof code === 'string') {\n        addCode(this.formatLanguageCode(code));\n      }\n\n      fallbackCodes.forEach(function (fc) {\n        if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n      });\n      return codes;\n    }\n  }]);\n\n  return LanguageUtil;\n}();\n\nvar sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nvar _rulesPluralsTypes = {\n  1: function _(n) {\n    return Number(n > 1);\n  },\n  2: function _(n) {\n    return Number(n != 1);\n  },\n  3: function _(n) {\n    return 0;\n  },\n  4: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function _(n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function _(n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function _(n) {\n    return Number(n >= 2);\n  },\n  10: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function _(n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function _(n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function _(n) {\n    return Number(n !== 0);\n  },\n  14: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function _(n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function _(n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\n\nfunction createRules() {\n  var rules = {};\n  sets.forEach(function (set) {\n    set.lngs.forEach(function (l) {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\n\nvar PluralResolver = function () {\n  function PluralResolver(languageUtils) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, PluralResolver);\n\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    this.rules = createRules();\n  }\n\n  _createClass(PluralResolver, [{\n    key: \"addRule\",\n    value: function addRule(lng, obj) {\n      this.rules[lng] = obj;\n    }\n  }, {\n    key: \"getRule\",\n    value: function getRule(code) {\n      return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n    }\n  }, {\n    key: \"needsPlural\",\n    value: function needsPlural(code) {\n      var rule = this.getRule(code);\n      return rule && rule.numbers.length > 1;\n    }\n  }, {\n    key: \"getPluralFormsOfKey\",\n    value: function getPluralFormsOfKey(code, key) {\n      return this.getSuffixes(code).map(function (suffix) {\n        return key + suffix;\n      });\n    }\n  }, {\n    key: \"getSuffixes\",\n    value: function getSuffixes(code) {\n      var _this = this;\n\n      var rule = this.getRule(code);\n\n      if (!rule) {\n        return [];\n      }\n\n      return rule.numbers.map(function (number) {\n        return _this.getSuffix(code, number);\n      });\n    }\n  }, {\n    key: \"getSuffix\",\n    value: function getSuffix(code, count) {\n      var _this2 = this;\n\n      var rule = this.getRule(code);\n\n      if (rule) {\n        var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n        var suffix = rule.numbers[idx];\n\n        if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n          if (suffix === 2) {\n            suffix = 'plural';\n          } else if (suffix === 1) {\n            suffix = '';\n          }\n        }\n\n        var returnSuffix = function returnSuffix() {\n          return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n        };\n\n        if (this.options.compatibilityJSON === 'v1') {\n          if (suffix === 1) return '';\n          if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n          return returnSuffix();\n        } else if (this.options.compatibilityJSON === 'v2') {\n          return returnSuffix();\n        } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n          return returnSuffix();\n        }\n\n        return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n      }\n\n      this.logger.warn(\"no plural rule found for: \".concat(code));\n      return '';\n    }\n  }]);\n\n  return PluralResolver;\n}();\n\nvar Interpolator = function () {\n  function Interpolator() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Interpolator);\n\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n\n    this.format = options.interpolation && options.interpolation.format || function (value) {\n      return value;\n    };\n\n    this.init(options);\n  }\n\n  _createClass(Interpolator, [{\n    key: \"init\",\n    value: function init() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (!options.interpolation) options.interpolation = {\n        escapeValue: true\n      };\n      var iOpts = options.interpolation;\n      this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n      this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n      this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n      this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n      this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n      this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n      this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n      this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n      this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n      this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n      this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n      this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n      this.resetRegExp();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.options) this.init(this.options);\n    }\n  }, {\n    key: \"resetRegExp\",\n    value: function resetRegExp() {\n      var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n      this.regexp = new RegExp(regexpStr, 'g');\n      var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n      this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n      var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n      this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n    }\n  }, {\n    key: \"interpolate\",\n    value: function interpolate(str, data, lng, options) {\n      var _this = this;\n\n      var match;\n      var value;\n      var replaces;\n      var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n      function regexSafe(val) {\n        return val.replace(/\\$/g, '$$$$');\n      }\n\n      var handleFormat = function handleFormat(key) {\n        if (key.indexOf(_this.formatSeparator) < 0) {\n          var path = getPathWithDefaults(data, defaultData, key);\n          return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n        }\n\n        var p = key.split(_this.formatSeparator);\n        var k = p.shift().trim();\n        var f = p.join(_this.formatSeparator).trim();\n        return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n      };\n\n      this.resetRegExp();\n      var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n      var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n      var todos = [{\n        regex: this.regexpUnescape,\n        safeValue: function safeValue(val) {\n          return regexSafe(val);\n        }\n      }, {\n        regex: this.regexp,\n        safeValue: function safeValue(val) {\n          return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n        }\n      }];\n      todos.forEach(function (todo) {\n        replaces = 0;\n\n        while (match = todo.regex.exec(str)) {\n          value = handleFormat(match[1].trim());\n\n          if (value === undefined) {\n            if (typeof missingInterpolationHandler === 'function') {\n              var temp = missingInterpolationHandler(str, match, options);\n              value = typeof temp === 'string' ? temp : '';\n            } else if (skipOnVariables) {\n              value = match[0];\n              continue;\n            } else {\n              _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n              value = '';\n            }\n          } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n            value = makeString(value);\n          }\n\n          str = str.replace(match[0], todo.safeValue(value));\n          todo.regex.lastIndex = 0;\n          replaces++;\n\n          if (replaces >= _this.maxReplaces) {\n            break;\n          }\n        }\n      });\n      return str;\n    }\n  }, {\n    key: \"nest\",\n    value: function nest(str, fc) {\n      var _this2 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var match;\n      var value;\n\n      var clonedOptions = _objectSpread({}, options);\n\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n\n      function handleHasOptions(key, inheritedOptions) {\n        var sep = this.nestingOptionsSeparator;\n        if (key.indexOf(sep) < 0) return key;\n        var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n        var optionsString = \"{\".concat(c[1]);\n        key = c[0];\n        optionsString = this.interpolate(optionsString, clonedOptions);\n        optionsString = optionsString.replace(/'/g, '\"');\n\n        try {\n          clonedOptions = JSON.parse(optionsString);\n          if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n        } catch (e) {\n          this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n          return \"\".concat(key).concat(sep).concat(optionsString);\n        }\n\n        delete clonedOptions.defaultValue;\n        return key;\n      }\n\n      while (match = this.nestingRegexp.exec(str)) {\n        var formatters = [];\n        var doReduce = false;\n\n        if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n          var r = match[1].split(this.formatSeparator).map(function (elem) {\n            return elem.trim();\n          });\n          match[1] = r.shift();\n          formatters = r;\n          doReduce = true;\n        }\n\n        value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n        if (value && match[0] === str && typeof value !== 'string') return value;\n        if (typeof value !== 'string') value = makeString(value);\n\n        if (!value) {\n          this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n          value = '';\n        }\n\n        if (doReduce) {\n          value = formatters.reduce(function (v, f) {\n            return _this2.format(v, f, options.lng, options);\n          }, value.trim());\n        }\n\n        str = str.replace(match[0], value);\n        this.regexp.lastIndex = 0;\n      }\n\n      return str;\n    }\n  }]);\n\n  return Interpolator;\n}();\n\nfunction remove(arr, what) {\n  var found = arr.indexOf(what);\n\n  while (found !== -1) {\n    arr.splice(found, 1);\n    found = arr.indexOf(what);\n  }\n}\n\nvar Connector = function (_EventEmitter) {\n  _inherits(Connector, _EventEmitter);\n\n  function Connector(backend, store, services) {\n    var _this;\n\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    _classCallCheck(this, Connector);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.backend = backend;\n    _this.store = store;\n    _this.services = services;\n    _this.languageUtils = services.languageUtils;\n    _this.options = options;\n    _this.logger = baseLogger.create('backendConnector');\n    _this.state = {};\n    _this.queue = [];\n\n    if (_this.backend && _this.backend.init) {\n      _this.backend.init(services, options.backend, options);\n    }\n\n    return _this;\n  }\n\n  _createClass(Connector, [{\n    key: \"queueLoad\",\n    value: function queueLoad(languages, namespaces, options, callback) {\n      var _this2 = this;\n\n      var toLoad = [];\n      var pending = [];\n      var toLoadLanguages = [];\n      var toLoadNamespaces = [];\n      languages.forEach(function (lng) {\n        var hasAllNamespaces = true;\n        namespaces.forEach(function (ns) {\n          var name = \"\".concat(lng, \"|\").concat(ns);\n\n          if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n            _this2.state[name] = 2;\n          } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n            if (pending.indexOf(name) < 0) pending.push(name);\n          } else {\n            _this2.state[name] = 1;\n            hasAllNamespaces = false;\n            if (pending.indexOf(name) < 0) pending.push(name);\n            if (toLoad.indexOf(name) < 0) toLoad.push(name);\n            if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n          }\n        });\n        if (!hasAllNamespaces) toLoadLanguages.push(lng);\n      });\n\n      if (toLoad.length || pending.length) {\n        this.queue.push({\n          pending: pending,\n          loaded: {},\n          errors: [],\n          callback: callback\n        });\n      }\n\n      return {\n        toLoad: toLoad,\n        pending: pending,\n        toLoadLanguages: toLoadLanguages,\n        toLoadNamespaces: toLoadNamespaces\n      };\n    }\n  }, {\n    key: \"loaded\",\n    value: function loaded(name, err, data) {\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      if (err) this.emit('failedLoading', lng, ns, err);\n\n      if (data) {\n        this.store.addResourceBundle(lng, ns, data);\n      }\n\n      this.state[name] = err ? -1 : 2;\n      var loaded = {};\n      this.queue.forEach(function (q) {\n        pushPath(q.loaded, [lng], ns);\n        remove(q.pending, name);\n        if (err) q.errors.push(err);\n\n        if (q.pending.length === 0 && !q.done) {\n          Object.keys(q.loaded).forEach(function (l) {\n            if (!loaded[l]) loaded[l] = [];\n\n            if (q.loaded[l].length) {\n              q.loaded[l].forEach(function (ns) {\n                if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n              });\n            }\n          });\n          q.done = true;\n\n          if (q.errors.length) {\n            q.callback(q.errors);\n          } else {\n            q.callback();\n          }\n        }\n      });\n      this.emit('loaded', loaded);\n      this.queue = this.queue.filter(function (q) {\n        return !q.done;\n      });\n    }\n  }, {\n    key: \"read\",\n    value: function read(lng, ns, fcName) {\n      var _this3 = this;\n\n      var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n      var callback = arguments.length > 5 ? arguments[5] : undefined;\n      if (!lng.length) return callback(null, {});\n      return this.backend[fcName](lng, ns, function (err, data) {\n        if (err && data && tried < 5) {\n          setTimeout(function () {\n            _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n          }, wait);\n          return;\n        }\n\n        callback(err, data);\n      });\n    }\n  }, {\n    key: \"prepareLoading\",\n    value: function prepareLoading(languages, namespaces) {\n      var _this4 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n      if (!this.backend) {\n        this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n        return callback && callback();\n      }\n\n      if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n      if (!toLoad.toLoad.length) {\n        if (!toLoad.pending.length) callback();\n        return null;\n      }\n\n      toLoad.toLoad.forEach(function (name) {\n        _this4.loadOne(name);\n      });\n    }\n  }, {\n    key: \"load\",\n    value: function load(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {}, callback);\n    }\n  }, {\n    key: \"reload\",\n    value: function reload(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {\n        reload: true\n      }, callback);\n    }\n  }, {\n    key: \"loadOne\",\n    value: function loadOne(name) {\n      var _this5 = this;\n\n      var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n        if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n        if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n        _this5.loaded(name, err, data);\n      });\n    }\n  }, {\n    key: \"saveMissing\",\n    value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n      if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n        this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        return;\n      }\n\n      if (key === undefined || key === null || key === '') return;\n\n      if (this.backend && this.backend.create) {\n        this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n          isUpdate: isUpdate\n        }));\n      }\n\n      if (!languages || !languages[0]) return;\n      this.store.addResource(languages[0], namespace, key, fallbackValue);\n    }\n  }]);\n\n  return Connector;\n}(EventEmitter);\n\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    whitelist: false,\n    nonExplicitWhitelist: false,\n    supportedLngs: false,\n    nonExplicitSupportedLngs: false,\n    load: 'all',\n    preload: false,\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n    partialBundledLanguages: false,\n    saveMissing: false,\n    updateMissing: false,\n    saveMissingTo: 'fallback',\n    saveMissingPlurals: true,\n    missingKeyHandler: false,\n    missingInterpolationHandler: false,\n    postProcess: false,\n    postProcessPassResolved: false,\n    returnNull: true,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      var ret = {};\n      if (_typeof(args[1]) === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n      if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n        var options = args[3] || args[2];\n        Object.keys(options).forEach(function (key) {\n          ret[key] = options[key];\n        });\n      }\n\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: function format(value, _format, lng, options) {\n        return value;\n      },\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: false\n    }\n  };\n}\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n  if (options.whitelist) {\n    if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n      options.whitelist = options.whitelist.concat(['cimode']);\n    }\n\n    options.supportedLngs = options.whitelist;\n  }\n\n  if (options.nonExplicitWhitelist) {\n    options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n  }\n\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n\n  return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n  _inherits(I18n, _EventEmitter);\n\n  function I18n() {\n    var _this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n    _classCallCheck(this, I18n);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.options = transformOptions(options);\n    _this.services = {};\n    _this.logger = baseLogger;\n    _this.modules = {\n      external: []\n    };\n\n    if (callback && !_this.isInitialized && !options.isClone) {\n      if (!_this.options.initImmediate) {\n        _this.init(options, callback);\n\n        return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n      }\n\n      setTimeout(function () {\n        _this.init(options, callback);\n      }, 0);\n    }\n\n    return _this;\n  }\n\n  _createClass(I18n, [{\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      if (options.whitelist && !options.supportedLngs) {\n        this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n        this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n      this.format = this.options.interpolation.format;\n      if (!callback) callback = noop;\n\n      function createClassOnDemand(ClassOrObject) {\n        if (!ClassOrObject) return null;\n        if (typeof ClassOrObject === 'function') return new ClassOrObject();\n        return ClassOrObject;\n      }\n\n      if (!this.options.isClone) {\n        if (this.modules.logger) {\n          baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n        } else {\n          baseLogger.init(null, this.options);\n        }\n\n        var lu = new LanguageUtil(this.options);\n        this.store = new ResourceStore(this.options.resources, this.options);\n        var s = this.services;\n        s.logger = baseLogger;\n        s.resourceStore = this.store;\n        s.languageUtils = lu;\n        s.pluralResolver = new PluralResolver(lu, {\n          prepend: this.options.pluralSeparator,\n          compatibilityJSON: this.options.compatibilityJSON,\n          simplifyPluralSuffix: this.options.simplifyPluralSuffix\n        });\n        s.interpolator = new Interpolator(this.options);\n        s.utils = {\n          hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n        };\n        s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n        s.backendConnector.on('*', function (event) {\n          for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            args[_key - 1] = arguments[_key];\n          }\n\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n\n        if (this.modules.languageDetector) {\n          s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n          s.languageDetector.init(s, this.options.detection, this.options);\n        }\n\n        if (this.modules.i18nFormat) {\n          s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n          if (s.i18nFormat.init) s.i18nFormat.init(this);\n        }\n\n        this.translator = new Translator(this.services, this.options);\n        this.translator.on('*', function (event) {\n          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n            args[_key2 - 1] = arguments[_key2];\n          }\n\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n        this.modules.external.forEach(function (m) {\n          if (m.init) m.init(_this2);\n        });\n      }\n\n      if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n        var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n      }\n\n      if (!this.services.languageDetector && !this.options.lng) {\n        this.logger.warn('init: no languageDetector is used and no lng is defined');\n      }\n\n      var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n      storeApi.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store;\n\n          return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n        };\n      });\n      var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n      storeApiChained.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store2;\n\n          (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n          return _this2;\n        };\n      });\n      var deferred = defer();\n\n      var load = function load() {\n        var finish = function finish(err, t) {\n          if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n          _this2.isInitialized = true;\n          if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n          _this2.emit('initialized', _this2.options);\n\n          deferred.resolve(t);\n          callback(err, t);\n        };\n\n        if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n        _this2.changeLanguage(_this2.options.lng, finish);\n      };\n\n      if (this.options.resources || !this.options.initImmediate) {\n        load();\n      } else {\n        setTimeout(load, 0);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"loadResources\",\n    value: function loadResources(language) {\n      var _this3 = this;\n\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n      var usedCallback = callback;\n      var usedLng = typeof language === 'string' ? language : this.language;\n      if (typeof language === 'function') usedCallback = language;\n\n      if (!this.options.resources || this.options.partialBundledLanguages) {\n        if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n        var toLoad = [];\n\n        var append = function append(lng) {\n          if (!lng) return;\n\n          var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n          lngs.forEach(function (l) {\n            if (toLoad.indexOf(l) < 0) toLoad.push(l);\n          });\n        };\n\n        if (!usedLng) {\n          var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n          fallbacks.forEach(function (l) {\n            return append(l);\n          });\n        } else {\n          append(usedLng);\n        }\n\n        if (this.options.preload) {\n          this.options.preload.forEach(function (l) {\n            return append(l);\n          });\n        }\n\n        this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n      } else {\n        usedCallback(null);\n      }\n    }\n  }, {\n    key: \"reloadResources\",\n    value: function reloadResources(lngs, ns, callback) {\n      var deferred = defer();\n      if (!lngs) lngs = this.languages;\n      if (!ns) ns = this.options.ns;\n      if (!callback) callback = noop;\n      this.services.backendConnector.reload(lngs, ns, function (err) {\n        deferred.resolve();\n        callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"use\",\n    value: function use(module) {\n      if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n      if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n      if (module.type === 'backend') {\n        this.modules.backend = module;\n      }\n\n      if (module.type === 'logger' || module.log && module.warn && module.error) {\n        this.modules.logger = module;\n      }\n\n      if (module.type === 'languageDetector') {\n        this.modules.languageDetector = module;\n      }\n\n      if (module.type === 'i18nFormat') {\n        this.modules.i18nFormat = module;\n      }\n\n      if (module.type === 'postProcessor') {\n        postProcessor.addPostProcessor(module);\n      }\n\n      if (module.type === '3rdParty') {\n        this.modules.external.push(module);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng, callback) {\n      var _this4 = this;\n\n      this.isLanguageChangingTo = lng;\n      var deferred = defer();\n      this.emit('languageChanging', lng);\n\n      var done = function done(err, l) {\n        if (l) {\n          _this4.language = l;\n          _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n          _this4.translator.changeLanguage(l);\n\n          _this4.isLanguageChangingTo = undefined;\n\n          _this4.emit('languageChanged', l);\n\n          _this4.logger.log('languageChanged', l);\n        } else {\n          _this4.isLanguageChangingTo = undefined;\n        }\n\n        deferred.resolve(function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n        if (callback) callback(err, function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n      };\n\n      var setLng = function setLng(lngs) {\n        var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n        if (l) {\n          if (!_this4.language) {\n            _this4.language = l;\n            _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n          }\n\n          if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n          if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n        }\n\n        _this4.loadResources(l, function (err) {\n          done(err, l);\n        });\n      };\n\n      if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n        setLng(this.services.languageDetector.detect());\n      } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n        this.services.languageDetector.detect(setLng);\n      } else {\n        setLng(lng);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"getFixedT\",\n    value: function getFixedT(lng, ns) {\n      var _this5 = this;\n\n      var fixedT = function fixedT(key, opts) {\n        var options;\n\n        if (_typeof(opts) !== 'object') {\n          for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n            rest[_key3 - 2] = arguments[_key3];\n          }\n\n          options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n        } else {\n          options = _objectSpread({}, opts);\n        }\n\n        options.lng = options.lng || fixedT.lng;\n        options.lngs = options.lngs || fixedT.lngs;\n        options.ns = options.ns || fixedT.ns;\n        return _this5.t(key, options);\n      };\n\n      if (typeof lng === 'string') {\n        fixedT.lng = lng;\n      } else {\n        fixedT.lngs = lng;\n      }\n\n      fixedT.ns = ns;\n      return fixedT;\n    }\n  }, {\n    key: \"t\",\n    value: function t() {\n      var _this$translator;\n\n      return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n    }\n  }, {\n    key: \"exists\",\n    value: function exists() {\n      var _this$translator2;\n\n      return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n    }\n  }, {\n    key: \"setDefaultNamespace\",\n    value: function setDefaultNamespace(ns) {\n      this.options.defaultNS = ns;\n    }\n  }, {\n    key: \"hasLoadedNamespace\",\n    value: function hasLoadedNamespace(ns) {\n      var _this6 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (!this.isInitialized) {\n        this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n        return false;\n      }\n\n      if (!this.languages || !this.languages.length) {\n        this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n        return false;\n      }\n\n      var lng = this.languages[0];\n      var fallbackLng = this.options ? this.options.fallbackLng : false;\n      var lastLng = this.languages[this.languages.length - 1];\n      if (lng.toLowerCase() === 'cimode') return true;\n\n      var loadNotPending = function loadNotPending(l, n) {\n        var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n        return loadState === -1 || loadState === 2;\n      };\n\n      if (options.precheck) {\n        var preResult = options.precheck(this, loadNotPending);\n        if (preResult !== undefined) return preResult;\n      }\n\n      if (this.hasResourceBundle(lng, ns)) return true;\n      if (!this.services.backendConnector.backend) return true;\n      if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n      return false;\n    }\n  }, {\n    key: \"loadNamespaces\",\n    value: function loadNamespaces(ns, callback) {\n      var _this7 = this;\n\n      var deferred = defer();\n\n      if (!this.options.ns) {\n        callback && callback();\n        return Promise.resolve();\n      }\n\n      if (typeof ns === 'string') ns = [ns];\n      ns.forEach(function (n) {\n        if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n      });\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"loadLanguages\",\n    value: function loadLanguages(lngs, callback) {\n      var deferred = defer();\n      if (typeof lngs === 'string') lngs = [lngs];\n      var preloaded = this.options.preload || [];\n      var newLngs = lngs.filter(function (lng) {\n        return preloaded.indexOf(lng) < 0;\n      });\n\n      if (!newLngs.length) {\n        if (callback) callback();\n        return Promise.resolve();\n      }\n\n      this.options.preload = preloaded.concat(newLngs);\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"dir\",\n    value: function dir(lng) {\n      if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n      if (!lng) return 'rtl';\n      var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n      return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n    }\n  }, {\n    key: \"createInstance\",\n    value: function createInstance() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n      return new I18n(options, callback);\n    }\n  }, {\n    key: \"cloneInstance\",\n    value: function cloneInstance() {\n      var _this8 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n      var mergedOptions = _objectSpread({}, this.options, options, {\n        isClone: true\n      });\n\n      var clone = new I18n(mergedOptions);\n      var membersToCopy = ['store', 'services', 'language'];\n      membersToCopy.forEach(function (m) {\n        clone[m] = _this8[m];\n      });\n      clone.services = _objectSpread({}, this.services);\n      clone.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      clone.translator = new Translator(clone.services, clone.options);\n      clone.translator.on('*', function (event) {\n        for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n          args[_key4 - 1] = arguments[_key4];\n        }\n\n        clone.emit.apply(clone, [event].concat(args));\n      });\n      clone.init(mergedOptions, callback);\n      clone.translator.options = clone.options;\n      clone.translator.backendConnector.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      return clone;\n    }\n  }]);\n\n  return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\n","import core from 'core';\nimport getRootNode from './getRootNode';\n\nexport default () => {\n  const freetextAnnots = core.getAnnotationsList().filter((annot) => annot instanceof window.Core.Annotations.FreeTextAnnotation);\n  const isEditingFreetext = freetextAnnots.some((annot) => annot.getEditor()?.hasFocus());\n  const { activeElement } = getRootNode();\n\n  return (\n    activeElement instanceof window.HTMLInputElement ||\n    activeElement instanceof window.HTMLTextAreaElement ||\n    activeElement.className.includes('ql-editor') ||\n    isEditingFreetext ||\n    (activeElement?.tagName?.toLowerCase() === 'input' && activeElement?.getAttribute('type') === 'text') ||\n    activeElement?.tagName?.toLowerCase() === 'textarea'\n  );\n};\n","import hotkeys from 'hotkeys-js';\n\nimport core from 'core';\nimport i18next from 'i18next';\nimport { isMac, isMobile } from 'helpers/device';\nimport openFilePicker from 'helpers/openFilePicker';\nimport copyText from 'helpers/copyText';\nimport setToolModeAndGroup from 'helpers/setToolModeAndGroup';\nimport { zoomIn, zoomOut } from 'helpers/zoom';\nimport { print } from 'helpers/print';\nimport createTextAnnotationAndSelect from 'helpers/createTextAnnotationAndSelect';\nimport isFocusingElement from 'helpers/isFocusingElement';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport setCurrentPage from 'helpers/setCurrentPage';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'src/constants/dataElement';\nimport getRootNode from 'helpers/getRootNode';\n\nexport const Shortcuts = {\n  ROTATE_CLOCKWISE: 'rotateClockwise',\n  ROTATE_COUNTER_CLOCKWISE: 'rotateCounterClockwise',\n  NUMPAD_ROTATE_CLOCKWISE: 'numpadRotateClockwise',\n  NUMPAD_ROTATE_COUNTER_CLOCKWISE: 'numpadRotateCounterClockwise',\n  COPY: 'copy',\n  PASTE: 'paste',\n  UNDO: 'undo',\n  REDO: 'redo',\n  OPEN_FILE: 'openFile',\n  SEARCH: 'search',\n  ZOOM_IN: 'zoomIn',\n  ZOOM_OUT: 'zoomOut',\n  NUMPAD_ZOOM_IN: 'numpadZoomIn',\n  NUMPAD_ZOOM_OUT: 'numpadZoomOut',\n  FIT_SCREEN_WIDTH: 'fitScreenWidth',\n  PRINT: 'print',\n  BOOKMARK: 'bookmark',\n  PREVIOUS_PAGE: 'previousPage',\n  NEXT_PAGE: 'nextPage',\n  UP: 'up',\n  DOWN: 'down',\n  SWITCH_PAN: 'switchPan',\n  SELECT: 'select',\n  PAN: 'pan',\n  ARROW: 'arrow',\n  CALLOUT: 'callout',\n  ERASER: 'eraser',\n  FREEHAND: 'freehand',\n  IMAGE: 'image',\n  LINE: 'line',\n  STICKY_NOTE: 'stickyNote',\n  ELLIPSE: 'ellipse',\n  RECTANGLE: 'rectangle',\n  RUBBER_STAMP: 'rubberStamp',\n  FREETEXT: 'freetext',\n  SIGNATURE: 'signature',\n  SQUIGGLY: 'squiggly',\n  HIGHLIGHT: 'highlight',\n  STRIKEOUT: 'strikeout',\n  UNDERLINE: 'underline',\n  HOME: 'home',\n  END: 'end',\n  CLOSE: 'close',\n};\n\n// prettier-ignore\nconst keyMap = {\n  [Shortcuts.ROTATE_CLOCKWISE]: 'Control+Shift+=',\n  [Shortcuts.ROTATE_COUNTER_CLOCKWISE]: 'Control+Shift+-',\n  [Shortcuts.NUMPAD_ROTATE_CLOCKWISE]: 'Control+Shift+Num_Add',\n  [Shortcuts.NUMPAD_ROTATE_COUNTER_CLOCKWISE]: 'Control+Shift+Num_Subract',\n  [Shortcuts.COPY]: 'Control+C',\n  [Shortcuts.UNDO]: 'Control+Z',\n  [Shortcuts.REDO]: 'Control+Shift+Z',\n  [Shortcuts.ZOOM_IN]: 'Control+=',\n  [Shortcuts.ZOOM_OUT]: 'Control+-',\n  [Shortcuts.NUMPAD_ZOOM_IN]: 'Control+Num_Add',\n  [Shortcuts.NUMPAD_ZOOM_OUT]: 'Control+Num_Subract',\n  [Shortcuts.SELECT]: 'Escape',\n  [Shortcuts.PAN]: 'P',\n  [Shortcuts.ARROW]: 'A',\n  [Shortcuts.CALLOUT]: 'C',\n  [Shortcuts.ERASER]: 'E',\n  [Shortcuts.FREEHAND]: 'F',\n  [Shortcuts.IMAGE]: 'I',\n  [Shortcuts.LINE]: 'L',\n  [Shortcuts.STICKY_NOTE]: 'N',\n  [Shortcuts.ELLIPSE]: 'O',\n  [Shortcuts.RECTANGLE]: 'R',\n  [Shortcuts.FREETEXT]: 'T',\n  [Shortcuts.SIGNATURE]: 'S',\n  [Shortcuts.SQUIGGLY]: 'G',\n  [Shortcuts.HIGHLIGHT]: 'H',\n  [Shortcuts.STRIKEOUT]: 'K',\n  [Shortcuts.UNDERLINE]: 'U',\n  'delete': 'Delete',\n  'richText.bold': 'Control+B',\n  'richText.italic': 'Control+I',\n  'richText.underline': 'Control+U',\n  'richText.strikeout': 'Control+K',\n  [Shortcuts.HOME]: 'Home',\n  [Shortcuts.END]: 'End',\n  [Shortcuts.CLOSE]: 'X',\n};\n\nexport function shortcutAria(shortcut) {\n  let aria = keyMap[shortcut];\n  if (aria) {\n    if (isMac) {\n      aria = aria.replace('Control', 'Meta');\n    }\n    return aria;\n  }\n\n  return undefined;\n}\n\nconst NOOP = () => { };\n\n/**\n * Available hotkeys that can be passed to {@link UI.Hotkeys#on instance.UI.hotkeys.on} or {@link UI.Hotkeys#off instance.UI.hotkeys.off}. <br/><br/>\n * @name UI.Hotkeys.Keys\n * @enum {string}\n * @property {string} CTRL_SHIFT_EQUAL Rotate the document clockwise\n * @property {string} COMMAND_SHIFT_EQUAL Rotate the document clockwise\n * @property {string} CTRL_SHIFT_MINUS Rotate the document counterclockwise\n * @property {string} COMMAND_SHIFT_MINUS Rotate the document counterclockwise\n * @property {string} CTRL_C Copy selected text or annotations\n * @property {string} COMMAND_C Copy selected text or annotations\n * @property {string} CTRL_V Paste text or annotations\n * @property {string} COMMAND_V Paste text or annotations\n * @property {string} CTRL_Z Undo an annotation change\n * @property {string} COMMAND_Z Undo an annotation change\n * @property {string} CTRL_Y Redo an annotation change\n * @property {string} COMMAND_SHIFT_Z Redo an annotation change\n * @property {string} CTRL_O Open the file picker\n * @property {string} COMMAND_O Open the file picker\n * @property {string} CTRL_F Open the search overlay\n * @property {string} COMMAND_F Open the search overlay\n * @property {string} CTRL_EQUAL Zoom in\n * @property {string} COMMAND_EQUAL Zoom in\n * @property {string} CTRL_MINUS Zoom out\n * @property {string} COMMAND_MINUS Zoom out\n * @property {string} CTRL_0 Fit the document to the screen width in a small screen(< 640px), otherwise fit it to its original size\n * @property {string} COMMAND_0 Fit the document to the screen width in a small screen(< 640px), otherwise fit it to its original size\n * @property {string} CTRL_P Print\n * @property {string} COMMAND_P Print\n * @property {string} CTRL_B Quickly bookmark a page and open the bookmark panel\n * @property {string} COMMAND_B Quickly bookmark a page and open the bookmark panel\n * @property {string} PAGE_UP Go to the previous page\n * @property {string} PAGE_DOWN Go to the next page\n * @property {string} UP Go to the previous page in single layout mode (ArrowUp)\n * @property {string} DOWN Go to the next page in single layout mode (ArrowDown)\n * @property {string} SPACE Hold to switch to Pan mode and release to return to previous tool\n * @property {string} ESCAPE Select the AnnotationEdit tool\n * @property {string} P Select the Pan tool\n * @property {string} A Select the AnnotationCreateArrow tool\n * @property {string} C Select the AnnotationCreateCallout tool\n * @property {string} E Select the AnnotationEraser tool\n * @property {string} F Select the AnnotationCreateFreeHand tool\n * @property {string} I Select the AnnotationCreateStamp tool\n * @property {string} L Select the AnnotationCreateLine tool\n * @property {string} N Select the AnnotationCreateSticky tool\n * @property {string} O Select the AnnotationCreateEllipse tool\n * @property {string} R Select the AnnotationCreateRectangle tool\n * @property {string} Q Select the AnnotationCreateRubberStamp tool\n * @property {string} T Select the AnnotationCreateFreeText tool\n * @property {string} S Open the signature modal or the overlay\n * @property {string} G Select the AnnotationCreateTextSquiggly tool\n * @property {string} H Select the AnnotationCreateTextHighlight tool\n * @property {string} K Select the AnnotationCreateTextStrikeout tool\n * @property {string} U Select the AnnotationCreateTextUnderline tool\n * @property {string} X Close the current tooltip\n */\nexport const Keys = {\n  CTRL_SHIFT_EQUAL: 'ctrl+shift+=',\n  COMMAND_SHIFT_EQUAL: 'command+shift+=',\n  CTRL_SHIFT_MINUS: 'ctrl+shift+-',\n  COMMAND_SHIFT_MINUS: 'command+shift+-',\n  CTRL_SHIFT_NUM_ADD: 'ctrl+shift+num_add',\n  COMMAND_SHIFT_NUM_ADD: 'command+shift+num_add',\n  CTRL_SHIFT_NUM_SUBTRACT: 'ctrl+shift+num_subtract',\n  COMMAND_SHIFT_NUM_SUBTRACT: 'command+shift+num_subtract',\n  CTRL_C: 'ctrl+c',\n  COMMAND_C: 'command+c',\n  CTRL_V: 'ctrl+v',\n  COMMAND_V: 'command+v',\n  CTRL_Z: 'ctrl+z',\n  COMMAND_Z: 'command+z',\n  CTRL_Y: 'ctrl+y',\n  COMMAND_SHIFT_Z: 'command+shift+z',\n  CTRL_O: 'ctrl+o',\n  COMMAND_O: 'command+o',\n  CTRL_F: 'ctrl+f',\n  COMMAND_F: 'command+f',\n  CTRL_EQUAL: 'ctrl+=',\n  COMMAND_EQUAL: 'command+=',\n  CTRL_MINUS: 'ctrl+-',\n  COMMAND_MINUS: 'command+-',\n  CTRL_NUM_ADD: 'ctrl+num_add',\n  COMMAND_NUM_ADD: 'command+num_add',\n  CTRL_NUM_SUBTRACT: 'ctrl+num_subtract',\n  COMMAND_NUM_SUBTRACT: 'command+num_subtract',\n  CTRL_0: 'ctrl+0',\n  COMMAND_0: 'command+0',\n  CTRL_P: 'ctrl+p',\n  COMMAND_P: 'command+p',\n  CTRL_B: 'ctrl+b',\n  COMMAND_B: 'command+b',\n  ENTER: 'enter',\n  PAGE_UP: 'pageup',\n  PAGE_DOWN: 'pagedown',\n  UP: 'up',\n  DOWN: 'down',\n  SPACE: 'space',\n  ESCAPE: 'escape',\n  HOME: 'home',\n  END: 'end',\n  P: 'p',\n  A: 'a',\n  C: 'c',\n  E: 'e',\n  F: 'f',\n  I: 'i',\n  L: 'l',\n  N: 'n',\n  O: 'o',\n  R: 'r',\n  Q: 'q',\n  T: 't',\n  S: 's',\n  G: 'g',\n  H: 'h',\n  K: 'k',\n  U: 'u',\n  X: 'x',\n};\n\nexport function concatKeys(...keys) {\n  return keys.join(', ');\n}\n\nfunction splitKey(key) {\n  return key.split(', ');\n}\n\n// Defalut keys for shortcut\nexport const ShortcutKeys = {\n  [Shortcuts.ROTATE_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_EQUAL, Keys.COMMAND_SHIFT_EQUAL),\n  [Shortcuts.ROTATE_COUNTER_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_MINUS, Keys.COMMAND_SHIFT_MINUS),\n  [Shortcuts.NUMPAD_ROTATE_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_NUM_ADD, Keys.COMMAND_SHIFT_NUM_ADD),\n  [Shortcuts.NUMPAD_ROTATE_COUNTER_CLOCKWISE]: concatKeys(Keys.CTRL_SHIFT_NUM_SUBTRACT, Keys.COMMAND_SHIFT_NUM_SUBTRACT),\n  [Shortcuts.COPY]: concatKeys(Keys.CTRL_C, Keys.COMMAND_C),\n  [Shortcuts.PASTE]: concatKeys(Keys.CTRL_V, Keys.COMMAND_V),\n  [Shortcuts.UNDO]: concatKeys(Keys.CTRL_Z, Keys.COMMAND_Z),\n  [Shortcuts.REDO]: concatKeys(Keys.CTRL_Y, Keys.COMMAND_SHIFT_Z),\n  [Shortcuts.OPEN_FILE]: concatKeys(Keys.CTRL_O, Keys.COMMAND_O),\n  [Shortcuts.SEARCH]: concatKeys(Keys.CTRL_F, Keys.COMMAND_F),\n  [Shortcuts.ZOOM_IN]: concatKeys(Keys.CTRL_EQUAL, Keys.COMMAND_EQUAL),\n  [Shortcuts.ZOOM_OUT]: concatKeys(Keys.CTRL_MINUS, Keys.COMMAND_MINUS),\n  [Shortcuts.NUMPAD_ZOOM_IN]: concatKeys(Keys.CTRL_NUM_ADD, Keys.COMMAND_NUM_ADD),\n  [Shortcuts.NUMPAD_ZOOM_OUT]: concatKeys(Keys.CTRL_NUM_SUBTRACT, Keys.COMMAND_NUM_SUBTRACT),\n  [Shortcuts.FIT_SCREEN_WIDTH]: concatKeys(Keys.CTRL_0, Keys.COMMAND_0),\n  [Shortcuts.PRINT]: concatKeys(Keys.CTRL_P, Keys.COMMAND_P),\n  [Shortcuts.BOOKMARK]: concatKeys(Keys.CTRL_B, Keys.COMMAND_B),\n  [Shortcuts.PREVIOUS_PAGE]: Keys.PAGE_UP,\n  [Shortcuts.NEXT_PAGE]: Keys.PAGE_DOWN,\n  [Shortcuts.UP]: Keys.UP,\n  [Shortcuts.DOWN]: Keys.DOWN,\n  [Shortcuts.SWITCH_PAN]: Keys.SPACE,\n  [Shortcuts.SELECT]: Keys.ESCAPE,\n  [Shortcuts.PAN]: Keys.P,\n  [Shortcuts.ARROW]: Keys.A,\n  [Shortcuts.CALLOUT]: Keys.C,\n  [Shortcuts.ERASER]: Keys.E,\n  [Shortcuts.FREEHAND]: Keys.F,\n  [Shortcuts.IMAGE]: Keys.I,\n  [Shortcuts.LINE]: Keys.L,\n  [Shortcuts.STICKY_NOTE]: Keys.N,\n  [Shortcuts.ELLIPSE]: Keys.O,\n  [Shortcuts.RECTANGLE]: Keys.R,\n  [Shortcuts.RUBBER_STAMP]: Keys.Q,\n  [Shortcuts.FREETEXT]: Keys.T,\n  [Shortcuts.SIGNATURE]: Keys.S,\n  [Shortcuts.SQUIGGLY]: Keys.G,\n  [Shortcuts.HIGHLIGHT]: Keys.H,\n  [Shortcuts.STRIKEOUT]: Keys.K,\n  [Shortcuts.UNDERLINE]: Keys.U,\n  [Shortcuts.HOME]: Keys.HOME,\n  [Shortcuts.END]: Keys.END,\n  [Shortcuts.CLOSE]: Keys.X,\n};\n\nconst ToolNameHotkeyMap = {\n  AnnotationEdit: Keys.ESCAPE,\n  Pan: Keys.P,\n  AnnotationCreateArrow: Keys.A,\n  AnnotationCreateCallout: Keys.C,\n  AnnotationEraserTool: Keys.E,\n  AnnotationCreateFreeHand: Keys.F,\n  AnnotationCreateStamp: Keys.I,\n  AnnotationCreateLine: Keys.L,\n  AnnotationCreateSticky: Keys.N,\n  AnnotationCreateEllipse: Keys.O,\n  AnnotationCreateRectangle: Keys.R,\n  AnnotationCreateFreeText: Keys.T,\n  AnnotationCreateSignature: Keys.S,\n  AnnotationCreateTextSquiggly: Keys.G,\n  AnnotationCreateTextHighlight: Keys.H,\n  AnnotationCreateTextStrikeout: Keys.K,\n  AnnotationCreateTextUnderline: Keys.U,\n  AnnotationCreateRubberStamp: Keys.Q\n};\n\nconst unbindedHotkeysMap = {};\n\nexport const defaultHotkeysScope = 'viewer';\n\n/**\n * A class which contains hotkeys APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> You must NOT instantiate this yourself. Access instances of this class using {@link UI.hotkeys instance.UI.hotkeys}\n * @namespace Hotkeys\n * @memberof UI\n */\nconst HotkeysManager = {\n  initialize(store) {\n    // still allow hotkeys when focusing a textarea or an input\n    hotkeys.filter = () => true;\n    this.store = store;\n    this.keyHandlerMap = this.createKeyHandlerMap();\n    this.prevToolName = null;\n    const shortcutKeyMap = this.getShortcutKeyMap();\n    Object.keys(shortcutKeyMap).forEach((shortcut) => {\n      this.on(shortcutKeyMap[shortcut], this.keyHandlerMap[ShortcutKeys[shortcut]]);\n    });\n    this.didInitializeAllKeys = true;\n    hotkeys.setScope(defaultHotkeysScope);\n    this.formBuilderDisabledKeys = {};\n  },\n  /**\n   * Add an event handler for the given hotkey\n   * @method UI.Hotkeys.on\n   * @param {string|UI.Hotkeys.Keys} key A keyboard key <br/>\n   * If a hotkey is consisted of more than one key. Those keys should be connected using '+'.\n   * @param {function|object} [handler] An optional argument <br/>\n   * If it is undefined, the default handler of the given key will be registered <br/>\n   * If it is an function, it will be called on key down <br/>\n   * If it is an object, it should have the shape of { keydown: func1, keyup: func2 }. Func1 will be called on keydown while func2 will be called on keyup\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { UI } = instance;\n      // this will register the default zoom in handler\n      UI.hotkeys.on(UI.hotkeys.Keys.CTRL_EQUAL);\n      UI.hotkeys.on(UI.hotkeys.Keys.COMMAND_EQUAL);\n\n      // this will be called on keydown\n      UI.hotkeys.on('ctrl+d, command+d', e => {\n        e.preventDefault();\n        instance.Core.documentViewer.closeDocument();\n      });\n\n      UI.hotkeys.on('ctrl+g', {\n        keydown: e => {\n          console.log('ctrl+g is pressed!');\n        },\n        keyup: e => {\n          console.log('ctrl+g is released!')\n        },\n      });\n  });\n   */\n  on(key, handler) {\n    if (key && typeof key === 'string') {\n      key = key.toLocaleLowerCase();\n    }\n    const isToolName = !!core.getToolModeMap()[key];\n    if (isToolName) {\n      key = ToolNameHotkeyMap[key];\n    }\n\n    if (!handler) {\n      handler = this.keyHandlerMap[key];\n    }\n\n    function enableHotkey(_key, _handler) {\n      // https://github.com/jaywcjlove/hotkeys#defining-shortcuts\n      const { keyup = NOOP, keydown = _handler } = _handler;\n      hotkeys(_key, { keyup: true, scope: defaultHotkeysScope }, (e) => {\n        // Preventing the hotkey from being called multiple times or in the wrong viewer\n        // when using the web component version of webviewer.\n        // the escape key is special, it can be triggered with the wrong target if for example we\n        // add a signature from the modal and then choose to not apply it, so we whitelist it\n        const isEscape = e.key === 'Escape';\n        const calledFromCurrentViewer = e.currentTarget.activeElement.shadowRoot === getRootNode();\n        if (calledFromCurrentViewer || !window.isApryseWebViewerWebComponent || isEscape) {\n          if (e.type === 'keyup') {\n            keyup(e);\n          }\n          if (e.type === 'keydown') {\n            keydown(e);\n          }\n        }\n      });\n    }\n\n    if ((!key || !handler) && !this.didInitializeAllKeys) {\n      this.keyHandlerMap = this.createKeyHandlerMap();\n      this.prevToolName = null;\n      Object.keys(this.keyHandlerMap).forEach((_key) => {\n        // Check if the \"key\" has already been initialized\n        if (!unbindedHotkeysMap[_key]) {\n          enableHotkey(_key, this.keyHandlerMap[_key]);\n        }\n      });\n      this.didInitializeAllKeys = true;\n    }\n\n    // when key is undefined we need to set all keys to true\n    if (!key) {\n      for (const property in Keys) {\n        unbindedHotkeysMap[Keys[property]] = true;\n      }\n    } else {\n      unbindedHotkeysMap[key.toLocaleLowerCase()] = true;\n    }\n\n    if (!key || !handler) {\n      return;\n    }\n\n    enableHotkey(key, handler);\n  },\n  /**\n   * Remove an event handler for the given hotkey\n   * @method UI.Hotkeys.off\n   * @param {string|UI.Hotkeys.Keys} [key] An optional keyboard key. If not passed, all handlers will be removed\n   * @param {function} [handler] An optional function. If not passed, all handlers of the given key will be removed\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n      // this will remove all handlers for ctrl = and command =\n      instance.UI.hotkeys.off(instance.UI.hotkeys.Keys.CTRL_EQUAL);\n      instance.UI.hotkeys.off(instance.UI.hotkeys.Keys.COMMAND_EQUAL);\n  });\n   */\n  off(key, handler) {\n    const isToolName = !!core.getToolModeMap()[key];\n    if (isToolName) {\n      key = ToolNameHotkeyMap[key];\n\n      // need to return here otherwise all the handlers will be removed\n      // if the tool name doesn't have a corresponding hotkey\n      if (!key) {\n        return;\n      }\n    }\n\n    // when key is undefined hotkeysjs unbinds all handler\n    // here we need to flag all keys too\n    if (!key) {\n      for (const property in Keys) {\n        unbindedHotkeysMap[Keys[property]] = false;\n      }\n      this.didInitializeAllKeys = false;\n    } else {\n      unbindedHotkeysMap[key.toLocaleLowerCase()] = false;\n    }\n\n    // https://github.com/jaywcjlove/hotkeys#unbind\n    hotkeys.unbind(key, handler);\n  },\n  isActive(shortcut) {\n    const key = keyMap[shortcut];\n    if (key) {\n      let hotkeyName;\n      // change 'ctrl' to 'command' for Mac OS\n      if (isMac) {\n        hotkeyName = key.replace('Control', 'command').toLocaleLowerCase();\n      } else {\n        hotkeyName = key.replace('Control', 'ctrl').toLocaleLowerCase();\n      }\n      return unbindedHotkeysMap[hotkeyName];\n    }\n    return true;\n  },\n  createKeyHandlerMap() {\n    const store = this.store;\n    const { dispatch, getState } = store;\n    const { ToolNames } = window.Core.Tools;\n\n    return {\n      [ShortcutKeys[Shortcuts.ROTATE_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.ROTATE_COUNTER_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateCounterClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ROTATE_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ROTATE_COUNTER_CLOCKWISE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n        core.rotateCounterClockwise(activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.COPY]]: () => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (core.getSelectedText(activeDocumentViewerKey)) {\n          copyText(activeDocumentViewerKey);\n          dispatch(actions.closeElement('textPopup'));\n        } else if (core.getSelectedAnnotations(activeDocumentViewerKey).length) {\n          core.updateCopiedAnnotations(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.PASTE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.pasteCopiedAnnotations(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.UNDO]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.undo(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.REDO]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (!isFocusingElement()) {\n          e.preventDefault();\n          core.redo(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.OPEN_FILE]]: (e) => {\n        e.preventDefault();\n        openFilePicker();\n      },\n      [ShortcutKeys[Shortcuts.SEARCH]]: (e) => {\n        e.preventDefault();\n\n        const isNotesPanelOpen = selectors.isElementOpen(getState(), 'notesPanel');\n        if (isNotesPanelOpen) {\n          dispatch(actions.closeElement('notesPanel'));\n        }\n\n        const isRedactionPanelOpen = selectors.isElementOpen(getState(), 'redactionPanel');\n        if (isRedactionPanelOpen) {\n          dispatch(actions.closeElement('redactionPanel'));\n        }\n\n        const isTextEditingPanelOpen = selectors.isElementOpen(getState(), 'textEditingPanel');\n        if (isTextEditingPanelOpen) {\n          dispatch(actions.closeElement('textEditingPanel'));\n        }\n\n        const isWv3dPropertiesPanelOpen = selectors.isElementOpen(getState(), 'wv3dPropertiesPanel');\n        if (isWv3dPropertiesPanelOpen) {\n          dispatch(actions.closeElement('wv3dPropertiesPanel'));\n        }\n\n        const isWatermarkPanelOpen = selectors.isElementOpen(getState(), 'watermarkPanel');\n        if (isWatermarkPanelOpen) {\n          dispatch(actions.closeElement('watermarkPanel'));\n        }\n\n        dispatch(actions.toggleElement('searchPanel'));\n      },\n      [ShortcutKeys[Shortcuts.ZOOM_IN]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomIn(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.ZOOM_OUT]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomOut(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ZOOM_IN]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomIn(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NUMPAD_ZOOM_OUT]]: (e) => {\n        e.preventDefault();\n        const state = getState();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(state);\n        const isMultiViewerMode = selectors.isMultiViewerMode(state);\n        zoomOut(isMultiViewerMode, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.FIT_SCREEN_WIDTH]]: (e) => {\n        e.preventDefault();\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (isMobile) {\n          core.fitToWidth(activeDocumentViewerKey);\n        } else {\n          core.fitToPage(activeDocumentViewerKey);\n        }\n      },\n      [ShortcutKeys[Shortcuts.PRINT]]: (e) => {\n        e.preventDefault();\n\n        print(\n          dispatch,\n          selectors.isEmbedPrintSupported(getState()),\n          selectors.getSortStrategy(getState()),\n          selectors.getColorMap(getState()),\n        );\n      },\n      // TODO Compare: Intergrate panels with compare\n      [ShortcutKeys[Shortcuts.BOOKMARK]]: (e) => {\n        e.preventDefault();\n        if (!selectors.isElementDisabled(getState(), DataElements.BOOKMARK_PANEL)) {\n          dispatch(actions.openElement(DataElements.LEFT_PANEL));\n          dispatch(actions.setActiveLeftPanel(DataElements.BOOKMARK_PANEL));\n\n          const bookmarks = selectors.getBookmarks(getState());\n          const currentPageIndex = core.getCurrentPage() - 1;\n          // only add bookmark if page is not already bookmarked\n          if (!bookmarks[currentPageIndex]) {\n            dispatch(actions.addBookmark(currentPageIndex, i18next.t('message.untitled')));\n          }\n        }\n      },\n      [ShortcutKeys[Shortcuts.PREVIOUS_PAGE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n\n        setCurrentPage(core.getCurrentPage() - getNumberOfPagesToNavigate(), activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.NEXT_PAGE]]: (e) => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        e.preventDefault();\n\n        setCurrentPage(core.getCurrentPage() + getNumberOfPagesToNavigate(), activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.UP]]: () => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n\n        // do not call preventDefault else it will prevent scrolling\n        const scrollViewElement = core.getScrollViewElement(activeDocumentViewerKey);\n        const { scrollHeight, clientHeight } = scrollViewElement;\n        const reachedTop = scrollViewElement.scrollTop === 0;\n\n        if (reachedTop) {\n          const currentPage = core.getCurrentPage(activeDocumentViewerKey);\n          setCurrentPage(currentPage - getNumberOfPagesToNavigate(), activeDocumentViewerKey);\n\n          // set the scrollbar to be at the bottom of the page only if the previous page is bigger than 1\n          if (currentPage > 1) {\n            scrollViewElement.scrollTop = scrollHeight - clientHeight;\n          }\n        }\n      },\n      [ShortcutKeys[Shortcuts.DOWN]]: () => {\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n\n        // do not call preventDefault else it will prevent scrolling\n        const scrollViewElement = core.getScrollViewElement(activeDocumentViewerKey);\n        const { scrollTop, clientHeight, scrollHeight } = scrollViewElement;\n        const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n        if (reachedBottom) {\n          setCurrentPage(core.getCurrentPage(activeDocumentViewerKey) + getNumberOfPagesToNavigate());\n        }\n      },\n      [ShortcutKeys[Shortcuts.SWITCH_PAN]]: {\n        keyup: this.createToolHotkeyHandler((e) => {\n          e.preventDefault();\n\n          setToolModeAndGroup(store, this.prevToolName);\n          this.prevToolName = null;\n        }),\n        keydown: this.createToolHotkeyHandler((e) => {\n          e.preventDefault();\n\n          if (core.getToolMode().name !== 'Pan') {\n            this.prevToolName = core.getToolMode().name;\n            setToolModeAndGroup(store, 'Pan');\n          }\n        }),\n      },\n      [ShortcutKeys[Shortcuts.SELECT]]: (e) => {\n        e.preventDefault();\n        setToolModeAndGroup(store, 'AnnotationEdit', '');\n\n        dispatch(\n          actions.closeElements([\n            DataElements.ANNOTATION_POPUP,\n            DataElements.TEXT_POPUP,\n            DataElements.CONTEXT_MENU_POPUP,\n            'toolStylePopup',\n            DataElements.ANNOTATION_STYLE_POPUP,\n            DataElements.SIGNATURE_MODAL,\n            'customStampModal',\n            DataElements.PRINT_MODAL,\n            'rubberStampOverlay',\n            DataElements.FILTER_MODAL,\n            DataElements.SIGNATURE_LIST_PANEL,\n            DataElements.RUBBER_STAMP_PANEL\n          ]),\n        );\n      },\n      [ShortcutKeys[Shortcuts.PAN]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.PAN);\n      }),\n      [ShortcutKeys[Shortcuts.ARROW]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.ARROW);\n      }),\n      [ShortcutKeys[Shortcuts.CALLOUT]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.CALLOUT);\n      }),\n      [ShortcutKeys[Shortcuts.ERASER]]: this.createToolHotkeyHandler(() => {\n        const state = getState();\n        const isCustomizableUI = state.featureFlags.customizableUI;\n        if (isCustomizableUI) {\n          dispatch(actions.setActiveGroupedItemWithTool(ToolNames.ERASER));\n        }\n        setToolModeAndGroup(store, ToolNames.ERASER);\n      }),\n      [ShortcutKeys[Shortcuts.FREEHAND]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.FREEHAND);\n      }),\n      [ShortcutKeys[Shortcuts.IMAGE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.STAMP);\n      }),\n      [ShortcutKeys[Shortcuts.LINE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.LINE);\n      }),\n      [ShortcutKeys[Shortcuts.STICKY_NOTE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.STICKY);\n      }),\n      [ShortcutKeys[Shortcuts.ELLIPSE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.ELLIPSE);\n      }),\n      [ShortcutKeys[Shortcuts.RECTANGLE]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.RECTANGLE);\n      }),\n      [ShortcutKeys[Shortcuts.RUBBER_STAMP]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.RUBBER_STAMP);\n      }),\n      [ShortcutKeys[Shortcuts.FREETEXT]]: this.createToolHotkeyHandler(() => {\n        setToolModeAndGroup(store, ToolNames.FREETEXT);\n      }),\n      [ShortcutKeys[Shortcuts.SIGNATURE]]: this.createToolHotkeyHandler(() => {\n        const state = getState();\n        const isCustomizableUI = state.featureFlags.customizableUI;\n        if (isCustomizableUI) {\n          dispatch(actions.openElement(DataElements.SIGNATURE_LIST_PANEL));\n          setToolModeAndGroup(store, ToolNames.SIGNATURE);\n          return;\n        }\n        dispatch(actions.setToolbarGroup('toolbarGroup-FillAndSign', false));\n        const sigToolButton = getRootNode().querySelector('[data-element=\"signatureToolGroupButton\"] .Button');\n        sigToolButton?.click();\n        const sigModalButton = getRootNode().querySelector('.signature-row-content');\n        sigModalButton?.click();\n      }),\n      [ShortcutKeys[Shortcuts.SQUIGGLY]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextSquigglyAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextSquiggly');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.HIGHLIGHT]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextHighlightAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextHighlight');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.STRIKEOUT]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextStrikeoutAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextStrikeout');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.UNDERLINE]]: this.createToolHotkeyHandler(() => {\n        if (core.getSelectedText()) {\n          createTextAnnotationAndSelect(dispatch, window.Core.Annotations.TextUnderlineAnnotation);\n        } else {\n          setToolModeAndGroup(store, 'AnnotationCreateTextUnderline');\n        }\n      }),\n      [ShortcutKeys[Shortcuts.HOME]]: () => {\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        setCurrentPage(1, activeDocumentViewerKey);\n      },\n      [ShortcutKeys[Shortcuts.END]]: this.createToolHotkeyHandler(() => {\n        if (isFocusingElement() || core.isContinuousDisplayMode(activeDocumentViewerKey)) {\n          return;\n        }\n        const activeDocumentViewerKey = selectors.getActiveDocumentViewerKey(getState());\n        const pageCount = selectors.getTotalPages(getState());\n        setCurrentPage(pageCount, activeDocumentViewerKey);\n      }),\n      [ShortcutKeys[Shortcuts.CLOSE]]: () => {\n        if (closeToolTipFunc) {\n          closeToolTipFunc();\n          closeToolTipFunc = null;\n        }\n      },\n    };\n  },\n  /**\n   * Returns a function that will be used as a handler to a hotkey\n   * @param {func} handler a function that only gets called when no textarea or input elements are focused\n   * @ignore\n   */\n  createToolHotkeyHandler(handler) {\n    const { getState } = this.store;\n\n    return (...args) => {\n      const openElements = selectors.getOpenElements(getState());\n      const currentToolName = core.getToolMode().name;\n\n      // disable changing tool when the signature overlay is opened.\n      const isSignatureModalOpen =\n        currentToolName === window.Core.Tools.ToolNames.SIGNATURE && openElements['signatureModal'];\n\n      if (isFocusingElement() || isSignatureModalOpen) {\n        return;\n      }\n\n      handler(...args);\n    };\n  },\n  getShortcutKeyMap() {\n    const { getState } = this.store;\n    return selectors.getShortcutKeyMap(getState());\n  },\n  setShortcutKey(shortcut, key) {\n    const { dispatch } = this.store;\n    const shortcutKeyMap = { ...this.getShortcutKeyMap() };\n    this.off(shortcutKeyMap[shortcut]);\n    this.on(key, this.keyHandlerMap[ShortcutKeys[shortcut]]);\n    shortcutKeyMap[shortcut] = key;\n    dispatch(actions.setShortcutKeyMap(shortcutKeyMap));\n  },\n  hasConflict(shortcut, command) {\n    const shortcutKeyMap = this.getShortcutKeyMap();\n    const existingKeys = Object.keys(shortcutKeyMap).filter((item) => item !== shortcut).map((item) => shortcutKeyMap[item]);\n    for (const key of existingKeys) {\n      if (key === command || splitKey(key).includes(command)) {\n        return true;\n      }\n    }\n    return false;\n  },\n  enableShortcut(shortcut) {\n    this.setShortcutKey(shortcut, this.getShortcutKeyMap()[shortcut]);\n  },\n  disableShortcut(shortcut) {\n    this.off(this.getShortcutKeyMap()[shortcut]);\n  }\n};\n\nlet closeToolTipFunc;\n\nexport const setCloseToolTipFunc = (func) => {\n  closeToolTipFunc = func;\n};\n\nexport const getCloseToolTipFunc = () => closeToolTipFunc;\n\nexport default Object.create(HotkeysManager);\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n","export const PRIORITY_THREE = 3;\nexport const PRIORITY_TWO = 2;\nexport const PRIORITY_ONE = 1;","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","import { isIE11 } from 'helpers/device';\nimport Events from 'constants/events';\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nconst fireEvent = (eventName, data, element = null) => {\n  let event;\n  if (CustomEvent && !isIE11) {\n    event = new CustomEvent(eventName, { detail: data, bubbles: true, cancelable: true });\n  } else {\n    event = document.createEvent('Event');\n    event.initEvent(eventName, true, true);\n    event.detail = data;\n  }\n  element ? element.dispatchEvent(event) : getInstanceNode().dispatchEvent(event);\n};\n\nexport default fireEvent;\nexport const fireError = (message) => {\n  fireEvent(Events.LOAD_ERROR, message);\n};\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n","import getRootNode from './getRootNode';\nimport useMedia from 'hooks/useMedia';\nimport { MOBILE_SIZE, TABLET_SIZE } from 'constants/deviceSizes';\n\nexport const isMobileSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth <= MOBILE_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(max-width: ${MOBILE_SIZE}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};\n\nexport const isTabletSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth > MOBILE_SIZE && getRootNode()?.host.clientWidth <= TABLET_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(min-width: ${MOBILE_SIZE + 1}px) and (max-width: ${TABLET_SIZE}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};\n\nexport const isTabletAndMobileSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth <= TABLET_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(max-width: ${TABLET_SIZE}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};\n\nexport const isDesktopSize = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    return getRootNode()?.host.clientWidth > TABLET_SIZE;\n  }\n  return useMedia(\n    // Media queries\n    [`(min-width: ${TABLET_SIZE + 1}px)`],\n    [true],\n    // Default value\n    false,\n  );\n};","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n  return fn && uncurryThis(fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","import { isIOS, isAndroid } from 'helpers/device';\n\nexport default (isIOS || isAndroid) ? 'Pan' : 'AnnotationEdit';","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar un$Reverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return un$Reverse(this);\n  }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","import DataElements from 'constants/dataElement';\n\nexport const FONT_SIZE = {\n  MAX: 1638,\n  MIN: 2,\n};\n\nexport const LINE_SPACING_OPTIONS = {\n  'Single': 1,\n  '1.15': 1.15,\n  '1.5': 1.5,\n  'Double': 2,\n};\n\nexport const JUSTIFICATION_OPTIONS = {\n  Left: 'left',\n  Center: 'center',\n  Right: 'right',\n  Both: 'both'\n};\n\nexport const LIST_OPTIONS = {\n  Ordered: 'ordered',\n  Unordered: 'unordered',\n};\n\nexport const DEFAULT_POINT_SIZE = 11;\n\nconst OfficeEditorListStylePresets = window.Core.Document.OfficeEditorListStylePresets;\nexport const OFFICE_BULLET_OPTIONS = [\n  { enum: OfficeEditorListStylePresets.BULLET, img: 'icon-office-editor-list-style-bullet' },\n  { enum: OfficeEditorListStylePresets.BULLET_SQUARE, img: 'icon-office-editor-list-style-square' },\n  { enum: OfficeEditorListStylePresets.SQUARE_BULLET, img: 'icon-office-editor-list-style-square-bullet' },\n  { enum: OfficeEditorListStylePresets.DIAMOND, img: 'icon-office-editor-list-style-diamond' },\n  { enum: OfficeEditorListStylePresets.CHECK, img: 'icon-office-editor-list-style-check' },\n  { enum: OfficeEditorListStylePresets.ARROW, img: 'icon-office-editor-list-style-arrow' },\n];\n\nexport const OFFICE_NUMBER_OPTIONS = [\n  { enum: OfficeEditorListStylePresets.NUMBER_LATIN_ROMAN_1, img: 'icon-office-editor-list-style-number-latin-1' },\n  { enum: OfficeEditorListStylePresets.NUMBER_DECIMAL, img: 'icon-office-editor-list-style-number-decimal' },\n  { enum: OfficeEditorListStylePresets.NUMBER_LATIN_ROMAN_2, img: 'icon-office-editor-list-style-number-latin-2' },\n  { enum: OfficeEditorListStylePresets.LATIN_ROMAN, img: 'icon-office-editor-list-style-latin-roman' },\n  { enum: OfficeEditorListStylePresets.ROMAN_LATIN_NUMBER, img: 'icon-office-editor-list-style-roman-latin' },\n];\n\nexport const OFFICE_EDITOR_TRACKED_CHANGE_KEY = 'officeEditorTrackedChangeUID';\n\nexport const OFFICE_EDITOR_EDIT_MODE = {\n  EDITING: 'editing',\n  REVIEWING: 'reviewing',\n  VIEW_ONLY: 'viewOnly',\n  PREVIEW: 'preview'\n};\n\nexport const OFFICE_EDITOR_SCOPE = 'office-editor';\n\nexport const ELEMENTS_TO_DISABLE_IN_OFFICE_EDITOR = [\n  'toggleNotesButton',\n  'toolsHeader',\n  'viewControlsButton',\n  'textPopup',\n  'marqueeToolButton',\n  'outlinesPanelButton',\n  'outlinesPanel',\n  'leftPanelButton',\n  'annotationPopup',\n  DataElements.NotesPanel.DefaultHeader.FILTER_ANNOTATION_BUTTON,\n  DataElements.ANNOTATION_NOTE_CONNECTOR_LINE,\n  DataElements.ANNOTATION_CONTENT_OVERLAY,\n];\n\nexport const ELEMENTS_TO_ENABLE_IN_OFFICE_EDITOR = [\n  DataElements.OFFICE_EDITOR_TOOLS_HEADER,\n  DataElements.INLINE_COMMENT_POPUP\n];\n\nexport const AVAILABLE_POINT_SIZES = ['8', '9', '10', '11', '12', '14', '18', '24', '30', '36', '48', '60', '72'];\n\n/* eslint-disable custom/no-hex-colors */\nexport const AVAILABLE_STYLE_PRESET_MAP = {\n  'Normal Text': {\n    fontSize: '11pt',\n    color: '#000000',\n  },\n  'Title': {\n    fontSize: '26pt',\n    color: '#000000',\n  },\n  'Subtitle': {\n    fontSize: '15pt',\n    color: '#666666',\n  },\n  'Heading 1': {\n    fontSize: '20pt',\n    color: '#000000',\n  },\n  'Heading 2': {\n    fontSize: '16pt',\n    color: '#000000',\n  },\n  'Heading 3': {\n    fontSize: '14pt',\n    color: '#434343',\n  },\n  'Heading 4': {\n    fontSize: '12pt',\n    color: '#666666',\n  },\n  'Heading 5': {\n    fontSize: '11pt',\n    color: '#666666',\n  },\n};\n/* eslint-enable custom/no-hex-colors */","export const workerTypes = {\n  IMAGE: 'image',\n  PDF: 'pdf',\n  OFFICE: 'office',\n  LEGACY_OFFICE: 'legacyOffice',\n  OFFICE_EDITOR: 'officeEditor',\n  WEBVIEWER_SERVER: 'webviewerServer',\n  XOD: 'xod',\n  CONTENT_EDIT: 'contentEdit',\n  ALL: 'all',\n};","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst propTypes = {\n  id: PropTypes.string,\n  children: PropTypes.node,\n  dataElement: PropTypes.string,\n  type: PropTypes.string\n};\n\n/*\n * Custom hook that makes sure we can use this component in unit tests and storybook easier. If Redux context is not available, it will\n * return defaultValue given, which is false by default. If redux context is available like in normal case, it will get the value\n * from redux store.\n */\nfunction useIsDisabledWithDefaultValue(selector, defaultValue = false) {\n  try {\n    return useSelector(selector);\n  } catch (e) {\n    if (e.message !== 'could not find react-redux context value; please ensure the component is wrapped in a <Provider>') {\n      // If error don't throw it, just return default value, or we break chromatic tests\n      // throw e;\n    }\n  }\n  return defaultValue;\n}\n\nconst DataElementWrapper = React.forwardRef(({ type = 'div', children, dataElement, ...props }, ref) => {\n  const isDisabled = useIsDisabledWithDefaultValue((state) => selectors.isElementDisabled(state, dataElement));\n  if (isDisabled) {\n    return null;\n  }\n\n  if (type === 'button') {\n    return (\n      <button ref={ref} data-element={dataElement} {...props}>\n        {children}\n      </button>\n    );\n  }\n  return (\n    <div ref={ref} data-element={dataElement} {...props}>\n      {children}\n    </div>\n  );\n});\n\nDataElementWrapper.displayName = 'DataElementWrapper';\nDataElementWrapper.propTypes = propTypes;\n\nexport default DataElementWrapper;\n","import DataElementWrapper from './DataElementWrapper';\n\nexport default DataElementWrapper;","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    let error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n          'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      let argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    (error as any).framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i >= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.push(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.push(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length > 2;\r\n    for (var i = 0; i < initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { isOfficeEditorMode } from 'helpers/officeEditor';\n\nlet minZoom = 0.05;\nlet maxZoom = 99.99;\nconst MAX_OFFICE_EDITOR_ZOOM = 2;\n\nexport const getMinZoomLevel = () => minZoom;\n\nexport const setMinZoomLevel = (zoom) => {\n  minZoom = zoom;\n};\n\nexport const getMaxZoomLevel = () => {\n  if (isOfficeEditorMode()) {\n    return MAX_OFFICE_EDITOR_ZOOM;\n  }\n  return maxZoom;\n};\n\nexport const setMaxZoomLevel = (zoom) => {\n  maxZoom = zoom;\n};\n\nexport const stepToZoomFactorRangesMap = {\n  '0.075': [null, 0.8],\n  '0.25': [0.8, 1.5],\n  '0.5': [1.5, 2.5],\n  '1': [2.5, 4],\n  '2': [4, 8],\n  '4': [8, 32],\n  '8': [32, 64],\n  '16': [64, null],\n};\n\nexport const defaultZoomList = [0.1, 0.25, 0.5, 1, 1.25, 1.5, 2, 4, 8, 16, 64];\n\nexport default {\n  setMinZoomLevel,\n  setMaxZoomLevel,\n  getMinZoomLevel,\n  getMaxZoomLevel,\n};\n","/**\n * Disable certain features in the WebViewer UI.\n * @method UI.disableFeatures\n * @param {Array.<string>} features Array of features to disable.\n * @see UI.Feature\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableFeatures(instance.UI.Feature.Measurement);\n  });\n */\n\nimport createFeatureAPI from 'helpers/createFeatureAPI';\n\nconst enable = false;\nexport default (store) => createFeatureAPI(enable, store);\n","'use strict';\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? un$IndexOf(this, searchElement, fromIndex) || 0\n      : $IndexOf(this, searchElement, fromIndex);\n  }\n});\n","import core from 'core';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\nimport getRootNode, { getInstanceNode } from 'helpers/getRootNode';\n\nfunction convertZoomStepFactorsToRangesMap(zoomStepFactors) {\n  const rangesMap = {};\n  zoomStepFactors.sort((a, b) => a.startZoom - b.startZoom);\n  for (let i = 0; i < zoomStepFactors.length; i++) {\n    const zoomStepFactor = zoomStepFactors[i];\n    const nextZoomStepFactor = zoomStepFactors[i + 1];\n    rangesMap[`${zoomStepFactor.step / 100}`] =\n      nextZoomStepFactor ?\n        [\n          zoomStepFactor.startZoom / 100,\n          nextZoomStepFactor.startZoom / 100\n        ] :\n        [\n          zoomStepFactor.startZoom / 100,\n          null\n        ];\n  }\n  return rangesMap;\n}\n\nexport function getStep(currentZoomFactor) {\n  const zoomStepFactors = getInstanceNode().instance.UI.getZoomStepFactors();\n  const zoomFactorRangesMap = convertZoomStepFactorsToRangesMap(zoomStepFactors);\n  const steps = Object.keys(zoomFactorRangesMap);\n  const step = steps.find((step) => {\n    const zoomFactorRanges = zoomFactorRangesMap[step];\n    return isCurrentZoomFactorInRange(currentZoomFactor, zoomFactorRanges);\n  });\n  return parseFloat(step);\n}\n\nfunction isCurrentZoomFactorInRange(zoomFactor, ranges) {\n  const [rangeLowBound, rangeHighBound] = ranges;\n  if (rangeLowBound === null) {\n    return zoomFactor < rangeHighBound;\n  }\n  if (rangeHighBound === null) {\n    return zoomFactor >= rangeLowBound;\n  }\n  return zoomFactor >= rangeLowBound && zoomFactor < rangeHighBound;\n}\n\nfunction getViewCenterAfterScale(scale, isMultiViewerMode = false, documentViewerKey = 1) {\n  const documentContainer = isMultiViewerMode ? getRootNode().querySelector(`#DocumentContainer${documentViewerKey}`)\n    : getRootNode().querySelectorAll('.DocumentContainer')[0];\n  const documentWrapper = isMultiViewerMode ? getRootNode().querySelector(`#Document${documentViewerKey}`)\n    : getRootNode().querySelectorAll('.document')[0];\n  const clientX = window.innerWidth / 2;\n  const clientY = window.innerHeight / 2;\n\n  const x = (clientX + documentContainer.scrollLeft - documentWrapper.offsetLeft) * scale - clientX + documentContainer.offsetLeft;\n  const y = (clientY + documentContainer.scrollTop - documentWrapper.offsetTop) * scale - clientY + documentContainer.offsetTop;\n  return { x, y };\n}\n\nlet zoomStepHistory = [];\n\n// Keeping track of changes to zoomFactor outside this helper functions\nlet storedZoomFactor = -1;\n\nfunction zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode = false, documentViewerKey = 1) {\n  const scale = newZoomFactor / currentZoomFactor;\n  const { x, y } = getViewCenterAfterScale(scale, isMultiViewerMode, documentViewerKey);\n  core.zoomTo(newZoomFactor, x, y, documentViewerKey);\n  storedZoomFactor = newZoomFactor;\n}\n\nfunction resetZoomStepHistory() {\n  zoomStepHistory = [];\n}\n\nexport function fitToWidth(documentViewerKey = 1) {\n  resetZoomStepHistory();\n  core.fitToWidth(documentViewerKey);\n}\n\nexport function fitToPage(documentViewerKey = 1) {\n  resetZoomStepHistory();\n  core.fitToPage(documentViewerKey);\n}\n\n/**\n * zoomIn works as follows. Every time user zooms in we take current zoom level and compare it to\n * zoom factors map which currently is :\n * {\n    '0.075': [null, 0.8],\n    '0.25': [0.8, 1.5],\n    '0.5': [1.5, 2.5],\n    '1': [2.5, 4],\n    '2': [4, 8],\n    '4': [8, 32],\n    '8': [32, 64],\n    '16': [64, null],\n  }\n * Based on the range we select step size from this map. For example if current zoom level is 110% (1.1)\n * then we can see that it falls to range [0.8, 1.5] and step size for this is 0.25. We add this step\n * to current level so we end up to 1.35. We also store this step to stack so we can follow how after few steps we got there.\n *\n * We need to keep the step history to make our steps predictable in all cases.\n * Consider case where we start from zoom level 140% (1.4) and zoomIn. We would end up to 1.4 + 0.25 = 1.65 (165%).\n * If user would now click zoomOut, we would end up 1.65 - 0.5 = 1.15 (115%) which is not the same 140% where we started.\n * But as we store the step history we do 1.65 - 0.25 (value from step history) and end up to 1.4 (140%).\n * @ignore\n */\nexport function zoomIn(isMultiViewerMode = false, documentViewerKey = 1) {\n  const currentZoomFactor = core.getZoom(documentViewerKey);\n  if (storedZoomFactor > 0 && currentZoomFactor !== storedZoomFactor) {\n    // zoom level was changed by external side effect (like one of core's function to change zoom level)\n    // in these cases we need to reset step history\n    resetZoomStepHistory();\n  }\n  if (currentZoomFactor === getMaxZoomLevel()) {\n    return;\n  }\n\n  let step = getStep(currentZoomFactor);\n  if (zoomStepHistory.length > 0 && zoomStepHistory[zoomStepHistory.length - 1] < 0) {\n    // if step history has steps and it has been opposite direction (zoomOut)\n    // We use that step. This makes sure that when crossing step range, zoom level goes to same\n    // as it was when zoomOut was done.\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    // thus here using absolute value\n    step = Math.abs(zoomStepHistory.pop());\n  } else {\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    zoomStepHistory.push(step);\n  }\n  const newZoomFactor = Math.min(currentZoomFactor + step, getMaxZoomLevel());\n  zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode, documentViewerKey);\n}\n\n/**\n * See functionality from zoomIn. zoomOut works same but opposite direction.\n * @ignore\n */\nexport function zoomOut(isMultiViewerMode = false, documentViewerKey = 1) {\n  const currentZoomFactor = core.getZoom(documentViewerKey);\n  if (storedZoomFactor > 0 && currentZoomFactor !== storedZoomFactor) {\n    // zoom level was changed by external side effect (like one of core's function to change zoom level)\n    // in these cases we need to reset step history\n    resetZoomStepHistory();\n  }\n  if (currentZoomFactor === getMinZoomLevel()) {\n    return;\n  }\n\n  let step = getStep(currentZoomFactor);\n  if (zoomStepHistory.length > 0 && zoomStepHistory[zoomStepHistory.length - 1] > 0) {\n    // if step history has steps and it has been opposite direction (zoomIn)\n    // We use that step. This makes sure that when crossing step range, zoom level goes to same\n    // as it was when zoomIn was done.\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    step = zoomStepHistory.pop();\n  } else {\n    // We differentiate zoomIn and zoomOut steps by zoomOut steps are negative and zoomIn are positive\n    zoomStepHistory.push(-1 * step);\n  }\n  const newZoomFactor = Math.max(currentZoomFactor - step, getMinZoomLevel());\n  zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode, documentViewerKey);\n}\n\nexport function zoomTo(newZoomFactor, isMultiViewerMode = false, documentViewerKey = 1) {\n  // if user sets certain zoom level, then we reset the step history\n  resetZoomStepHistory();\n  const currentZoomFactor = core.getZoom(documentViewerKey);\n  zoomToInternal(currentZoomFactor, newZoomFactor, isMultiViewerMode, documentViewerKey);\n}\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n","import core from 'core';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useRef, useState, useMemo, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport useArrowFocus from '../../hooks/useArrowFocus';\n\nimport './Dropdown.scss';\n\nconst DEFAULT_WIDTH = 100;\nconst DEFAULT_HEIGHT = 28;\nconst directionMap = {\n  'up': 'down',\n  'down': 'up',\n  'left': 'right',\n  'right': 'left',\n};\n\nconst propTypes = {\n  id: PropTypes.string,\n  items: PropTypes.array,\n  images: PropTypes.array,\n  width: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number\n  ]),\n  height: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number\n  ]),\n  columns: PropTypes.number,\n  currentSelectionKey: PropTypes.string,\n  translationPrefix: PropTypes.string,\n  getTranslationLabel: PropTypes.func,\n  onClickItem: PropTypes.func,\n  dataElement: PropTypes.string,\n  disabled: PropTypes.bool,\n  getCustomItemStyle: PropTypes.func,\n  applyCustomStyleToButton: PropTypes.bool,\n  placeholder: PropTypes.string,\n  maxHeight: PropTypes.number,\n  getKey: PropTypes.func,\n  getDisplayValue: PropTypes.func,\n  className: PropTypes.string,\n  onOpened: PropTypes.func,\n  arrowDirection: PropTypes.string,\n  disableFocusing: PropTypes.bool,\n  renderItem: PropTypes.func,\n  renderSelectedItem: PropTypes.func,\n  ariaLabel: PropTypes.string,\n  showLabelInList: PropTypes.bool,\n};\n\nfunction Dropdown({\n  id = '',\n  items = [],\n  images = [],\n  width = width || DEFAULT_WIDTH,\n  height,\n  columns = 1,\n  currentSelectionKey,\n  translationPrefix,\n  getTranslationLabel,\n  onClickItem = () => {},\n  dataElement,\n  disabled = false,\n  applyCustomStyleToButton = true,\n  getCustomItemStyle = () => ({}),\n  placeholder = null,\n  maxHeight,\n  getKey = (item) => item,\n  getDisplayValue = (item) => item,\n  className = '',\n  hasInput = false,\n  displayButton = null,\n  customDataValidator = () => true,\n  isSearchEnabled = true,\n  onOpened = () => {},\n  arrowDirection = 'down',\n  children,\n  disableFocusing = false,\n  renderItem = (item, getTranslatedDisplayValue) => (<>{getTranslatedDisplayValue(item)}</>),\n  renderSelectedItem = (item, getTranslatedDisplayValue) => (<>{getTranslatedDisplayValue(item)}</>),\n  ariaLabel,\n  showLabelInList = false,\n}) {\n  const { t, ready: tReady } = useTranslation();\n  const overlayRef = useRef(null);\n  const buttonRef = useRef(null);\n  const inputRef = useRef(null);\n  const [isOpen, setIsOpen] = useState(false);\n  const [inputVal, setInputVal] = useState('');\n\n  const hasImages = images && images.length > 0;\n  if (hasImages) {\n    getKey = (item) => item.key;\n  }\n\n  const onClose = useCallback(() => setIsOpen(false), []);\n  const onToggle = useCallback((e) => {\n    if (hasInput && e.target === inputRef?.current) {\n      return;\n    }\n\n    e.preventDefault();\n\n    if (disabled) {\n      setIsOpen(false);\n    } else {\n      setIsOpen((prev) => !prev);\n    }\n\n    if (hasInput && !isOpen) {\n      setTimeout(() => {\n        inputRef?.current?.focus();\n      });\n    }\n\n    // Keep the dropdown within the bounds of the viewer.\n    const overlayBounds = overlayRef?.current?.getBoundingClientRect();\n    const buttonBounds = buttonRef?.current?.getBoundingClientRect();\n    let scrollViewRect = overlayRef?.current?.closest('body')?.getBoundingClientRect();\n    if (core && core.getDocumentViewer()) {\n      scrollViewRect = core.getScrollViewElement().getBoundingClientRect();\n    }\n    if (overlayBounds && !isOpen) {\n      const horizontalOpening = arrowDirection === 'left' || arrowDirection === 'right';\n      const bottomTop = scrollViewRect.top <= overlayBounds.top && scrollViewRect.top <= buttonBounds.top - overlayBounds.height;\n      const topBottom = scrollViewRect.bottom >= overlayBounds.bottom && scrollViewRect.bottom >= buttonBounds.bottom + overlayBounds.height;\n      const offset = horizontalOpening ? buttonBounds.height : 0;\n      // Check for containment vertically only.\n      if (bottomTop && topBottom) {\n        // Still inside the viewer, no need to adjust.\n        overlayRef.current.style.top = `${buttonBounds.height - offset}px`;\n      } else {\n        // If the overlay is past the bottom of the viewer, move it to the top instead.\n        if (overlayBounds.bottom > scrollViewRect.bottom || buttonBounds.bottom + overlayBounds.height > scrollViewRect.bottom) {\n          overlayRef.current.style.top = `-${overlayBounds.height - offset}px`;\n        } else {\n          // Otherwise the overlay is past the top of the viewer, move it to the bottom instead.\n          overlayRef.current.style.top = `${buttonBounds.height - offset}px`;\n        }\n      }\n      if (arrowDirection === 'left') {\n        overlayRef.current.style.left = `-${buttonBounds.width}px`;\n      }\n      if (arrowDirection === 'right') {\n        overlayRef.current.style.left = `${buttonBounds.width}px`;\n      }\n    } else {\n      overlayRef.current.style.top = '';\n    }\n  }, [hasInput, isOpen, disabled]);\n\n  useEffect(() => {\n    if (!isOpen && overlayRef?.current) {\n      // Always reset style when closing to prevent height calculations from being off.\n      overlayRef.current.style.top = '';\n      // Scroll to the top of list when closing.\n      overlayRef.current.scrollTop = 0;\n    }\n  }, [isOpen]);\n\n  // Close dropdown if WebViewer loses focus (ie, user clicks outside iframe).\n  useEffect(() => {\n    const onBlur = () => {\n      setIsOpen(false);\n    };\n    window.addEventListener('blur', onBlur);\n\n    return () => {\n      window.removeEventListener('blur', onBlur);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!isOpen) {\n      setInputVal('');\n    } else {\n      onOpened();\n    }\n\n    if (isOpen && hasInput && inputRef?.current) {\n      inputRef.current.value = currentSelectionKey;\n      inputRef.current.select();\n    }\n  }, [isOpen]);\n\n  useArrowFocus(isOpen, onClose, overlayRef);\n\n  const onClickOutside = useCallback((e) => {\n    if (!buttonRef.current.contains(e.target)) {\n      setIsOpen(false);\n    }\n  }, []);\n  useOnClickOutside(overlayRef, onClickOutside);\n\n  const onClickDropdownItem = useCallback(\n    (e, key, i, displayValue) => {\n      e.preventDefault();\n      e.stopPropagation();\n      onClickItem(key, i);\n      setIsOpen(false);\n      if (!disableFocusing) {\n        buttonRef.current.focus();\n      }\n\n\n      if (inputRef?.current) {\n        inputRef.current.value = displayValue;\n      }\n    },\n    [onClickItem, inputRef.current],\n  );\n\n  const getTranslation = (prefix, key) => {\n    if (getTranslationLabel) {\n      return t(getTranslationLabel(key));\n    }\n\n    return t(`${prefix}.${key}`, key);\n  };\n\n  const getTranslatedDisplayValue = (item) => ((tReady && item) ? getTranslation(translationPrefix, getDisplayValue(item)) : '');\n\n  const getDropdownStyles = (item, maxheight) => {\n    const dropdownItemStyles = getCustomItemStyle(item);\n    if (maxheight) {\n      dropdownItemStyles.lineHeight = `${height || DEFAULT_HEIGHT}px`;\n    }\n    return dropdownItemStyles;\n  };\n\n  const renderDropdownImages = () => images.map((image) => {\n    const key = getKey(image);\n    return (\n      <DataElementWrapper\n        key={key}\n        type=\"button\"\n        dataElement={`dropdown-item-${key}`}\n        className={classNames('Dropdown__item', { active: key === currentSelectionKey })}\n        tabIndex={isOpen ? undefined : -1} // Just to be safe.\n        onClick={(e) => onClickDropdownItem(e, key)}\n      >\n        <Icon glyph={image.src} className={image.className} />\n      </DataElementWrapper>\n    );\n  });\n\n  const renderDropdownItems = () => items\n    .filter((item) => !isSearchEnabled || getTranslatedDisplayValue(item).toLowerCase().includes(inputVal.toLowerCase()))\n    .map((item, i) => {\n      const key = getKey(item);\n      const translatedDisplayValue = getTranslatedDisplayValue(item);\n\n      return (\n        <DataElementWrapper\n          key={key}\n          type=\"button\"\n          dataElement={`dropdown-item-${key}`}\n          className={classNames('Dropdown__item', { active: key === currentSelectionKey })}\n          onClick={(e) => onClickDropdownItem(e, key, i, translatedDisplayValue)}\n          tabIndex={isOpen ? undefined : -1} // Just to be safe.\n          style={getDropdownStyles(item, maxHeight)}\n        >\n          {renderItem(item, getTranslatedDisplayValue)}\n        </DataElementWrapper>\n      );\n    });\n\n  let dropdownItems;\n  let optionIsSelected;\n  let selectedItem;\n  let selectedItemDisplay;\n\n  selectedItem = (hasImages ? images : items).find((item) => getKey(item) === currentSelectionKey);\n  optionIsSelected = !!selectedItem;\n\n  if (hasImages) {\n    const glyph = selectedItem?.src || '';\n    const className = selectedItem?.className || '';\n\n    selectedItemDisplay = (\n      <Icon glyph={glyph} className={className} />\n    );\n    dropdownItems = useMemo(renderDropdownImages, [images, currentSelectionKey]);\n  } else if (!children) {\n    if (optionIsSelected) {\n      selectedItemDisplay = renderSelectedItem(selectedItem, getTranslatedDisplayValue);\n    } else if (hasInput && currentSelectionKey) {\n      optionIsSelected = !!currentSelectionKey;\n      selectedItemDisplay = currentSelectionKey;\n      selectedItem = currentSelectionKey;\n    }\n\n    dropdownItems = useMemo(renderDropdownItems, [\n      currentSelectionKey,\n      isOpen,\n      items,\n      onClickDropdownItem,\n      inputVal,\n      translationPrefix,\n    ]);\n  }\n\n  const onOverlayKeyDown = (e) => {\n    if (e.key === 'ArrowUp' || e.key === 'ArrowDown' && isOpen) {\n      // prevent overlay div scrolling when using arrow keys\n      e.preventDefault();\n    }\n  };\n\n  const buttonStyle = { width: `${width}px` };\n  if (height) {\n    buttonStyle.height = `${height}px`;\n  }\n  const scrollItemsStyle = { maxHeight: `${maxHeight}px` };\n\n  const createDropdownButton = useCallback((value) => {\n    if (isOpen && hasInput) {\n      const onInputChange = (e) => {\n        e.preventDefault();\n        inputRef.current.value = e.target.value;\n        setInputVal(e.target.value);\n      };\n\n      const onBlur = (e) => {\n        // if the blur event is not caused by clicking on a dropdown item then clear the input\n        const clickedOnDropdownItem = e.relatedTarget?.dataset?.element?.includes('dropdown-item');\n        if (!clickedOnDropdownItem) {\n          setInputVal('');\n        }\n      };\n\n      const onKeyDown = (e) => {\n        if (e.key === 'Enter' && isOpen && inputRef.current) {\n          const newValue = inputRef.current.value;\n          let itemToClick = newValue;\n\n          if (!customDataValidator(newValue)) {\n            itemToClick = value;\n          }\n\n          if (items.length > 0) {\n            const result = items.find((item) => getTranslatedDisplayValue(item).toLowerCase() === newValue.toLowerCase());\n            if (result) {\n              itemToClick = result;\n            }\n          }\n\n          onClickItem(itemToClick, -1);\n          inputRef?.current?.blur();\n          setIsOpen(false);\n        }\n\n        if (e.key === 'ArrowUp' || e.key === 'ArrowDown' && isOpen) {\n          // prevents scrolling when moving to overlay div using arrow keys\n          e.preventDefault();\n        }\n      };\n\n      return (\n        <input\n          className=\"Dropdown__input\"\n          onBlur={onBlur}\n          onChange={onInputChange}\n          ref={inputRef}\n          onKeyDown={onKeyDown}\n        />\n      );\n    }\n\n    return value;\n  }, [\n    hasInput,\n    inputRef,\n    buttonRef,\n    onClickItem,\n    isOpen,\n    selectedItem,\n    customDataValidator\n  ]);\n\n  return (\n    <DataElementWrapper id={id} className={`Dropdown__wrapper ${className} ${isOpen ? 'open' : ''}`} dataElement={dataElement}>\n      {!displayButton &&\n        <button\n          className={classNames({\n            'Dropdown': true,\n            [className]: className,\n          })}\n          aria-label={ariaLabel}\n          aria-expanded={isOpen}\n          style={buttonStyle}\n          onMouseDown={onToggle}\n          onTouchEnd={onToggle}\n          ref={buttonRef}\n          disabled={disabled}\n        >\n          <div className=\"picked-option\">\n            <div\n              className=\"picked-option-text\"\n              style={(optionIsSelected && applyCustomStyleToButton) ? getCustomItemStyle(selectedItem) : {}}\n            >\n              {createDropdownButton(optionIsSelected ? selectedItemDisplay : (placeholder || ''))}\n            </div>\n            <Icon className=\"arrow\" disabled={disabled} glyph={`icon-chevron-${isOpen ? directionMap[arrowDirection] : arrowDirection}`} />\n          </div>\n        </button>\n      }\n      {displayButton &&\n        <div ref={buttonRef} onClick={onToggle} className='display-button'>\n          {displayButton(isOpen)}\n        </div>\n      }\n      <div\n        className={classNames('Dropdown__items', { 'hide': !isOpen, 'dropdown-items-with-custom-display': displayButton })}\n        ref={overlayRef}\n        role=\"listbox\"\n        aria-label={t(`${translationPrefix}.dropdownLabel`)}\n        style={maxHeight ? scrollItemsStyle : undefined}\n        onKeyDown={onOverlayKeyDown}\n      >\n        {showLabelInList && <div className=\"Dropdown__label\">{t(`${translationPrefix}.dropdownLabel`)}</div>}\n        {children ? React.cloneElement(children, { onClose }) :\n          dropdownItems.length > 0 ?\n            (columns > 1 ?\n              displayDropdownAsList(dropdownItems, columns) :\n              dropdownItems\n            ) :\n            <>\n              <button data-testid=\"sig-no-result\" className=\"Dropdown__item\">{t('message.noResults')}</button>\n            </>\n        }\n      </div>\n    </DataElementWrapper>\n  );\n}\n\nconst displayDropdownAsList = (items, columns) => {\n  const table = [];\n  let row = [];\n\n  items.forEach((item, index) => {\n    if (index % columns === 0 && row.length > 0) {\n      table.push(\n        <tr key={`row-${index}`}>\n          {row}\n        </tr>\n      );\n      row = [];\n    }\n\n    row.push(<td key={index} >{item}</td>);\n  });\n\n  if (row.length > 0) {\n    table.push(\n      <tr key={`row-${items.length + 1}`}>\n        {row}\n      </tr>\n    );\n  }\n\n  return (\n    <table>\n      <tbody>\n        {table}\n      </tbody>\n    </table>\n  );\n};\n\nDropdown.propTypes = propTypes;\nexport default Dropdown;\n","import Dropdown from './Dropdown';\n\nexport default Dropdown;","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\n\nexport function isOfficeEditorMode() {\n  return core.getDocument()?.getType() === workerTypes.OFFICE_EDITOR;\n}\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","/**\n * Enable certain features in the WebViewer UI.\n * @method UI.enableFeatures\n * @param {Array.<string>} features Array of features to enable.\n * @see UI.Feature\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatures(instance.UI.Feature.Measurement);\n  });\n */\n\nimport createFeatureAPI from 'helpers/createFeatureAPI';\n\nconst enable = true;\nexport default (store) => createFeatureAPI(enable, store);","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar un$DateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar getTime = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) != INVALID_DATE) {\n  defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n    var value = getTime(this);\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return value === value ? un$DateToString(this) : INVALID_DATE;\n  });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","import core from 'core';\nimport toolStylesExist from 'helpers/toolStylesExist';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'src/constants/dataElement';\n\nexport default (store, toolName) => {\n  const { dispatch, getState } = store;\n  const state = getState();\n  const toolGroup =\n    selectors.getToolButtonObject(getState(), toolName)?.group || '';\n\n  const isCustomizableUI = state.featureFlags.customizableUI;\n  if (isCustomizableUI) {\n    const groupedItemsWithTool = selectors.getGroupedItemsWithSelectedTool(state, toolName);\n    dispatch(actions.setLastPickedToolAndGroup({ tool: toolName, group: groupedItemsWithTool }));\n    dispatch(actions.setLastPickedToolForGroupedItems(groupedItemsWithTool, toolName));\n    core.setToolMode(toolName);\n    return;\n  }\n\n  if (toolGroup) {\n    dispatch(actions.openElement(DataElements.TOOLS_OVERLAY));\n  } else {\n    dispatch(actions.closeElement(DataElements.TOOLS_OVERLAY));\n  }\n\n  const hasToolBeenSelected = core.getToolMode().name === toolName;\n  if (hasToolBeenSelected && toolStylesExist(toolName)) {\n    dispatch(actions.toggleElement(DataElements.TOOL_STYLE_POPUP));\n    return;\n  }\n\n  dispatch(actions.closeElement(DataElements.TOOL_STYLE_POPUP));\n  core.setToolMode(toolName);\n  dispatch(actions.setActiveToolGroup(toolGroup));\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},v=\"en\",D={};D[v]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return v;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var v=this.$locale().weekStart||0,D=(y<v?y+7:y)-v;return $(r?m-D:m+(6-D),M);case a:case d:return l(g+\"Hours\",0);case u:return l(g+\"Minutes\",1);case s:return l(g+\"Seconds\",2);case i:return l(g+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),$=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,v=O.m(this,M);return v=(l={},l[c]=v/12,l[f]=v,l[h]=v/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?v:O.a(v)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[v],w.Ls=D,w.p={},w}));","import { setCheckPasswordFunction } from 'components/PasswordModal';\nimport core from 'core';\nimport { fireError } from 'helpers/fireEvent';\nimport getHashParameters from 'helpers/getHashParameters';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\nimport FeatureFlags from 'constants/featureFlags';\n\n\nexport default (dispatch, src, options = {}, documentViewerKey = 1) => {\n  const isCustomizableUIEnabled = getHashParameters('ui', 'default') === 'beta';\n\n  core.closeDocument(documentViewerKey);\n  options = { ...getDefaultOptions(), ...options };\n\n  options.docId = options.docId || options.documentId || null;\n  const customLoadingProgressFunction = options.onLoadingProgress;\n  options.onLoadingProgress = (percent) => {\n    customLoadingProgressFunction && customLoadingProgressFunction(percent);\n    dispatch(actions.setLoadingProgress(percent));\n  };\n  options.password = transformPasswordOption(options.password, dispatch);\n  options.xodOptions = extractXodOptions(options);\n  if ('onError' in options) {\n    const userDefinedOnErrorCallback = options.onError;\n    options.onError = function(error) {\n      fireError(error);\n      userDefinedOnErrorCallback(error);\n    };\n  } else {\n    options.onError = fireError;\n  }\n\n  dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n\n  if (options.enableOfficeEditing && isCustomizableUIEnabled) {\n    dispatch(actions.disableFeatureFlag(FeatureFlags.CUSTOMIZABLE_UI));\n  }\n\n  if (options.enableOfficeEditing && !src) {\n    core.loadBlankOfficeEditorDocument(options);\n  } else {\n    // ignore caught errors because they are already being handled in the onError callback\n    core.loadDocument(src, options, documentViewerKey).catch(() => {});\n  }\n\n  dispatch(actions.openElement(DataElements.PROGRESS_MODAL));\n};\n\n\n/**\n * Default options are some of the options used to initialize WebViewer, and will be preserved on loadDocument calls.\n * We do this so that users don't need to pass these options every time they call instance.loadDocument\n * For example, if WebViewer is initialized with WebViewer Server, subsequent calls to instance.loadDocument will assume WebViewer Server is used.\n * @ignore\n */\nconst getDefaultOptions = () => ({\n  startOffline: getHashParameters('startOffline', false),\n  azureWorkaround: getHashParameters('azureWorkaround', false),\n  webviewerServerURL: getHashParameters('webviewerServerURL', ''),\n  fallbackToClientSide: getHashParameters('fallbackToClientSide', false),\n  singleServerMode: getHashParameters('singleServerMode', false),\n  webviewerServerRangeRequests: getHashParameters('wvsRange', true),\n  forceClientSideInit: getHashParameters('forceClientSideInit', false),\n  disableWebsockets: getHashParameters('disableWebsockets', false),\n  cacheKey: getHashParameters('cacheKey', null),\n  officeOptions: JSON.parse(getHashParameters('officeOptions', null)),\n  rasterizerOptions: JSON.parse(getHashParameters('rasterizerOptions', null)),\n  streaming: getHashParameters('streaming', null),\n  useDownloader: getHashParameters('useDownloader', true),\n  backendType: getHashParameters('pdf', null),\n  loadAsPDF: getHashParameters('loadAsPDF', null),\n  enableOfficeEditing: getHashParameters('enableOfficeEditing', false),\n});\n\n/**\n * transform the password argument from a string to a function to hook up UI logic\n * @ignore\n */\nconst transformPasswordOption = (password, dispatch) => {\n  // a boolean that is used to prevent infinite loop when wrong password is passed as an argument\n  let passwordChecked = false;\n  let attempt = 0;\n\n  return (checkPassword) => {\n    dispatch(actions.setPasswordAttempts(attempt++));\n\n    if (!password) {\n      password = '';\n    }\n\n    if (!passwordChecked && typeof password === 'string') {\n      checkPassword(password);\n      passwordChecked = true;\n    } else {\n      if (passwordChecked) {\n        console.error(\n          'Wrong password has been passed as an argument. WebViewer will open password modal.',\n        );\n      }\n\n      setCheckPasswordFunction(checkPassword);\n      dispatch(actions.openElement(DataElements.PASSWORD_MODAL));\n    }\n  };\n};\n\nconst extractXodOptions = (options) => {\n  const xodOptions = options.xodOptions || {};\n\n  if (options.decryptOptions) {\n    xodOptions.decrypt = window.Core.Encryption.decrypt;\n    xodOptions.decryptOptions = options.decryptOptions;\n  }\n\n  if (options.decrypt) {\n    xodOptions.decrypt = options.decrypt;\n  }\n\n  if (options.streaming !== null) {\n    // depending on combination of value in loadDocument and in WV constructor\n    // getHashedParam will either return back a boolean or a stringed boolean value\n    xodOptions.streaming = options.streaming === 'true' || options.streaming === true;\n  }\n\n  if (options.azureWorkaround) {\n    xodOptions.azureWorkaround = options.azureWorkaround;\n  }\n\n  if (options.startOffline) {\n    xodOptions.startOffline = options.startOffline;\n  }\n\n  return xodOptions;\n};\n","import core from 'core';\nimport { isIOS } from 'helpers/device';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport { getMinZoomLevel, getMaxZoomLevel } from 'constants/zoomFactors';\n\nconst touchType = {\n  TAP: 'tap',\n  DOUBLE_TAP: 'doubleTap',\n  PINCH: 'pinch',\n  PAN: 'pan',\n  SWIPE: 'swipe'\n};\n\nconst TouchEventManager = {\n  initialize(document, container) {\n    this.document = document;\n    this.container = container;\n    this.allowSwipe = true;\n    this.allowHorizontalSwipe = true;\n    this.allowVerticalSwipe = false;\n    this.verticalMomentum = 0;\n    this.horziontalMomentum = 0;\n    this.verticalLock = false;\n    this.horziontalLock = false;\n    this.enableTouchScrollLock = true;\n    this.startingScrollLeft = null;\n    this.startingScrollTop = null;\n    this._useNativeScroll = false;\n    try {\n      const val = localStorage.getItem('useNativeScroll');\n      if (val) {\n        this._useNativeScroll = JSON.parse(val);\n      }\n    } catch (err) {\n      console.warn(`localStorage could not be accessed. ${err.message}`);\n    }\n    this.touch = {\n      clientX: 0,\n      clientY: 0,\n      distance: 0,\n      horizontalDistance: 0,\n      verticalDistance: 0,\n      scale: 1,\n      zoom: 1,\n      type: '',\n    };\n    this.handleTouchStart = this.handleTouchStart.bind(this);\n    this.handleTouchMove = this.handleTouchMove.bind(this);\n    this.handleTouchEnd = this.handleTouchEnd.bind(this);\n    this.handleTouchCancel = this.handleTouchCancel.bind(this);\n    this.container.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n    this.container.addEventListener('touchmove', this.handleTouchMove, { passive: false });\n    this.container.addEventListener('touchend', this.handleTouchEnd, { passive: false });\n    this.container.addEventListener('touchcancel', this.handleTouchCancel, { passive: false });\n  },\n  terminate() {\n    this.container.removeEventListener('touchstart', this.handleTouchStart);\n    this.container.removeEventListener('touchmove', this.handleTouchMove);\n    this.container.removeEventListener('touchend', this.handleTouchEnd);\n    this.container.removeEventListener('touchcancel', this.handleTouchCancel);\n  },\n  handleTouchStart(e) {\n    if (core.getToolMode().name === 'Pan' &&\n      core.getDocumentViewer().isStylusModeEnabled() &&\n      e.touches[0].touchType === 'stylus') {\n      core.setToolMode(core.getTool('Pan')['previouslyUsedTool']['name']);\n      return;\n    }\n    switch (e.touches.length) {\n      case 1: {\n        const touch = e.touches[0];\n        const scrollWidth = this.container.clientWidth;\n        const viewerWidth = this.document.clientWidth;\n        const isDoubleTap = this.touch.type === touchType.TAP && this.getDistance(this.touch, touch) <= 10;\n        this.touch = {\n          clientX: touch.clientX,\n          clientY: touch.clientY,\n          distance: 0,\n          scale: scrollWidth / viewerWidth,\n          zoom: core.getZoom(),\n          type: isDoubleTap ? touchType.DOUBLE_TAP : touchType.TAP,\n          touchStartTimeStamp: Date.now(),\n          stopMomentumScroll: true,\n          touchMoveCount: 0,\n        };\n        this.startingScrollLeft = this.container.scrollLeft;\n        this.startingScrollTop = this.container.scrollTop;\n        clearTimeout(this.doubleTapTimeout);\n        break;\n      }\n      case 2: {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n\n        const t1 = e.touches[0];\n        const t2 = e.touches[1];\n        const clientX = (t1.clientX + t2.clientX) / 2;\n        const clientY = (t1.clientY + t2.clientY) / 2;\n        const docX = clientX - this.document.offsetLeft + this.container.scrollLeft;\n        const docY = clientY - this.document.offsetTop + this.container.scrollTop;\n        this.touch = {\n          previousPinchScale: 0,\n          marginLeft: this.document.offsetLeft,\n          marginTop: parseFloat(window.getComputedStyle(this.document).marginTop),\n          clientX,\n          clientY,\n          docX,\n          docY,\n          distance: this.getDistance(t1, t2),\n          scale: 1,\n          zoom: core.getZoom(),\n          touchStartTimeStamp: Date.now(),\n          stopMomentumScroll: true,\n          touchMoveCount: 0,\n        };\n        if (!isIOS) {\n          this.document.style.transformOrigin = `${docX}px ${docY}px`;\n        }\n        this.startingScrollLeft = this.container.scrollLeft;\n        this.startingScrollTop = this.container.scrollTop;\n        break;\n      }\n    }\n  },\n  axisLockThreshold: 8,\n  isScrollingVertically() {\n    return (Math.abs(this.verticalMomentum) > 0 && this.horziontalMomentum === 0) || (Math.abs(this.touch.verticalDistance) > this.axisLockThreshold * Math.abs(this.touch.horizontalDistance));\n  },\n  isScrollingHorziontally() {\n    return (Math.abs(this.horziontalMomentum) > 0 && this.verticalMomentum === 0) || (Math.abs(this.touch.horizontalDistance) > this.axisLockThreshold * Math.abs(this.touch.verticalDistance));\n  },\n  canLockScrolling() {\n    const { container, document: doc } = this;\n    const doesPagesFitOnScreen = doc.clientWidth < container.clientWidth || doc.clientHeight < container.clientHeight;\n    const alreadyLocked = this.verticalLock || this.horziontalLock;\n\n    // using 'touchMoveCount' to disable scroll locking when user is dragging\n    return !doesPagesFitOnScreen && this.enableTouchScrollLock && this.touch.touchMoveCount < 6 && !alreadyLocked;\n  },\n\n  handleScroll(t) {\n    if (this.useNativeScroll) {\n      return;\n    }\n    this.touch.horizontalDistance = this.touch.clientX - t.clientX;\n    this.touch.verticalDistance = this.touch.clientY - t.clientY;\n\n    if (this.canLockScrolling()) {\n      this.verticalLock = this.isScrollingVertically();\n      this.horziontalLock = this.isScrollingHorziontally();\n    }\n\n    if (this.enableTouchScrollLock) {\n      // scroll vertically\n      if (this.verticalLock) {\n        // calc the position in container\n        this.container.scrollTo(this.startingScrollLeft, this.container.scrollTop);\n        this.touch.horizontalDistance = 0;\n      }\n\n      // scroll horizontally\n      if (this.horziontalLock) {\n        // calc the position in container\n        this.container.scrollTo(this.container.scrollLeft, this.startingScrollTop);\n        this.touch.verticalDistance = 0;\n      }\n    }\n  },\n  handleTouchMove(e) {\n    switch (e.touches.length) {\n      case 1: {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n\n        const t = e.touches[0];\n\n        if (this.getDistance(this.touch, t) > 10) {\n          this.touch.type = touchType.SWIPE;\n        }\n\n        this.handleScroll(t);\n\n        this.touch.touchMoveCount++;\n        break;\n      }\n      case 2: {\n        const t1 = e.touches[0];\n        const t2 = e.touches[1];\n        const panTool = core.getTool('Pan');\n        const isPanning = panTool.isPanning();\n        const isPinching = panTool.isPinching();\n\n        if (isPanning) {\n          this.touch.type = touchType.PAN;\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n\n          const t = {\n            clientX: (t1.clientX + t2.clientX) / 2,\n            clientY: (t1.clientY + t2.clientY) / 2\n          };\n\n          if (this.getDistance(this.touch, t) > 10) {\n            this.touch.type = touchType.SWIPE;\n          }\n\n          this.handleScroll(t);\n          this.touch.touchMoveCount++;\n          break;\n        }\n\n        if (isPinching) {\n          this.touch.type = touchType.PINCH;\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n          this.touch.scale = this.getDistance(t1, t2) / this.touch.distance;\n\n          if (this.touch.scale * this.touch.zoom < getMinZoomLevel()) {\n            this.touch.scale = getMinZoomLevel() / this.touch.zoom;\n          } else if (this.touch.scale * this.touch.zoom > getMaxZoomLevel()) {\n            this.touch.scale = getMaxZoomLevel() / this.touch.zoom;\n          }\n\n          if (isIOS) {\n            const marginLeft = ((this.touch.marginLeft - this.container.offsetLeft) + (1 - this.touch.scale) * this.touch.docX) / this.touch.scale;\n            const marginTop = (this.touch.marginTop + (1 - this.touch.scale) * this.touch.docY) / this.touch.scale;\n            this.document.style.marginLeft = `${marginLeft}px`;\n            this.document.style.marginTop = `${marginTop}px`;\n            this.document.style.zoom = this.touch.scale;\n          } else {\n            this.document.style.transform = `scale(${this.touch.scale})`;\n          }\n          break;\n        }\n      }\n    }\n  },\n  handleTouchEnd(e) {\n    switch (this.touch.type) {\n      case touchType.TAP: {\n        this.doubleTapTimeout = setTimeout(() => {\n          this.touch.type = '';\n        }, 300);\n\n        this.horziontalLock = false;\n        this.verticalLock = false;\n        break;\n      }\n      case touchType.SWIPE: {\n        const docViewer = core.getDocumentViewer();\n        const isStylusModeDisabled = !docViewer.isStylusModeEnabled();\n        const isUsingAnnotationToolsAndStylusIsDisabled = this.isUsingAnnotationTools() && isStylusModeDisabled;\n        const isUsingPenAndStylusEnabled = this.isUsingPen() && !isStylusModeDisabled;\n        const { container, document: doc } = this;\n\n        if (\n          !this.allowSwipe ||\n          isUsingAnnotationToolsAndStylusIsDisabled ||\n          isUsingPenAndStylusEnabled ||\n          core.getSelectedText().length ||\n          core.getSelectedAnnotations().length\n        ) {\n          this.horziontalLock = false;\n          this.verticalLock = false;\n          return;\n        }\n\n        const { reachedLeft, reachedTop, reachedRight, reachedBottom } = this.reachedBoundary();\n        const threshold = 0.1 * this.container.clientWidth;\n        const swipedToBottom = reachedBottom && this.touch.verticalDistance > threshold;\n        const swipedToTop = reachedTop && this.touch.verticalDistance < -threshold;\n        const swipedToRight = reachedRight && this.touch.horizontalDistance > threshold;\n        const swipedToLeft = reachedLeft && this.touch.horizontalDistance < -threshold;\n\n        const currentPage = core.getCurrentPage();\n        const totalPages = core.getTotalPages();\n        const numberOfPagesToNavigate = getNumberOfPagesToNavigate();\n\n        const isFirstPage = currentPage === 1;\n        const isLastPage = currentPage === totalPages;\n        const isSingleDisplayMode = !core.isContinuousDisplayMode();\n        const doesPagesFitOnScreen = doc.clientWidth < container.clientWidth || doc.clientHeight < container.clientHeight;\n        const shouldGoToPrevPage = isSingleDisplayMode && !isFirstPage && ((swipedToLeft && this.allowHorizontalSwipe) || (swipedToTop && this.allowVerticalSwipe)) && doesPagesFitOnScreen;\n        const shouldGoToNextPage = isSingleDisplayMode && !isLastPage && ((swipedToRight && this.allowHorizontalSwipe) || (swipedToBottom && this.allowVerticalSwipe)) && doesPagesFitOnScreen;\n\n        if (shouldGoToPrevPage) {\n          core.setCurrentPage(Math.max(1, currentPage - numberOfPagesToNavigate));\n        } else if (shouldGoToNextPage) {\n          core.setCurrentPage(Math.min(totalPages, currentPage + numberOfPagesToNavigate));\n        } else if (!this.useNativeScroll) {\n          const millisecondsToSeconds = 1000;\n          const touchDuration = (Date.now() - this.touch.touchStartTimeStamp) / millisecondsToSeconds;\n\n          if (touchDuration < 0.2) {\n            this.touch.stopMomentumScroll = false;\n            this.startMomentumScroll(touchDuration);\n          } else {\n            this.horziontalLock = false;\n            this.verticalLock = false;\n          }\n        }\n        break;\n      }\n      case touchType.DOUBLE_TAP: {\n        const annotationUnderMouse = core.getAnnotationByMouseEvent(e);\n        const isFreeTextUnderMouse = annotationUnderMouse && annotationUnderMouse instanceof window.Core.Annotations.FreeTextAnnotation;\n\n        if (this.isUsingAnnotationTools()) {\n          const tool = core.getToolMode();\n          tool.finish && tool.finish();\n        } else if (!isFreeTextUnderMouse) {\n          if (this.oldZoom) {\n            this.touch.scale = Math.max(this.oldZoom / this.touch.zoom, getMinZoomLevel() / this.touch.zoom);\n            this.oldZoom = null;\n          } else {\n            this.touch.scale = Math.min(3, getMaxZoomLevel() / this.touch.zoom);\n            this.oldZoom = this.touch.zoom;\n          }\n          const zoom = core.getZoom() * this.touch.scale;\n          const { x, y } = this.getPointAfterScale();\n          core.zoomTo(zoom, x, y);\n        }\n\n        if (isFreeTextUnderMouse) {\n          core\n            .getAnnotationManager()\n            .trigger('annotationDoubleClicked', annotationUnderMouse);\n        }\n\n        break;\n      }\n      case touchType.PINCH: {\n        // sometimes handleTouchEnd will be called twice with the same value of this.touch.scale\n        // depending on how fast two fingers are away of the screen\n        // as a result the document will be zoomed in twice, and we do this check to prevent that from happening\n        if (this.touch.previousPinchScale === this.touch.scale) {\n          return;\n        }\n\n        this.touch.previousPinchScale = this.touch.scale;\n\n        if (isIOS) {\n          this.document.style.zoom = 1;\n          this.document.style.margin = 'auto';\n        } else {\n          this.document.style.transform = 'none';\n        }\n        const zoom = core.getZoom() * this.touch.scale;\n        const { x, y } = this.getPointAfterScale();\n        core.zoomTo(zoom, x, y);\n        break;\n      }\n    }\n    this.touch.touchMoveCount = 0;\n    // Want to use momentum values during 'TouchMove' event, so clear values in 'touchEnd' instead of 'touchStart'\n    this.verticalMomentum = 0;\n    this.horziontalMomentum = 0;\n  },\n  handleTouchCancel(e) {\n    this.handleTouchEnd(e);\n  },\n  startMomentumScroll(touchDuration) {\n    let currentIteration = 1;\n    const iterationsCount = 70;\n    const momentumUnlockThreshold = 1;\n    const initScrollLeft = this.container.scrollLeft;\n    const initScrollTop = this.container.scrollTop;\n    const dHorizontal = this.touch.horizontalDistance / touchDuration / 1.85;\n    const dVertical = this.touch.verticalDistance / touchDuration / 1.85;\n    const momentumScroll = () => {\n      const nextLeft = this.easeOutQuad(currentIteration, initScrollLeft, dHorizontal, iterationsCount);\n      const nextTop = this.easeOutQuad(currentIteration, initScrollTop, dVertical, iterationsCount);\n      this.verticalMomentum = dVertical;\n      this.horziontalMomentum = dHorizontal;\n\n      // 'handleTouchEnd' should set 'touchMoveCount' to 0, using that to determine if a new touch event happened\n      const isNotNewTouchEvent = !this.touch.touchMoveCount;\n      const horzDiff = this.container.scrollLeft - nextLeft;\n      const vertDiff = this.container.scrollTop - nextTop;\n      // if momentum is small enought that it doesn't look like it's moving, disable scroll locking\n      const isMomentumScrollAlmostFinish = (Math.abs(horzDiff) < momentumUnlockThreshold) && (Math.abs(vertDiff) < momentumUnlockThreshold);\n\n      this.container.scrollLeft = nextLeft;\n      this.container.scrollTop = nextTop;\n\n      if (isNotNewTouchEvent && isMomentumScrollAlmostFinish) {\n        // disable lock when momentum scrolling is mostly done and not in the middle of another touch event\n        this.horziontalLock = false;\n        this.verticalLock = false;\n      }\n\n      if (currentIteration < iterationsCount && !this.touch.stopMomentumScroll) {\n        currentIteration++;\n        requestAnimationFrame(momentumScroll);\n      }\n      if (isNotNewTouchEvent && currentIteration === iterationsCount) {\n        // if the page is against the sides and the users swipe quickly, it tries to set Scroll to a value that is outside the range and 'isMomentumScrollAlmostFinish' is never true\n        this.horziontalLock = false;\n        this.verticalLock = false;\n        this.verticalMomentum = 0;\n        this.horziontalMomentum = 0;\n      }\n    };\n\n    requestAnimationFrame(momentumScroll);\n  },\n  easeOutQuad(currentTime, startValue, changeInValue, duration) {\n    // http://gizma.com/easing/#quad2\n    currentTime /= duration;\n\n    return -changeInValue * currentTime * (currentTime - 2) + startValue;\n  },\n  reachedBoundary() {\n    const { clientHeight: scrollHeight, clientWidth: scrollWidth, scrollLeft, scrollTop } = this.container;\n    const { clientHeight: viewerHeight, clientWidth: viewerWidth } = this.document;\n\n    return {\n      reachedLeft: scrollLeft <= 0,\n      reachedTop: scrollTop <= 0,\n      reachedBottom: scrollHeight + scrollTop >= viewerHeight,\n      reachedRight: scrollWidth + scrollLeft >= viewerWidth,\n    };\n  },\n  getDistance(t1, t2) {\n    return Math.hypot(t1.clientX - t2.clientX, t1.clientY - t2.clientY);\n  },\n  getPointAfterScale() {\n    const x = (this.touch.clientX + this.container.scrollLeft - this.document.offsetLeft) * this.touch.scale - this.touch.clientX + this.container.offsetLeft;\n    const y = (this.touch.clientY + this.container.scrollTop - this.document.offsetTop) * this.touch.scale - this.touch.clientY + this.container.offsetTop;\n\n    return { x, y };\n  },\n  isUsingAnnotationTools() {\n    const tool = core.getToolMode();\n\n    return getDataWithKey(mapToolNameToKey(tool.name)).annotationCheck;\n  },\n  isUsingPen() {\n    return core.getToolMode().pointerType && core.getToolMode().pointerType === 'pen';\n  },\n  get useNativeScroll() {\n    return this._useNativeScroll;\n  },\n  set useNativeScroll(val) {\n    this._useNativeScroll = val;\n    try {\n      localStorage.setItem('useNativeScroll', JSON.stringify(this._useNativeScroll));\n    } catch (err) {\n      console.warn(`localStorage could not be accessed. ${err.message}`);\n    }\n  }\n};\n\nexport default Object.create(TouchEventManager);\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar setGlobal = require('../internals/set-global');\n\nmodule.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var name = options && options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return O;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n  return O;\n};\n","import { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport Button from 'components/Button';\n\nconst mapStateToProps = (state, { isNotClickableSelector, className, disabled }) => ({\n  className: classNames({\n    ActionButton: true,\n    [className]: !!className,\n  }),\n  disabled: disabled || (isNotClickableSelector && isNotClickableSelector(state)),\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n  onClick: (ownProps.shouldPassActiveDocumentViewerKeyToOnClickHandler || !ownProps.onClick) ?\n    ownProps.onClick :\n    () => ownProps.onClick(dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Button);\n","import ActionButton from './ActionButton';\n\nexport default ActionButton;","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","/* eslint-disable custom/no-hex-colors */\nconst COMMON_COLORS = {\n  'black': '#000000',\n  'white': '#FFFFFF',\n  'blue1LightMode': '#E7EDF3',\n  'blue1DarkDarkMode': '#192530',\n  'blue5': '#2B73AB',\n  'blue6': '#1A466B',\n  'gray0': '#FFFFFF',\n  'gray2': '#F1F3F5',\n  'gray4': '#CFD4DA',\n  'gray5': '#ADB5BD',\n  'gray6': '#818A92',\n  'gray7': '#697077',\n  'gray8': '#485056',\n  'gray9': '#343A40',\n  'gray10': '#21242A',\n};\n\nconst CUSTOM_UI_VARS = {\n  'text-color': COMMON_COLORS['gray9'],\n  'primary-button-hover': COMMON_COLORS['blue6'],\n};\n\nconst BASIC_PALETTE = [\n  '#F1A099',\n  '#FFC67B',\n  '#FFE6A2',\n  '#80E5B1',\n  '#92E8E8',\n  '#A6A1E6',\n  '#E2A1E6',\n  '#E44234', // red for signature modals\n  '#FF8D00',\n  '#FFCD45',\n  '#00CC63',\n  '#25D2D1',\n  '#4E7DE9', // blue for signature modals\n  '#C544CE',\n  '#88271F',\n  '#B54800',\n  '#F69A00',\n  '#007A3B',\n  '#167E7D',\n  '#2E4B8B',\n  '#76287B',\n  '#FFFFFF',\n  '#CDCDCD',\n  '#9C9C9C',\n  '#696969',\n  '#272727',\n  '#000000',\n  'transparency',\n];\n\n/* eslint-enable custom/no-hex-colors */\nexport {\n  COMMON_COLORS,\n  CUSTOM_UI_VARS,\n  BASIC_PALETTE,\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","export const MOBILE_SIZE = 640;\nexport const TABLET_SIZE = 900;","const SignatureModes = {\n  FULL_SIGNATURE: window.Core.Tools.SignatureCreateTool.SignatureTypes.FULL_SIGNATURE,\n  INITIALS: window.Core.Tools.SignatureCreateTool.SignatureTypes.INITIALS,\n};\n\nexport default SignatureModes;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","import React, { useEffect, useRef, useState } from 'react';\nimport selectors from 'selectors';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport actions from 'actions';\nimport PropTypes from 'prop-types';\nimport './ToggleElementButton.scss';\nimport Button from 'components/Button';\nimport useFocusHandler from 'hooks/useFocusHandler';\nimport classNames from 'classnames';\n\nconst ToggleElementButton = (props) => {\n  const buttonRef = useRef();\n  const { dataElement, title, disabled, img, label, toggleElement, setFlyoutTriggerRef = null, onToggle } = props;\n\n  const isActive = useSelector((state) => selectors.isElementOpen(state, toggleElement));\n  const flyoutMap = useSelector(selectors.getFlyoutMap, shallowEqual);\n  const isToggleElementDisabled = useSelector((state) => selectors.isElementDisabled(state, toggleElement));\n  const isButtonDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n  const customizableUI = useSelector(selectors.getFeatureFlags)?.customizableUI;\n\n  const [isElementActive, setIsElementActive] = useState(isActive);\n  const [isElementDisabled, setIsElementDisabled] = useState(disabled);\n\n  useEffect(() => {\n    setIsElementActive(isActive);\n    if (onToggle) {\n      onToggle(isActive);\n    }\n\n  }, [isActive]);\n\n  useEffect(() => {\n    setIsElementDisabled(isToggleElementDisabled || disabled);\n  }, [isToggleElementDisabled, disabled]);\n\n  const dispatch = useDispatch();\n\n  const onClick = (event) => {\n    event.stopPropagation();\n    if (flyoutMap[toggleElement]) {\n      if (setFlyoutTriggerRef) {\n        setFlyoutTriggerRef();\n      } else {\n        dispatch(actions.setFlyoutToggleElement(dataElement));\n      }\n    }\n    dispatch(actions.toggleElement(toggleElement));\n  };\n\n  const onClickFocusWrapped = useFocusHandler(onClick);\n\n  if (isButtonDisabled) {\n    return null;\n  }\n\n  return (\n    <div className={classNames({\n      'ToggleElementButton': true,\n      'legacy-ui': !customizableUI,\n    })} ref={buttonRef}>\n      <Button\n        isActive={isElementActive}\n        dataElement={dataElement}\n        img={img}\n        label={label}\n        title={title}\n        onClick={onClickFocusWrapped}\n        disabled={isElementDisabled}\n        className={props.className}\n      >\n        {props.children}\n      </Button>\n    </div>\n  );\n};\n\nToggleElementButton.propTypes = {\n  dataElement: PropTypes.string.isRequired,\n  title: PropTypes.string,\n  disabled: PropTypes.bool,\n  img: PropTypes.string,\n  label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  toggleElement: PropTypes.string.isRequired,\n  setFlyoutTriggerRef: PropTypes.func,\n  className: PropTypes.string,\n  onToggle: PropTypes.func,\n};\n\nexport default ToggleElementButton;\n","import ToggleElementButton from './ToggleElementButton';\n\nexport default ToggleElementButton;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n","var debounce = require('./debounce'),\n    isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","var $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n  parseInt: $parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","class LocalStorageManager {\n  constructor() {\n    // Browser will throw an error after accessing window.localStorage\n    // when loading webviewer through an iframe. So we add a catch.\n    try {\n      this.localStorageEnabled = !!window.localStorage;\n    } catch (error) {\n      console.error('window.localStorage unavailable. Disabling local storage.');\n      this.localStorageEnabled = false;\n    }\n  }\n\n  enableLocalStorage() {\n    this.localStorageEnabled = true;\n  }\n\n  disableLocalStorage() {\n    this.localStorageEnabled = false;\n  }\n\n  isLocalStorageEnabled() {\n    return this.localStorageEnabled;\n  }\n}\n\nexport default new LocalStorageManager();","export const DISABLED_TOOL_GROUPS = ['toolbarGroup-Edit', 'toolbarGroup-Forms', 'toolbarGroup-EditText'];\nexport const DISABLED_TOOLS_KEYWORDS = ['Content', 'AddParagraphTool', 'FormField', 'Crop'];\n\nexport const SYNC_MODES = {\n  'SYNC': 'SYNC',\n  'SKIP_UNMATCHED': 'SKIP_UNMATCHED',\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","import React, { useContext } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst TabsContext = React.createContext();\n\n// eslint-disable-next-line arrow-body-style\nexport const Tabs = React.memo((props) => {\n  return (\n    <TabsContext.Provider value={props.id}>\n      {props.children}\n    </TabsContext.Provider>\n  );\n});\n\nTabs.displayName = 'Tabs';\nTabs.propTypes = {\n  id: PropTypes.string.isRequired,\n  children: PropTypes.node.isRequired,\n};\n\nexport const Tab = ({ children, dataElement }) => {\n  const id = useContext(TabsContext);\n  const [isDisabled, isSelected] = useSelector((state) => [\n    selectors.isElementDisabled(state, dataElement),\n    selectors.getSelectedTab(state, id) === dataElement,\n  ], shallowEqual);\n  const dispatch = useDispatch();\n\n  let propsToInject = {\n    className: classNames({\n      selected: isSelected,\n      [children.props.className]: !!children.props.className,\n    }),\n    onClick: () => {\n      children.props.onClick?.();\n      dispatch(actions.setSelectedTab(id, dataElement));\n    },\n  };\n\n  // need to do this because the children may be wrapped by React.memo\n  const type = typeof (children.type.type || children.type);\n  // only inject isSelected if children is a component\n  if (type === 'function') {\n    propsToInject = Object.assign(propsToInject, {\n      isTabSelected: isSelected,\n      dataElement,\n    });\n  } else {\n    propsToInject = Object.assign(propsToInject, {\n      'data-element': dataElement,\n    });\n  }\n\n  return isDisabled ? null : React.cloneElement(children, propsToInject);\n};\n\nTab.propTypes = {\n  children: PropTypes.node.isRequired,\n  index: PropTypes.number,\n  dataElement: PropTypes.string.isRequired,\n};\n\nexport const TabHeader = ({ dataElement, children }) => {\n  const [isDisabled] = useSelector((state) => [\n    selectors.isElementDisabled(state, dataElement),\n  ]);\n\n  return (<div data-element={dataElement}>{isDisabled ? null : children}</div>);\n};\n\nTabHeader.propTypes = {\n  children: PropTypes.node.isRequired,\n  dataElement: PropTypes.string.isRequired,\n};\n\nexport const TabPanel = ({ children, dataElement }) => {\n  const id = useContext(TabsContext);\n  const [isDisabled, isSelected] = useSelector((state) => [\n    selectors.isElementDisabled(state, dataElement),\n    selectors.getSelectedTab(state, id).includes(dataElement),\n  ], shallowEqual);\n\n  return isDisabled ? null : (\n    <div\n      className=\"tab-panel\"\n      data-element={dataElement}\n      style={{ display: isSelected ? '' : 'none' }}\n    >\n      {typeof children.type === 'function'\n        ? React.cloneElement(children, { isTabPanelSelected: isSelected })\n        : children}\n    </div>\n  );\n};\n\nTabPanel.propTypes = {\n  children: PropTypes.node.isRequired,\n  dataElement: PropTypes.string.isRequired,\n};\n","import core from 'core';\n\nexport default (documentViewerKey = 1) => {\n  const mapDisplayModeToNumberOfPages = {\n    Single: 1,\n    Continuous: 1,\n    Facing: 2,\n    FacingContinuous: 2,\n    CoverFacing: 2,\n    Cover: 2,\n  };\n\n  return mapDisplayModeToNumberOfPages[core.getDisplayMode(documentViewerKey)] || 1;\n};\n","import core from 'core';\n\nexport default (nextPageNumber, documentViewerKey = 1) => {\n  const totalPageNumber = core.getTotalPages(documentViewerKey);\n  const currPageNumber = core.getCurrentPage(documentViewerKey);\n\n  let nextPage = Math.min(totalPageNumber, nextPageNumber);\n  nextPage = Math.max(1, nextPage);\n\n  if (nextPage !== currPageNumber) {\n    core.setCurrentPage(nextPage, documentViewerKey);\n  }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = items.length;\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) delete array[index++];\n\n    return array;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","import { useDispatch } from 'react-redux';\nimport actions from 'actions';\n\nconst useFocusHandler = (handler) => {\n  const dispatch = useDispatch();\n\n  return (e) => {\n    // If no event is passed, call the handler and return\n    // we need the event for this hook to work, fix that on the consumer side\n    if (!e) {\n      handler();\n      return;\n    }\n\n    const { nativeEvent } = e;\n\n    if (nativeEvent.pointerType === 'mouse' || nativeEvent.detail > 0) {\n      dispatch(actions.setFocusedElementsStack([]));\n      dispatch(actions.setKeyboardOpen(false));\n    } else if (nativeEvent.pointerType === '' || nativeEvent.pointerType === undefined) {\n      dispatch(actions.pushFocusedElement(e.currentTarget));\n      dispatch(actions.setKeyboardOpen(true));\n    }\n\n    handler(e);\n  };\n};\n\nexport default useFocusHandler;\n","import useFocusHandler from './useFocusHandler';\n\nexport default useFocusHandler;","import { useEffect } from 'react';\nimport getRootNode from 'helpers/getRootNode';\n\n// https://usehooks.com/useOnClickOutside/\nexport default (ref, handler) => {\n  useEffect(\n    () => {\n      const listener = (event) => {\n        // Do nothing if clicking ref's element or descendent elements\n        if (!ref.current || ref.current.contains(event.target)) {\n          return;\n        }\n\n        handler(event);\n      };\n      let browserDocument = document;\n      if (window.isApryseWebViewerWebComponent) {\n        browserDocument = getRootNode().getElementById('app');\n      }\n      browserDocument.addEventListener('mousedown', listener);\n      browserDocument.addEventListener('touchstart', listener);\n\n      return () => {\n        browserDocument.removeEventListener('mousedown', listener);\n        browserDocument.removeEventListener('touchstart', listener);\n      };\n    },\n    // Add ref and handler to effect dependencies\n    // It's worth noting that because passed in handler is a new ...\n    // ... function on every render that will cause this effect ...\n    // ... callback/cleanup to run every render. It's not a big deal ...\n    // ... but to optimize you can wrap handler in useCallback before ...\n    // ... passing it into this hook.\n    [ref, handler],\n  );\n};\n","module.exports = false;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","export default function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","import getRootNode from 'helpers/getRootNode';\n\nexport function isKeyboardNav() {\n  return document.documentElement.getAttribute('data-tabbing') === 'true';\n}\n\nexport function findFocusableIndex(elements, toFind) {\n  let index = -1;\n  if (!toFind) {\n    return index;\n  }\n  for (let i = 0; i < elements.length; i++) {\n    if (elements[i] === toFind) {\n      index = i;\n      break;\n    }\n  }\n  return index;\n}\n\nexport function escapePressListener(event, onEscapeFunction) {\n  if (event.key === 'Escape') {\n    onEscapeFunction(event);\n  }\n}\n\nexport function createAnnouncement(onClickAnnouncement) {\n  if (onClickAnnouncement) {\n    const el = document.createElement('div');\n    const id = `speak-${Date.now()}`;\n    el.setAttribute('id', id);\n    el.setAttribute('aria-live', 'assertive');\n    el.classList.add('visually-hidden');\n    const parent = !window.isApryseWebViewerWebComponent ? document.body : getRootNode();\n    parent.appendChild(el);\n\n    window.setTimeout(function() {\n      getRootNode().getElementById(id).innerText = onClickAnnouncement;\n    }, 100);\n\n    window.setTimeout(function() {\n      parent.removeChild(getRootNode().getElementById(id));\n    }, 1000);\n  }\n}\n","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import { ITEM_TYPE } from 'constants/customizationVariables';\n\nexport const getModularItem = (state, item) => {\n  return state.viewer.modularComponents[item];\n};\n\nexport const getNestedGroupedItems = (state, groupedItems) => {\n  const nestedItems = [];\n\n  const filterNestedItems = (items) => {\n    for (const item of items) {\n      const itemDetails = getModularItem(state, item);\n      if (itemDetails && itemDetails.type === ITEM_TYPE.GROUPED_ITEMS) {\n        nestedItems.push(item);\n        filterNestedItems(itemDetails.items);\n      }\n    }\n  };\n\n  const arrayOfGroupedItems = Array.isArray(groupedItems) ? groupedItems : [groupedItems];\n  arrayOfGroupedItems.forEach((group) => {\n    filterNestedItems(getModularItem(state, group)?.items || []);\n  });\n\n  return nestedItems;\n};\n\nexport const getParentGroupedItems = (state, groupedItems) => {\n  const parentGroupedItems = [];\n  const filterParentItems = (items) => {\n    for (const item of items) {\n      const itemDetails = getModularItem(state, item);\n      if (itemDetails && itemDetails.type === ITEM_TYPE.GROUPED_ITEMS) {\n        if (itemDetails.items.includes(groupedItems)) {\n          parentGroupedItems.push(item);\n          filterParentItems(item);\n        }\n      }\n    }\n  };\n  filterParentItems(Object.keys(state.viewer.modularComponents));\n  return parentGroupedItems;\n};\n\nexport const getBasicItemsFromGroupedItems = (state, groupedItems) => {\n  const basicItemTypes = [ITEM_TYPE.BUTTON,\n    ITEM_TYPE.STATEFUL_BUTTON,\n    ITEM_TYPE.RIBBON_ITEM,\n    ITEM_TYPE.DIVIDER,\n    ITEM_TYPE.TOGGLE_BUTTON,\n    ITEM_TYPE.TOOL_BUTTON,\n    ITEM_TYPE.ZOOM,\n    ITEM_TYPE.FLYOUT,\n    ITEM_TYPE.PAGE_CONTROLS,\n    ITEM_TYPE.PRESET_BUTTON,\n    ITEM_TYPE.VIEW_CONTROLS,\n    ITEM_TYPE.TABS_PANEL,\n  ];\n\n  const basicItems = [];\n  const nestedGroupedItems = getNestedGroupedItems(state, groupedItems);\n  const allGroups = [groupedItems, ...nestedGroupedItems];\n\n  for (const group of allGroups) {\n    const itemsOfGroup = getModularItem(state, group)?.items || [];\n\n    for (const item of itemsOfGroup) {\n      const itemDetails = getModularItem(state, item);\n      if (itemDetails && basicItemTypes.includes(itemDetails.type)) {\n        basicItems.push(item);\n      }\n    }\n  }\n\n  return basicItems;\n};\n","const multiViewerHelper = {\n  matchedPages: null,\n  isScrolledByClickingChangeItem: false,\n};\n\nexport const setIsScrolledByClickingChangeItem = (value) => {\n  multiViewerHelper.isScrolledByClickingChangeItem = value;\n};\n\nexport const getIsScrolledByClickingChangeItem = () => {\n  return multiViewerHelper.isScrolledByClickingChangeItem;\n};\n\nexport default multiViewerHelper;\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","import Choice from './Choice';\n\nexport default Choice;","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","let searchListeners = [];\nlet overrideSearchExecutionFn;\n\nexport function addSearchListener(searchListener) {\n  searchListeners.push(searchListener);\n}\n\nexport function removeSearchListener(searchListener) {\n  searchListeners = searchListeners.filter((listener) => {\n    return listener !== searchListener;\n  });\n}\n\nexport function getSearchListeners() {\n  return [...searchListeners];\n}\n\nexport function clearSearchListeners() {\n  searchListeners = [];\n}\n\nexport function overrideSearchExecution(fn) {\n  overrideSearchExecutionFn = fn;\n}\n\nexport function getOverrideSearchExecution() {\n  return overrideSearchExecutionFn;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar defaultProps = {\n  preventDefaultTouchmoveEvent: false,\n  delta: 10,\n  rotationAngle: 0,\n  trackMouse: false,\n  trackTouch: true\n};\nvar initialState = {\n  xy: [0, 0],\n  swiping: false,\n  eventData: undefined,\n  start: undefined\n};\nvar LEFT = 'Left';\nvar RIGHT = 'Right';\nvar UP = 'Up';\nvar DOWN = 'Down';\nvar touchStart = 'touchstart';\nvar touchMove = 'touchmove';\nvar touchEnd = 'touchend';\nvar mouseMove = 'mousemove';\nvar mouseUp = 'mouseup';\n\nfunction getDirection(absX, absY, deltaX, deltaY) {\n  if (absX > absY) {\n    if (deltaX > 0) {\n      return LEFT;\n    }\n\n    return RIGHT;\n  } else if (deltaY > 0) {\n    return UP;\n  }\n\n  return DOWN;\n}\n\nfunction rotateXYByAngle(pos, angle) {\n  if (angle === 0) return pos;\n  var angleInRadians = Math.PI / 180 * angle;\n  var x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n  var y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n  return [x, y];\n}\n\nfunction getHandlers(set, handlerProps) {\n  var onStart = function onStart(event) {\n    // if more than a single touch don't track, for now...\n    if (event.touches && event.touches.length > 1) return;\n    set(function (state, props) {\n      // setup mouse listeners on document to track swipe since swipe can leave container\n      if (props.trackMouse) {\n        document.addEventListener(mouseMove, onMove);\n        document.addEventListener(mouseUp, onUp);\n      }\n\n      var _ref = event.touches ? event.touches[0] : event,\n          clientX = _ref.clientX,\n          clientY = _ref.clientY;\n\n      var xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n      return _extends({}, state, initialState, {\n        eventData: {\n          initial: [].concat(xy),\n          first: true\n        },\n        xy: xy,\n        start: event.timeStamp || 0\n      });\n    });\n  };\n\n  var onMove = function onMove(event) {\n    set(function (state, props) {\n      if (!state.xy[0] || !state.xy[1] || event.touches && event.touches.length > 1) {\n        return state;\n      }\n\n      var _ref2 = event.touches ? event.touches[0] : event,\n          clientX = _ref2.clientX,\n          clientY = _ref2.clientY;\n\n      var _rotateXYByAngle = rotateXYByAngle([clientX, clientY], props.rotationAngle),\n          x = _rotateXYByAngle[0],\n          y = _rotateXYByAngle[1];\n\n      var deltaX = state.xy[0] - x;\n      var deltaY = state.xy[1] - y;\n      var absX = Math.abs(deltaX);\n      var absY = Math.abs(deltaY);\n      var time = (event.timeStamp || 0) - state.start;\n      var velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1); // if swipe is under delta and we have not started to track a swipe: skip update\n\n      if (absX < props.delta && absY < props.delta && !state.swiping) return state;\n      var dir = getDirection(absX, absY, deltaX, deltaY);\n\n      var eventData = _extends({}, state.eventData, {\n        event: event,\n        absX: absX,\n        absY: absY,\n        deltaX: deltaX,\n        deltaY: deltaY,\n        velocity: velocity,\n        dir: dir\n      });\n\n      props.onSwiping && props.onSwiping(eventData); // track if a swipe is cancelable(handler for swiping or swiped(dir) exists)\n      // so we can call preventDefault if needed\n\n      var cancelablePageSwipe = false;\n\n      if (props.onSwiping || props.onSwiped || props[\"onSwiped\" + dir]) {\n        cancelablePageSwipe = true;\n      }\n\n      if (cancelablePageSwipe && props.preventDefaultTouchmoveEvent && props.trackTouch && event.cancelable) event.preventDefault(); // first is now always false\n\n      return _extends({}, state, {\n        eventData: _extends({}, eventData, {\n          first: false\n        }),\n        swiping: true\n      });\n    });\n  };\n\n  var onEnd = function onEnd(event) {\n    set(function (state, props) {\n      var eventData;\n\n      if (state.swiping) {\n        eventData = _extends({}, state.eventData, {\n          event: event\n        });\n        props.onSwiped && props.onSwiped(eventData);\n        props[\"onSwiped\" + eventData.dir] && props[\"onSwiped\" + eventData.dir](eventData);\n      }\n\n      return _extends({}, state, initialState, {\n        eventData: eventData\n      });\n    });\n  };\n\n  var cleanUpMouse = function cleanUpMouse() {\n    // safe to just call removeEventListener\n    document.removeEventListener(mouseMove, onMove);\n    document.removeEventListener(mouseUp, onUp);\n  };\n\n  var onUp = function onUp(e) {\n    cleanUpMouse();\n    onEnd(e);\n  };\n\n  var attachTouch = function attachTouch(el) {\n    if (el && el.addEventListener) {\n      // attach touch event listeners and handlers\n      var tls = [[touchStart, onStart], [touchMove, onMove], [touchEnd, onEnd]];\n      tls.forEach(function (_ref3) {\n        var e = _ref3[0],\n            h = _ref3[1];\n        return el.addEventListener(e, h);\n      }); // return properly scoped cleanup method for removing listeners\n\n      return function () {\n        return tls.forEach(function (_ref4) {\n          var e = _ref4[0],\n              h = _ref4[1];\n          return el.removeEventListener(e, h);\n        });\n      };\n    }\n  };\n\n  var onRef = function onRef(el) {\n    // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n    // ignore null here\n    if (el === null) return;\n    set(function (state, props) {\n      // if the same DOM el as previous just return state\n      if (state.el === el) return state;\n      var addState = {}; // if new DOM el clean up old DOM and reset cleanUpTouch\n\n      if (state.el && state.el !== el && state.cleanUpTouch) {\n        state.cleanUpTouch();\n        addState.cleanUpTouch = null;\n      } // only attach if we want to track touch\n\n\n      if (props.trackTouch && el) {\n        addState.cleanUpTouch = attachTouch(el);\n      } // store event attached DOM el for comparison, clean up, and re-attachment\n\n\n      return _extends({}, state, {\n        el: el\n      }, addState);\n    });\n  }; // set ref callback to attach touch event listeners\n\n\n  var output = {\n    ref: onRef // if track mouse attach mouse down listener\n\n  };\n\n  if (handlerProps.trackMouse) {\n    output.onMouseDown = onStart;\n  }\n\n  return [output, attachTouch];\n}\n\nfunction updateTransientState(state, props, attachTouch) {\n  var addState = {}; // clean up touch handlers if no longer tracking touches\n\n  if (!props.trackTouch && state.cleanUpTouch) {\n    state.cleanUpTouch();\n    addState.cleanUpTouch = null;\n  } else if (props.trackTouch && !state.cleanUpTouch) {\n    // attach/re-attach touch handlers\n    if (state.el) {\n      addState.cleanUpTouch = attachTouch(state.el);\n    }\n  }\n\n  return _extends({}, state, addState);\n}\n\nfunction useSwipeable(props) {\n  var trackMouse = props.trackMouse;\n  var transientState = React.useRef(_extends({}, initialState, {\n    type: 'hook'\n  }));\n  var transientProps = React.useRef();\n  transientProps.current = _extends({}, defaultProps, props);\n\n  var _React$useMemo = React.useMemo(function () {\n    return getHandlers(function (cb) {\n      return transientState.current = cb(transientState.current, transientProps.current);\n    }, {\n      trackMouse: trackMouse\n    });\n  }, [trackMouse]),\n      handlers = _React$useMemo[0],\n      attachTouch = _React$useMemo[1];\n\n  transientState.current = updateTransientState(transientState.current, transientProps.current, attachTouch);\n  return handlers;\n}\nvar Swipeable =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inheritsLoose(Swipeable, _React$PureComponent);\n\n  function Swipeable(props) {\n    var _this;\n\n    _this = _React$PureComponent.call(this, props) || this;\n\n    _this._set = function (cb) {\n      _this.transientState = cb(_this.transientState, _this.props);\n    };\n\n    _this.transientState = _extends({}, initialState, {\n      type: 'class'\n    });\n    return _this;\n  }\n\n  var _proto = Swipeable.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        style = _this$props.style,\n        _this$props$nodeName = _this$props.nodeName,\n        nodeName = _this$props$nodeName === void 0 ? 'div' : _this$props$nodeName,\n        innerRef = _this$props.innerRef,\n        children = _this$props.children,\n        trackMouse = _this$props.trackMouse;\n\n    var _getHandlers = getHandlers(this._set, {\n      trackMouse: trackMouse\n    }),\n        handlers = _getHandlers[0],\n        attachTouch = _getHandlers[1];\n\n    this.transientState = updateTransientState(this.transientState, this.props, attachTouch);\n    var ref = innerRef ? function (el) {\n      return innerRef(el), handlers.ref(el);\n    } : handlers.ref;\n    return React.createElement(nodeName, _extends({}, handlers, {\n      className: className,\n      style: style,\n      ref: ref\n    }), children);\n  };\n\n  return Swipeable;\n}(React.PureComponent);\nSwipeable.propTypes = {\n  onSwiped: PropTypes.func,\n  onSwiping: PropTypes.func,\n  onSwipedUp: PropTypes.func,\n  onSwipedRight: PropTypes.func,\n  onSwipedDown: PropTypes.func,\n  onSwipedLeft: PropTypes.func,\n  delta: PropTypes.number,\n  preventDefaultTouchmoveEvent: PropTypes.bool,\n  nodeName: PropTypes.string,\n  trackMouse: PropTypes.bool,\n  trackTouch: PropTypes.bool,\n  innerRef: PropTypes.func,\n  rotationAngle: PropTypes.number\n};\nSwipeable.defaultProps = defaultProps;\n\nexport { DOWN, LEFT, RIGHT, Swipeable, UP, useSwipeable };\n","/* eslint-disable no-unsanitized/property */\nimport i18n from 'i18next';\n\nimport actions from 'actions';\nimport dayjs from 'dayjs';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\n\nimport { workerTypes } from 'constants/types';\n\nimport core from 'core';\n\nimport { creatingPages } from 'helpers/rasterPrint';\nimport { isSafari, isChromeOniOS, isFirefoxOniOS } from 'helpers/device';\n\nimport getRootNode from './getRootNode';\n\nconst PRINT_QUALITY = 1;\n\nconst printResetStyle = `\n#print-handler {\n  display: none;\n}\n\n@media print {\n  * {\n    display: none! important;\n  }\n\n  @page {\n    margin: 0; /* Set all margins to 0 */\n  }\n\n  html {\n    height: 100%;\n    display: block! important;\n  }\n\n  body {\n    height: 100%;\n    display: block! important;\n    overflow: visible !important;\n    padding: 0;\n    margin: 0 !important;\n  }\n\n  #print-handler {\n    display: block !important;\n    height: 100%;\n    width: 100%;\n    padding: 0;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    position: absolute;\n  }\n\n  #print-handler img {\n    display: block !important;\n    max-width: 100%;\n    max-height: 100%;\n    height: 100%;\n    width: 100%;\n    object-fit: contain;\n    page-break-after: always;\n    padding: 0;\n    margin: 0;\n  }\n\n  #print-handler .page__container {\n    box-sizing: border-box;\n    display: flex !important;\n    flex-direction: column;\n    padding: 10px;\n    min-height: 100%;\n    min-width: 100%;\n    font-size: 10px;\n  }\n\n  #print-handler .page__container .page__header {\n    display: block !important;\n    align-self: flex-start;\n    font-size: 2rem;\n    margin-bottom: 2rem;\n    padding-bottom: 0.6rem;\n    border-bottom: 0.1rem solid black;\n  }\n\n  #print-handler .page__container .note {\n    display: flex !important;\n    flex-direction: column;\n    padding: 0.6rem;\n    border: 0.1rem lightgray solid;\n    border-radius: 0.4rem;\n    margin-bottom: 0.5rem;\n  }\n\n  #print-handler .page__container .note .note__info {\n    display: block !important;\n    font-size: 1.3rem;\n    margin-bottom: 0.1rem;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon {\n    display: flex !important;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon .note__icon {\n    display: block !important;\n    width: 1.65rem;\n    height: 1.65rem;\n    margin-top: -0.1rem;\n    margin-right: 0.2rem;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon .note__icon path:not([fill=none]) {\n    display: block !important;\n    fill: currentColor;\n  }\n\n  #print-handler .page__container .note .note__root .note__content {\n    display: block !important;\n    margin-left: 0.3rem;\n  }\n\n  #print-handler .page__container .note .note__root {\n    display: block !important;\n  }\n\n  #print-handler .page__container .note .note__info--with-icon .note__icon svg {\n    display: block !important;\n  }\n\n  #print-handler .page__container .note .note__reply {\n    display: block !important;\n    margin: 0.5rem 0 0 2rem;\n  }\n\n  #print-handler .page__container .note .note__content {\n    display: block !important;\n    font-size: 1.2rem;\n    margin-top: 0.1rem;\n  }\n\n  #app {\n    overflow: visible !important;\n  }\n\n  .App {\n    display: none !important;\n  }\n\n  html, body, #app {\n    max-width: none !important;\n  }\n}\n`;\n\ndayjs.extend(LocalizedFormat);\n\nconst getResetPrintStyle = () => {\n  const style = document.createElement('style');\n  style.id = 'print-handler-css';\n  style.textContent = printResetStyle;\n  return style;\n};\n\nexport const printPages = (pages) => {\n  const printHandler = getRootNode().getElementById('print-handler');\n  printHandler.innerHTML = '';\n  const isApryseWebViewerWebComponent = window.isApryseWebViewerWebComponent;\n\n  if (isApryseWebViewerWebComponent) {\n    // In the Web component mode, the window.print function uses the top window as target for printing.\n    // The approach here is to teleport the print handler div to the top parent and inject some CSS\n    // to make it print nicely\n    printHandler.parentNode.removeChild(printHandler);\n    document.body.appendChild(printHandler);\n    if (!document.getElementById('print-handler-css')) {\n      const style = getResetPrintStyle();\n      document.head.appendChild(style);\n    }\n  }\n\n  const fragment = document.createDocumentFragment();\n  pages.forEach((page) => {\n    fragment.appendChild(page);\n  });\n\n  printHandler.appendChild(fragment);\n\n  if (isSafari && !(isChromeOniOS || isFirefoxOniOS)) {\n    // Print for Safari browser. Makes Safari 11 consistently work.\n    document.execCommand('print');\n  } else {\n    // It looks like both Chrome and Firefox (on iOS) use the top window as target for window.print instead of the frame where it was triggered,\n    // so we need to teleport the print handler div to the top parent and inject some CSS to make it print nicely.\n    // This can be removed when Chrome and Firefox for iOS respect the origin frame as the actual target for window.print\n    if (isChromeOniOS || isFirefoxOniOS) {\n      const node = isApryseWebViewerWebComponent ? getRootNode() : window.parent.document;\n      if (node.getElementById('print-handler')) {\n        node.getElementById('print-handler').remove();\n      }\n      node.appendChild(printHandler.cloneNode(true));\n\n      if (!node.getElementById('print-handler-css')) {\n        const style = getResetPrintStyle();\n        const node = isApryseWebViewerWebComponent ? getRootNode() : window.parent.document.head;\n        node.appendChild(style);\n      }\n    }\n    if (printHandler.children.length === 1) {\n      printHandler.parentElement.setAttribute('style', 'height: 99.99%;');\n    } else {\n      printHandler.parentElement.setAttribute('style', 'height: 100%;');\n    }\n\n    printDocument();\n  }\n};\n\nconst printDocument = () => {\n  const doc = core.getDocument();\n  const tempTitle = window.parent.document.title;\n\n  if (!doc) {\n    return;\n  }\n\n  const fileName = doc.getFilename();\n  const fileNameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.')) || fileName;\n\n  const onBeforePrint = () => {\n    window.parent.document.title = fileNameWithoutExtension;\n  };\n\n  const onAfterPrint = () => {\n    window.parent.document.title = tempTitle;\n\n    if (window.isApryseWebViewerWebComponent) {\n      const printHandler = document.getElementById('print-handler');\n      document.body.removeChild(printHandler);\n      const parentElement = getRootNode().querySelector('.PrintHandler');\n      parentElement.appendChild(printHandler);\n    }\n  };\n\n  window.addEventListener('beforeprint', onBeforePrint, { once: true });\n  window.addEventListener('afterprint', onAfterPrint, { once: true });\n  window.print();\n};\n\nexport const print = async (dispatch, useClientSidePrint, isEmbedPrintSupported, sortStrategy, colorMap, options = {}) => {\n  const {\n    includeAnnotations,\n    includeComments,\n    maintainPageOrientation,\n    onProgress,\n    printQuality = PRINT_QUALITY,\n    printWithoutModal = false,\n    language,\n    isPrintCurrentView,\n    printedNoteDateFormat: dateFormat,\n    isGrayscale = false,\n    timezone\n  } = options;\n  let { pagesToPrint } = options;\n\n  if (!core.getDocument()) {\n    return;\n  }\n\n  const documentType = core.getDocument().getType();\n  const bbURLPromise = core.getPrintablePDF();\n\n  if (!isGrayscale && bbURLPromise && !useClientSidePrint) {\n    const printPage = window.open('', '_blank');\n    // eslint-disable-next-line no-unsanitized/method\n    printPage.document.write(i18n.t('message.preparingToPrint'));\n    bbURLPromise.then((result) => {\n      printPage.location.href = result.url;\n    });\n  } else if (isEmbedPrintSupported && documentType === workerTypes.PDF) {\n    dispatch(actions.openElement('printModal'));\n  } else if (includeAnnotations || includeComments || printWithoutModal) {\n    if (!pagesToPrint) {\n      pagesToPrint = [];\n      for (let i = 1; i <= core.getTotalPages(); i++) {\n        pagesToPrint.push(i);\n      }\n    }\n    if (isPrintCurrentView) {\n      pagesToPrint = [core.getDocumentViewer().getCurrentPage()];\n    }\n\n    const printOptions = {\n      includeComments,\n      includeAnnotations,\n      maintainPageOrientation,\n      printQuality,\n      sortStrategy,\n      colorMap: colorMap,\n      dateFormat,\n      isPrintCurrentView,\n      language,\n      timezone,\n      createCanvases: false,\n      isGrayscale\n    };\n    const createPages = creatingPages(\n      pagesToPrint,\n      printOptions,\n      onProgress,\n    );\n    Promise.all(createPages)\n      .then((pages) => {\n        printPages(pages);\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  } else {\n    dispatch(actions.openElement('printModal'));\n  }\n};","import core from 'core';\n\nexport default (toolName) => {\n  const tool = core.getTool(toolName);\n  const ToolNames = window.Core.Tools.ToolNames;\n\n\n  const isHighlightTool =\n    tool?.name === ToolNames.HIGHLIGHT ||\n    tool?.name === ToolNames.HIGHLIGHT2 ||\n    tool?.name === ToolNames.HIGHLIGHT3 ||\n    tool?.name === ToolNames.HIGHLIGHT4;\n  if (isHighlightTool && !core.isBlendModeSupported('multiply')) {\n    tool.defaults.Opacity = null;\n  }\n\n  // widget don't support opacity\n  if (tool?.name.includes(ToolNames.TEXT_FORM_FIELD)) {\n    tool.defaults.Opacity = null;\n  }\n\n  return tool?.defaults;\n};\n","/**\n * Contains string enums for WebViewer feature flags\n * @name UI.FeatureFlags\n * @property {string} CUSTOMIZABLE_UI Feature flag for the new customizable UI\n */\nconst FEATURE_FLAGS = {\n  CUSTOMIZABLE_UI: 'customizableUI',\n};\n\nexport default FEATURE_FLAGS;","/**! \n * hotkeys-js v3.10.1 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2022 kenny wong <wowohoo@qq.com> \n * http://jaywcjlove.github.io/hotkeys \n * Licensed under the MIT license \n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // 绑定事件\n\nfunction addEvent(object, event, method, useCapture) {\n  if (object.addEventListener) {\n    object.addEventListener(event, method, useCapture);\n  } else if (object.attachEvent) {\n    object.attachEvent(\"on\".concat(event), function () {\n      method(window.event);\n    });\n  }\n} // 修饰键转换成对应的键码\n\n\nfunction getMods(modifier, key) {\n  var mods = key.slice(0, key.length - 1);\n\n  for (var i = 0; i < mods.length; i++) {\n    mods[i] = modifier[mods[i].toLowerCase()];\n  }\n\n  return mods;\n} // 处理传的key字符串转换成数组\n\n\nfunction getKeys(key) {\n  if (typeof key !== 'string') key = '';\n  key = key.replace(/\\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等\n\n  var keys = key.split(','); // 同时设置多个快捷键,以','分割\n\n  var index = keys.lastIndexOf(''); // 快捷键可能包含',',需特殊处理\n\n  for (; index >= 0;) {\n    keys[index - 1] += ',';\n    keys.splice(index, 1);\n    index = keys.lastIndexOf('');\n  }\n\n  return keys;\n} // 比较修饰键的数组\n\n\nfunction compareArray(a1, a2) {\n  var arr1 = a1.length >= a2.length ? a1 : a2;\n  var arr2 = a1.length >= a2.length ? a2 : a1;\n  var isIndex = true;\n\n  for (var i = 0; i < arr1.length; i++) {\n    if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n  }\n\n  return isIndex;\n}\n\nvar _keyMap = {\n  backspace: 8,\n  '⌫': 8,\n  tab: 9,\n  clear: 12,\n  enter: 13,\n  '↩': 13,\n  return: 13,\n  esc: 27,\n  escape: 27,\n  space: 32,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40,\n  del: 46,\n  delete: 46,\n  ins: 45,\n  insert: 45,\n  home: 36,\n  end: 35,\n  pageup: 33,\n  pagedown: 34,\n  capslock: 20,\n  num_0: 96,\n  num_1: 97,\n  num_2: 98,\n  num_3: 99,\n  num_4: 100,\n  num_5: 101,\n  num_6: 102,\n  num_7: 103,\n  num_8: 104,\n  num_9: 105,\n  num_multiply: 106,\n  num_add: 107,\n  num_enter: 108,\n  num_subtract: 109,\n  num_decimal: 110,\n  num_divide: 111,\n  '⇪': 20,\n  ',': 188,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '-': isff ? 173 : 189,\n  '=': isff ? 61 : 187,\n  ';': isff ? 59 : 186,\n  '\\'': 222,\n  '[': 219,\n  ']': 221,\n  '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n  // shiftKey\n  '⇧': 16,\n  shift: 16,\n  // altKey\n  '⌥': 18,\n  alt: 18,\n  option: 18,\n  // ctrlKey\n  '⌃': 17,\n  ctrl: 17,\n  control: 17,\n  // metaKey\n  '⌘': 91,\n  cmd: 91,\n  command: 91\n};\nvar modifierMap = {\n  16: 'shiftKey',\n  18: 'altKey',\n  17: 'ctrlKey',\n  91: 'metaKey',\n  shiftKey: 16,\n  ctrlKey: 17,\n  altKey: 18,\n  metaKey: 91\n};\nvar _mods = {\n  16: false,\n  18: false,\n  17: false,\n  91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n  _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // 记录摁下的绑定键\n\nvar winListendFocus = false; // window是否已经监听了focus事件\n\nvar _scope = 'all'; // 默认热键范围\n\nvar elementHasBindEvent = []; // 已绑定事件的节点记录\n// 返回键码\n\nvar code = function code(x) {\n  return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n};\n\nvar getKey = function getKey(x) {\n  return Object.keys(_keyMap).find(function (k) {\n    return _keyMap[k] === x;\n  });\n};\n\nvar getModifier = function getModifier(x) {\n  return Object.keys(_modifier).find(function (k) {\n    return _modifier[k] === x;\n  });\n}; // 设置获取当前范围(默认为'所有')\n\n\nfunction setScope(scope) {\n  _scope = scope || 'all';\n} // 获取当前范围\n\n\nfunction getScope() {\n  return _scope || 'all';\n} // 获取摁下绑定键的键值\n\n\nfunction getPressedKeyCodes() {\n  return _downKeys.slice(0);\n}\n\nfunction getPressedKeyString() {\n  return _downKeys.map(function (c) {\n    return getKey(c) || getModifier(c) || String.fromCharCode(c);\n  });\n} // 表单控件控件判断 返回 Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n  var target = event.target || event.srcElement;\n  var tagName = target.tagName;\n  var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n  if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n    flag = false;\n  }\n\n  return flag;\n} // 判断摁下的键是否为某个键,返回true或者false\n\n\nfunction isPressed(keyCode) {\n  if (typeof keyCode === 'string') {\n    keyCode = code(keyCode); // 转换成键码\n  }\n\n  return _downKeys.indexOf(keyCode) !== -1;\n} // 循环删除handlers中的所有 scope(范围)\n\n\nfunction deleteScope(scope, newScope) {\n  var handlers;\n  var i; // 没有指定scope,获取scope\n\n  if (!scope) scope = getScope();\n\n  for (var key in _handlers) {\n    if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n      handlers = _handlers[key];\n\n      for (i = 0; i < handlers.length;) {\n        if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n      }\n    }\n  } // 如果scope被删除,将scope重置为all\n\n\n  if (getScope() === scope) setScope(newScope || 'all');\n} // 清除修饰键\n\n\nfunction clearModifier(event) {\n  var key = event.keyCode || event.which || event.charCode;\n\n  var i = _downKeys.indexOf(key); // 从列表中清除按压过的键\n\n\n  if (i >= 0) {\n    _downKeys.splice(i, 1);\n  } // 特殊处理 cmmand 键,在 cmmand 组合快捷键 keyup 只执行一次的问题\n\n\n  if (event.key && event.key.toLowerCase() === 'meta') {\n    _downKeys.splice(0, _downKeys.length);\n  } // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除\n\n\n  if (key === 93 || key === 224) key = 91;\n\n  if (key in _mods) {\n    _mods[key] = false; // 将修饰键重置为false\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = false;\n    }\n  }\n}\n\nfunction unbind(keysInfo) {\n  // unbind(), unbind all keys\n  if (typeof keysInfo === 'undefined') {\n    Object.keys(_handlers).forEach(function (key) {\n      return delete _handlers[key];\n    });\n  } else if (Array.isArray(keysInfo)) {\n    // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n    keysInfo.forEach(function (info) {\n      if (info.key) eachUnbind(info);\n    });\n  } else if (typeof keysInfo === 'object') {\n    // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n    if (keysInfo.key) eachUnbind(keysInfo);\n  } else if (typeof keysInfo === 'string') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    // support old method\n    // eslint-disable-line\n    var scope = args[0],\n        method = args[1];\n\n    if (typeof scope === 'function') {\n      method = scope;\n      scope = '';\n    }\n\n    eachUnbind({\n      key: keysInfo,\n      scope: scope,\n      method: method,\n      splitKey: '+'\n    });\n  }\n} // 解除绑定某个范围的快捷键\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n  var key = _ref.key,\n      scope = _ref.scope,\n      method = _ref.method,\n      _ref$splitKey = _ref.splitKey,\n      splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n  var multipleKeys = getKeys(key);\n  multipleKeys.forEach(function (originKey) {\n    var unbindKeys = originKey.split(splitKey);\n    var len = unbindKeys.length;\n    var lastKey = unbindKeys[len - 1];\n    var keyCode = lastKey === '*' ? '*' : code(lastKey);\n    if (!_handlers[keyCode]) return; // 判断是否传入范围,没有就获取范围\n\n    if (!scope) scope = getScope();\n    var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n    _handlers[keyCode] = _handlers[keyCode].filter(function (record) {\n      // 通过函数判断,是否解除绑定,函数相等直接返回\n      var isMatchingMethod = method ? record.method === method : true;\n      return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));\n    });\n  });\n}; // 对监听对应快捷键的回调函数进行处理\n\n\nfunction eventHandler(event, handler, scope, element) {\n  if (handler.element !== element) {\n    return;\n  }\n\n  var modifiersMatch; // 看它是否在当前范围\n\n  if (handler.scope === scope || handler.scope === 'all') {\n    // 检查是否匹配修饰符(如果有返回true)\n    modifiersMatch = handler.mods.length > 0;\n\n    for (var y in _mods) {\n      if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n        if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n          modifiersMatch = false;\n        }\n      }\n    } // 调用处理程序,如果是修饰键不做处理\n\n\n    if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n      if (handler.method(event, handler) === false) {\n        if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.cancelBubble) event.cancelBubble = true;\n      }\n    }\n  }\n} // 处理keydown事件\n\n\nfunction dispatch(event, element) {\n  var asterisk = _handlers['*'];\n  var key = event.keyCode || event.which || event.charCode; // 表单控件过滤 默认表单控件不触发快捷键\n\n  if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致\n  // Webkit左右 command 键值不一样\n\n  if (key === 93 || key === 224) key = 91;\n  /**\n   * Collect bound keys\n   * If an Input Method Editor is processing key input and the event is keydown, return 229.\n   * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n   * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n   */\n\n  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n  /**\n   * Jest test cases are required.\n   * ===============================\n   */\n\n  ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n    var keyNum = modifierMap[keyName];\n\n    if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n      _downKeys.push(keyNum);\n    } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n      _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n    } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n      /**\n       * Fix if Command is pressed:\n       * ===============================\n       */\n      if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n        _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n      }\n    }\n  });\n  /**\n   * -------------------------------\n   */\n\n  if (key in _mods) {\n    _mods[key] = true; // 将特殊字符的key注册到 hotkeys 上\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = true;\n    }\n\n    if (!asterisk) return;\n  } // 将 modifierMap 里面的修饰键绑定到 event 中\n\n\n  for (var e in _mods) {\n    if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n      _mods[e] = event[modifierMap[e]];\n    }\n  }\n  /**\n   * https://github.com/jaywcjlove/hotkeys/pull/129\n   * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n   * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type μ.\n   * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n   */\n\n\n  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n    if (_downKeys.indexOf(17) === -1) {\n      _downKeys.push(17);\n    }\n\n    if (_downKeys.indexOf(18) === -1) {\n      _downKeys.push(18);\n    }\n\n    _mods[17] = true;\n    _mods[18] = true;\n  } // 获取范围 默认为 `all`\n\n\n  var scope = getScope(); // 对任何快捷键都需要做的处理\n\n  if (asterisk) {\n    for (var i = 0; i < asterisk.length; i++) {\n      if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n        eventHandler(event, asterisk[i], scope, element);\n      }\n    }\n  } // key 不在 _handlers 中返回\n\n\n  if (!(key in _handlers)) return;\n\n  for (var _i = 0; _i < _handlers[key].length; _i++) {\n    if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n      if (_handlers[key][_i].key) {\n        var record = _handlers[key][_i];\n        var splitKey = record.splitKey;\n        var keyShortcut = record.key.split(splitKey);\n        var _downKeysCurrent = []; // 记录当前按键键值\n\n        for (var a = 0; a < keyShortcut.length; a++) {\n          _downKeysCurrent.push(code(keyShortcut[a]));\n        }\n\n        if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n          // 找到处理内容\n          eventHandler(event, record, scope, element);\n        }\n      }\n    }\n  }\n} // 判断 element 是否已经绑定事件\n\n\nfunction isElementBind(element) {\n  return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n  _downKeys = [];\n  var keys = getKeys(key); // 需要处理的快捷键列表\n\n  var mods = [];\n  var scope = 'all'; // scope默认为all,所有范围都有效\n\n  var element = document; // 快捷键事件绑定节点\n\n  var i = 0;\n  var keyup = false;\n  var keydown = true;\n  var splitKey = '+';\n  var capture = false; // 对为设定范围的判断\n\n  if (method === undefined && typeof option === 'function') {\n    method = option;\n  }\n\n  if (Object.prototype.toString.call(option) === '[object Object]') {\n    if (option.scope) scope = option.scope; // eslint-disable-line\n\n    if (option.element) element = option.element; // eslint-disable-line\n\n    if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n    if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n    if (option.capture !== undefined) capture = option.capture; // eslint-disable-line\n\n    if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n  }\n\n  if (typeof option === 'string') scope = option; // 对于每个快捷键进行处理\n\n  for (; i < keys.length; i++) {\n    key = keys[i].split(splitKey); // 按键列表\n\n    mods = []; // 如果是组合快捷键取得组合快捷键\n\n    if (key.length > 1) mods = getMods(_modifier, key); // 将非修饰键转化为键码\n\n    key = key[key.length - 1];\n    key = key === '*' ? '*' : code(key); // *表示匹配所有快捷键\n    // 判断key是否在_handlers中,不在就赋一个空数组\n\n    if (!(key in _handlers)) _handlers[key] = [];\n\n    _handlers[key].push({\n      keyup: keyup,\n      keydown: keydown,\n      scope: scope,\n      mods: mods,\n      shortcut: keys[i],\n      method: method,\n      key: keys[i],\n      splitKey: splitKey,\n      element: element\n    });\n  } // 在全局document上设置快捷键\n\n\n  if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n    elementHasBindEvent.push(element);\n    addEvent(element, 'keydown', function (e) {\n      dispatch(e, element);\n    }, capture);\n\n    if (!winListendFocus) {\n      winListendFocus = true;\n      addEvent(window, 'focus', function () {\n        _downKeys = [];\n      }, capture);\n    }\n\n    addEvent(element, 'keyup', function (e) {\n      dispatch(e, element);\n      clearModifier(e);\n    }, capture);\n  }\n}\n\nfunction trigger(shortcut) {\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';\n  Object.keys(_handlers).forEach(function (key) {\n    var dataList = _handlers[key].filter(function (item) {\n      return item.scope === scope && item.shortcut === shortcut;\n    });\n\n    dataList.forEach(function (data) {\n      if (data && data.method) {\n        data.method();\n      }\n    });\n  });\n}\n\nvar _api = {\n  getPressedKeyString: getPressedKeyString,\n  setScope: setScope,\n  getScope: getScope,\n  deleteScope: deleteScope,\n  getPressedKeyCodes: getPressedKeyCodes,\n  isPressed: isPressed,\n  filter: filter,\n  trigger: trigger,\n  unbind: unbind,\n  keyMap: _keyMap,\n  modifier: _modifier,\n  modifierMap: modifierMap\n};\n\nfor (var a in _api) {\n  if (Object.prototype.hasOwnProperty.call(_api, a)) {\n    hotkeys[a] = _api[a];\n  }\n}\n\nif (typeof window !== 'undefined') {\n  var _hotkeys = window.hotkeys;\n\n  hotkeys.noConflict = function (deep) {\n    if (deep && window.hotkeys === hotkeys) {\n      window.hotkeys = _hotkeys;\n    }\n\n    return hotkeys;\n  };\n\n  window.hotkeys = hotkeys;\n}\n\nexport { hotkeys as default };\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n","import React, { useState, useRef, useEffect, useLayoutEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport hotkeysManager, { setCloseToolTipFunc } from 'helpers/hotkeysManager';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport { getWebComponentScale } from 'helpers/getWebComponentScale';\nimport fireEvent from 'helpers/fireEvent';\nimport { isMac, isWindows, isIOS, isAndroid } from 'helpers/device';\nimport getRootNode from 'helpers/getRootNode';\nimport Events from 'constants/events';\nimport './Tooltip.scss';\n\nconst propTypes = {\n  children: PropTypes.element.isRequired,\n  content: PropTypes.string,\n  hideShortcut: PropTypes.bool,\n  forcePosition: PropTypes.string,\n  hideOnClick: PropTypes.bool\n};\n\nconst isMouseOverElement = (elementBoundingRect, e) => {\n  return e.clientX >= elementBoundingRect.left && e.clientX <= elementBoundingRect.right && e.clientY >= elementBoundingRect.top && e.clientY <= elementBoundingRect.bottom;\n};\n\nconst Tooltip = forwardRef(({ content = '', children, hideShortcut, forcePosition, hideOnClick = true }, ref) => {\n  const timeoutRef = useRef(null);\n  const hiddenByClickRef = useRef(false);\n  const childRef = useRef(null);\n  useImperativeHandle(ref, () => childRef.current);\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, 'tooltip'));\n\n  const tooltipRef = useRef(null);\n  const [show, setShow] = useState(false);\n  const [opacity, setOpacity] = useState(0);\n  const [position, setPosition] = useState({\n    top: 0,\n    left: 0,\n  });\n  const [location, setLocation] = useState('bottom');\n  const [t] = useTranslation();\n  const delayShow = 300;\n  const opacityTimeout = 50;\n\n  useEffect(() => {\n    const showToolTip = () => {\n      clearTimeout(timeoutRef.current);\n      if (hiddenByClickRef.current) {\n        return;\n      }\n      timeoutRef.current = setTimeout(() => {\n        setCloseToolTipFunc(hideByClick);\n        setShow(true);\n        fireEvent(Events.TOOLTIP_OPENED);\n      }, delayShow - opacityTimeout);\n    };\n\n    const hideTooltip = () => {\n      clearTimeout(timeoutRef.current);\n      setShow(false);\n    };\n\n    const hideByBlur = () => {\n      hiddenByClickRef.current = false;\n      hideTooltip();\n    };\n\n    const hideByClick = () => {\n      hiddenByClickRef.current = true;\n      hideTooltip();\n    };\n\n    const changeToolTipState = (e) => {\n      if (childRef.current?.contains(e.target) || tooltipRef.current?.contains(e.target)) {\n        showToolTip();\n      } else {\n        const childBoundingRect = childRef.current?.getBoundingClientRect();\n        const tooltipBoundingRect = tooltipRef.current?.getBoundingClientRect();\n        const isMouseOverChild = childBoundingRect && isMouseOverElement(childBoundingRect, e);\n        const isMouseOverTooltip = tooltipBoundingRect && isMouseOverElement(tooltipBoundingRect, e);\n        const rectBetweenChildAndTooltip = tooltipBoundingRect && childBoundingRect && {\n          top: Math.min(childBoundingRect.top, tooltipBoundingRect.top),\n          bottom: Math.max(childBoundingRect.bottom, tooltipBoundingRect.bottom),\n          left: Math[childBoundingRect.bottom < tooltipBoundingRect.top ? 'max' : 'min'](childBoundingRect.left, tooltipBoundingRect.left),\n          right: Math[childBoundingRect.bottom < tooltipBoundingRect.top ? 'min' : 'max'](childBoundingRect.right, tooltipBoundingRect.right)\n        };\n        const isMouseBetweenChildAndTooltip = rectBetweenChildAndTooltip && isMouseOverElement(rectBetweenChildAndTooltip, e);\n        if (!isMouseOverChild && !isMouseOverTooltip && !isMouseBetweenChildAndTooltip) {\n          hiddenByClickRef.current = false;\n          hideTooltip();\n        }\n      }\n    };\n\n    getRootNode().addEventListener('pointermove', changeToolTipState);\n    if (hideOnClick) {\n      childRef.current?.addEventListener('click', hideByClick);\n    }\n    // only enable focus event for non popup buttons\n    if (childRef.current['ariaLabel'] !== 'action.close' &&\n      content !== 'action.close' &&\n      childRef.current['ariaLabel'] !== 'action.cancel' &&\n      content !== 'action.cancel' &&\n      !childRef.current.parentElement.parentElement.className.includes('TextPopup')) {\n      childRef.current?.addEventListener('focus', showToolTip);\n      childRef.current?.addEventListener('blur', hideByBlur);\n    }\n\n    const observer = new MutationObserver((mutations) => {\n      // hide tooltip when button get disabled, disable buttons don't have \"mouseleave\" events\n      const lastMutation = mutations[mutations.length - 1];\n      if (lastMutation && lastMutation.attributeName === 'disabled' && lastMutation.target.disabled) {\n        // accounts for the delay on showToolTip\n        setTimeout(() => {\n          hideTooltip();\n        }, delayShow);\n      }\n    });\n\n    observer.observe(childRef.current, { attributes: true, childList: false, characterData: false });\n\n    return () => {\n      hideTooltip();\n      observer.disconnect();\n\n      getRootNode().removeEventListener('pointermove', changeToolTipState);\n      if (hideOnClick) {\n        childRef.current?.removeEventListener('click', hideByClick);\n      }\n      childRef.current?.removeEventListener('focus', showToolTip);\n      childRef.current?.removeEventListener('blur', hideByBlur);\n    };\n  }, [childRef, hideOnClick]);\n\n  useLayoutEffect(() => {\n    const childEle = childRef.current;\n    const tooltipEle = tooltipRef.current;\n\n    const setTopAndLeft = () => {\n      const childRect = childEle.getBoundingClientRect();\n      const tooltipRect = tooltipEle.getBoundingClientRect();\n\n      let hostX = 0;\n      let hostY = 0;\n      if (window.isApryseWebViewerWebComponent) {\n        const shadowRoot = getRootNode();\n        const hostRect = shadowRoot.host.getBoundingClientRect();\n        hostX = hostRect.x;\n        hostY = hostRect.y;\n      }\n\n      const locationTopLeftMap = {\n        // TODO be able to support other directions too\n        bottom: {\n          top: childRect.bottom - hostY,\n          left: childRect.left + childRect.width / 2 - tooltipRect.width / 2 - hostX,\n        },\n        bottomLeft: {\n          top: childRect.bottom - hostY,\n          left: childRect.left - hostX,\n        },\n        top: {\n          top: childRect.top - tooltipRect.height - hostY,\n          left: childRect.left + childRect.width / 2 - tooltipRect.width / 2 - hostX,\n        },\n        topLeft: {\n          top: childRect.top - tooltipRect.height - hostY,\n          left: childRect.left - hostX,\n        },\n        left: {\n          top: childRect.top + childRect.height / 2 - tooltipRect.height / 2 - hostY,\n          left: childRect.left - tooltipRect.width - hostX,\n        },\n        right: {\n          top: childRect.top + childRect.height / 2 - tooltipRect.height / 2 - hostY,\n          left: childRect.right - hostX,\n        },\n      };\n\n      // starting from placing the tooltip at the bottom location\n      // if the tooltip can't fit into the window, try placing it counterclockwise until we can find a location to fit it\n      const bestLocation = Object.keys(locationTopLeftMap).find((location) => {\n        if (forcePosition) {\n          return location === forcePosition;\n        }\n        const { top: newTop, left: newLeft } = locationTopLeftMap[location];\n\n        return (\n          newTop > 0\n          && newTop + tooltipRect.height < window.innerHeight\n          && newLeft > 0\n          && newLeft + tooltipRect.width < window.innerWidth\n        );\n      }) || 'bottom';\n      const { top: tooltipTop, left: tooltipLeft } = locationTopLeftMap[\n        bestLocation\n      ];\n\n      const { scaleX, scaleY } = getWebComponentScale();\n\n      setPosition({\n        top: tooltipTop / scaleY,\n        left: tooltipLeft / scaleX,\n      });\n      setLocation(bestLocation);\n    };\n\n    if (show && childEle && tooltipEle) {\n      setTopAndLeft();\n      setTimeout(() => {\n        setOpacity(1);\n      }, opacityTimeout);\n    } else {\n      setOpacity(0);\n    }\n  }, [childRef, show]);\n\n  const isUsingMobileDevices = isIOS || isAndroid;\n  const child = React.cloneElement(children, {\n    ref: childRef,\n  });\n  const translatedContent = t(content);\n  // If shortcut.xxx exists in translation-en.json file\n  // method t will return the shortcut, otherwise it will return shortcut.xxx\n  let shortcutKey = content.slice(content.indexOf('.') + 1);\n  if (isWindows && shortcutKey === 'redo') {\n    shortcutKey = 'redo_windows';\n  }\n  const isActive = hotkeysManager.isActive(shortcutKey);\n\n  let hasShortcut = t(`shortcut.${shortcutKey}`).indexOf('.') === -1;\n  let shortcut = t(`shortcut.${shortcutKey}`);\n  if (isMac) {\n    shortcut = shortcut.replace('Ctrl', 'Cmd');\n  }\n\n  if (!isActive) {\n    hasShortcut = false;\n  }\n\n  return (\n    <React.Fragment>\n      {child}\n      {show &&\n        translatedContent &&\n        !isUsingMobileDevices &&\n        !isDisabled &&\n        ReactDOM.createPortal(\n          <div\n            className={`tooltip--${location}`}\n            style={{ opacity, ...position }}\n            ref={tooltipRef}\n            data-element=\"tooltip\"\n          >\n            <div className={'tooltip__content'}>\n              {translatedContent}\n              {hasShortcut && !hideShortcut && (\n                <span className=\"tooltip__shortcut\">{shortcut}</span>\n              )}\n            </div>\n          </div>,\n          getRootNode().querySelector('#app'),\n        )}\n    </React.Fragment>\n  );\n});\n\nTooltip.displayName = 'Tooltip';\nTooltip.propTypes = propTypes;\n\nexport default Tooltip;\n","import Tooltip from './Tooltip';\n\nexport default Tooltip;","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n  parseFloat: $parseFloat\n});\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","export default (color) => {\n  const parsedColor = (color?.toHexString?.() || '').substring(1);\n  return parsedColor;\n};\n","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","export const ClickedItemTypes = {\n  BUTTON: 'button',\n};\n\nlet clickMiddleWare;\n\nexport const setClickMiddleWare = (middleware) => {\n  clickMiddleWare = middleware;\n};\n\nexport const getClickMiddleWare = () => clickMiddleWare;\n","export const redactionTypeMap = {\n  REGION: 'region',\n  TEXT: 'text',\n  FULL_PAGE: 'fullPage',\n  FULL_VIDEO_FRAME: 'fullVideoFrame',\n  AUDIO_REDACTION: 'audioRedaction',\n  FULL_VIDEO_FRAME_AND_AUDIO: 'fullVideoFrameAndAudio',\n  CREDIT_CARD: 'creditCard',\n  PHONE: 'phone',\n  IMAGE: 'image',\n  EMAIL: 'email',\n};\n\nexport const defaultRedactionTypes = {\n  [redactionTypeMap['REGION']]: {\n    icon: 'icon-tool-redaction-area',\n    label: 'redactionPanel.redactionItem.regionRedaction',\n  },\n  [redactionTypeMap['FULL_PAGE']]: {\n    icon: 'icon-header-page-manipulation-page-transition-page-by-page-line',\n    label: 'redactionPanel.redactionItem.fullPageRedaction',\n  },\n  [redactionTypeMap['FULL_VIDEO_FRAME']]: {\n    icon: 'ic-full-frame-video-redact',\n    label: 'redactionPanel.redactionItem.fullVideoFrameRedaction',\n  },\n  [redactionTypeMap['AUDIO_REDACTION']]: {\n    icon: 'ic-audio-redact',\n    label: 'redactionPanel.redactionItem.audioRedaction',\n  },\n  [redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO']]: {\n    icon: 'ic-full-frame-video-and-audio-redact',\n    label: 'redactionPanel.redactionItem.fullVideoFrameAndAudioRedaction',\n  },\n  [redactionTypeMap['TEXT']]: {\n    icon: 'icon-form-field-text',\n  },\n  [redactionTypeMap['IMAGE']]: {\n    icon: 'redact-icons-image',\n    label: 'redactionPanel.redactionItem.image',\n  }\n};\n\nexport const mapAnnotationToRedactionType = (annotation) => {\n  const isTextRedaction = annotation.IsText;\n  if (isTextRedaction) {\n    return redactionTypeMap['TEXT'];\n  }\n\n  const { type = 'region' } = annotation;\n  return type;\n};","export const rotateRad = (cx, cy, x, y, radians) => {\n  const s = Math.sin(radians);\n  const c = Math.cos(radians);\n\n  const nx = (c * (x - cx)) + (s * (y - cy)) + cx; // xcos(theta) + ysin(theta)\n  const ny = (c * (y - cy)) - (s * (x - cx)) + cy; // -ysin(theta) + xcos(theta)\n\n  return { x: nx, y: ny };\n};\n\nexport const rotateDeg = (cx, cy, x, y, angle) => {\n  const radians = (Math.PI / 180) * angle;\n  const s = Math.sin(radians);\n  const c = Math.cos(radians);\n\n  const nx = (c * (x - cx)) + (s * (y - cy)) + cx;\n  const ny = (c * (y - cy)) - (s * (x - cx)) + cy;\n\n  return { x: nx, y: ny };\n};\n","import i18next from 'i18next';\nimport dayjs from 'dayjs';\nimport core from 'core';\nimport React from 'react';\nimport { rotateRad } from 'helpers/rotate';\nimport { rgbaToHex } from 'helpers/color';\nimport { getAnnotationClass } from 'helpers/getAnnotationClass';\nimport getLatestActivityDate from 'helpers/getLatestActivityDate';\nimport { COMMON_COLORS } from './commonColors';\n\nfunction getDocumentCenter(pageNumber) {\n  let result;\n  if (pageNumber <= core.getTotalPages()) {\n    result = core.getPageInfo(pageNumber);\n  } else {\n    result = {\n      width: 0,\n      height: 0,\n    };\n  }\n  return { x: result.width / 2, y: result.height / 2 };\n}\n\nfunction getRotationRad(pageNumber) {\n  const orientation = core.getRotation(pageNumber);\n  return (4 - orientation) * (Math.PI / 2);\n}\n\nfunction isNoteFreeTextAnnotation(note) {\n  return note instanceof window.Core.Annotations.FreeTextAnnotation;\n}\n\nfunction getNoteColor(note) {\n  let color = COMMON_COLORS['gray8'];\n  if (isNoteFreeTextAnnotation(note) && note.TextColor) {\n    color = rgbaToHex(note.TextColor.R, note.TextColor.G, note.TextColor.B, note.TextColor.A);\n  } else if (note.Color) {\n    color = rgbaToHex(note.Color.R, note.Color.G, note.Color.B, note.Color.A);\n  }\n  return color;\n}\n\nconst sortStrategies = {\n  position: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      if (a.PageNumber === b.PageNumber) {\n        const rotation = getRotationRad(a.PageNumber);\n        const center = getDocumentCenter(a.PageNumber);\n\n        // Simulated with respect to the document origin\n        const rotatedA = [\n          rotateRad(center.x, center.y, a.X, a.Y, rotation),\n          rotateRad(center.x, center.y, a.X + a.Width, a.Y + a.Height, rotation),\n        ];\n        const rotatedB = [\n          rotateRad(center.x, center.y, b.X, b.Y, rotation),\n          rotateRad(center.x, center.y, b.X + b.Width, b.Y + b.Height, rotation),\n        ];\n\n        const smallestA = rotatedA.reduce(\n          (smallest, current) => (current.y < smallest ? current.y : smallest),\n          Number.MAX_SAFE_INTEGER,\n        );\n        const smallestB = rotatedB.reduce(\n          (smallest, current) => (current.y < smallest ? current.y : smallest),\n          Number.MAX_SAFE_INTEGER,\n        );\n\n        return smallestA - smallestB;\n      }\n      return a.PageNumber - b.PageNumber;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => currNote.PageNumber !== prevNote.PageNumber,\n    getSeparatorContent: (prevNote, currNote, { pageLabels }) => `${i18next.t('option.shared.page')} ${pageLabels[currNote.PageNumber - 1]}`,\n  },\n  createdDate: {\n    getSortedNotes: (notes) => notes.sort((a, b) => (a.DateCreated || 0) - (b.DateCreated || 0)),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      const prevNoteDate = prevNote.DateCreated;\n      const currNoteDate = currNote.DateCreated;\n      if (prevNoteDate && currNoteDate) {\n        const dayFormat = 'MMM D, YYYY';\n        return dayjs(prevNoteDate).format(dayFormat) !== dayjs(currNoteDate).format(dayFormat);\n      }\n\n      if (!prevNoteDate && !currNoteDate) {\n        return false;\n      }\n\n      return true;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      const createdDate = currNote.DateCreated;\n      if (createdDate) {\n        const dayFormat = 'MMM D, YYYY';\n        const today = dayjs(new Date()).format(dayFormat);\n        const yesterday = dayjs(new Date(new Date() - 86400000)).format(dayFormat);\n        const createdDateString = dayjs(new Date(createdDate)).format(dayFormat);\n\n        if (createdDateString === today) {\n          return i18next.t('option.notesPanel.separator.today');\n        }\n        if (createdDateString === yesterday) {\n          return i18next.t('option.notesPanel.separator.yesterday');\n        }\n        return createdDateString;\n      }\n\n      return i18next.t('option.notesPanel.separator.unknown');\n    },\n  },\n  modifiedDate: {\n    getSortedNotes: (notes) => notes.sort((a, b) => (getLatestActivityDate(b) || 0) - (getLatestActivityDate(a) || 0)),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      const prevNoteDate = getLatestActivityDate(prevNote);\n      const currNoteDate = getLatestActivityDate(currNote);\n      if (prevNoteDate && currNoteDate) {\n        const dayFormat = 'MMM D, YYYY';\n        return dayjs(prevNoteDate).format(dayFormat) !== dayjs(currNoteDate).format(dayFormat);\n      }\n\n      if (!prevNoteDate && !currNoteDate) {\n        return false;\n      }\n\n      return true;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      const latestActivityDate = getLatestActivityDate(currNote);\n      if (latestActivityDate) {\n        const dayFormat = 'MMM D, YYYY';\n        const today = dayjs(new Date()).format(dayFormat);\n        const yesterday = dayjs(new Date(new Date() - 86400000)).format(dayFormat);\n        const latestActivityDay = dayjs(latestActivityDate).format(dayFormat);\n\n        if (latestActivityDay === today) {\n          return i18next.t('option.notesPanel.separator.today');\n        }\n        if (latestActivityDay === yesterday) {\n          return i18next.t('option.notesPanel.separator.yesterday');\n        }\n        return latestActivityDay;\n      }\n\n      return i18next.t('option.notesPanel.separator.unknown');\n    },\n  },\n  status: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      const statusA =\n          a.getStatus() === ''\n            ? i18next.t('option.state.none').toUpperCase()\n            : i18next.t(`option.state.${a.getStatus().toLowerCase()}`).toUpperCase();\n      const statusB =\n          b.getStatus() === ''\n            ? i18next.t('option.state.none').toUpperCase()\n            : i18next.t(`option.state.${b.getStatus().toLowerCase()}`).toUpperCase();\n      return statusA < statusB ? -1 : statusA > statusB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => prevNote.getStatus() !== currNote.getStatus(),\n    getSeparatorContent: (prevNote, currNote) => {\n      return currNote.getStatus() === ''\n        ? i18next.t('option.state.none')\n        : i18next.t(`option.state.${currNote.getStatus().toLowerCase()}`);\n    },\n  },\n  author: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      const authorA = core.getDisplayAuthor(a['Author'])?.toUpperCase();\n      const authorB = core.getDisplayAuthor(b['Author'])?.toUpperCase();\n      return authorA < authorB ? -1 : authorA > authorB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => core.getDisplayAuthor(prevNote['Author']) !== core.getDisplayAuthor(currNote['Author']),\n    getSeparatorContent: (prevNote, currNote) => {\n      return core.getDisplayAuthor(currNote['Author']);\n    },\n  },\n  type: {\n    getSortedNotes: (notes) => notes.sort((a, b) => {\n      const typeA = getAnnotationClass(a);\n      const typeB = getAnnotationClass(b);\n      return typeA < typeB ? -1 : typeA > typeB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      return getAnnotationClass(prevNote) !== getAnnotationClass(currNote);\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      return i18next.t(`option.type.${getAnnotationClass(currNote)}`);\n    },\n  },\n  color: {\n    getSortedNotes: (notes) => notes.sort((prevNote, currNote) => {\n      const colorA = getNoteColor(currNote);\n      const colorB = getNoteColor(prevNote);\n\n      return colorA < colorB ? -1 : colorA > colorB ? 1 : 0;\n    }),\n    shouldRenderSeparator: (prevNote, currNote) => {\n      const colorA = getNoteColor(currNote);\n      const colorB = getNoteColor(prevNote);\n\n      return colorA !== colorB;\n    },\n    getSeparatorContent: (prevNote, currNote) => {\n      const color = getNoteColor(currNote);\n\n      return (\n        <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>\n          {i18next.t('option.notesOrder.color')}\n          <div\n            style={{ background: color, width: '7px', height: '7px', borderRadius: '10000000px', marginLeft: '10px' }}\n          ></div>\n        </div>\n      );\n    },\n  },\n};\n\nexport const getSortStrategies = () => sortStrategies;\n\nexport const addSortStrategy = (newStrategy) => {\n  const { name, getSortedNotes, shouldRenderSeparator, getSeparatorContent } = newStrategy;\n\n  sortStrategies[name] = {\n    getSortedNotes,\n    shouldRenderSeparator,\n    getSeparatorContent,\n  };\n};\n\n/**\n * Contains string enums for all the possible sorting algorithms available in NotesPanel.\n * @name UI.NotesPanelSortStrategy\n * @property {string} POSITION Sort notes by position.\n * @property {string} CREATED_DATE Sort notes by creation date.\n * @property {string} MODIFIED_DATE Sort notes by last modification date.\n * @property {string} STATUS Sort notes by status.\n * @property {string} AUTHOR Sort notes by the author.\n * @property {string} TYPE Sort notes by type.\n * @property {string} COLOR Sort notes by color.\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const sortStrategy = instance.UI.NotesPanelSortStrategy;\n    instance.UI.setNotesPanelSortStrategy(sortStrategy.AUTHOR);\n  });\n */\nexport const NotesPanelSortStrategy = {\n  POSITION: 'position',\n  CREATED_DATE: 'createdDate',\n  MODIFIED_DATE: 'modifiedDate',\n  STATUS: 'status',\n  AUTHOR: 'author',\n  TYPE: 'type',\n  COLOR: 'color'\n};","\"use strict\";\n\nvar _require = require('./Draggable'),\n    Draggable = _require.default,\n    DraggableCore = _require.DraggableCore; // Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\n\n\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","import { saveAs } from 'file-saver';\nimport core from 'core';\nimport { isIE } from 'helpers/device';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport actions from 'actions';\nimport { creatingPages } from 'helpers/rasterPrint';\nimport selectors from 'selectors';\nimport blobStream from 'blob-stream';\nimport { getSortStrategies } from 'constants/sortStrategies';\nimport { mapAnnotationToKey, getDataWithKey } from 'constants/map';\nimport range from 'lodash/range';\nimport getRootNode from 'helpers/getRootNode';\nimport { workerTypes } from 'constants/types';\nimport { isOfficeEditorMode } from './officeEditor';\nimport DataElements from 'src/constants/dataElement';\nimport { COMMON_COLORS } from 'constants/commonColors';\n\nlet isDownloaded = false;\nlet previousWatermarkSettings = { };\nlet previousFileName = '';\n\nexport default async (dispatch, options = {}, documentViewerKey = 1) => {\n  let doc = core.getDocument(documentViewerKey);\n  if (previousFileName !== doc?.getFilename()) {\n    previousFileName = doc?.getFilename();\n    isDownloaded = false;\n  }\n\n  const documentViewer = core.getDocumentViewer();\n  previousWatermarkSettings = await documentViewer.getWatermark();\n  if (isDownloaded) {\n    documentViewer.setWatermark();\n  } else {\n    isDownloaded = true;\n    doc.enableWatermarkApplied();\n  }\n\n\n  const {\n    filename = doc?.getFilename() || 'document',\n    includeAnnotations = true,\n    externalURL,\n    useDisplayAuthor = false,\n    store, // Must be defined if includeComments is true\n  } = options;\n  let pages = options.pages;\n  let includeComments = !!options.includeComments;\n  const downloadAllPages = !pages || pages.length === doc.getPageCount();\n\n  const downloadDataAsFile = (data, extension, options) => {\n    const arr = new Uint8Array(data);\n    const { downloadName } = options;\n    let file;\n    let downloadType = 'application/pdf';\n    if (options.downloadType === 'office') {\n      const extensionToMimetype = reverseObject(window.Core.mimeTypeToExtension);\n      downloadType = extensionToMimetype[extension];\n    }\n    if (isIE) {\n      file = new Blob([arr], { type: downloadType });\n    } else {\n      file = new File([arr], filename, { type: downloadType });\n    }\n    saveAs(file, downloadName || filename);\n\n    dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n    fireEvent(Events.FILE_DOWNLOADED);\n    if (includeComments || convertToPDF) {\n      doc.unloadResources();\n    }\n\n    documentViewer.setWatermark(previousWatermarkSettings);\n  };\n\n  // We currently don't convert to pdf, png, etc. for office editor.\n  // Until we can do that we force the download type to be 'office'.\n  // Office editor can't include comments either so we force that to false.\n  if (isOfficeEditorMode()) {\n    includeComments = false;\n  }\n\n  if (!options.downloadType) {\n    options.downloadType = 'pdf';\n  }\n  const downloadAsImage = options.downloadType === 'png';\n\n  dispatch(actions.openElement(DataElements.LOADING_MODAL));\n\n  if (downloadAsImage) {\n    if (!pages?.length) {\n      pages = range(1, doc.getPageCount() + 1, 1);\n    }\n    const state = store.getState();\n    const [\n      sortStrategy,\n      dateFormat,\n      language,\n      printQuality,\n      colorMap,\n    ] = [\n      selectors.getSortStrategy(state),\n      selectors.getPrintedNoteDateFormat(state),\n      selectors.getCurrentLanguage(state),\n      selectors.getPrintQuality(state),\n      selectors.getColorMap(state),\n    ];\n    const id = 'download-handler-css';\n    if (!getRootNode().querySelector(`#${id}`)) {\n      const style = window.document.createElement('style');\n      style.id = id;\n      style.textContent = `\n        img {\n          display: block !important;\n          max-width: 100%;\n          max-height: 100%;\n          height: 100%;\n          width: 100%;\n          object-fit: contain;\n          page-break-after: always;\n          padding: 0;\n          margin: 0;\n        }\n\n        .page__container {\n          margin: 10px;\n          box-sizing: border-box;\n          display: flex !important;\n          flex-direction: column;\n          padding: 10px;\n          min-height: 100%;\n          min-width: 100%;\n          font-size: 10px;\n        }\n\n        .page__container .page__header {\n          margin-top: 2rem;\n          display: block !important;\n          align-self: flex-start;\n          font-size: 2rem;\n          margin-bottom: 2rem;\n          padding-bottom: 0.6rem;\n          border-bottom: 0.1rem solid black;\n        }\n\n        .page__container .note {\n          display: flex !important;\n          flex-direction: column;\n          padding: 0.6rem;\n          border: 0.1rem lightgray solid;\n          border-radius: 0.4rem;\n          margin-bottom: 0.5rem;\n        }\n\n        .page__container .note .note__info {\n          display: block !important;\n          font-size: 1.3rem;\n          margin-bottom: 0.1rem;\n        }\n\n        .page__container .note .note__info--with-icon {\n          display: flex !important;\n        }\n\n        .page__container .note .note__info--with-icon .note__icon {\n          display: block !important;\n          width: 1.65rem;\n          height: 1.65rem;\n          margin-top: -0.1rem;\n          margin-right: 0.2rem;\n        }\n\n        .page__container .note .note__info--with-icon .note__icon path:not([fill=none]) {\n          display: block !important;\n          fill: currentColor;\n        }\n\n        .page__container .note .note__root .note__content {\n          display: block !important;\n          margin-left: 0.3rem;\n        }\n\n        .page__container .note .note__root {\n          display: block !important;\n        }\n\n        .page__container .note .note__info--with-icon .note__icon svg {\n          display: block !important;\n        }\n\n        .page__container .note .note__reply {\n          display: block !important;\n          margin: 0.5rem 0 0 2rem;\n        }\n\n        .page__container .note .note__content {\n          display: block !important;\n          font-size: 1.2rem;\n          margin-top: 0.1rem;\n        }\n      `;\n      window.document.head.prepend(style);\n    }\n\n    const printingOptions = {\n      includeComments,\n      includeAnnotations,\n      maintainPageOrientation: true,\n      printQuality,\n      sortStrategy,\n      colorMap: colorMap,\n      dateFormat,\n      isPrintCurrentView: false,\n      language,\n      createCanvases: true,\n      isGrayscale: false\n    };\n    const createdPages = creatingPages(\n      pages,\n      printingOptions,\n      undefined,\n    );\n    const addWhiteBackground = (dataURL) => {\n      const pagePrintCanvas = document.createElement('canvas');\n      const pagePrintContext = pagePrintCanvas.getContext('2d');\n      return new Promise((res) => {\n        const printImg = new Image();\n        printImg.src = dataURL;\n        printImg.onload = () => {\n          pagePrintCanvas.width = printImg.width;\n          pagePrintCanvas.height = printImg.height;\n          pagePrintContext.fillStyle = COMMON_COLORS['white'];\n          pagePrintContext.fillRect(0, 0, pagePrintCanvas.width, pagePrintCanvas.height);\n          pagePrintContext.drawImage(printImg, 0, 0);\n          res(pagePrintCanvas.toDataURL());\n        };\n      });\n    };\n    const html2canvas = (await import('html2canvas')).default;\n    for (let page of createdPages) {\n      page = await page;\n      let dataURL;\n      if (page instanceof HTMLElement) {\n        document.body.appendChild(page);\n        const canvas = await html2canvas(page, {\n          backgroundColor: null,\n          scale: 1,\n          logging: false,\n        });\n        dataURL = await addWhiteBackground(canvas.toDataURL());\n        document.body.removeChild(page);\n      } else {\n        if (doc?.getType() === workerTypes.OFFICE || doc?.getType() === workerTypes.LEGACY_OFFICE || doc?.getType() === workerTypes.OFFICE_EDITOR) {\n          dataURL = await addWhiteBackground(page);\n        } else {\n          dataURL = page;\n        }\n      }\n      const link = document.createElement('a');\n      link.href = dataURL;\n      link.download = `${filename}.png`;\n      link.style.display = 'none';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n    dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n    fireEvent(Events.FILE_DOWNLOADED);\n    return;\n  }\n\n  let annotationsPromise = Promise.resolve();\n  const convertToPDF = options.downloadType === 'pdf' && (doc.getType() === workerTypes.OFFICE || isOfficeEditorMode());\n\n  if (isOfficeEditorMode() && convertToPDF) {\n    const data = await doc.getFileData({\n      downloadType: 'pdf'\n    });\n\n    downloadDataAsFile(data, 'pdf', options);\n    return;\n  }\n\n  if (convertToPDF || includeComments) {\n    const xfdfString = await core.exportAnnotations({ fields: true, widgets: true, links: true, useDisplayAuthor }, documentViewerKey);\n    const fileData = await doc.getFileData({ xfdfString, includeAnnotations, downloadType: 'pdf' });\n    doc = await core.createDocument(fileData, { extension: 'pdf', filename });\n    if (includeComments) {\n      const canvas2pdf = await import('canvas2pdf');\n      const state = store.getState();\n      const [sortStrategy, colorMap] = [selectors.getSortStrategy(state), selectors.getColorMap(state)];\n      const pageWidth = 612;\n      const pageHeight = 792;\n      const titleFontSize = 12;\n      const bodyFontSize = 11;\n      const cardSpacing = 8;\n      const padding = 36;\n      const commentPages = {};\n      for (const pageNumber of pages) {\n        const annotationNotes = getSortStrategies()[sortStrategy].getSortedNotes(core.getAnnotationsList(documentViewerKey).filter((annotation) => annotation.Listable &&\n          annotation.PageNumber === pageNumber &&\n          !annotation.isReply() &&\n          !annotation.isGrouped()\n        ));\n        if (!annotationNotes?.length) {\n          continue;\n        }\n        const startX = padding;\n        let startY = padding;\n        let ctx = new canvas2pdf.PdfContext(blobStream(), { font: 'Helvetica' });\n        // eslint-disable-next-line no-inner-declarations\n        async function savePage() {\n          const blob = await new Promise((res) => {\n            ctx.stream.on('finish', () => res(ctx.stream.toBlob('application/pdf')));\n            ctx.end();\n          });\n          if (commentPages[pageNumber]) {\n            commentPages[pageNumber].push(blob);\n          } else {\n            commentPages[pageNumber] = [blob];\n          }\n        }\n        let x = startX;\n        let y = startY;\n\n        // Draw Title\n        const text = `Page ${pageNumber}`;\n        ctx.font = `${titleFontSize}px Helvetica`;\n        ctx.fillStyle = COMMON_COLORS['black'];\n        let textSize = ctx.measureText(text);\n        ctx.fillText(text, x, y);\n        y += textSize.height;\n\n        for (const annotation of annotationNotes) {\n          if (y + 40 > pageHeight) {\n            await savePage();\n            ctx = new canvas2pdf.PdfContext(blobStream(), { font: 'Helvetica' });\n            x = padding;\n            y = padding;\n          }\n\n          y += cardSpacing;\n          startY = y;\n          y += cardSpacing;\n          x += cardSpacing;\n\n          // eslint-disable-next-line no-loop-func\n          let skip;\n          // // Draw Image onto canvas\n          // eslint-disable-next-line no-loop-func\n          await new Promise((resolve) => {\n            const key = mapAnnotationToKey(annotation);\n            const colorProperty = colorMap[key] && colorMap[key].iconColor;\n            const color = annotation[colorProperty || 'StrokeColor'].toString();\n            const iconKey = getDataWithKey(key).icon;\n            // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require,import/no-dynamic-require\n            const icon = require(`../../assets/icons/${iconKey}.svg`);\n            const blob = new Blob([icon], { type: 'image/svg+xml;charset=utf-8' });\n            const url = URL.createObjectURL(blob);\n            const img = new Image();\n            img.style.color = color;\n            img.src = url;\n            img.onload = () => {\n              ctx.drawImage(img, x, y, 24, 24);\n              URL.revokeObjectURL(url);\n              resolve();\n            };\n          });\n          x += 30;\n          y += 14;\n\n          // eslint-disable-next-line no-inner-declarations,no-loop-func\n          async function drawAnnotationComment(annotation, startX, isReply = false) {\n            // For drawing text with wrapped lines on X axis\n            async function drawTextAndWrap(text, checkNewLines = true) {\n              if (checkNewLines) {\n                const textArray = text.split('\\n');\n                if (textArray.length > 1) {\n                  for (const text of textArray) {\n                    await drawTextAndWrap(text, false);\n                    x = startX;\n                  }\n                  return;\n                }\n              }\n              const textSize = ctx.measureText(text);\n              if (textSize.width + x > pageWidth - padding - cardSpacing) {\n                let maxSize = (pageWidth - padding * 2 - cardSpacing * 3);\n                if (isReply) {\n                  maxSize -= 36;\n                }\n                const indexOfLastSpaceToFit = text.lastIndexOf(' ', text.length * maxSize / (textSize.width + x));\n                extractProperties(await drawText(text.substring(0, indexOfLastSpaceToFit), { x, y }));\n                y += textSize.height;\n                x = startX;\n                await drawTextAndWrap(text.substring(indexOfLastSpaceToFit + 1));\n              } else {\n                ctx.fillText(text, x, y);\n                y += textSize.height;\n              }\n            }\n\n            // For drawing text with page wrap on Y axis\n            async function drawText(text, options = {}) {\n              const {\n                bold = false,\n                fillStyle = COMMON_COLORS['black'],\n                size = bodyFontSize,\n                font = 'Helvetica',\n              } = options;\n              let { x, y } = options;\n              ctx.fillStyle = fillStyle;\n              ctx.font = `${size}px ${font}`;\n              const textSize = ctx.measureText(text);\n              if (textSize.height + y > pageHeight - padding) {\n                drawRoundedRect(ctx, padding, startY, pageWidth - padding * 2, pageHeight - startY - padding, 4, 'bottom');\n                await savePage();\n                ctx = new canvas2pdf.PdfContext(blobStream(), { font: 'Helvetica' });\n                ctx.fillStyle = fillStyle;\n                ctx.font = `${size}px ${font}`;\n                x = startX;\n                y = padding + cardSpacing;\n                startY = padding;\n                skip = 'top';\n              }\n              ctx.fillText(text, x, y);\n              if (bold) {\n                ctx.fillText(text, x + 0.1, y);\n                textSize.width += 0.1;\n              }\n              return { textSize, x, y, startY };\n            }\n\n            function extractProperties(newProperties) {\n              x = newProperties.x;\n              y = newProperties.y;\n              startY = newProperties.startY;\n              textSize = newProperties.textSize;\n            }\n\n            // Draw Author text onto canvas\n            extractProperties(await drawText(annotation.Author || 'Guest', { bold: true, x, y }));\n            x += textSize.width + cardSpacing;\n\n            // Draw Date text onto canvas\n            const date = new Date(annotation.DateCreated);\n            const dateText = `- ${date.toLocaleString(undefined, {\n              month: 'short',\n              day: 'numeric',\n              year: 'numeric',\n              hour: 'numeric',\n              minute: 'numeric',\n            })}`;\n            extractProperties(await drawText(dateText, { fillStyle: COMMON_COLORS['gray8'], x, y }));\n            x += textSize.width + cardSpacing;\n\n            if (!isReply) {\n              // Draw Subject text onto canvas\n              const subjectText = `Subject: ${annotation.Subject}`;\n              const subjectTextSize = ctx.measureText(subjectText);\n              if (subjectTextSize.width < 90) {\n                subjectTextSize.width = 90;\n              }\n              ctx.fillText(subjectText, pageWidth - padding - subjectTextSize.width - cardSpacing, y);\n            }\n\n            // Position on next line\n            x = startX;\n            y += textSize.height + cardSpacing;\n            if (!isReply) {\n              y += cardSpacing;\n            }\n\n            // Draw comment text onto canvas\n            ctx.fillStyle = COMMON_COLORS['black'];\n            const annotContents = annotation.getContents();\n            if (annotContents) {\n              await drawTextAndWrap(annotation.getContents());\n              y += cardSpacing;\n            } else {\n              y -= cardSpacing;\n            }\n\n            return y - cardSpacing;\n          }\n\n          let lastYPos = await drawAnnotationComment(annotation, x - 30);\n          x = startX + 36;\n\n          for (const reply of annotation.getReplies()) {\n            y += cardSpacing;\n            lastYPos = await drawAnnotationComment(reply, x, true);\n          }\n\n          drawRoundedRect(ctx, padding, startY, pageWidth - padding * 2, lastYPos - startY + cardSpacing, 4, skip);\n\n          // Reset X Position\n          x = startX;\n        }\n\n        await savePage();\n      }\n\n      let pageOffset = 1;\n      for (let page of Object.keys(commentPages)) {\n        page = parseInt(page);\n        for (const blob of commentPages[page]) {\n          const tempDoc = await core.createDocument(blob, { extension: 'pdf' });\n          await doc.insertPages(tempDoc, [1], page + pageOffset);\n          if (!downloadAllPages) {\n            // eslint-disable-next-line no-loop-func\n            pages = pages.map((p) => (p >= page + pageOffset ? p + 1 : p));\n            pages.push(page + pageOffset);\n          }\n          pageOffset++;\n          tempDoc.unloadResources();\n        }\n      }\n\n      if (downloadAllPages) {\n        pages = undefined;\n      } else {\n        pages = pages.sort((a, b) => a - b);\n      }\n\n      annotationsPromise = Promise.resolve((await doc.extractXFDF({ pages })).xfdfString);\n    } else {\n      annotationsPromise = Promise.resolve(xfdfString);\n    }\n  } else if (includeAnnotations && !options.xfdfString && !downloadAsImage) {\n    if (options.documentToBeDownloaded) {\n      annotationsPromise = Promise.resolve((await options.documentToBeDownloaded.extractXFDF(pages)).xfdfString);\n    } else {\n      annotationsPromise = core.exportAnnotations({ useDisplayAuthor }, documentViewerKey);\n    }\n  } else if (!options.xfdfString && !includeAnnotations) {\n    options.xfdfString = window.Core.EMPTY_XFDF;\n  }\n\n  return annotationsPromise.then(async (xfdfString) => {\n    options.xfdfString = options.xfdfString || xfdfString;\n    if (!includeAnnotations) {\n      options.includeAnnotations = false;\n    }\n\n    const getDownloadFilename = (name, extension) => {\n      if (name.slice(-extension.length).toLowerCase() !== extension) {\n        name += extension;\n      }\n      return name;\n    };\n\n    const array = doc.getFilename().split('.');\n    const extension = `${array[array.length - 1]}`;\n    const isNotPDF =\n      doc?.getType().includes('video')\n      || doc?.getType() === 'audio'\n      || doc?.getType() === workerTypes.OFFICE\n      || isOfficeEditorMode();\n    const downloadName =\n      isNotPDF\n        ? getDownloadFilename(filename, `.${extension}`)\n        : getDownloadFilename(filename, '.pdf');\n\n    // Cloning the options object to be able to delete the customDocument property if needed.\n    // doc.getFileData(options) will throw an error if this customDocument property is passed in\n    const clonedOptions = Object.assign({}, options);\n    if (clonedOptions.documentToBeDownloaded) {\n      doc = clonedOptions.documentToBeDownloaded;\n      delete clonedOptions.documentToBeDownloaded;\n    }\n    if (clonedOptions.store) {\n      delete clonedOptions.store;\n    }\n\n    const handleError = (error) => {\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      throw new Error(error.message);\n    };\n\n    const signatureWidgets = core.getAnnotationsList().filter((a) => a instanceof window.Core.Annotations.SignatureWidgetAnnotation);\n    const signedStatues = await Promise.all(signatureWidgets.map((a) => a.isSignedDigitally()));\n    const isSignedDigitally = signedStatues.includes(true);\n    if (isSignedDigitally) {\n      clonedOptions.flags |= window.Core.SaveOptions.INCREMENTAL;\n    }\n\n    if (externalURL) {\n      const downloadIframe =\n        getRootNode().querySelector('#download-iframe') ||\n        document.createElement('iframe');\n      downloadIframe.width = 0;\n      downloadIframe.height = 0;\n      downloadIframe.id = 'download-iframe';\n      downloadIframe.src = null;\n      document.body.appendChild(downloadIframe);\n      downloadIframe.src = externalURL;\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      fireEvent(Events.FILE_DOWNLOADED);\n    } else if (pages && !downloadAllPages) {\n      return doc.extractPages(pages, options.xfdfString).then((data) => downloadDataAsFile(data, extension, { ...options, downloadName }), handleError);\n    } else {\n      return doc.getFileData(clonedOptions).then((data) => downloadDataAsFile(data, extension, { ...options, downloadName }), handleError);\n    }\n  }).catch((error) => {\n    console.warn(error);\n    dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n  });\n};\n\nfunction drawRoundedRect(ctx, x, y, width, height, radius, skip = undefined) {\n  const skipTop = skip === 'top';\n  const skipBottom = skip === 'bottom';\n  ctx.beginPath();\n  ctx.strokeStyle = 'lightgray';\n  ctx.lineWidth = 1;\n  if (skipTop) {\n    ctx.moveTo(x, y);\n    ctx.lineTo(x, y + height - radius);\n    ctx.quadraticCurveTo(x, y + height, x + radius, y + height);\n    ctx.lineTo(x + width - radius, y + height);\n    ctx.quadraticCurveTo(x + width, y + height, x + width, y + height - radius);\n    ctx.lineTo(x + width, y);\n  } else if (skipBottom) {\n    ctx.moveTo(x, y + height);\n    ctx.lineTo(x, y + radius);\n    ctx.quadraticCurveTo(x, y, x + radius, y);\n    ctx.lineTo(x + width - radius, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n    ctx.lineTo(x + width, y + height);\n  } else {\n    ctx.moveTo(x + radius, y);\n    ctx.lineTo(x + width - radius, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n    ctx.lineTo(x + width, y + height - radius);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n    ctx.lineTo(x + radius, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n    ctx.lineTo(x, y + radius);\n    ctx.quadraticCurveTo(x, y, x + radius, y);\n    ctx.closePath();\n  }\n  ctx.stroke();\n}\n\nfunction reverseObject(obj) {\n  return Object.assign({}, ...(Object.entries(obj).map(([key, value]) => ({ [value]: key }))));\n}\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","export const svgHeight = 21;\nexport const getCircleRadius = (isMobile, customCircleRadius) => {\n  if (isMobile) {\n    return 8;\n  }\n  if (customCircleRadius) {\n    return customCircleRadius;\n  }\n  return 4;\n};\nexport const circleRadius = 8;","import React from 'react';\n\nimport './HorizontalDivider.scss';\n\nconst HorizontalDivider = ({ style = {} }) => {\n  return (\n    <div\n      className=\"divider-container\"\n      style={style}\n    >\n      <div className=\"divider-horizontal\" />\n    </div>\n  );\n};\n\nexport default HorizontalDivider;","import HorizontalDivider from './HorizontalDivider';\n\nexport default HorizontalDivider;","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","export const defaultStartLineStyles = [\n  { className: 'linestyle-image', key: 'None', src: 'icon-linestyle-none' },\n  { className: 'linestyle-image shift-alignment', key: 'ClosedArrow', src: 'icon-linestyle-start-arrow-closed' },\n  { className: 'linestyle-image shift-alignment', key: 'OpenArrow', src: 'icon-linestyle-start-arrow-open' },\n  { className: 'linestyle-image shift-alignment', key: 'ROpenArrow', src: 'icon-linestyle-start-arrow-open-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'RClosedArrow', src: 'icon-linestyle-start-arrow-closed-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'Butt', src: 'icon-linestyle-start-butt' },\n  { className: 'linestyle-image shift-alignment', key: 'Circle', src: 'icon-linestyle-start-circle' },\n  { className: 'linestyle-image shift-alignment', key: 'Diamond', src: 'icon-linestyle-start-diamond' },\n  { className: 'linestyle-image shift-alignment', key: 'Square', src: 'icon-linestyle-start-square' },\n  { className: 'linestyle-image shift-alignment', key: 'Slash', src: 'icon-linestyle-start-slash' },\n];\n\nexport const defaultStrokeStyles = [\n  { className: 'linestyle-image', key: 'solid', src: 'icon-linestyle-solid-line' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,2,2', src: 'icon-linestyle-dash-2-2' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,4,4', src: 'icon-linestyle-dash-4-4' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,6,6', src: 'icon-linestyle-dash-6-6' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,1,4,8,4', src: 'icon-linestyle-dash-1-4-8-4' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,3,6,10,6', src: 'icon-linestyle-dash-3-6-10-6' },\n  { className: 'linestyle-image shift-alignment', key: 'dash,4,6,10,6', src: 'icon-linestyle-dash-4-6-10-6' },\n];\n\nexport const defaultEndLineStyles = [\n  { className: 'linestyle-image', key: 'None', src: 'icon-linestyle-none' },\n  { className: 'linestyle-image shift-alignment', key: 'ClosedArrow', src: 'icon-linestyle-end-arrow-closed' },\n  { className: 'linestyle-image shift-alignment', key: 'OpenArrow', src: 'icon-linestyle-end-arrow-open' },\n  { className: 'linestyle-image shift-alignment', key: 'ROpenArrow', src: 'icon-linestyle-end-arrow-open-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'RClosedArrow', src: 'icon-linestyle-end-arrow-closed-reverse' },\n  { className: 'linestyle-image shift-alignment', key: 'Butt', src: 'icon-linestyle-end-butt' },\n  { className: 'linestyle-image shift-alignment', key: 'Circle', src: 'icon-linestyle-end-circle' },\n  { className: 'linestyle-image shift-alignment', key: 'Diamond', src: 'icon-linestyle-end-diamond' },\n  { className: 'linestyle-image shift-alignment', key: 'Square', src: 'icon-linestyle-end-square' },\n  { className: 'linestyle-image shift-alignment', key: 'Slash', src: 'icon-linestyle-end-slash' },\n];\n\nexport const cloudyStrokeStyle = { className: 'linestyle-image shift-alignment', key: 'cloudy', src: 'icon-linestyle-cloudy-line' };","/**\n * Enable multiple tools.\n * @method UI.enableTools\n * @param {Array.<string>} [toolNames=all tools] Array of name of the tools, either from tool names list or the name you registered your custom tool with. If nothing is passed, all tools will be enabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // enable sticky annotation tool and free text tool\n    instance.UI.enableTools([ 'AnnotationCreateSticky', 'AnnotationCreateFreeText' ]);\n  });\n */\n\nimport createToolAPI from 'helpers/createToolAPI';\n\nconst enable = true;\nexport default (store) => createToolAPI(enable, store);\n","/**\n * Disable multiple tools. This API uses disableElements internally to remove tool buttons from the DOM, and also disable the corresponding hotkeys.\n * @method UI.disableTools\n * @param {Array.<string>|Array.<Core.Tools.ToolNames>} [toolNames=all tools] Array of name of the tools, either from tool names list or the name you registered your custom tool with. If nothing is passed, all tools will be disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { Tools } = instance.Core;\n    // disable sticky annotation tool and free text tool\n    instance.UI.disableTools([Tools.ToolNames.STICKY, Tools.ToolNames.FREETEXT]);\n  });\n */\n\nimport createToolAPI from 'helpers/createToolAPI';\n\nconst enable = false;\nexport default (store) => createToolAPI(enable, store);\n","import selectors from 'selectors';\n\nexport default (state, dataElements, priority) => dataElements.reduce((filteredDataElements, dataElement) => {\n  const currentPriority = selectors.getDisabledElementPriority(\n    state,\n    dataElement,\n  );\n\n  if (!currentPriority || priority >= currentPriority) {\n    return [...filteredDataElements, dataElement];\n  }\n\n  return filteredDataElements;\n}, []);\n","import getFilteredDataElements from 'helpers/getFilteredDataElements';\nimport { getEmbeddedFileData } from 'helpers/getFileAttachments';\nimport { isAndroid, isIOS } from 'helpers/device';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\nimport { setToolbarGroup } from './exposedActions';\n\n// viewer\n/**\n * Remove an element from DOM\n * @ignore\n * @param {string} dataElement the value of the data-element attribute of the element\n * @param {number} priority a value that indicates how specific this element is disabled.\n * If a element is disabled with priority 3, then calling enableElement with priority 2 won't enable it back because the element is disabled in a more specific manner.\n * This priority argument is used by external APIs such as instance.disableElements and instance.disableFeatures(...)\n * For example, instance.disableElements has priority 3 and instance.enableFeatures has priority 1.\n * So calling instance.enableFeatures([instance.UI.Feature.NotesPanel]) won't enable the notes panel if it's disabled by instance.disableElements(['notesPanel'])\n */\nexport const disableElement = (dataElement, priority) => (\n  dispatch,\n  getState,\n) => {\n  if (dataElement === 'leftPanel') {\n    dispatch(disableElements(['leftPanel', 'leftPanelButton'], priority));\n  } else if (dataElement === 'stylePopup') {\n    dispatch(\n      disableElements(['toolStylePopup', 'annotationStylePopup'], priority),\n    );\n  } else {\n    const currentPriority = selectors.getDisabledElementPriority(\n      getState(),\n      dataElement,\n    );\n    if (!currentPriority || priority >= currentPriority) {\n      dispatch({ type: 'DISABLE_ELEMENT', payload: { dataElement, priority } });\n      updateCurrentToolbarGroup([dataElement], dispatch, getState);\n    }\n  }\n};\nexport const disableElements = (dataElements, priority) => (\n  dispatch,\n  getState,\n) => {\n  const filteredDataElements = getFilteredDataElements(\n    getState(),\n    dataElements,\n    priority,\n  );\n  dispatch({\n    type: 'DISABLE_ELEMENTS',\n    payload: { dataElements: filteredDataElements, priority },\n  });\n\n  updateCurrentToolbarGroup(filteredDataElements, dispatch, getState);\n};\n\n// A helper that updates the current toolbar group if the current toolbar group is disabled\nconst updateCurrentToolbarGroup = (dataElements, dispatch, getState) => {\n  // Check if we disabled a toolbar group\n  const disabledToolbarGroups = dataElements.filter((dataElement) => DataElements.TOOLBAR_GROUPS.includes(dataElement));\n  if (disabledToolbarGroups.length > 0) {\n    // If we did check if it is the currently active toolbar group\n    const activeToolbarGroup = selectors.getCurrentToolbarGroup(getState());\n    const wasActiveToolbarGroupDisabled = disabledToolbarGroups.includes(activeToolbarGroup);\n    // If it is disabled, switch to the first enabled toolbar group, or the view group if none are enabled\n    if (wasActiveToolbarGroupDisabled) {\n      const enabledToolbarGroups = selectors.getEnabledToolbarGroups(getState());\n      const firstEnabledToolbarGroup = enabledToolbarGroups[0] || DataElements.VIEW_TOOLBAR_GROUP;\n      // Set the toolbar group, with no default tool selected by default\n      setToolbarGroup(firstEnabledToolbarGroup, false)(dispatch, getState);\n    }\n  }\n};\nexport const enableElement = (dataElement, priority) => (\n  dispatch,\n  getState,\n) => {\n  if (dataElement === 'leftPanel') {\n    dispatch(enableElements(['leftPanel', 'leftPanelButton'], priority));\n  } else if (dataElement === 'stylePopup') {\n    dispatch(\n      enableElements(['toolStylePopup', 'annotationStylePopup'], priority),\n    );\n  } else {\n    const currentPriority = selectors.getDisabledElementPriority(\n      getState(),\n      dataElement,\n    );\n    if (!currentPriority || priority >= currentPriority) {\n      dispatch({ type: 'ENABLE_ELEMENT', payload: { dataElement, priority } });\n    }\n  }\n};\nexport const enableElements = (dataElements, priority) => (\n  dispatch,\n  getState,\n) => {\n  let filteredDataElements = getFilteredDataElements(\n    getState(),\n    dataElements,\n    priority,\n  );\n\n  if (!core.isCreateRedactionEnabled()) {\n    filteredDataElements = filteredDataElements.filter(\n      (ele) => ele !== 'redactionButton',\n    );\n  }\n\n  dispatch({\n    type: 'ENABLE_ELEMENTS',\n    payload: { dataElements: filteredDataElements, priority },\n  });\n};\n\nexport const addPortfolioTab = ({ fileObject, name, extension }) => async (dispatch, getState) => {\n  const state = getState();\n  const tabManager = selectors.getTabManager(state);\n  tabManager.addTab(\n    await getEmbeddedFileData(fileObject),\n    {\n      setActive: true,\n      extension: extension,\n      filename: name,\n    },\n  );\n};\n\nexport const setIsElementHidden = (dataElement, isHidden) => ({\n  type: 'SET_IS_ELEMENT_HIDDEN',\n  payload: { dataElement, isHidden }\n});\nexport const setThumbnailMerging = (useThumbnailMerging = true) => ({\n  type: 'SET_THUMBNAIL_MERGING',\n  payload: { useThumbnailMerging },\n});\nexport const setThumbnailReordering = (useThumbnailReordering = true) => ({\n  type: 'SET_THUMBNAIL_REORDERING',\n  payload: { useThumbnailReordering },\n});\nexport const setThumbnailMultiselect = (useThumbnailMultiselect = true) => ({\n  type: 'SET_THUMBNAIL_MULTISELECT',\n  payload: { useThumbnailMultiselect },\n});\nexport const setIsMultipleViewerMerging = (isMultipleViewerMerging = false) => ({\n  type: 'SET_MULTI_VIEWER_MERGING',\n  payload: { isMultipleViewerMerging },\n});\nexport const updateCalibrationInfo = ({ isCalibration = true, tempScale = '', previousToolName, isFractionalUnit = false, defaultUnit = '' }) => ({\n  type: 'UPDATE_CALIBRATION_INFO',\n  payload: { isCalibration, tempScale, previousToolName, isFractionalUnit, defaultUnit }\n});\nexport const setIsAddingNewScale = (isAddingNewScale = false) => ({\n  type: 'SET_IS_ADDING_NEW_SCALE',\n  payload: { isAddingNewScale }\n});\nexport const updateDeleteScale = (deleteScale = '') => ({\n  type: 'UPDATE_DELETE_SCALE',\n  payload: { deleteScale }\n});\nexport const setEnableNotesPanelVirtualizedList = (enableNotesPanelVirtualizedList = true) => ({\n  type: 'SET_ENABLE_NOTE_PANEL_VIRTUALIZED_LIST',\n  payload: { enableNotesPanelVirtualizedList },\n});\nexport const setNotesShowLastUpdatedDate = (notesShowLastUpdatedDate = false) => ({\n  type: 'SET_NOTES_SHOW_LAST_UPDATED_DATE',\n  payload: { notesShowLastUpdatedDate },\n});\nexport const setAllowPageNavigation = (allowPageNavigation = true) => ({\n  type: 'SET_ALLOW_PAGE_NAVIGATION',\n  payload: { allowPageNavigation },\n});\nexport const setLastPickedToolForGroup = (group, toolName) => ({\n  type: 'SET_LAST_PICKED_TOOL_FOR_GROUP',\n  payload: { group, toolName },\n});\nexport const setEnableToolGroupReordering = (enableToolGroupReordering = true) => ({\n  type: 'ENABLE_TOOL_GROUP_REORDERING',\n  payload: { enableToolGroupReordering },\n});\nexport const setActiveToolNameAndStyle = (toolObject) => (dispatch, getState) => {\n  const state = getState();\n  let name;\n\n  if (isIOS || isAndroid) {\n    name = toolObject.name;\n  } else {\n    // on desktop, auto switch between AnnotationEdit and TextSelect is true when you hover on text\n    // we do this to prevent this action from spamming the console\n    const toolsName = window.Core.Tools.ToolNames;\n    name = toolObject.name === toolsName['TEXT_SELECT'] || toolObject.name === toolsName['OFFICE_EDITOR_CONTENT_SELECT'] ? toolsName['EDIT'] : toolObject.name;\n  }\n\n  if (state.viewer.activeToolName === name) {\n    return;\n  }\n\n  dispatch({\n    type: 'SET_ACTIVE_TOOL_NAME_AND_STYLES',\n    payload: { toolName: name, toolStyles: toolObject.defaults || {} },\n  });\n};\nexport const setActiveToolStyles = (toolStyles = {}) => ({\n  type: 'SET_ACTIVE_TOOL_STYLES',\n  payload: { toolStyles },\n});\nexport const setCustomColor = (customColor = {}) => ({\n  type: 'SET_CUSTOM_COLOR',\n  payload: { customColor },\n});\nexport const setCustomColors = (customColors = []) => ({\n  type: 'SET_CUSTOM_COLORS',\n  payload: { customColors },\n});\nexport const setActiveToolGroup = (toolGroup) => (dispatch, getState) => {\n  const currentActiveToolGroup = selectors.getActiveToolGroup(getState());\n  const toolbarGroup = selectors.getCurrentToolbarGroup(getState());\n\n  if (currentActiveToolGroup === toolGroup) {\n    return;\n  }\n\n  dispatch({\n    type: 'SET_ACTIVE_TOOL_GROUP',\n    payload: { toolGroup, toolbarGroup },\n  });\n};\n\nexport const setActiveCustomPanel = (tabPanel, wrapperPanel) => (dispath, getState) => {\n  const currentActivePanel = selectors.getActiveCustomPanel(getState(), wrapperPanel);\n  if (currentActivePanel === tabPanel) {\n    return;\n  }\n  dispath({\n    type: 'SET_ACTIVE_CUSTOM_PANEL',\n    payload: { wrapperPanel, tabPanel },\n  });\n};\n\nexport const setSelectedScale = (selectedScale) => ({\n  type: 'SET_SELECTED_SCALE',\n  payload: { selectedScale }\n});\n\nexport const setNotePopupId = (id) => ({\n  type: 'SET_NOTE_POPUP_ID',\n  payload: { id },\n});\nexport const triggerNoteEditing = () => ({\n  type: 'SET_NOTE_EDITING',\n  payload: { isNoteEditing: true },\n});\nexport const finishNoteEditing = () => ({\n  type: 'SET_NOTE_EDITING',\n  payload: { isNoteEditing: false },\n});\nexport const setFitMode = (fitMode) => ({\n  type: 'SET_FIT_MODE',\n  payload: { fitMode },\n});\nexport const setZoom = (zoom, documentViewerKey = 1) => ({ type: 'SET_ZOOM', payload: { zoom, documentViewerKey } });\nexport const setRotation = (rotation) => ({\n  type: 'SET_ROTATION',\n  payload: { rotation },\n});\nexport const setDisplayMode = (displayMode) => ({\n  type: 'SET_DISPLAY_MODE',\n  payload: { displayMode },\n});\nexport const setCurrentPage = (currentPage) => ({\n  type: 'SET_CURRENT_PAGE',\n  payload: { currentPage },\n});\nexport const setFullScreen = (isFullScreen) => ({\n  type: 'SET_FULL_SCREEN',\n  payload: { isFullScreen },\n});\nexport const setReadOnly = (isReadOnly) => ({\n  type: 'SET_READ_ONLY',\n  payload: { isReadOnly },\n});\nexport const registerTool = (tool) => ({\n  type: 'REGISTER_TOOL',\n  payload: { ...tool },\n});\nexport const unregisterTool = (toolName) => ({\n  type: 'UNREGISTER_TOOL',\n  payload: { toolName },\n});\nexport const setToolButtonObjects = (toolButtonObjects) => ({\n  type: 'SET_TOOL_BUTTON_OBJECTS',\n  payload: { toolButtonObjects },\n});\nexport const setHeaderItems = (header, headerItems) => ({\n  type: 'SET_HEADER_ITEMS',\n  payload: { header, headerItems },\n});\nexport const setCustomHeadersAdditionalProperties = (customHeader, additionalProperties) => ({\n  type: 'SET_CUSTOM_HEADERS_ADDITIONAL_PROPERTIES',\n  payload: { customHeader, additionalProperties },\n});\nexport const setPopupItems = (dataElement, items) => ({\n  type: 'SET_POPUP_ITEMS',\n  payload: {\n    dataElement,\n    items,\n  },\n});\nexport const setMenuOverlayItems = (items) => ({\n  type: 'SET_MENUOVERLAY_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setActivePalette = (colorMapKey, colorPalette) => ({\n  type: 'SET_ACTIVE_PALETTE',\n  payload: { colorMapKey, colorPalette },\n});\n\nexport const setIconColor = (colorMapKey, color) => ({\n  type: 'SET_ICON_COLOR',\n  payload: { colorMapKey, color },\n});\nexport const setColorMap = (colorMap) => ({\n  type: 'SET_COLOR_MAP',\n  payload: { colorMap },\n});\nexport const setLeftPanelWidth = (width) => ({\n  type: 'SET_LEFT_PANEL_WIDTH',\n  payload: { width },\n});\nexport const disableReplyForAnnotations = (func) => ({\n  type: 'SET_REPLY_DISABLED_FUNC',\n  payload: { func },\n});\nexport const setMouseWheelZoom = (enableMouseWheelZoom = true) => ({\n  type: 'SET_MOUSE_WHEEL_ZOOM',\n  payload: { enableMouseWheelZoom },\n});\nexport const setReaderMode = (isReaderMode) => ({\n  type: 'SET_READER_MODE',\n  payload: { isReaderMode },\n});\nexport const setThumbnailSelectingPages = (isSelecting = true) => ({\n  type: 'SET_THUMBNAIL_PAGE_SELECT',\n  payload: { isSelecting },\n});\nexport const setPageManipulationOverlayItems = (items) => ({\n  type: 'SET_PAGE_MANIPULATION_OVERLAY_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setMultiPageManipulationControlsItems = (items) => ({\n  type: 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setMultiPageManipulationControlsItemsSmall = (items) => ({\n  type: 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_SMALL',\n  payload: {\n    items,\n  },\n});\nexport const setMultiPageManipulationControlsItemsLarge = (items) => ({\n  type: 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_LARGE',\n  payload: {\n    items,\n  },\n});\nexport const setPageManipulationOverlayAlternativePosition = (position) => ({\n  type: 'SET_PAGE_MANIPULATION_OVERLAY_ALTERNATIVE_POSITION',\n  payload: { position },\n});\nexport const setPageManipulationOverlayOpenByRightClick = (value) => ({\n  type: 'SET_PAGE_MANIPULATION_OVERLAY_OPEN_BY_RIGHT_CLICK',\n  payload: value,\n});\nexport const setThumbnailControlMenuItems = (items) => ({\n  type: 'SET_THUMBNAIL_CONTROL_MENU_ITEMS',\n  payload: {\n    items,\n  },\n});\nexport const setTabManager = (TabManager) => ({\n  type: 'SET_TAB_MANAGER',\n  payload: { TabManager },\n});\nexport const setMultiTab = (isMultiTab = true) => ({\n  type: 'SET_IS_MULTI_TAB',\n  payload: { isMultiTab },\n});\nexport const setTabs = (tabs) => ({\n  type: 'SET_TABS',\n  payload: { tabs },\n});\nexport const setActiveTab = (activeTab) => ({\n  type: 'SET_ACTIVE_TAB',\n  payload: { activeTab },\n});\nexport const setFonts = (fonts = []) => ({\n  type: 'SET_FONTS',\n  payload: { fonts },\n});\nexport const setIsMultiViewerMode = (isMultiViewerMode) => ({\n  type: 'SET_IS_MULTI_VIEWER_MODE',\n  payload: { isMultiViewerMode },\n});\nexport const setIsMultiViewerReady = (isMultiViewerReady) => ({\n  type: 'SET_IS_MULTI_VIEWER_READY',\n  payload: { isMultiViewerReady },\n});\nexport const setActiveDocumentViewerKey = (activeDocumentViewerKey) => ({\n  type: 'SET_ACTIVE_DOCUMENT_VIEWER_KEY',\n  payload: { activeDocumentViewerKey },\n});\nexport const setIsComparisonOverlayEnabled = (isComparisonOverlayEnabled) => ({\n  type: 'SET_COMPARISON_OVERLAY_ENABLED',\n  payload: { isComparisonOverlayEnabled },\n});\nexport const setIsCompareStarted = (isCompareStarted) => ({\n  type: 'SET_IS_COMPARE_STARTED',\n  payload: { isCompareStarted },\n});\nexport const setSyncViewer = (syncViewer) => ({\n  type: 'SET_SYNC_VIEWERS',\n  payload: { syncViewer },\n});\nexport const setSavedSignaturesTabEnabled = (enabled = true) => ({\n  type: 'SET_SAVED_SIGNATURES_TAB_ENABLED',\n  payload: { enabled }\n});\nexport const setInitialsOffset = (initalsOffset) => ({\n  type: 'SET_INITIALS_OFFSET',\n  payload: { initalsOffset },\n});\nexport const setFlyoutPosition = (newPosition) => ({\n  type: 'SET_FLYOUT_POSITION',\n  payload: { newPosition },\n});\nexport const addFlyout = (newFlyout) => (dispatch, getState) => {\n  const flyoutsToUpdateInstead = [DataElements.MAIN_MENU];\n  const flyoutMap = selectors.getFlyoutMap(getState());\n  const shouldUpdateInstead = flyoutsToUpdateInstead.includes(newFlyout.dataElement);\n  while (flyoutMap[newFlyout.dataElement] && !shouldUpdateInstead) {\n    const oldDataElement = newFlyout.dataElement;\n    if (newFlyout.dataElement.match(/[0-9]$/)) {\n      const number = parseInt(newFlyout.dataElement.match(/\\d+$/)[0], 10);\n      newFlyout.dataElement = newFlyout.dataElement.replace(/\\d+$/, `${number + 1}`);\n    } else {\n      newFlyout.dataElement = `${newFlyout.dataElement}2`;\n    }\n    console.warn(`Flyout with dataElement ${oldDataElement} already exists. Renaming to ${newFlyout.dataElement}`);\n  }\n  dispatch({\n    type: 'ADD_FLYOUT',\n    payload: { dataElement: newFlyout.dataElement, flyout: newFlyout },\n  });\n};\nexport const removeFlyout = (dataElement) => ({\n  type: 'REMOVE_FLYOUT',\n  payload: { dataElement },\n});\nexport const setActiveFlyout = (dataElement) => (dispatch, getState) => {\n  const flyoutMap = selectors.getFlyoutMap(getState());\n  if (dataElement && !flyoutMap[dataElement]) {\n    console.warn(`Flyout with dataElement ${dataElement} does not exist.`);\n    return;\n  }\n  dispatch({\n    type: 'SET_ACTIVE_FLYOUT',\n    payload: { dataElement },\n  });\n};\n\nexport const setFlyoutItems = (dataElement, items) => {\n  return {\n    type: 'SET_FLYOUT_ITEMS',\n    payload: { dataElement, items },\n  };\n};\nexport const updateFlyout = (dataElement, newFlyout) => (dispatch, getState) => {\n  const flyoutMap = selectors.getFlyoutMap(getState());\n  if (!flyoutMap[dataElement]) {\n    return dispatch(addFlyout(newFlyout));\n  }\n  dispatch({\n    type: 'UPDATE_FLYOUT',\n    payload: { dataElement, flyout: newFlyout },\n  });\n};\nexport const setFlyoutToggleElement = (toggleElement) => ({\n  type: 'SET_FLYOUT_TOGGLE_ELEMENT',\n  payload: { toggleElement },\n});\n\nexport const setPanelWidth = (dataElement, width) => ({\n  type: 'SET_PANEL_WIDTH',\n  payload: { dataElement, width },\n});\n\n// document\nexport const setTotalPages = (totalPages, documentViewerKey = 1) => ({\n  type: 'SET_TOTAL_PAGES',\n  payload: { totalPages, documentViewerKey },\n});\nexport const setOutlines = (outlines) => ({\n  type: 'SET_OUTLINES',\n  payload: { outlines },\n});\nexport const setIsOutlineEditing = (isOutlineEditingEnabled = true) => ({\n  type: 'SET_OUTLINE_EDITING',\n  payload: { isOutlineEditingEnabled },\n});\nexport const setAutoExpandOutlines = (autoExpandOutlines = false) => ({\n  type: 'SET_AUTO_EXPAND_OUTLINES',\n  payload: { autoExpandOutlines },\n});\nexport const setAnnotationNumbering = (isAnnotationNumberingEnabled = false) => ({\n  type: 'SET_ANNOTATION_NUMBERING',\n  payload: { isAnnotationNumberingEnabled },\n});\nexport const setBookmarks = (bookmarks) => ({\n  type: 'SET_BOOKMARKS',\n  payload: { bookmarks },\n});\nexport const addBookmark = (pageIndex, text) => (dispatch, getState) => {\n  dispatch({\n    type: 'ADD_BOOKMARK',\n    payload: { pageIndex, text },\n  });\n\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const editBookmark = (pageIndex, text) => (dispatch, getState) => {\n  dispatch({\n    type: 'EDIT_BOOKMARK',\n    payload: { pageIndex, text },\n  });\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const removeBookmark = (pageIndex) => (dispatch, getState) => {\n  dispatch({\n    type: 'REMOVE_BOOKMARK',\n    payload: { pageIndex },\n  });\n  const bookmarks = selectors.getBookmarks(getState());\n  fireEvent(Events.USER_BOOKMARKS_CHANGED, bookmarks);\n};\nexport const setBookmarkIconShortcutVisibility = (bookmarkIconShortcutVisibility) => ({\n  type: 'SET_BOOKMARK_ICON_SHORTCUT_VISIBILITY',\n  payload: { bookmarkIconShortcutVisibility },\n});\nexport const setPortfolio = (portfolio) => ({\n  type: 'SET_PORTFOLIO',\n  payload: { portfolio },\n});\nexport const setLayers = (layers) => ({\n  type: 'SET_LAYERS',\n  payload: { layers },\n});\nexport const setPasswordAttempts = (attempt) => ({\n  type: 'SET_PASSWORD_ATTEMPTS',\n  payload: { attempt },\n});\nexport const setPrintQuality = (quality) => ({\n  type: 'SET_PRINT_QUALITY',\n  payload: { quality },\n});\nexport const setDefaultPrintOptions = (options) => ({\n  type: 'SET_DEFAULT_PRINT_OPTIONS',\n  payload: { options },\n});\nexport const setLoadingProgress = (percent) => ({\n  type: 'SET_LOADING_PROGRESS',\n  payload: { progress: percent },\n});\nexport const resetLoadingProgress = () => ({\n  type: 'SET_LOADING_PROGRESS',\n  payload: { progress: 0 },\n});\nexport const setVerificationResult = (result) => ({\n  type: 'SET_VERIFICATION_RESULT',\n  payload: { result },\n});\nexport const setIsRevocationCheckingEnabled = (isRevocationCheckingEnabled = false) => ({\n  type: 'SET_IS_REVOCATION_CHECKING_ENABLED',\n  payload: { isRevocationCheckingEnabled }\n});\nexport const setRevocationProxyPrefix = (revocationProxyPrefix) => ({\n  type: 'SET_REVOCATION_PROXY_PREFIX',\n  payload: { revocationProxyPrefix }\n});\n\n// user\nexport const setUserName = (userName) => ({\n  type: 'SET_USER_NAME',\n  payload: { userName },\n});\nexport const setAdminUser = (isAdminUser) => ({\n  type: 'SET_ADMIN_USER',\n  payload: { isAdminUser },\n});\n\n// search\nexport const searchText = (searchValue, options) => ({\n  type: 'SEARCH_TEXT',\n  payload: { searchValue, options },\n});\nexport const searchTextFull = (searchValue, options) => ({\n  type: 'SEARCH_TEXT_FULL',\n  payload: { searchValue, options },\n});\nexport const addSearchListener = (func) => ({\n  type: 'ADD_SEARCH_LISTENER',\n  payload: { func },\n});\nexport const removeSearchListener = (func) => ({\n  type: 'REMOVE_SEARCH_LISTENER',\n  payload: { func },\n});\nexport const setSearchValue = (value) => ({\n  type: 'SET_SEARCH_VALUE',\n  payload: { value },\n});\nexport const setReplaceValue = (replaceText) => ({\n  type: 'SET_REPLACE_VALUE',\n  payload: { replaceText },\n});\nexport const setNextResultValue = (nextResult, nextResultIndex) => ({\n  type: 'SET_NEXT_RESULT',\n  payload: { nextResult, nextResultIndex },\n});\nexport const setCaseSensitive = (isCaseSensitive) => ({\n  type: 'SET_CASE_SENSITIVE',\n  payload: { isCaseSensitive },\n});\nexport const setWholeWord = (isWholeWord) => ({\n  type: 'SET_WHOLE_WORD',\n  payload: { isWholeWord },\n});\nexport const setWildcard = (isWildcard) => ({\n  type: 'SET_WILD_CARD',\n  payload: { isWildcard },\n});\n\nexport const resetSearch = () => ({ type: 'RESET_SEARCH', payload: {} });\n\nexport const setNoteTransformFunction = (noteTransformFunction) => ({\n  type: 'SET_NOTE_TRANSFORM_FUNCTION',\n  payload: { noteTransformFunction },\n});\nexport const setCustomNoteSelectionFunction = (customNoteFunction) => ({\n  type: 'SET_CUSTOM_NOTE_SELECTION_FUNCTION',\n  payload: { customNoteFunction },\n});\nexport const setCustomApplyRedactionsHandler = (customApplyRedactionsHandler) => ({\n  type: 'SET_CUSTOM_APPLY_REDACTIONS_HANDLER',\n  payload: { customApplyRedactionsHandler },\n});\n\nexport const setCustomMultiViewerSyncHandler = (customMultiViewerSyncHandler) => ({\n  type: 'SET_CUSTOM_MULTI_VIEWER_SYNC_HANDLER',\n  payload: { customMultiViewerSyncHandler },\n});\n\nexport const setCustomMultiViewerAcceptedFileFormats = (customMultiViewerAcceptedFileFormats) => ({\n  type: 'SET_CUSTOM_MULTI_VIEWER_ACCEPTED_FILE_FORMATS',\n  payload: { customMultiViewerAcceptedFileFormats },\n});\n\nexport const setEnableSnapMode = (enable) => ({\n  type: 'SET_ENABLE_SNAP_MODE',\n  payload: { enable },\n});\n\nexport const setLanguage = (language) => ({\n  type: 'SET_LANGUAGE',\n  payload: { language },\n});\n\nexport const setHideContentEditWarning = (hideWarning) => ({\n  type: 'SET_HIDE_CONTENT_EDIT_WARNING',\n  payload: { hideWarning },\n});\n\nexport const setContentWorkersAsLoaded = () => ({\n  type: 'SET_CONTENT_EDIT_WORKERS_LOADED',\n  payload: { contentEditWorkersLoaded: true },\n});\n\nexport const setCurrentContentBeingEdited = ({ content, annotation }) => ({\n  type: 'SET_CURRENT_CONTENT_BEING_EDITED',\n  payload: { content, annotation },\n});\n\nexport const updateCurrentContentBeingEdited = (content) => ({\n  type: 'UPDATE_CURRENT_CONTENT_BEING_EDITED',\n  payload: { content },\n});\n\nexport const clearCurrentContentBeingEdited = () => ({\n  type: 'CLEAR_CURRENT_CONTENT_BEING_EDITED',\n  payload: {},\n});\n\nexport const setProcessingSearchResults = (isProcessingSearchResults) => ({\n  type: 'SET_PROCESSING_SEARCH_RESULTS',\n  payload: { isProcessingSearchResults },\n});\n\nexport const triggerResetAudioPlaybackPosition = (shouldResetAudioPlaybackPosition) => ({\n  type: 'SET_RESET_AUDIO_PLAYBACK_POSITION',\n  payload: { shouldResetAudioPlaybackPosition },\n});\n\nexport const setActiveSoundAnnotation = (activeSoundAnnotation) => ({\n  type: 'SET_ACTIVE_SOUND_ANNOTATION',\n  payload: { activeSoundAnnotation },\n});\n\nexport const setAnnotationFilters = (annotationFilters) => ({\n  type: 'SET_ANNOTATION_FILTERS',\n  payload: { annotationFilters }\n});\n\nexport const setContentBoxEditor = (contentBoxEditor) => ({\n  type: 'SET_CONTENTBOX_EDITOR',\n  payload: { contentBoxEditor }\n});\n\nexport const setInitialsMode = (isEnabled) => ({\n  type: 'SET_INITIALS_MODE',\n  payload: { isEnabled }\n});\n\nexport const setShortcutKeyMap = (shortcutKeyMap) => ({\n  type: 'SET_SHORTCUT_KEY_MAP',\n  payload: shortcutKeyMap\n});\n\nexport const enableFeatureFlag = (featureFlag) => ({\n  type: 'ENABLE_FEATURE_FLAG',\n  payload: { featureFlag }\n});\n\nexport const disableFeatureFlag = (featureFlag) => ({\n  type: 'DISABLE_FEATURE_FLAG',\n  payload: { featureFlag }\n});\n\nexport const setComparePagesButtonEnabled = (isShowComparisonButtonEnabled) => ({\n  type: 'SET_COMPARE_PAGES_BUTTON_ENABLED',\n  payload: { isShowComparisonButtonEnabled }\n});\n\nexport const setIsMultiViewerModeAvailable = (isMultiViewerModeAvailable) => ({\n  type: 'SET_IS_MULTI_VIEWER_MODE_AVAILABLE',\n  payload: { isMultiViewerModeAvailable }\n});\n\nexport const setIsOfficeEditorMode = (isOfficeEditorMode) => ({\n  type: 'SET_IS_OFFICE_EDITOR_MODE',\n  payload: { isOfficeEditorMode }\n});\n\nexport const setOfficeEditorEditMode = (editMode) => ({\n  type: 'SET_OFFICE_EDITOR_EDIT_MODE',\n  payload: { editMode }\n});\n\nexport const growCustomElement = (dataElement) => (dispatch, getState) => {\n  const currentSize = getState().viewer.customElementSizes[dataElement] || 0;\n  const newSize = currentSize + 1;\n  dispatch(setCustomElementSize(dataElement, newSize));\n};\n\nexport const shrinkCustomElement = (dataElement) => (dispatch, getState) => {\n  const currentSize = getState().viewer.customElementSizes[dataElement] || 0;\n  const newSize = currentSize > 0 ? currentSize - 1 : 0;\n  dispatch(setCustomElementSize(dataElement, newSize));\n};\n\nexport const setCustomElementSize = (dataElement, size) => ({\n  type: 'SET_CUSTOM_ELEMENT_SIZE',\n  payload: { dataElement, size },\n});\n\nexport const setNotesInLeftPanel = (notesInLeftPanel) => ({\n  type: 'SET_NOTES_IN_LEFT_PANEL',\n  payload: notesInLeftPanel\n});\n\nexport const pushFocusedElement = (element) => ({\n  type: 'PUSH_FOCUSED_ELEMENT',\n  payload: element,\n});\n\nexport const setFocusedElementsStack = (stack) => ({\n  type: 'SET_FOCUSED_ELEMENTS_STACK',\n  payload: stack,\n});\n\nexport const popFocusedElement = () => (dispatch, getState) => {\n  const focusedElementsStack = getState().viewer.focusedElementsStack;\n\n  if (focusedElementsStack.length > 0) {\n    const poppedElement = focusedElementsStack[focusedElementsStack.length - 1];\n    const newStack = focusedElementsStack.slice(0, -1);\n    dispatch(setFocusedElementsStack(newStack));\n    return poppedElement;\n  }\n\n  return null;\n};\n\nexport const setKeyboardOpen = (isKeyboardOpen) => ({\n  type: 'SET_KEYBOARD_OPEN',\n  payload: isKeyboardOpen,\n});","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'components/Button';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport ModalWrapper from '../ModalWrapper';\nimport { escapePressListener } from 'helpers/accessibility';\nimport DataElements from 'constants/dataElement';\n\nimport './PasswordModal.scss';\n\nlet checkPassword = () => { };\nexport const setCheckPasswordFunction = (fn) => {\n  checkPassword = fn;\n};\n\nlet cancelPasswordCheckCallback = () => {\n  // This callback is intentionally blank. Its purpose is to allow users\n  // to extend the behaviour of cancelling a password modal flow.\n};\nexport const setCancelPasswordCheckCallback = (fn) => {\n  cancelPasswordCheckCallback = fn;\n};\n\nconst PasswordModal = () => {\n  const [isOpen, attempt, maxAttempts] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, DataElements.PASSWORD_MODAL),\n      selectors.getPasswordAttempts(state),\n      selectors.getMaxPasswordAttempts(state)\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n  const passwordInput = React.createRef();\n  const [password, setPassword] = useState('');\n  const [userCancelled, setUserCancelled] = useState(false);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElement(DataElements.PROGRESS_MODAL));\n      passwordInput.current?.focus();\n      window.addEventListener('keydown', (e) => escapePressListener(e, closeModal));\n    } else {\n      // when a user enters the correct password or calls core.closeDocument\n      // reset state in case user loads another password-protected document\n      setPassword('');\n      setUserCancelled(false);\n    }\n    return () => window.removeEventListener('keydown', escapePressListener);\n  }, [dispatch, isOpen, passwordInput]);\n\n  const handleSubmit = (e) => {\n    e.preventDefault();\n\n    checkPassword(password);\n  };\n\n  const closeModal = (event) => {\n    if (event.key === 'Escape') {\n      setUserCancelled(true);\n    } else {\n      dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n    }\n\n    cancelPasswordCheckCallback();\n  };\n\n  const getErrorModal = (errorMessage) => {\n    return (\n      <ModalWrapper isOpen={isOpen} title={'message.error'}\n        closeButtonDataElement={'errorModalCloseButton'}\n        onCloseClick={closeModal}\n      >\n        <div className=\"modal-content error-modal-content\">\n          <p aria-live=\"assertive\" role=\"alert\">{t(errorMessage)}</p>\n        </div>\n        <div className=\"modal-footer footer\">\n          <Button\n            className=\"confirm modal-button\"\n            dataElement=\"passwordSubmitButton\"\n            label={t('action.ok')}\n            onClick={closeModal}\n          />\n        </div>\n      </ModalWrapper>\n    );\n  };\n\n  const renderContent = () => {\n    const userExceedsMaxAttempts = attempt === maxAttempts;\n    if (userExceedsMaxAttempts) {\n      return getErrorModal('message.encryptedAttemptsExceeded');\n    }\n    if (userCancelled) {\n      return getErrorModal('message.encryptedUserCancelled');\n    }\n\n    return renderEnterPasswordContent();\n  };\n\n  const onKeyDown = (e) => {\n    if (e.which === 13) {\n      handleSubmit(e);\n    }\n  };\n\n  const renderEnterPasswordContent = () => {\n    const wrongPassword = attempt !== 0;\n    const wrongPasswordMessage = `${t('message.incorrectPassword', {\n      remainingAttempts: maxAttempts - attempt,\n    })}`;\n\n    return (\n      <ModalWrapper isOpen={isOpen} title={'message.passwordRequired'}\n        closeButtonDataElement={'errorModalCloseButton'}\n        onCloseClick={() => {\n          setUserCancelled(true);\n        }}\n      >\n        <form onSubmit={handleSubmit}>\n          <div>{t('message.enterPassword')}</div>\n          <input\n            className={`${wrongPassword ? 'wrong' : 'correct'} text-input-modal`}\n            type=\"password\"\n            ref={passwordInput}\n            autoComplete=\"current-password\"\n            value={password}\n            onKeyDown={onKeyDown}\n            onChange={(e) => setPassword(e.target.value)}\n            placeholder={t('message.enterPasswordPlaceholder')}\n            aria-label={`${wrongPassword ?\n              wrongPasswordMessage : t('message.enterPassword')}`}\n          />\n          {wrongPassword && (\n            <div className=\"incorrect-password\">\n              {wrongPasswordMessage}\n            </div>\n          )}\n        </form>\n        <div className=\"modal-footer footer\">\n          <Button\n            className=\"confirm modal-button\"\n            dataElement=\"passwordSubmitButton\"\n            label={t('action.submit')}\n            disabled={!password}\n            onClick={handleSubmit}\n          />\n        </div>\n      </ModalWrapper>\n    );\n  };\n\n  return (\n    <div\n      className={classNames({\n        Modal: true,\n        PasswordModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element={DataElements.PASSWORD_MODAL}\n    >\n      {renderContent()}\n    </div>\n  );\n};\n\nexport default PasswordModal;\n","import PasswordModal, { setCheckPasswordFunction, setCancelPasswordCheckCallback } from './PasswordModal';\n\nexport { setCheckPasswordFunction, setCancelPasswordCheckCallback };\nexport default PasswordModal;","export function warn() {\n  if (console && console.warn) {\n    var _console;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n    (_console = console).warn.apply(_console, args);\n  }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n  if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n  warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n  i18n.loadNamespaces(ns, function () {\n    if (i18n.isInitialized) {\n      cb();\n    } else {\n      var initialized = function initialized() {\n        setTimeout(function () {\n          i18n.off('initialized', initialized);\n        }, 0);\n        cb();\n      };\n\n      i18n.on('initialized', initialized);\n    }\n  });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var lng = i18n.languages[0];\n  var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n  var lastLng = i18n.languages[i18n.languages.length - 1];\n  if (lng.toLowerCase() === 'cimode') return true;\n\n  var loadNotPending = function loadNotPending(l, n) {\n    var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n    return loadState === -1 || loadState === 2;\n  };\n\n  if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n  if (i18n.hasResourceBundle(lng, ns)) return true;\n  if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n  if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n  return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce('i18n.languages were undefined or empty', i18n.languages);\n    return true;\n  }\n\n  var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n  if (!isNewerI18next) {\n    return oldI18nextHasLoadedNamespace(ns, i18n, options);\n  }\n\n  return i18n.hasLoadedNamespace(ns, {\n    precheck: function precheck(i18nInstance, loadNotPending) {\n      if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n}\nexport function getDisplayName(Component) {\n  return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nexport function hasXMLHttpRequest() {\n  return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\n\nfunction isPromise(maybePromise) {\n  return !!maybePromise && typeof maybePromise.then === 'function';\n}\n\nexport function makePromise(maybePromise) {\n  if (isPromise(maybePromise)) {\n    return maybePromise;\n  }\n\n  return Promise.resolve(maybePromise);\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nvar types = ['client', 'offset', 'scroll', 'bounds', 'margin'];\nfunction getTypes(props) {\n  var allowedTypes = [];\n  types.forEach(function (type) {\n    if (props[type]) {\n      allowedTypes.push(type);\n    }\n  });\n  return allowedTypes;\n}\n\nfunction getContentRect(node, types) {\n  var calculations = {};\n\n  if (types.indexOf('client') > -1) {\n    calculations.client = {\n      top: node.clientTop,\n      left: node.clientLeft,\n      width: node.clientWidth,\n      height: node.clientHeight\n    };\n  }\n\n  if (types.indexOf('offset') > -1) {\n    calculations.offset = {\n      top: node.offsetTop,\n      left: node.offsetLeft,\n      width: node.offsetWidth,\n      height: node.offsetHeight\n    };\n  }\n\n  if (types.indexOf('scroll') > -1) {\n    calculations.scroll = {\n      top: node.scrollTop,\n      left: node.scrollLeft,\n      width: node.scrollWidth,\n      height: node.scrollHeight\n    };\n  }\n\n  if (types.indexOf('bounds') > -1) {\n    var rect = node.getBoundingClientRect();\n    calculations.bounds = {\n      top: rect.top,\n      right: rect.right,\n      bottom: rect.bottom,\n      left: rect.left,\n      width: rect.width,\n      height: rect.height\n    };\n  }\n\n  if (types.indexOf('margin') > -1) {\n    var styles = getComputedStyle(node);\n    calculations.margin = {\n      top: styles ? parseInt(styles.marginTop) : 0,\n      right: styles ? parseInt(styles.marginRight) : 0,\n      bottom: styles ? parseInt(styles.marginBottom) : 0,\n      left: styles ? parseInt(styles.marginLeft) : 0\n    };\n  }\n\n  return calculations;\n}\n\n/**\n * Returns the global window object associated with provided element.\n */\nfunction getWindowOf(target) {\n  // Assume that the element is an instance of Node, which means that it\n  // has the \"ownerDocument\" property from which we can retrieve a\n  // corresponding global object.\n  var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local window object if it's not possible extract one from\n  // provided element.\n\n  return ownerGlobal || window;\n}\n\nfunction withContentRect(types) {\n  return function (WrappedComponent) {\n    var _class, _temp;\n\n    return _temp = _class =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(WithContentRect, _Component);\n\n      function WithContentRect() {\n        var _this;\n\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n        _this.state = {\n          contentRect: {\n            entry: {},\n            client: {},\n            offset: {},\n            scroll: {},\n            bounds: {},\n            margin: {}\n          }\n        };\n        _this._animationFrameID = null;\n        _this._resizeObserver = null;\n        _this._node = null;\n        _this._window = null;\n\n        _this.measure = function (entries) {\n          var contentRect = getContentRect(_this._node, types || getTypes(_this.props));\n\n          if (entries) {\n            contentRect.entry = entries[0].contentRect;\n          }\n\n          _this._animationFrameID = _this._window.requestAnimationFrame(function () {\n            if (_this._resizeObserver !== null) {\n              _this.setState({\n                contentRect: contentRect\n              });\n\n              if (typeof _this.props.onResize === 'function') {\n                _this.props.onResize(contentRect);\n              }\n            }\n          });\n        };\n\n        _this._handleRef = function (node) {\n          if (_this._resizeObserver !== null && _this._node !== null) {\n            _this._resizeObserver.unobserve(_this._node);\n          }\n\n          _this._node = node;\n          _this._window = getWindowOf(_this._node);\n          var innerRef = _this.props.innerRef;\n\n          if (innerRef) {\n            if (typeof innerRef === 'function') {\n              innerRef(_this._node);\n            } else {\n              innerRef.current = _this._node;\n            }\n          }\n\n          if (_this._resizeObserver !== null && _this._node !== null) {\n            _this._resizeObserver.observe(_this._node);\n          }\n        };\n\n        return _this;\n      }\n\n      var _proto = WithContentRect.prototype;\n\n      _proto.componentDidMount = function componentDidMount() {\n        this._resizeObserver = this._window !== null && this._window.ResizeObserver ? new this._window.ResizeObserver(this.measure) : new ResizeObserver(this.measure);\n\n        if (this._node !== null) {\n          this._resizeObserver.observe(this._node);\n\n          if (typeof this.props.onResize === 'function') {\n            this.props.onResize(getContentRect(this._node, types || getTypes(this.props)));\n          }\n        }\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        if (this._window !== null) {\n          this._window.cancelAnimationFrame(this._animationFrameID);\n        }\n\n        if (this._resizeObserver !== null) {\n          this._resizeObserver.disconnect();\n\n          this._resizeObserver = null;\n        }\n      };\n\n      _proto.render = function render() {\n        var _this$props = this.props,\n            innerRef = _this$props.innerRef,\n            onResize = _this$props.onResize,\n            props = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"onResize\"]);\n\n        return createElement(WrappedComponent, _extends({}, props, {\n          measureRef: this._handleRef,\n          measure: this.measure,\n          contentRect: this.state.contentRect\n        }));\n      };\n\n      return WithContentRect;\n    }(Component), _class.propTypes = {\n      client: PropTypes.bool,\n      offset: PropTypes.bool,\n      scroll: PropTypes.bool,\n      bounds: PropTypes.bool,\n      margin: PropTypes.bool,\n      innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n      onResize: PropTypes.func\n    }, _temp;\n  };\n}\n\nvar Measure = withContentRect()(function (_ref) {\n  var measure = _ref.measure,\n      measureRef = _ref.measureRef,\n      contentRect = _ref.contentRect,\n      children = _ref.children;\n  return children({\n    measure: measure,\n    measureRef: measureRef,\n    contentRect: contentRect\n  });\n});\nMeasure.displayName = 'Measure';\nMeasure.propTypes.children = PropTypes.func;\n\nexport default Measure;\nexport { withContentRect };\n","/**\n * Contains string enumeration for all themes for WebViewer. They are used to set the viewer theme.\n * @name UI.Theme\n * @property {string} DARK The theme where the WebViewer will be dark.\n * @property {string} LIGHT The theme where the WebViewer will be light.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const theme = instance.UI.Theme;\n    instance.UI.setTheme(theme.DARK);\n  });\n */\n\nexport default {\n  DARK: 'dark',\n  LIGHT: 'light',\n};","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","import core from 'core';\n\nexport default (toolName, property, value) => {\n  const tools = [];\n\n  const toolArray = core.getToolsFromAllDocumentViewers(toolName);\n  for (const tool of toolArray) {\n    if (tool) {\n      tools.push(tool);\n    }\n  }\n\n  tools.forEach((tool) => {\n    tool.setStyles({\n      [property]: value,\n    });\n  });\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw TypeError('Incorrect invocation');\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","export function getOpenedWarningModal() {\n  return document.querySelector('.WarningModal.open .container');\n}\n\nexport function getOpenedColorPicker() {\n  return document.querySelector('.ColorPickerModal.open');\n}\n\nexport function getAllOpenedModals() {\n  return document.querySelectorAll('.Modal.open');\n}\n\nexport function getDatePicker() {\n  return document.querySelector('[data-element=\"datePickerContainer\"]');\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n  // avoid scope creep, the keys array can then be collected\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  pna.nextTick(cb, err);\n};","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet Declaration = require('./declaration')\nlet Comment = require('./comment')\nlet Node = require('./node')\n\nlet parse, Rule, AtRule, Root\n\nfunction cleanSource(nodes) {\n  return nodes.map(i => {\n    if (i.nodes) i.nodes = cleanSource(i.nodes)\n    delete i.source\n    return i\n  })\n}\n\nfunction markDirtyUp(node) {\n  node[isClean] = false\n  if (node.proxyOf.nodes) {\n    for (let i of node.proxyOf.nodes) {\n      markDirtyUp(i)\n    }\n  }\n}\n\nclass Container extends Node {\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last)\n      for (let node of nodes) this.proxyOf.nodes.push(node)\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween)\n    if (this.nodes) {\n      for (let node of this.nodes) node.cleanRaws(keepBetween)\n    }\n  }\n\n  each(callback) {\n    if (!this.proxyOf.nodes) return undefined\n    let iterator = this.getIterator()\n\n    let index, result\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index = this.indexes[iterator]\n      result = callback(this.proxyOf.nodes[index], index)\n      if (result === false) break\n\n      this.indexes[iterator] += 1\n    }\n\n    delete this.indexes[iterator]\n    return result\n  }\n\n  every(condition) {\n    return this.nodes.every(condition)\n  }\n\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0\n    if (!this.indexes) this.indexes = {}\n\n    this.lastEach += 1\n    let iterator = this.lastEach\n    this.indexes[iterator] = 0\n\n    return iterator\n  }\n\n  getProxyProcessor() {\n    return {\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (!node[prop]) {\n          return node[prop]\n        } else if (\n          prop === 'each' ||\n          (typeof prop === 'string' && prop.startsWith('walk'))\n        ) {\n          return (...args) => {\n            return node[prop](\n              ...args.map(i => {\n                if (typeof i === 'function') {\n                  return (child, index) => i(child.toProxy(), index)\n                } else {\n                  return i\n                }\n              })\n            )\n          }\n        } else if (prop === 'every' || prop === 'some') {\n          return cb => {\n            return node[prop]((child, ...other) =>\n              cb(child.toProxy(), ...other)\n            )\n          }\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else if (prop === 'nodes') {\n          return node.nodes.map(i => i.toProxy())\n        } else if (prop === 'first' || prop === 'last') {\n          return node[prop].toProxy()\n        } else {\n          return node[prop]\n        }\n      },\n\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (prop === 'name' || prop === 'params' || prop === 'selector') {\n          node.markDirty()\n        }\n        return true\n      }\n    }\n  }\n\n  index(child) {\n    if (typeof child === 'number') return child\n    if (child.proxyOf) child = child.proxyOf\n    return this.proxyOf.nodes.indexOf(child)\n  }\n\n  insertAfter(exist, add) {\n    let existIndex = this.index(exist)\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n    existIndex = this.index(exist)\n    for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (existIndex < index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  insertBefore(exist, add) {\n    let existIndex = this.index(exist)\n    let type = existIndex === 0 ? 'prepend' : false\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse()\n    existIndex = this.index(exist)\n    for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (existIndex <= index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  normalize(nodes, sample) {\n    if (typeof nodes === 'string') {\n      nodes = cleanSource(parse(nodes).nodes)\n    } else if (typeof nodes === 'undefined') {\n      nodes = []\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type === 'root' && this.type !== 'document') {\n      nodes = nodes.nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type) {\n      nodes = [nodes]\n    } else if (nodes.prop) {\n      if (typeof nodes.value === 'undefined') {\n        throw new Error('Value field is missed in node creation')\n      } else if (typeof nodes.value !== 'string') {\n        nodes.value = String(nodes.value)\n      }\n      nodes = [new Declaration(nodes)]\n    } else if (nodes.selector) {\n      nodes = [new Rule(nodes)]\n    } else if (nodes.name) {\n      nodes = [new AtRule(nodes)]\n    } else if (nodes.text) {\n      nodes = [new Comment(nodes)]\n    } else {\n      throw new Error('Unknown node type in node creation')\n    }\n\n    let processed = nodes.map(i => {\n      /* c8 ignore next */\n      if (!i[my]) Container.rebuild(i)\n      i = i.proxyOf\n      if (i.parent) i.parent.removeChild(i)\n      if (i[isClean]) markDirtyUp(i)\n      if (typeof i.raws.before === 'undefined') {\n        if (sample && typeof sample.raws.before !== 'undefined') {\n          i.raws.before = sample.raws.before.replace(/\\S/g, '')\n        }\n      }\n      i.parent = this.proxyOf\n      return i\n    })\n\n    return processed\n  }\n\n  prepend(...children) {\n    children = children.reverse()\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, 'prepend').reverse()\n      for (let node of nodes) this.proxyOf.nodes.unshift(node)\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  push(child) {\n    child.parent = this\n    this.proxyOf.nodes.push(child)\n    return this\n  }\n\n  removeAll() {\n    for (let node of this.proxyOf.nodes) node.parent = undefined\n    this.proxyOf.nodes = []\n\n    this.markDirty()\n\n    return this\n  }\n\n  removeChild(child) {\n    child = this.index(child)\n    this.proxyOf.nodes[child].parent = undefined\n    this.proxyOf.nodes.splice(child, 1)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (index >= child) {\n        this.indexes[id] = index - 1\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts\n      opts = {}\n    }\n\n    this.walkDecls(decl => {\n      if (opts.props && !opts.props.includes(decl.prop)) return\n      if (opts.fast && !decl.value.includes(opts.fast)) return\n\n      decl.value = decl.value.replace(pattern, callback)\n    })\n\n    this.markDirty()\n\n    return this\n  }\n\n  some(condition) {\n    return this.nodes.some(condition)\n  }\n\n  walk(callback) {\n    return this.each((child, i) => {\n      let result\n      try {\n        result = callback(child, i)\n      } catch (e) {\n        throw child.addToError(e)\n      }\n      if (result !== false && child.walk) {\n        result = child.walk(callback)\n      }\n\n      return result\n    })\n  }\n\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name\n      return this.walk((child, i) => {\n        if (child.type === 'atrule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'atrule' && name.test(child.name)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'atrule' && child.name === name) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkComments(callback) {\n    return this.walk((child, i) => {\n      if (child.type === 'comment') {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop\n      return this.walk((child, i) => {\n        if (child.type === 'decl') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'decl' && prop.test(child.prop)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'decl' && child.prop === prop) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector\n\n      return this.walk((child, i) => {\n        if (child.type === 'rule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'rule' && selector.test(child.selector)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'rule' && child.selector === selector) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  get first() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[0]\n  }\n\n  get last() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n  }\n}\n\nContainer.registerParse = dependant => {\n  parse = dependant\n}\n\nContainer.registerRule = dependant => {\n  Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n  AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n  Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n  if (node.type === 'atrule') {\n    Object.setPrototypeOf(node, AtRule.prototype)\n  } else if (node.type === 'rule') {\n    Object.setPrototypeOf(node, Rule.prototype)\n  } else if (node.type === 'decl') {\n    Object.setPrototypeOf(node, Declaration.prototype)\n  } else if (node.type === 'comment') {\n    Object.setPrototypeOf(node, Comment.prototype)\n  } else if (node.type === 'root') {\n    Object.setPrototypeOf(node, Root.prototype)\n  }\n\n  node[my] = true\n\n  if (node.nodes) {\n    node.nodes.forEach(child => {\n      Container.rebuild(child)\n    })\n  }\n}\n/* c8 ignore stop */\n","import fireEvent from './fireEvent';\nimport Events from 'constants/events';\nimport isFullscreen from './isFullscreen';\n\nexport default () => {\n  if (isFullscreen()) {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document.msExitFullscreen) {\n      document.msExitFullscreen();\n    } else if (document.mozCancelFullScreen) {\n      document.mozCancelFullScreen();\n    } else if (document.webkitExitFullscreen) {\n      document.webkitExitFullscreen();\n    }\n    fireEvent(Events.FULLSCREEN_MODE_TOGGLED, { isInFullscreen: false });\n  } else {\n    const docElm = document.documentElement;\n    if (docElm.requestFullscreen) {\n      docElm.requestFullscreen();\n    } else if (docElm.msRequestFullscreen) {\n      docElm.msRequestFullscreen();\n    } else if (docElm.mozRequestFullScreen) {\n      docElm.mozRequestFullScreen();\n    } else if (docElm.webkitRequestFullScreen) {\n      docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);\n      setTimeout(() => {\n        if (!document.webkitCurrentFullScreenElement) {\n          docElm.webkitRequestFullScreen();\n        }\n      }, 200);\n    }\n    fireEvent(Events.FULLSCREEN_MODE_TOGGLED, { isInFullscreen: true });\n  }\n};\n","import React, { useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from 'components/Icon';\nimport fireEvent from 'helpers/fireEvent';\nimport selectors from 'selectors';\nimport Events from 'constants/events';\n\nimport './ResizeBar.scss';\n\nconst ResizeBar = ({ onResize, minWidth, leftDirection, dataElement }) => {\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n  const isMouseDownRef = useRef(false);\n\n  useEffect(() => {\n    // this listener is throttled because the notes panel listens to the panel width\n    // change in order to rerender to have the correct width and we don't want\n    // it to rerender too often\n\n    // Removed throttle for now. It was causing jitterness when resizing.\n    // Maybe throttle is necessary because other components listening to the width would re-render too often?\n    const dragMouseMove = ({ clientX }) => {\n      if (isMouseDownRef.current) {\n        const newWidth = Math.max(minWidth, Math.min(window.innerWidth, leftDirection ? window.innerWidth - clientX : clientX));\n        onResize(newWidth);\n        fireEvent(Events.PANEL_RESIZED, { element: dataElement, width: newWidth });\n      }\n    };\n\n    document.addEventListener('mousemove', dragMouseMove);\n    return () => document.removeEventListener('mousemove', dragMouseMove);\n  }, [leftDirection, minWidth, onResize]);\n\n  useEffect(() => {\n    const finishDrag = () => {\n      isMouseDownRef.current = false;\n    };\n\n    document.addEventListener('mouseup', finishDrag);\n    return () => document.removeEventListener('mouseup', finishDrag);\n  }, []);\n\n  return isDisabled ? null : (\n    <div\n      data-element={dataElement}\n      className=\"resize-bar\"\n      onMouseDown={() => {\n        isMouseDownRef.current = true;\n      }}\n    >\n      <Icon glyph=\"icon-detach-toolbar\" />\n    </div>\n  );\n};\n\nexport default ResizeBar;\n","import ResizeBar from './ResizeBar';\n\nexport default ResizeBar;\n","import DataElements from 'constants/dataElement';\nimport { PLACEMENT } from 'constants/customizationVariables';\n\nexport default (dataElement, state) => getLeftPanelDataElements(state).includes(dataElement);\n\nexport const getLeftPanelDataElements = (state) => {\n  const featureFlags = state.featureFlags;\n  const { customizableUI } = featureFlags;\n\n  if (customizableUI) {\n    return state.viewer.genericPanels.filter((item) => item.location === PLACEMENT.LEFT);\n  }\n\n  const defaultLeftPanels = [\n    DataElements.PORTFOLIO_PANEL,\n    DataElements.THUMBNAILS_PANEL,\n    DataElements.OUTLINE_PANEL,\n    DataElements.LAYERS_PANEL,\n    DataElements.BOOKMARK_PANEL,\n    DataElements.SIGNATURE_PANEL,\n    DataElements.ATTACHMENT_PANEL,\n  ];\n\n  if (state.viewer.notesInLeftPanel) {\n    defaultLeftPanels.push(DataElements.NOTES_PANEL);\n  }\n\n  const customPanels = state.viewer.customPanels.map(({ panel }) => panel.dataElement);\n\n  return [...defaultLeftPanels, ...customPanels];\n};\n","import { mapKeyToToolNames, annotationMapKeys } from 'constants/map';\nimport Feature from 'constants/feature';\nimport { getInstanceNode } from './getRootNode';\nimport DataElements from 'constants/dataElement';\n\nconst checkFeaturesToEnable = (componentsMap) => {\n  const keys = Object.keys(componentsMap);\n  const measurementTools = [\n    mapKeyToToolNames(annotationMapKeys.DISTANCE_MEASUREMENT),\n    mapKeyToToolNames(annotationMapKeys.PERIMETER_MEASUREMENT),\n    mapKeyToToolNames(annotationMapKeys.ARC_MEASUREMENT),\n    mapKeyToToolNames(annotationMapKeys.RECTANGULAR_AREA_MEASUREMENT),\n    mapKeyToToolNames(annotationMapKeys.CLOUDY_RECTANGULAR_AREA_MEASUREMENT),\n    mapKeyToToolNames(annotationMapKeys.AREA_MEASUREMENT),\n    mapKeyToToolNames(annotationMapKeys.ELLIPSE_MEASUREMENT),\n    mapKeyToToolNames(annotationMapKeys.COUNT_MEASUREMENT),\n  ].flat();\n  const contentEditTools = mapKeyToToolNames(annotationMapKeys.CONTENT_EDIT_TOOL);\n  const redactTools = mapKeyToToolNames(annotationMapKeys.REDACTION);\n  const instance = getInstanceNode().instance;\n\n  for (let index = 0, len = keys.length; index < len; index++) {\n    const element = componentsMap[keys[index]];\n    if (element.dataElement === DataElements.FILE_PICKER_BUTTON) {\n      instance.UI.enableFilePicker();\n    } else if (element.dataElement === DataElements.CREATE_PORTFOLIO) {\n      instance.UI.enableFeatures(Feature.Portfolio);\n    } else if (redactTools.indexOf(element.toolName) > -1) {\n      instance.UI.enableRedaction();\n    } else if (measurementTools.indexOf(element.toolName) > -1) {\n      instance.UI.enableMeasurement();\n    } else if (contentEditTools.indexOf(element.toolName) > -1) {\n      instance.UI.enableFeatures(Feature.ContentEdit);\n    }\n  }\n};\n\nexport default checkFeaturesToEnable;","import core from 'core';\nimport isDataElementLeftPanel from 'helpers/isDataElementLeftPanel';\nimport fireEvent from 'helpers/fireEvent';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\nimport { disableElements, enableElements, setActiveFlyout } from 'actions/internalActions';\nimport defaultTool from 'constants/defaultTool';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport Events from 'constants/events';\nimport { getGenericPanels, getGroupedItemsWithSelectedTool, getOpenGenericPanel } from 'selectors/exposedSelectors';\nimport DataElements from 'constants/dataElement';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\nimport pick from 'lodash/pick';\nimport { v4 as uuidv4 } from 'uuid';\nimport selectors from 'selectors';\nimport checkFeaturesToEnable from 'helpers/checkFeaturesToEnable';\nimport { getNestedGroupedItems, getBasicItemsFromGroupedItems, getParentGroupedItems } from 'helpers/modularUIHelpers';\nimport { isMobile } from 'helpers/device';\nimport { isOfficeEditorMode } from 'src/helpers/officeEditor';\n\nexport const setScaleOverlayPosition = (position) => ({\n  type: 'SET_SCALE_OVERLAY_POSITION',\n  payload: { position },\n});\nexport const setDefaultPrintMargins = (margins) => ({\n  type: 'SET_DEFAULT_PRINT_MARGINS',\n  payload: { margins },\n});\nexport const disableApplyCropWarningModal = () => ({\n  type: 'SHOW_APPLY_CROP_WARNING',\n  payload: { shouldShowApplyCropWarning: false },\n});\n\nexport const enableApplyCropWarningModal = () => ({\n  type: 'SHOW_APPLY_CROP_WARNING',\n  payload: { shouldShowApplyCropWarning: true },\n});\n\nexport const disableApplySnippingWarningModal = () => ({\n  type: 'SHOW_APPLY_SNIPPING_WARNING',\n  payload: { shouldShowApplySnippingWarning: false },\n});\n\nexport const enableApplySnippingWarningModal = () => ({\n  type: 'SHOW_APPLY_SNIPPING_WARNING',\n  payload: { shouldShowApplySnippingWarning: true },\n});\n\nexport const setPresetCropDimensions = (presetCropDimensions) => ({\n  type: 'SET_PRESET_CROP_DIMENSIONS',\n  payload: { presetCropDimensions },\n});\n\nexport const setPresetNewPageDimensions = (presetNewPageDimensions) => ({\n  type: 'SET_PRESET_NEW_PAGE_DIMENSIONS',\n  payload: { presetNewPageDimensions },\n});\n\nexport const setDateTimeFormats = (dateTimeFormats) => ({\n  type: 'SET_DATE_TIME_FORMATS',\n  payload: { dateTimeFormats },\n});\n\nexport const setEnableDesktopOnlyMode = (enableDesktopOnlyMode) => ({\n  type: 'SET_ENABLE_DESKTOP_ONLY_MODE',\n  payload: { enableDesktopOnlyMode },\n});\n\nexport const setHighContrastMode = (useHighContrastMode) => ({\n  type: 'SET_HIGH_CONTRAST_MODE',\n  payload: { useHighContrastMode },\n});\n\nexport const setCanUndo = (canUndo, documentViewerKey = 1) => ({\n  type: 'SET_CAN_UNDO',\n  payload: { canUndo, documentViewerKey },\n});\n\nexport const setCanRedo = (canRedo, documentViewerKey = 1) => ({\n  type: 'SET_CAN_REDO',\n  payload: { canRedo, documentViewerKey },\n});\n\nexport const setStandardStamps = (t) => async (dispatch) => {\n  const rubberStampTool = core.getTool('AnnotationCreateRubberStamp');\n  const canvasWidth = 160;\n  const canvasHeight = 58;\n\n  const annotations = await rubberStampTool.getStandardStampAnnotations();\n  const previews = await Promise.all(\n    annotations.map((annotation) => {\n      const text = t(`rubberStamp.${annotation['Icon']}`);\n\n      const options = {\n        canvasWidth,\n        canvasHeight,\n        text,\n      };\n\n      return rubberStampTool.getPreview(annotation, options);\n    }),\n  );\n\n  const standardStamps = annotations.map((annotation, i) => ({\n    annotation,\n    imgSrc: previews[i],\n  }));\n\n  dispatch({\n    type: 'SET_STANDARD_STAMPS',\n    payload: { standardStamps },\n  });\n};\n\nexport const setCustomStamps = (t) => async (dispatch) => {\n  const rubberStampTool = core.getTool('AnnotationCreateRubberStamp');\n  const canvasWidth = 160;\n  const canvasHeight = 58;\n\n  const annotations = await rubberStampTool.getCustomStampAnnotations();\n  await Promise.all(\n    annotations.map((annotation) => {\n      const text = t(`rubberStamp.${annotation['Icon']}`);\n\n      const options = {\n        canvasWidth,\n        canvasHeight,\n        text,\n      };\n\n      return rubberStampTool.getPreview(annotation, options);\n    }),\n  );\n\n  const customStampsPromises = annotations.map(async (annotation) => ({\n    annotation,\n    imgSrc: await annotation.getImageData(),\n  }));\n\n  const customStamps = await Promise.all(customStampsPromises);\n\n  dispatch({\n    type: 'SET_CUSTOM_STAMPS',\n    payload: { customStamps },\n  });\n};\n\nexport const setReadOnlyRibbons = () => (dispatch, getState) => {\n  dispatch(setToolbarGroup('toolbarGroup-View'));\n  const state = getState();\n  const toolbarGroupsToDisable = Object.keys(state.viewer.headers).filter(\n    (key) => key.includes('toolbarGroup-') && key !== 'toolbarGroup-View',\n  );\n\n  disableElements(toolbarGroupsToDisable, PRIORITY_TWO)(dispatch, getState);\n};\n\nexport const enableRibbons = () => (dispatch, getState) => {\n  const state = getState();\n  // There can be a situation where we switch to FormBuilder mode and we get a race condition between setting\n  // the active toolbarGroup as what is in the current state and Forms, as redux hasnt dispatched the update to the Forms tool bar yet.\n  // We double check here if we are in form mode and set the correct tool bar group\n  // We enable ribbons when going into form mode, as we temporarily elevate the user's permissions\n  const featureFlags = selectors.getFeatureFlags(getState());\n  const { customizableUI } = featureFlags;\n\n  const isInFormFieldCreationMode = core.getFormFieldCreationManager().isInFormFieldCreationMode();\n  const toolbarGroup = isInFormFieldCreationMode ? DataElements.FORMS_TOOLBAR_GROUP : state.viewer.toolbarGroup;\n  if (!customizableUI) {\n    dispatch(setToolbarGroup(toolbarGroup || DataElements.ANNOTATE_TOOLBAR_GROUP));\n  }\n  const toolbarGroupsToEnable = Object.keys(state.viewer.headers).filter((key) => key.includes('toolbarGroup-'));\n\n  enableElements(toolbarGroupsToEnable, PRIORITY_TWO)(dispatch, getState);\n};\n\nconst isElementDisabled = (state, dataElement) => state.viewer.disabledElements[dataElement]?.disabled;\n\nexport const allButtonsInGroupDisabled = (state, toolGroup) => {\n  const dataElements = Object.values(state.viewer.toolButtonObjects)\n    .filter(({ group }) => group === toolGroup)\n    .map(({ dataElement }) => dataElement);\n\n  return dataElements.every((dataElement) => isElementDisabled(state, dataElement));\n};\n\nexport const getFirstToolForGroupedItems = (state, group) => {\n  const modularComponents = state.viewer.modularComponents;\n  const allItems = getBasicItemsFromGroupedItems(state, group);\n  let firstTool = '';\n\n  allItems?.find((item) => {\n    const { type, toolName, dataElement } = modularComponents[item];\n    if (type === ITEM_TYPE.TOOL_BUTTON && toolName && !isElementDisabled(state, dataElement)) {\n      firstTool = toolName;\n      return toolName;\n    }\n    return false;\n  });\n  return firstTool;\n};\n\nexport const setLastPickedToolAndGroup = (toolAndGroup) => ({\n  type: 'SET_LAST_PICKED_TOOL_AND_GROUP',\n  payload: { tool: toolAndGroup.tool, group: toolAndGroup.group },\n});\n\nexport const getAllAssociatedGroupedItems = (state, groupedItems) => {\n  const arrayOfGroupedItems = Array.isArray(groupedItems) ? groupedItems : [groupedItems];\n  const parentGroupedItems = getParentGroupedItems(state, groupedItems);\n  const nestedGroupedItems = getNestedGroupedItems(state, groupedItems);\n  const allAssociatedGroupedItems = Array.from(new Set([...arrayOfGroupedItems, ...parentGroupedItems, ...nestedGroupedItems]));\n\n  return allAssociatedGroupedItems;\n};\n\nexport const setActiveGroupedItems = (groupedItems) => (dispatch, getState) => {\n  if (!groupedItems.length) {\n    dispatch(setGroupedItems([]));\n    return;\n  }\n\n  const state = getState();\n  const allAssociatedGroupedItems = getAllAssociatedGroupedItems(state, groupedItems);\n\n  const groupedItemsHasLastPickedTool = groupedItems.find((groupedItem) => state.viewer.lastPickedToolForGroupedItems?.[groupedItem]);\n  if (!groupedItemsHasLastPickedTool) {\n    groupedItems.some((groupedItem) => {\n      const firstTool = getFirstToolForGroupedItems(state, groupedItem);\n      if (firstTool) {\n        dispatch(setLastPickedToolForGroupedItems(groupedItem, firstTool));\n        dispatch(setLastPickedToolAndGroup({\n          tool: firstTool,\n          group: allAssociatedGroupedItems\n        }));\n        return true;\n      }\n      return false;\n    });\n  }\n  dispatch(setGroupedItems(allAssociatedGroupedItems));\n};\n\nexport const setLastPickedToolForGroupedItems = (groupedItem, toolName) => (dispatch, getState) => {\n  const state = getState();\n  const groupedItemsWithTool = getGroupedItemsWithSelectedTool(state, toolName);\n  const activeGroupedItems = selectors.getActiveGroupedItems(state);\n  const activeGroupedItemsContainsTool = activeGroupedItems.filter((item) => groupedItemsWithTool.includes(item));\n\n  const arrayOfGroupedItems = Array.isArray(groupedItem) ? groupedItem : [groupedItem];\n  const groupsToSetLastPickedTool = Array.from(new Set(activeGroupedItemsContainsTool.concat(arrayOfGroupedItems)));\n  for (const group of groupsToSetLastPickedTool) {\n    dispatch({\n      type: 'SET_LAST_PICKED_TOOL_FOR_GROUPED_ITEMS',\n      payload: { toolName, groupedItem: group },\n    });\n  }\n};\n\nconst setGroupedItems = (groupedItems) => ({\n  type: 'SET_ACTIVE_GROUPED_ITEMS',\n  payload: { groupedItems },\n});\n\nexport const setFixedGroupedItems = (groupedItems) => (dispatch) => {\n  dispatch({\n    type: 'SET_FIXED_GROUPED_ITEMS',\n    payload: { groupedItems }\n  });\n};\n\nexport const setActiveCustomRibbon = (customRibbon) => ({\n  type: 'SET_ACTIVE_CUSTOM_RIBBON',\n  payload: { customRibbon }\n});\n\nexport const setToolbarGroup = (toolbarGroup, pickTool = true, toolGroup = '') => (dispatch, getState) => {\n  const getFirstToolGroupForToolbarGroup = (state, _toolbarGroup) => {\n    const toolGroups = state.viewer.headers[_toolbarGroup];\n    let firstToolGroupForToolbarGroup = '';\n    if (toolGroups) {\n      const firstTool = Object.values(toolGroups).find(({ toolGroup, dataElement }) => {\n        if (toolGroup && !isElementDisabled(state, dataElement) && !allButtonsInGroupDisabled(state, toolGroup)) {\n          return true;\n        }\n        return false;\n      });\n      if (firstTool) {\n        firstToolGroupForToolbarGroup = firstTool.toolGroup;\n      }\n    }\n    return firstToolGroupForToolbarGroup;\n  };\n\n  const getFirstToolNameForGroup = (state, toolGroup) => {\n    const tools = state.viewer.toolButtonObjects;\n    const firstTool = Object.keys(tools).find((key) => {\n      return tools[key].group === toolGroup;\n    });\n    return firstTool;\n  };\n\n  if (toolbarGroup === 'toolbarGroup-View') {\n    dispatch({\n      type: 'SET_ACTIVE_TOOL_GROUP',\n      payload: { toolGroup: '', toolbarGroup },\n    });\n    core.setToolMode(defaultTool);\n  } else {\n    if (!isOfficeEditorMode()) {\n      dispatch(openElements(['toolsHeader']));\n    }\n    const state = getState();\n    const lastPickedToolGroup =\n      toolGroup || state.viewer.lastPickedToolGroup[toolbarGroup] || getFirstToolGroupForToolbarGroup(state, toolbarGroup);\n    const lastPickedToolName =\n      state.viewer.lastPickedToolForGroup[lastPickedToolGroup] || getFirstToolNameForGroup(state, lastPickedToolGroup);\n    if (pickTool) {\n      if (toolbarGroup === DataElements.EDIT_TOOLBAR_GROUP || toolbarGroup === DataElements.EDIT_TEXT_TOOLBAR_GROUP) {\n        dispatch(closeElement(DataElements.STYLE_PANEL));\n      }\n      dispatch({\n        type: 'SET_ACTIVE_TOOL_GROUP',\n        payload: { toolGroup: lastPickedToolGroup, toolbarGroup },\n      });\n\n      if (lastPickedToolName === 'AnnotationCreateSignature') {\n        core.setToolMode(defaultTool);\n      } else {\n        core.setToolMode(lastPickedToolName);\n      }\n    } else {\n      core.setToolMode(defaultTool);\n      dispatch({\n        type: 'SET_ACTIVE_TOOL_GROUP',\n        payload: { toolGroup: '', toolbarGroup },\n      });\n    }\n  }\n  dispatch(closeElements(['toolsOverlay', 'signatureOverlay', 'toolStylePopup']));\n\n  dispatch({\n    type: 'SET_TOOLBAR_GROUP',\n    payload: { toolbarGroup },\n  });\n  fireEvent(Events.TOOLBAR_GROUP_CHANGED, toolbarGroup);\n};\n\nexport const setActiveGroupedItemWithTool = (toolName) => (dispatch, getState) => {\n  const state = getState();\n  const groupedItemsWithTool = selectors.getGroupedItemsWithSelectedTool(state, toolName);\n  const activeGroupedItems = selectors.getActiveGroupedItems(state);\n  const activeGroupedItemsContainsTool = activeGroupedItems.filter((item) => groupedItemsWithTool.includes(item));\n\n  // If no active grouped items have the selected tool, we set the first one as active\n  if (!activeGroupedItemsContainsTool.length && groupedItemsWithTool.length > 0) {\n    let firstGroupedItem = '';\n    let associatedRibbonItem = '';\n    for (const groupedItems of groupedItemsWithTool) {\n      firstGroupedItem = groupedItems;\n      associatedRibbonItem = selectors.getRibbonItemAssociatedWithGroupedItem(state, groupedItems);\n      if (associatedRibbonItem) {\n        break;\n      }\n    }\n    // We just set the active custom ribbon if there is an associated ribbon item.\n    if (associatedRibbonItem) {\n      dispatch(setActiveCustomRibbon(associatedRibbonItem));\n    }\n    const parentGroupedItems = getParentGroupedItems(state, firstGroupedItem);\n    const nestedGroupedItems = getNestedGroupedItems(state, parentGroupedItems);\n    const allAssociatedGroupedItems = Array.from(new Set([firstGroupedItem, ...parentGroupedItems, ...nestedGroupedItems]));\n\n    dispatch(setActiveGroupedItems(allAssociatedGroupedItems));\n  } else if (activeGroupedItemsContainsTool.length) {\n    // For all grouped items that contain the selected tool, we set the last picked tool\n    for (const groupedItem of activeGroupedItemsContainsTool) {\n      dispatch(setLastPickedToolForGroupedItems(groupedItem, toolName));\n    }\n  }\n};\n\nexport const setSelectedStampIndex = (index) => ({\n  type: 'SET_SELECTED_STAMP_INDEX',\n  payload: { index },\n});\nexport const setLastSelectedStampIndex = (index) => ({\n  type: 'SET_LAST_SELECTED_STAMP_INDEX',\n  payload: { index },\n});\nexport const setOutlineControlVisibility = (outlineControlVisibility) => ({\n  type: 'SET_OUTLINE_CONTROL_VISIBILITY',\n  payload: { outlineControlVisibility },\n});\nexport const setSelectedDisplayedSignatureIndex = (index) => ({\n  type: 'SET_SELECTED_DISPLAYED_SIGNATURE_INDEX',\n  payload: { index },\n});\nexport const setSavedSignatures = (savedSignatures) => ({\n  type: 'SET_SAVED_SIGNATURES',\n  payload: { savedSignatures },\n});\nexport const setDisplayedSignaturesFilterFunction = (filterFunction) => ({\n  type: 'SET_DISPLAYED_SIGNATURES_FILTER_FUNCTION',\n  payload: { filterFunction },\n});\nexport const setSignatureMode = (signatureMode) => ({\n  type: 'SET_SIGNATURE_MODE',\n  payload: { signatureMode }\n});\n\nexport const setSavedInitials = (savedInitials) => ({\n  type: 'SET_SAVED_INITIALS',\n  payload: { savedInitials },\n});\n\nexport const setSelectedDisplayedInitialsIndex = (index) => ({\n  type: 'SET_SELECTED_DISPLAYED_INITIALS_INDEX',\n  payload: { index },\n});\n\nexport const setLeftPanelWidth = (width) => ({\n  type: 'SET_LEFT_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setSearchPanelWidth = (width) => ({\n  type: 'SET_SEARCH_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setNotesPanelWidth = (width) => ({\n  type: 'SET_NOTES_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setComparePanelWidth = (width) => ({\n  type: 'SET_COMPARE_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setRedactionPanelWidth = (width) => ({\n  type: 'SET_REDACTION_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setTextEditingPanelWidth = (width) => ({\n  type: 'SET_TEXT_EDITING_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWatermarkPanelWidth = (width) => ({\n  type: 'SET_WATERMARK_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWv3dPropertiesPanelWidth = (width) => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_WIDTH',\n  payload: { width },\n});\nexport const setWv3dPropertiesPanelModelData = (modelData) => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_MODEL_DATA',\n  payload: { modelData },\n});\nexport const setWv3dPropertiesPanelSchema = (schema) => ({\n  type: 'SET_WV3D_PROPERTIES_PANEL_SCHEMA',\n  payload: { schema },\n});\nexport const setOfficeEditorCursorProperties = (cursorProperties) => ({\n  type: 'SET_OFFICE_EDITOR_CURSOR_PROPERTIES',\n  payload: { cursorProperties },\n});\nexport const setOfficeEditorSelectionProperties = (selectionProperties) => ({\n  type: 'SET_OFFICE_EDITOR_SELECTION_PROPERTIES',\n  payload: { selectionProperties },\n});\nexport const addOfficeEditorAvailableFontFace = (fontFace) => ({\n  type: 'ADD_OFFICE_EDITOR_AVAILABLE_FONT_FACE',\n  payload: { fontFace },\n});\n\nexport const setDocumentContainerWidth = (width) => ({\n  type: 'SET_DOCUMENT_CONTAINER_WIDTH',\n  payload: { width },\n});\nexport const setDocumentContainerHeight = (height) => ({\n  type: 'SET_DOCUMENT_CONTAINER_HEIGHT',\n  payload: { height },\n});\n\nexport const setGapBetweenHeaderItems = (dataElement, gap) => updateHeaderProperty(dataElement, 'gap', gap);\n\nexport const setHeaderJustifyContent = (dataElement, justifyContent) => updateHeaderProperty(dataElement, 'justifyContent', justifyContent);\n\nexport const setHeaderMaxWidth = (dataElement, maxWidth) => updateHeaderProperty(dataElement, 'maxWidth', maxWidth);\n\nexport const setHeaderMaxHeight = (dataElement, maxHeight) => updateHeaderProperty(dataElement, 'maxHeight', maxHeight);\n\nexport const setHeaderStyle = (dataElement, style) => updateHeaderProperty(dataElement, 'style', style);\n\nconst updateHeaderProperty = (dataElement, property, value) => ({\n  type: 'UPDATE_MODULAR_HEADER',\n  payload: {\n    dataElement,\n    property,\n    value,\n  }\n});\n\n// We may want to expose an API to update the props of any modular component\nexport const setModularComponentProperty = (property, value, dataElement) => ({\n  type: 'SET_MODULAR_COMPONENT_PROPERTY',\n  payload: {\n    property,\n    value,\n    dataElement,\n  }\n});\n\nexport const setAllGroupedItemsProperty = (property, value) => ({\n  type: 'SET_ALL_GROUPED_ITEMS_PROPERTY',\n  payload: {\n    property,\n    value,\n  }\n});\n\nexport const updateGroupedItems = (groupedItemsDataElement, newGroupedItems) => (dispatch, getState) => {\n  const componentsMap = {};\n  const existingComponentsMap = getState().viewer.modularComponents;\n  const normalizedItems = normalizeItems(newGroupedItems, componentsMap, existingComponentsMap);\n  dispatch({\n    type: 'UPDATE_GROUPED_ITEMS',\n    payload: {\n      groupedItemsDataElement,\n      normalizedItems,\n      componentsMap\n    }\n  });\n};\n\nexport const enableAllElements = () => ({\n  type: 'ENABLE_ALL_ELEMENTS',\n  payload: {},\n});\nexport const openElement = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n\n  const isElementDisabled = state.viewer.disabledElements[dataElement]?.disabled;\n  const isLeftPanelOpen = state.viewer.openElements['leftPanel'];\n  const isElementOpen = isDataElementLeftPanel(dataElement, state)\n    ? isLeftPanelOpen && state.viewer.activeLeftPanel === dataElement\n    : state.viewer.openElements[dataElement];\n  const isFlyoutElement = state.viewer.flyoutMap?.[dataElement];\n\n  if (isFlyoutElement) {\n    dispatch(setActiveFlyout(dataElement));\n  }\n\n  if (isElementDisabled || isElementOpen) {\n    return;\n  }\n\n  const genericPanel = state.viewer.genericPanels.find((item) => dataElement === item.dataElement);\n  if (genericPanel?.location === 'left' || genericPanel?.location === 'right') {\n    const keys = genericPanel.location === 'left' ? ['leftPanel'] : [...rightPanelList];\n    const genericPanelsInSameLocation = state.viewer.genericPanels.filter((item) => item.location === genericPanel?.location && item.dataElement !== genericPanel?.dataElement);\n    genericPanelsInSameLocation.forEach((item) => keys.push(item.dataElement));\n    dispatch(closeElements(keys));\n  }\n\n  // In the mobile UI, we can have only one panel open at a time\n  if (genericPanel && isMobile()) {\n    const openGenericPanel = getOpenGenericPanel(state);\n    if (openGenericPanel) {\n      dispatch(closeElement(openGenericPanel));\n    }\n  }\n\n  if (isDataElementLeftPanel(dataElement, state) && dataElement !== DataElements.NOTES_PANEL) {\n    if (!isLeftPanelOpen) {\n      dispatch({ type: 'OPEN_ELEMENT', payload: { dataElement: 'leftPanel' } });\n      fireEvent(Events.VISIBILITY_CHANGED, { element: 'leftPanel', isVisible: true });\n    }\n    dispatch(setActiveLeftPanel(dataElement));\n  } else {\n    dispatch({ type: 'OPEN_ELEMENT', payload: { dataElement } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: true });\n\n    if (dataElement === 'leftPanel' && !isLeftPanelOpen) {\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: true,\n      });\n    }\n  }\n};\nexport const openElements = (dataElements) => (dispatch) => {\n  if (typeof dataElements === 'string') {\n    dispatch(openElement(dataElements));\n  } else {\n    dataElements.forEach((dataElement) => {\n      dispatch(openElement(dataElement));\n    });\n  }\n};\nexport const closeElement = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n\n  const isElementDisabled = state.viewer.disabledElements[dataElement]?.disabled;\n  const isFlyoutElement = state.viewer.flyoutMap?.[dataElement];\n  const isElementClosed = isDataElementLeftPanel(dataElement, state)\n    ? state.viewer.activeLeftPanel !== dataElement\n    : !state.viewer.openElements[dataElement];\n\n  if (isElementDisabled || isElementClosed) {\n    return;\n  }\n\n  if (isDataElementLeftPanel(dataElement, state) && state.viewer.openElements['leftPanel']) {\n    dispatch({ type: 'CLOSE_ELEMENT', payload: { dataElement: 'leftPanel' } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: 'leftPanel', isVisible: false });\n  } else {\n    dispatch({ type: 'CLOSE_ELEMENT', payload: { dataElement } });\n    fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: false });\n\n    if (isFlyoutElement) {\n      dispatch({\n        type: 'SET_ACTIVE_FLYOUT',\n        payload: { dataElement: null }\n      });\n    }\n    if (dataElement === DataElements.PAGE_MANIPULATION_OVERLAY) {\n      dispatch({\n        type: 'SET_PAGE_MANIPULATION_OVERLAY_ALTERNATIVE_POSITION',\n        payload: null\n      });\n    }\n\n    if (dataElement === 'leftPanel' && state.viewer.openElements['leftPanel']) {\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: false,\n      });\n    }\n  }\n};\nexport const closeElements = (dataElements) => (dispatch) => {\n  if (typeof dataElements === 'string') {\n    dispatch(closeElement(dataElements));\n  } else {\n    dataElements.forEach((dataElement) => {\n      dispatch(closeElement(dataElement));\n    });\n  }\n};\n\nconst rightPanelList = ['searchPanel', DataElements.NOTES_PANEL, 'comparePanel', 'redactionPanel', 'wv3dPropertiesPanel', 'textEditingPanel', 'watermarkPanel'];\nexport const toggleElement = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n  const rightGenericPanels = getGenericPanels(state, 'right');\n  const allPanelsOnTheRight = [...rightPanelList, ...rightGenericPanels.map((item) => item.dataElement)];\n\n  if (state.viewer.disabledElements[dataElement]?.disabled) {\n    return;\n  }\n\n  // hack for new ui\n  if (!state.viewer.notesInLeftPanel) {\n    if (allPanelsOnTheRight.includes(dataElement)) {\n      for (const panel of allPanelsOnTheRight) {\n        if (panel !== dataElement) {\n          dispatch(closeElement(panel));\n        }\n      }\n    }\n  }\n\n  if (state.viewer.openElements[dataElement]) {\n    dispatch(closeElement(dataElement));\n  } else {\n    dispatch(openElement(dataElement));\n  }\n};\n\nexport const addCustomModal = (modalOptions) => ({\n  type: 'ADD_CUSTOM_MODAL',\n  payload: modalOptions,\n});\n\nconst headerKeysToStore = [\n  'dataElement', 'label', 'placement', 'justifyContent',\n  'grow', 'gap', 'position', 'float', 'maxWidth', 'maxHeight',\n  'opacityMode', 'opacity', 'stroke', 'dimension', 'position', 'style'\n];\n\n// These are all the keys from the items we will store\n// There are a few non serializable ones here like the onclick function\n// we can determine their fate later\nconst itemKeysToStore = [\n  'dataElement', 'items', 'title', 'disabled', 'type',\n  'isActive', 'label', 'img', 'onClick', 'justifyContent',\n  'groupedItems', 'grow', 'gap', 'position', 'placement', 'alwaysVisible',\n  'style', 'headerDirection', 'icon', 'toolbarGroup', 'direction',\n  'states', 'mount', 'unmount', 'initialState', 'hidden', 'toggleElement',\n  'toolName', 'color', 'buttonType'];\n\n//* Recursively normalize the items in a header\nconst normalizeItems = (items, componentsMap, existingComponentsMap) => {\n  const result = [];\n  for (let i = 0, len = items.length; i < len; i++) {\n    const item = items[i];\n    const normalizedItem = pick(item, itemKeysToStore);\n    const dataElementKey = normalizedItem.dataElement;\n\n    // if the dataElementKey already exists in the header items, we will just continue\n    if (result.indexOf(dataElementKey) > -1) {\n      continue;\n    }\n\n    normalizedItem.dataElement = dataElementKey;\n\n    // If there are nested items, recursively normalize them\n    if (item.items && item.items.length > 0) {\n      const nestedItemsDataElements = normalizeItems(item.items, componentsMap, existingComponentsMap);\n      normalizedItem.items = nestedItemsDataElements;\n    }\n\n    let newNormalizedItem = normalizedItem;\n    if (existingComponentsMap[dataElementKey]) {\n      console.warn(`Modular component with dataElement ${dataElementKey} already exists. Existing component's properties have been updated.`);\n      const comp = existingComponentsMap[dataElementKey];\n      newNormalizedItem = { ...comp, ...normalizedItem };\n    }\n    componentsMap[dataElementKey] = newNormalizedItem;\n\n    result.push(dataElementKey);\n  }\n  return result;\n};\n\nconst prepareModularHeaders = (headersList, existingComponentsMap = {}) => {\n  const headersMap = {};\n  const componentsMap = {};\n\n  headersList = Array.isArray(headersList) ? headersList : [headersList];\n  headersList.forEach((header) => {\n    if (headersMap[header.dataElement]) {\n      const newKey = `${header.dataElement}-${uuidv4()}`;\n      console.warn(`Modular header with dataElement ${header.dataElement} already exists. Appending unique ID to prevent collisions: ${newKey}`);\n      header.dataElement = newKey;\n    }\n\n    const itemDataElements = normalizeItems(header.items, componentsMap, existingComponentsMap);\n    headersMap[header.dataElement] = { ...pick(header, headerKeysToStore), items: itemDataElements };\n  });\n  return { headersMap, componentsMap };\n};\n\nexport const addModularHeaders = (headersList) => (dispatch, getState) => {\n  const existingComponentsMap = getState().viewer.modularComponents;\n  const { headersMap, componentsMap } = prepareModularHeaders(headersList, existingComponentsMap);\n\n  checkFeaturesToEnable(componentsMap);\n\n  dispatch({\n    type: 'ADD_MODULAR_HEADERS_AND_COMPONENTS',\n    payload: { headersMap, componentsMap }\n  });\n};\nexport const setModularHeaders = (headersList) => (dispatch) => {\n  const { headersMap, componentsMap } = prepareModularHeaders(headersList);\n  dispatch({\n    type: 'SET_MODULAR_HEADERS_AND_COMPONENTS',\n    payload: { headersMap, componentsMap }\n  });\n};\n\n\nexport const setModularHeaderItems = (headerDataElement, items) => (dispatch, getState) => {\n  const existingComponentsMap = getState().viewer.modularComponents;\n  const newComponentsMap = {};\n  const itemsDataElements = normalizeItems(items, newComponentsMap, existingComponentsMap);\n\n  dispatch({\n    type: 'SET_MODULAR_HEADER_ITEMS',\n    payload: {\n      headerDataElement: headerDataElement,\n      normalizedItems: newComponentsMap,\n      itemsDataElements: itemsDataElements\n    }\n  });\n};\n\nexport const setModularHeadersAndComponents = (componentsMap, headersMap) => (dispatch) => {\n  dispatch({\n    type: 'SET_MODULAR_HEADERS_AND_COMPONENTS',\n    payload: { headersMap, componentsMap }\n  });\n};\n\nexport const setModularComponentFunctions = (functionMap) => (dispatch) => {\n  dispatch({\n    type: 'SET_MODULAR_COMPONENT_FUNCTIONS',\n    payload: { functionMap }\n  });\n};\n\nexport const setFlyouts = (flyouts) => (dispatch) => {\n  dispatch({\n    type: 'SET_FLYOUTS',\n    payload: { flyouts }\n  });\n};\n\nexport const resetModularUIState = () => ({\n  type: 'RESET_MODULAR_UI_STATE',\n});\nexport const setRightHeaderWidth = (width) => ({\n  type: 'SET_RIGHT_HEADER_WIDTH',\n  payload: width\n});\nexport const setLeftHeaderWidth = (width) => ({\n  type: 'SET_LEFT_HEADER_WIDTH',\n  payload: width\n});\nexport const setTopFloatingContainerHeight = (height) => ({\n  type: 'SET_TOP_FLOATING_CONTAINER_HEIGHT',\n  payload: height\n});\nexport const setBottomFloatingContainerHeight = (height) => ({\n  type: 'SET_BOTTOM_FLOATING_CONTAINER_HEIGHT',\n  payload: height\n});\nexport const setActiveHeaderGroup = (headerGroup) => ({\n  type: 'SET_ACTIVE_HEADER_GROUP',\n  payload: { headerGroup },\n});\nexport const setActiveLeftPanel = (dataElement) => (dispatch, getState) => {\n  const state = getState();\n\n  if (isDataElementLeftPanel(dataElement, state)) {\n    if (state.viewer.activeLeftPanel !== dataElement) {\n      dispatch({\n        type: 'CLOSE_ELEMENT',\n        payload: { dataElement: state.viewer.activeLeftPanel },\n      });\n      fireEvent(Events.VISIBILITY_CHANGED, {\n        element: state.viewer.activeLeftPanel,\n        isVisible: false,\n      });\n      dispatch({ type: 'SET_ACTIVE_LEFT_PANEL', payload: { dataElement } });\n      fireEvent(Events.VISIBILITY_CHANGED, { element: dataElement, isVisible: true });\n    }\n  } else {\n    const panelDataElements = [\n      ...state.viewer.customPanels.map(({ panel }) => panel.dataElement),\n      DataElements.PORTFOLIO_PANEL,\n      'thumbnailsPanel',\n      'outlinesPanel',\n      'layersPanel',\n      'bookmarksPanel',\n      DataElements.NOTES_PANEL,\n      'signaturePanel',\n      'attachmentPanel',\n    ].join(', ');\n    console.warn(\n      `${dataElement} is not recognized by the left panel. Please use one of the following options: ${panelDataElements}`,\n    );\n  }\n};\n\nexport const setTimezone = (timezone) => ({\n  type: 'SET_TIMEZONE',\n  payload: { timezone },\n});\nexport const setNotesPanelSortStrategy = (sortStrategy) => ({\n  type: 'SET_NOTES_PANEL_SORT_STRATEGY',\n  payload: { sortStrategy },\n});\n\nexport const setNoteDateFormat = (noteDateFormat) => ({\n  type: 'SET_NOTE_DATE_FORMAT',\n  payload: { noteDateFormat },\n});\nexport const setPrintedNoteDateFormat = (noteDateFormat) => ({\n  type: 'SET_PRINTED_NOTE_DATE_FORMAT',\n  payload: { noteDateFormat },\n});\nexport const setCustomPanel = (newPanel) => ({\n  type: 'SET_CUSTOM_PANEL',\n  payload: { newPanel },\n});\n\nexport const addPanel = (newPanel) => ({\n  type: 'ADD_PANEL',\n  payload: { newPanel },\n});\n\nexport const setGenericPanels = (genericPanels) => ({\n  type: 'SET_GENERIC_PANELS',\n  payload: { genericPanels },\n});\n\nexport const setMobilePanelSize = (panelSize) => ({\n  type: 'SET_MOBILE_PANEL_SIZE',\n  payload: { panelSize },\n});\n\nexport const setPageLabels = (pageLabels) => (dispatch) => {\n  if (pageLabels.length !== core.getTotalPages()) {\n    console.warn('Number of page labels do not match with the total pages.');\n    return;\n  }\n  dispatch({\n    type: 'SET_PAGE_LABELS',\n    payload: { pageLabels: pageLabels.map(String) },\n  });\n};\nexport const setSelectedPageThumbnails = (selectedThumbnailPageIndexes = []) => {\n  fireEvent(Events.SELECTED_THUMBNAIL_CHANGED, selectedThumbnailPageIndexes);\n\n  return {\n    type: 'SET_SELECTED_THUMBNAIL_PAGE_INDEXES',\n    payload: { selectedThumbnailPageIndexes },\n  };\n};\nexport const setShiftKeyThumbnailsPivotIndex = (shiftKeyThumbnailPivotIndex = null) => ({\n  type: 'SET_SHIFT_KEY_THUMBNAIL_PIVOT_INDEX',\n  payload: { shiftKeyThumbnailPivotIndex },\n});\nexport const setSwipeOrientation = (swipeOrientation) => ({\n  type: 'SET_SWIPE_ORIENTATION',\n  payload: { swipeOrientation },\n});\nexport const showWarningMessage = (options) => (dispatch) => {\n  dispatch({ type: 'SET_WARNING_MESSAGE', payload: options });\n  dispatch(openElement('warningModal'));\n};\nexport const enableDeleteTabWarning = () => ({\n  type: 'ENABLE_DELETE_TAB_WARNING',\n  payload: { showDeleteTabWarning: true },\n});\nexport const disableDeleteTabWarning = () => ({\n  type: 'DISABLE_DELETE_TAB_WARNING',\n  payload: { showDeleteTabWarning: false },\n});\nexport const showErrorMessage = (message, title = '') => (dispatch) => {\n  dispatch({ type: 'SET_ERROR_MESSAGE', payload: { message, title } });\n  dispatch(openElement('errorModal'));\n};\nexport const setCustomNoteFilter = (filterFunc) => ({\n  type: 'SET_CUSTOM_NOTE_FILTER',\n  payload: { customNoteFilter: filterFunc },\n});\nexport const setInlineCommentFilter = (filterFunc) => ({\n  type: 'SET_INLINE_COMMENT_FILTER',\n  payload: { inlineCommentFilter: filterFunc },\n});\nexport const setZoomList = (zoomList) => (dispatch) => {\n  const minZoomLevel = getMinZoomLevel();\n  const maxZoomLevel = getMaxZoomLevel();\n  const filteredZoomList = zoomList.filter((zoom) => zoom >= minZoomLevel && zoom <= maxZoomLevel);\n\n  if (filteredZoomList.length !== zoomList.length) {\n    const outOfRangeZooms = zoomList.filter((zoom) => !filteredZoomList.includes(zoom));\n    console.warn(`\n      ${outOfRangeZooms.join(', ')} are not allowed zoom levels in the UI.\n      Valid zoom levels should be in the range of ${minZoomLevel}-${maxZoomLevel}.\n      You can use setMinZoomLevel or setMaxZoomLevel APIs to change the range.\n      See https://docs.apryse.com/api/web/UI.html for more information.\n    `);\n  }\n\n  dispatch({ type: 'SET_ZOOM_LIST', payload: { zoomList: filteredZoomList } });\n};\nexport const useEmbeddedPrint = (useEmbeddedPrint = true) => ({\n  type: 'USE_EMBEDDED_PRINT',\n  payload: { useEmbeddedPrint },\n});\nexport const useClientSidePrint = (useClientSidePrint = true) => ({\n  type: 'USE_CLIENT_SIDE_PRINT',\n  payload: { useClientSidePrint },\n});\nexport const setMaxSignaturesCount = (maxSignaturesCount) => ({\n  type: 'SET_MAX_SIGNATURES_COUNT',\n  payload: { maxSignaturesCount },\n});\nexport const setUserData = (userData) => ({\n  type: 'SET_USER_DATA',\n  payload: { userData },\n});\nexport const setCustomMeasurementOverlay = (customMeasurementOverlay) => ({\n  type: 'SET_CUSTOM_MEASUREMENT_OVERLAY',\n  payload: { customMeasurementOverlay },\n});\nexport const setSelectedTab = (id, dataElement) => ({\n  type: 'SET_SELECTED_TAB',\n  payload: { id, dataElement },\n});\nexport const setCustomElementOverrides = (dataElement, overrides) => ({\n  type: 'SET_CUSTOM_ELEMENT_OVERRIDES',\n  payload: { dataElement, overrides },\n});\nexport const setPageReplacementModalFileList = (list) => ({\n  type: 'SET_PAGE_REPLACEMENT_FILE_LIST',\n  payload: { list },\n});\nexport const setActiveTheme = (theme) => {\n  fireEvent(Events.THEME_CHANGED, theme);\n\n  return {\n    type: 'SET_ACTIVE_THEME',\n    payload: { theme },\n  };\n};\nexport const setSearchResults = (searchResults) => ({\n  type: 'SET_SEARCH_RESULTS',\n  payload: searchResults,\n});\n\nexport const setClearSearchOnPanelClose = (shouldClear) => ({\n  type: 'SET_CLEAR_SEARCH_ON_PANEL_CLOSE',\n  payload: shouldClear,\n});\n\nexport const setAnnotationContentOverlayHandler = (annotationContentOverlayHandler) => ({\n  type: 'SET_ANNOTATION_CONTENT_OVERLAY_HANDLER',\n  payload: { annotationContentOverlayHandler },\n});\n\nexport const setAnnotationReadState = ({ isRead, annotationId }) => ({\n  type: 'SET_ANNOTATION_READ_STATE',\n  payload: { isRead, annotationId },\n});\nexport const addTrustedCertificates = (certificates) => ({\n  type: 'ADD_TRUSTED_CERTIFICATES',\n  payload: { certificates },\n});\nexport const addTrustList = (trustList) => ({\n  type: 'ADD_TRUST_LIST',\n  payload: { trustList },\n});\nexport const setSignatureValidationModalWidgetName = (widgetName) => ({\n  type: 'SET_VALIDATION_MODAL_WIDGET_NAME',\n  payload: { validationModalWidgetName: widgetName },\n});\n\nexport const setNoteSubmissionEnabledWithEnter = (enableNoteSubmissionWithEnter) => ({\n  type: 'SET_SUBMIT_COMMENT_MODE',\n  payload: { enableNoteSubmissionWithEnter },\n});\n\nexport const setNotesPanelTextCollapsing = (enableNotesPanelTextCollapsing) => ({\n  type: 'SET_NOTES_PANEL_TEXT_COLLAPSING',\n  payload: { enableNotesPanelTextCollapsing },\n});\n\nexport const setNotesPanelRepliesCollapsing = (enableNotesPanelRepliesCollapsing) => ({\n  type: 'SET_NOTES_PANEL_REPLIES_COLLAPSING',\n  payload: { enableNotesPanelRepliesCollapsing },\n});\n\nexport const setCommentThreadExpansion = (enableCommentThreadExpansion) => ({\n  type: 'SET_COMMENT_THREAD_EXPANSION',\n  payload: { enableCommentThreadExpansion },\n});\n\nexport const enableFadePageNavigationComponent = () => ({\n  type: 'SET_FADE_PAGE_NAVIGATION_COMPONENT',\n  payload: { fadePageNavigationComponent: true },\n});\n\nexport const disableFadePageNavigationComponent = () => ({\n  type: 'SET_FADE_PAGE_NAVIGATION_COMPONENT',\n  payload: { fadePageNavigationComponent: false },\n});\n\nexport const enablePageDeletionConfirmationModal = () => ({\n  type: 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP',\n  payload: { pageDeletionConfirmationModalEnabled: true },\n});\n\nexport const disablePageDeletionConfirmationModal = () => ({\n  type: 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP',\n  payload: { pageDeletionConfirmationModalEnabled: false },\n});\n\nexport const setWatermarkModalOptions = (watermarkModalOptions) => ({\n  type: 'SET_WATERMARK_MODAL_OPTIONS',\n  payload: { watermarkModalOptions },\n});\nexport const setEmbeddedPopupMenuStyle = (customStyle) => ({\n  type: 'SET_EMBEDDED_JS_POPUP_MENU_STYLE',\n  payload: { embeddedJSPopupStyle: customStyle },\n});\nexport const replaceRedactionSearchPattern = (searchPattern, regex) => ({\n  type: 'REPLACE_REDACTION_SEARCH_PATTERN',\n  payload: { searchPattern, regex },\n});\n\nexport const setThumbnailSelectionMode = (thumbnailSelectionMode) => ({\n  type: 'SET_THUMBNAIL_SELECTION_MODE',\n  payload: { thumbnailSelectionMode },\n});\n\nexport const addRedactionSearchPattern = (searchPattern) => ({\n  type: 'ADD_REDACTION_SEARCH_PATTERN',\n  payload: { searchPattern },\n});\n\nexport const removeRedactionSearchPattern = (searchPatternType) => ({\n  type: 'REMOVE_REDACTION_SEARCH_PATTERN',\n  payload: { searchPatternType },\n});\n\nexport const setColorMap = (colorMap) => ({\n  type: 'SET_COLOR_MAP',\n  payload: { colorMap }\n});\n\nexport const setZoomStepFactors = (zoomStepFactors) => ({\n  type: 'SET_ZOOM_STEP_FACTORS',\n  payload: { zoomStepFactors },\n});\n\nexport const setNotesPanelCustomHeader = (notesPanelCustomHeaderOptions) => ({\n  type: 'SET_NOTES_PANEL_CUSTOM_HEADER_OPTIONS',\n  payload: { notesPanelCustomHeaderOptions },\n});\n\nexport const setNotesPanelEmptyPanel = (notesPanelCustomEmptyPanel) => ({\n  type: 'SET_NOTES_PANEL_CUSTOM_EMPTY_PANEL',\n  payload: { notesPanelCustomEmptyPanel },\n});\n\nexport const addMeasurementScalePreset = (measurementSystem, newPreset, index) => ({\n  type: 'ADD_MEASUREMENT_SCALE_PRESET',\n  payload: { measurementSystem, newPreset, index }\n});\n\nexport const removeMeasurementScalePreset = (measurementSystem, index) => ({\n  type: 'REMOVE_MEASUREMENT_SCALE_PRESET',\n  payload: { measurementSystem, index }\n});\n\nexport const setIsMultipleScalesMode = (isMultipleScalesMode) => ({\n  type: 'SET_IS_MULTIPLE_SCALE_MODE',\n  payload: { isMultipleScalesMode }\n});\n\nexport const setReplyAttachmentPreviewEnabled = (replyAttachmentPreviewEnabled) => ({\n  type: 'SET_REPLY_ATTACHMENT_PREVIEW',\n  payload: { replyAttachmentPreviewEnabled }\n});\n\nexport const setNotesPanelMultiSelect = (isNotesPanelMultiSelectEnabled) => ({\n  type: 'SET_NOTES_PANEL_MULTI_SELECT',\n  payload: { isNotesPanelMultiSelectEnabled }\n});\n\nexport const setReplyAttachmentHandler = (replyAttachmentHandler) => ({\n  type: 'SET_REPLY_ATTACHMENT_HANDLER',\n  payload: { replyAttachmentHandler }\n});\n\nexport const setCustomSettings = (customSettings) => ({\n  type: 'SET_CUSTOM_SETTINGS',\n  payload: customSettings\n});\n\nexport const setEnableRightClickAnnotationPopup = (isEnabled) => ({\n  type: 'SET_ENABLE_RIGHT_CLICK_ANNOTATION_POPUP',\n  payload: { isEnabled }\n});\n\nexport const setToolDefaultStyleUpdateFromAnnotationPopupEnabled = (isToolDefaultStyleUpdateFromAnnotationPopupEnabled) => ({\n  type: 'SET_TOOL_DEFAULT_STYLE_UPDATE_FROM_ANNOTATION_POPUP_ENABLED',\n  payload: isToolDefaultStyleUpdateFromAnnotationPopupEnabled\n});\n\nexport const setAnnotationToolStyleSyncingEnabled = (isAnnotationToolStyleSyncingEnabled) => ({\n  type: 'SET_ANNOTATION_TOOL_STYLE_SYNCING_ENABLED',\n  payload: isAnnotationToolStyleSyncingEnabled\n});\n\nexport const setMultiViewerSyncScrollingMode = (multiViewerComparedSyncScrollingMode) => ({\n  type: 'SET_MULTI_VIEWER_SYNC_SCROLLING_MODE',\n  payload: multiViewerComparedSyncScrollingMode\n});\n\nexport const setTextSignatureQuality = (multiplier) => ({\n  type: 'SET_TEXT_SIGNATURE_CANVAS_MULTIPLIER',\n  payload: { multiplier },\n});\n\nexport const setEnableMeasurementAnnotationsFilter = (isEnabled) => ({\n  type: 'SET_ENABLE_MEASUREMENT_ANNOTATIONS_FILTER',\n  payload: { isEnabled },\n});\n\nexport const setColors = (colors, tool, type, updateOnly = false) => (dispatch, getState) => {\n  type = type ? type.toLowerCase() : type;\n  const state = getState();\n  if (tool && (!updateOnly || (updateOnly && state.viewer.toolColorOverrides[tool]))) {\n    return dispatch({\n      type: 'SET_COLORS',\n      payload: { tool, colors },\n    });\n  }\n  dispatch({\n    type: 'SET_COLORS',\n    payload: type === 'text' ? { textColors: colors } : { colors },\n  });\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nvar defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n  return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n  function ReportNamespaces() {\n    _classCallCheck(this, ReportNamespaces);\n\n    this.usedNamespaces = {};\n  }\n\n  _createClass(ReportNamespaces, [{\n    key: \"addUsedNamespaces\",\n    value: function addUsedNamespaces(namespaces) {\n      var _this = this;\n\n      namespaces.forEach(function (ns) {\n        if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n      });\n    }\n  }, {\n    key: \"getUsedNamespaces\",\n    value: function getUsedNamespaces() {\n      return Object.keys(this.usedNamespaces);\n    }\n  }]);\n\n  return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n  i18nInstance = instance;\n}\nexport function getI18n() {\n  return i18nInstance;\n}\nexport var initReactI18next = {\n  type: '3rdParty',\n  init: function init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};\nexport function composeInitialProps(ForComponent) {\n  return function (ctx) {\n    return new Promise(function (resolve) {\n      var i18nInitialProps = getInitialProps();\n\n      if (ForComponent.getInitialProps) {\n        ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n          resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n        });\n      } else {\n        resolve(i18nInitialProps);\n      }\n    });\n  };\n}\nexport function getInitialProps() {\n  var i18n = getI18n();\n  var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n  var ret = {};\n  var initialI18nStore = {};\n  i18n.languages.forEach(function (l) {\n    initialI18nStore[l] = {};\n    namespaces.forEach(function (ns) {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n}","import { useState, useEffect } from 'react';\n\n// https://usehooks.com/useMedia/\nexport default (queries, values, defaultValue) => {\n  // Array containing a media query list for each query\n  const mediaQueryLists = queries.map((q) => window.matchMedia(`screen and ${q}`));\n\n  // Function that gets value based on matching media query\n  const getValue = (initial) => {\n    // HACK: Reading window.innerWidth prevents a bug where checking mql.matches\n    // in a background tab on chromium returns true even though it isn't.\n    if (initial) {\n      window.innerWidth;\n    }\n    // Get index of first media query that matches\n    const index = mediaQueryLists.findIndex((mql) => mql?.matches);\n    // Return related value or defaultValue if none\n    return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\n  };\n\n  // State and setter for matched value\n  const [value, setValue] = useState(() => getValue(true));\n\n  useEffect(\n    () => {\n      // Event listener callback\n      // Note: By defining getValue outside of useEffect we ensure that it has ...\n      // ... current values of hook args (as this hook callback is created once on mount).\n      const handler = () => setValue(() => getValue());\n      // Set a listener for each media query with above handler as callback.\n      mediaQueryLists.forEach((mql) => mql?.addListener(handler));\n      // Remove listeners on cleanup\n      return () => mediaQueryLists.forEach((mql) => mql?.removeListener(handler));\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [], // Empty array ensures effect is only run on mount and unmount\n  );\n\n  return value;\n};\n","export default {\n  pt_br: {\n    i18next: 'pt-BR',\n    dayjs: 'pt-br',\n  },\n  zh_cn: {\n    i18next: 'zh',\n    dayjs: 'zh-cn',\n  },\n  zh_tw: {\n    i18next: 'zh',\n    dayjs: 'zh-tw',\n  },\n};","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\n\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nconst ToggleElementButton = ({ onClick, dataElement, isElementDisabled, isActive, ariaLabel, ...restProps }) => {\n  if (isElementDisabled) {\n    return null;\n  }\n\n  return (\n    <Button {...restProps} isActive={isActive} dataElement={dataElement} onClick={onClick} ariaLabel={ariaLabel} />\n  );\n};\n\nconst mapStateToProps = (state, ownProps) => {\n  const isActive = selectors.isElementOpen(state, ownProps.element);\n\n  return {\n    isElementDisabled: selectors.isElementDisabled(state, ownProps.dataElement),\n    isActive,\n  };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n  onClick: () => {\n    dispatch(actions.toggleElement(ownProps.element));\n    if (ownProps.onClick) {\n      ownProps.onClick(dispatch);\n    }\n  },\n});\n\nconst ConnectedToggleElementButton = connect(mapStateToProps, mapDispatchToProps)(ToggleElementButton);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedToggleElementButton {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import connectedComponent from './ToggleElementButton';\n\nexport default connectedComponent;","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;return b.open(\"HEAD\",a,!1),b.send(),200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:top.location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return un$StartsWith\n      ? un$StartsWith(that, search, index)\n      : stringSlice(that, index, index + search.length) === search;\n  }\n});\n","export default (annotation) => {\n  const latestReplyActivityDate = annotation\n    .getReplies()\n    .reduce((acc, reply) => {\n      const replyDate = reply.DateModified || reply.DateCreated;\n      if (replyDate && new Date(replyDate) > new Date(acc)) {\n        return replyDate;\n      }\n      return acc;\n    }, 0);\n\n  if (latestReplyActivityDate) {\n    return latestReplyActivityDate;\n  }\n  if (annotation.DateModified) {\n    return annotation.DateModified;\n  }\n  if (annotation.DateCreated) {\n    return annotation.DateCreated;\n  }\n\n  return undefined;\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.22.5',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.22.5/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof Object ? ObjectPrototype : null;\n};\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import core from 'core';\n\nconst { MeasurementUnits } = window.Core.Annotations.Annotation;\nconst isMeasurementTool = (tool) => !!(tool && tool.Measure);\n\nconst imperialConverter = {\n  'ft': MeasurementUnits.PRIME_FT,\n  'in': MeasurementUnits.DOUBLE_PRIME_IN,\n};\n\nexport default () => {\n  const tools = [];\n  const toolModeMap = core.getToolModeMap();\n  Object.values(toolModeMap).forEach((tool) => {\n    if (isMeasurementTool(tool)) {\n      tools.push(tool);\n    }\n  });\n  return tools;\n};\n\nexport { isMeasurementTool, imperialConverter, MeasurementUnits };\n","/**\n * Set the language of WebViewer UI.\n * @method UI.setLanguage\n * @param {string} language The language WebViewer UI will use. By default, following languages are supported: en, zh_cn, fr.\n * @returns {Promise<void>} A promise which is resolved after the language is set.\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.setLanguage('fr'); // set the language to French\n  });\n */\n/* eslint-disable no-unsanitized/method */\nimport i18next from 'i18next';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport dayjs from 'dayjs';\nimport languageRules from 'constants/languageRules';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\n\nlet pendingLanguageTimeout;\nexport default (store) => async (language) => {\n  if (pendingLanguageTimeout) {\n    clearTimeout(pendingLanguageTimeout);\n  }\n  await new Promise((resolve) => {\n    pendingLanguageTimeout = setTimeout(async () => {\n      let languageObj = null;\n      let languageToImportLocaleFile = language;\n\n      if (languageRules[language]) {\n        languageObj = languageRules[language];\n        languageToImportLocaleFile = languageObj.dayjs || language;\n      }\n\n      // load locale file from \"dayjs/locale/\" folder, must match filename\n      try {\n        await import(`dayjs/locale/${languageToImportLocaleFile}.js`);\n        dayjs.locale(languageToImportLocaleFile);\n      } catch (e) {\n        dayjs.locale('en');\n      } finally {\n        const languageEventObject = {\n          prev: selectors.getCurrentLanguage(store.getState()),\n          next: language,\n        };\n        store.dispatch(actions.setLanguage(language));\n        const pendingLanguagePromise = i18next.changeLanguage(language);\n        setDatePickerLocale(pendingLanguagePromise, language);\n        await pendingLanguagePromise;\n        fireEvent(Events['LANGUAGE_CHANGED'], languageEventObject);\n      }\n      resolve();\n    }, 0);\n  });\n};\n\nconst setDatePickerLocale = (i18nextPromise, language) => {\n  i18nextPromise.then((t) => {\n    const { DatePickerWidgetAnnotation } = window.Core.Annotations;\n    const obj = t('datePicker', { 'returnObjects': true });\n    const options = DatePickerWidgetAnnotation.datePickerOptions;\n    options['i18n'] = obj;\n    options['local'] = language;\n\n    DatePickerWidgetAnnotation.datePickerOptions = options;\n\n    core.getAnnotationsList()\n      .filter((annot) => annot instanceof DatePickerWidgetAnnotation)\n      .forEach((widget) => {\n        widget.refreshDatePicker();\n      });\n  });\n};\n","/**\n * @ignore\n * This function corrects for a bug in html2canvas where select elements are not rendered correctly.\n * It hides all select elements and adds divs that mimic the select element.\n * Since these divs are only being printed and not interacted with, this is a suitable workaround.\n * @param {HTMLElement} container The container element that contains the select elements to be replaced\n * @returns {void}\n */\nfunction adjustListBoxForPrint(container) {\n  if (!container) {\n    return;\n  }\n\n  const selects = container.querySelectorAll('select');\n  selects.forEach((select) => {\n    const fakeSelectContainer = createFakeContainerForSelect(select);\n\n    Array.from(select.options).forEach((option) => {\n      const optionDiv = createFakeOption(option);\n      fakeSelectContainer.appendChild(optionDiv);\n    });\n\n    hideSelectContainer(select);\n    select.parentNode.insertBefore(fakeSelectContainer, select.nextSibling);\n  });\n}\n\n/**\n * @ignore\n * This function creates a div that mimics the select element.\n * @param {HTMLElement} select\n * @returns {HTMLDivElement}\n */\nfunction createFakeContainerForSelect(select) {\n  const fakeSelectContainer = document.createElement('div');\n  fakeSelectContainer.style.position = select.style.position;\n  fakeSelectContainer.style.top = select.style.top;\n  fakeSelectContainer.style.left = select.style.left;\n  fakeSelectContainer.style.width = select.style.width;\n  fakeSelectContainer.style.height = select.style.height;\n  fakeSelectContainer.style.backgroundColor = select.style.backgroundColor;\n  fakeSelectContainer.style.border = select.style.border;\n  fakeSelectContainer.style.borderRadius = select.style.borderRadius;\n  fakeSelectContainer.style.fontFamily = select.style.fontFamily;\n  fakeSelectContainer.style.fontSize = select.style.fontSize;\n  fakeSelectContainer.style.fontWeight = select.style.fontWeight;\n  fakeSelectContainer.style.fontStyle = select.style.fontStyle;\n  fakeSelectContainer.style.color = select.style.color;\n  fakeSelectContainer.style.overflow = 'auto';\n\n  return fakeSelectContainer;\n}\n\n/**\n * @ignore\n * This function creates a div that mimics the option element.\n * We handle both single and multi select options.\n * @param {HTMLElement} option\n * @returns {HTMLDivElement}\n */\nfunction createFakeOption(option) {\n  const optionDiv = document.createElement('div');\n  optionDiv.textContent = option.text;\n  optionDiv.style.padding = '0px';\n  optionDiv.style.margin = '0px';\n  // eslint-disable-next-line custom/no-hex-colors\n  optionDiv.style.backgroundColor = option.selected ? '#b3d9ff' : 'transparent';\n  optionDiv.style.textAlign = 'left';\n  optionDiv.style.justifyContent = 'flex-start';\n\n  const isMultiSelect = option.hasAttribute('selected');\n  const isSelected = option.selected;\n  if (isMultiSelect || isSelected) {\n    // eslint-disable-next-line custom/no-hex-colors\n    optionDiv.style.backgroundColor = '#b3d9ff';\n  } else {\n    optionDiv.style.backgroundColor = 'transparent';\n  }\n\n  return optionDiv;\n}\n\n/**\n * @ignore\n * This function hides the select element and its container div. We do this instead of deleting the div\n * because its faster to hide and show elements than to create and destroy them.\n * @param {HTMLElement} select\n * @returns {void}\n */\nfunction hideSelectContainer(select) {\n  select.style.display = 'none';\n}\n\nexport {\n  adjustListBoxForPrint,\n  createFakeContainerForSelect,\n  createFakeOption,\n  hideSelectContainer\n};","import i18n from 'i18next';\n\nimport core from 'core';\n\nimport dayjs from 'dayjs';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\n\nimport { adjustListBoxForPrint } from './printHTMLToCanvasHelper';\nimport { mapAnnotationToKey, getDataWithKey } from 'constants/map';\nimport { getGrayscaleDarknessFactor } from './printGrayscaleDarknessFactor';\nimport { getCurrentViewRect, doesCurrentViewContainEntirePage } from './printCurrentViewHelper';\nimport { getSortStrategies } from 'constants/sortStrategies';\n\nlet pendingCanvases = [];\nlet colorMap;\nlet PRINT_QUALITY = 1;\n\ndayjs.extend(LocalizedFormat);\n\nconst calculatePageZoom = (pageNumber) => {\n  let zoom = 1;\n\n  // cap the size that we render the page at when printing\n  const pageInfo = core.getDocument().getPageInfo(pageNumber);\n  const pageSize = Math.sqrt(pageInfo.width * pageInfo.height);\n  const pageSizeTarget = 2500;\n\n  if (pageSize > pageSizeTarget) {\n    zoom = pageSizeTarget / pageSize;\n  }\n\n  return zoom;\n};\n\nconst getNote = (annotation, dateFormat, language, timezone) => {\n  const note = document.createElement('div');\n  note.className = 'note';\n\n  const noteRoot = document.createElement('div');\n  noteRoot.className = 'note__root';\n\n  const noteRootInfo = document.createElement('div');\n  noteRootInfo.className = 'note__info--with-icon';\n\n  const noteIcon = getNoteIcon(annotation);\n\n  noteRootInfo.appendChild(noteIcon);\n  noteRootInfo.appendChild(getNoteInfo(annotation, dateFormat, language, timezone));\n  noteRoot.appendChild(noteRootInfo);\n  noteRoot.appendChild(getNoteContent(annotation));\n\n  note.appendChild(noteRoot);\n  annotation.getReplies().forEach((reply) => {\n    const noteReply = document.createElement('div');\n    noteReply.className = 'note__reply';\n    noteReply.appendChild(getNoteInfo(reply, dateFormat, language, timezone));\n    noteReply.appendChild(getNoteContent(reply));\n\n    note.appendChild(noteReply);\n  });\n\n  return note;\n};\n\nconst getNoteInfo = (annotation, dateFormat, language, timezone) => {\n  let dateCreated;\n  if (timezone) {\n    const datetimeStr = annotation.DateCreated.toLocaleString('en-US', { timeZone: timezone });\n    dateCreated = new Date(datetimeStr);\n  } else {\n    dateCreated = annotation.DateCreated;\n  }\n  const info = document.createElement('div');\n  let date = dayjs(dateCreated).format(dateFormat);\n\n  if (language) {\n    date = dayjs(dateCreated).locale(language).format(dateFormat);\n  }\n\n  info.className = 'note__info';\n  if (annotation.Subject === '' || annotation.Subject === null || annotation.Subject === undefined) {\n    info.textContent = `\n      ${i18n.t('option.printInfo.author')}: ${core.getDisplayAuthor(annotation['Author']) || ''} \n      ${i18n.t('option.printInfo.date')}: ${date}\n    `;\n  } else {\n    info.textContent = `\n      ${i18n.t('option.printInfo.author')}: ${core.getDisplayAuthor(annotation['Author']) || ''} \n      ${i18n.t('option.printInfo.subject')}: ${annotation.Subject} \n      ${i18n.t('option.printInfo.date')}: ${date}\n    `;\n  }\n\n  return info;\n};\n\nconst getNoteContent = (annotation) => {\n  const contentElement = document.createElement('div');\n  const contentText = annotation.getContents();\n\n  contentElement.className = 'note__content';\n  if (contentText) {\n    // ensure that new lines are preserved and rendered properly\n    contentElement.style.whiteSpace = 'pre-wrap';\n    contentElement.textContent = `${contentText}`;\n  }\n  return contentElement;\n};\n\nconst getNoteIcon = (annotation) => {\n  const key = mapAnnotationToKey(annotation);\n  const iconColor = colorMap[key] && colorMap[key].iconColor;\n  const icon = getDataWithKey(key).icon;\n  const isBase64 = icon && icon.trim().indexOf('data:') === 0;\n\n  let noteIcon;\n  if (isBase64) {\n    noteIcon = document.createElement('img');\n    noteIcon.src = icon;\n  } else {\n    let innerHTML;\n    if (icon) {\n      const isInlineSvg = icon.indexOf('<svg') === 0;\n      /* eslint-disable global-require */\n      // eslint-disable-next-line import/no-dynamic-require\n      innerHTML = isInlineSvg ? icon : require(`../../assets/icons/${icon}.svg`);\n    } else {\n      innerHTML = annotation.Subject;\n    }\n\n    const parser = new DOMParser();\n    const parsedDoc = parser.parseFromString(innerHTML, 'text/html');\n    const newEle = parsedDoc.body.childNodes;\n\n    noteIcon = document.createElement('div');\n    newEle.forEach((node) => {\n      noteIcon.appendChild(node);\n    });\n  }\n\n  noteIcon.className = 'note__icon';\n  noteIcon.style.color = iconColor && annotation[iconColor].toHexString();\n  return noteIcon;\n};\n\nexport const creatingNotesPage = (annotations, pageNumber, dateFormat, language, timezone) => new Promise((resolve) => {\n  const container = document.createElement('div');\n  container.className = 'page__container';\n\n  const header = document.createElement('div');\n  header.className = 'page__header';\n  header.textContent = `${i18n.t('option.shared.page')} ${pageNumber}`;\n\n  container.appendChild(header);\n  annotations.forEach((annotation) => {\n    const note = getNote(annotation, dateFormat, language, timezone);\n\n    container.appendChild(note);\n  });\n\n  resolve(container);\n});\n\nconst createWidgetContainer = (pageIndex) => {\n  const { width, height } = core.getPageInfo(pageIndex + 1);\n  const widgetContainer = document.createElement('div');\n\n  widgetContainer.id = 'printWidgetContainer';\n  widgetContainer.style.width = width;\n  widgetContainer.style.height = height;\n  widgetContainer.style.position = 'relative';\n  widgetContainer.style.top = '-10000px';\n\n  return widgetContainer;\n};\n\nexport const getPrintableAnnotationNotes = (pageNumber) => core\n  .getAnnotationsList()\n  .filter(\n    (annotation) => annotation.Listable &&\n      annotation.PageNumber === pageNumber &&\n      !annotation.isReply() &&\n      !annotation.isGrouped() &&\n      annotation.Printable,\n  );\n\nexport const cancelPrint = () => {\n  const doc = core.getDocument();\n  pendingCanvases.forEach((id) => doc.cancelLoadCanvas(id));\n};\n\nconst drawAnnotationsOnCanvas = async (canvas, pageNumber, isGrayscale) => {\n  if (isGrayscale) {\n    const ctx = canvas.getContext('2d');\n    ctx.filter = 'grayscale(1)';\n  }\n\n  const widgetAnnotations = core\n    .getAnnotationsList()\n    .filter((annotation) => annotation.PageNumber === pageNumber && annotation instanceof window.Core.Annotations.WidgetAnnotation);\n\n  const hasWidgetAnnotations = widgetAnnotations.length > 0;\n  if (!hasWidgetAnnotations) {\n    return core.drawAnnotations(pageNumber, canvas);\n  }\n\n  const widgetContainer = createWidgetContainer(pageNumber - 1);\n  await core.drawAnnotations(pageNumber, canvas, true, widgetContainer);\n  adjustListBoxForPrint(widgetContainer);\n  document.body.appendChild(widgetContainer);\n\n  const { default: html2canvas } = await import(/* webpackChunkName: 'html2canvas' */ 'html2canvas');\n\n  await html2canvas(widgetContainer, {\n    canvas,\n    backgroundColor: null,\n    scale: 1,\n    logging: false\n  });\n\n  document.body.removeChild(widgetContainer);\n};\n\nconst getDocumentRotation = (pageIndex) => {\n  const pageNumber = pageIndex + 1;\n  const completeRotation = core.getCompleteRotation(pageNumber);\n  const viewerRotation = core.getRotation(pageNumber);\n\n  return (completeRotation - viewerRotation + 4) % 4;\n};\n\nconst positionCanvas = (canvas, pageIndex) => {\n  const { width, height } = core.getPageInfo(pageIndex + 1);\n  const documentRotation = getDocumentRotation(pageIndex);\n  const ctx = canvas.getContext('2d');\n\n  const printRotation = (4 - documentRotation) % 4;\n  // To check if automatic print rotation will be applied\n  const isAutoRotated = ((printRotation % 2 === 0 && width > height) || (printRotation % 2 === 1 && height > width));\n\n  // If this is pdf js and auto rotated, apply different transform\n  if (window.Core.isPdfjs && isAutoRotated) {\n    switch (documentRotation) {\n      case 0:\n        ctx.translate(height, 0);\n        ctx.rotate((90 * Math.PI) / 180);\n        break;\n      case 1:\n      case 3:\n        ctx.translate(0, height);\n        ctx.rotate((270 * Math.PI) / 180);\n        break;\n      case 2:\n        ctx.translate(height, 0);\n        ctx.rotate((-270 * Math.PI) / 180);\n        break;\n    }\n  } else if (!window.Core.isPdfjs) {\n    switch (documentRotation) {\n      case 1:\n        ctx.translate(width, 0);\n        break;\n      case 2:\n        ctx.translate(width, height);\n        break;\n      case 3:\n        ctx.translate(0, height);\n        break;\n    }\n    ctx.rotate((documentRotation * 90 * Math.PI) / 180);\n  }\n};\n\nconst getPrintRotation = (pageIndex, maintainPageOrientation) => {\n  if (!maintainPageOrientation) {\n    const { width, height } = core.getPageInfo(pageIndex + 1);\n    const documentRotation = getDocumentRotation(pageIndex);\n    let printRotation = (4 - documentRotation) % 4;\n\n    // automatically rotate pages so that they fill up as much of the printed page as possible\n    if (printRotation % 2 === 0 && width > height) {\n      printRotation++;\n    } else if (printRotation % 2 === 1 && height > width) {\n      printRotation = 0;\n    }\n    return printRotation;\n  }\n\n  return core.getRotation(pageIndex + 1);\n};\n\nconst creatingImage = (pageNumber, includeAnnotations, maintainPageOrientation, isCurrentView, createCanvases = false, isGrayscale = false) => new Promise((resolve) => {\n  const pageIndex = pageNumber - 1;\n  const printRotation = getPrintRotation(pageIndex, maintainPageOrientation);\n  const onCanvasLoaded = async (canvas) => {\n    pendingCanvases = pendingCanvases.filter((pendingCanvas) => pendingCanvas !== id);\n    positionCanvas(canvas, pageIndex);\n    let printableAnnotInfo = [];\n    if (!includeAnnotations) {\n      // according to Adobe, even if we exclude annotations, it will still draw widget annotations\n      const annotatationsToPrint = core.getAnnotationsList().filter((annotation) => {\n        return annotation.PageNumber === pageNumber && !(annotation instanceof window.Core.Annotations.WidgetAnnotation);\n      });\n      // store the previous Printable value so that we can set it back later\n      printableAnnotInfo = annotatationsToPrint.map((annotation) => ({\n        annotation, printable: annotation.Printable\n      }));\n      // set annotations to false so that it won't show up in the printed page\n      annotatationsToPrint.forEach((annotation) => {\n        annotation.Printable = false;\n      });\n    }\n\n    const grayscaleDarknessFactor = getGrayscaleDarknessFactor();\n\n    if (isGrayscale && grayscaleDarknessFactor >= 1) {\n      const ctx = canvas.getContext('2d');\n      // Get the old transform before reset because the annotation canvas will need it\n      const oldTransform = ctx.getTransform();\n      // Reset underlying transforms. This seems only for DWG (WVS) but could happen elsewhere.\n      ctx.resetTransform();\n      ctx.globalCompositeOperation = 'color';\n      ctx.fillStyle = 'white';\n      ctx.globalAlpha = 1;\n      ctx.fillRect(0, 0, canvas.width, canvas.height);\n      ctx.globalCompositeOperation = 'source-over';\n      ctx.setTransform(oldTransform);\n    } else if (isGrayscale) {\n      const ctx = canvas.getContext('2d');\n      ctx.globalCompositeOperation = 'source-over';\n      const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n      const { data } = imageData;\n      for (let i = 0; i < data.length; i += 4) {\n        if (data[i] === 255 && data[i + 1] === 255 && data[i + 2] === 255) {\n          continue;\n        }\n        data[i] = data[i + 1] = data[i + 2] = ((data[i] + data[i + 1] + data[i + 2]) / 3) * grayscaleDarknessFactor;\n      }\n      ctx.putImageData(imageData, 0, 0);\n    }\n\n    const alwaysPrintAnnotationsInColor = core.getDocumentViewer().isAlwaysPrintAnnotationsInColorEnabled();\n    const drawAnnotationsInGrayscale = isGrayscale && !alwaysPrintAnnotationsInColor;\n    await drawAnnotationsOnCanvas(canvas, pageNumber, drawAnnotationsInGrayscale);\n\n    printableAnnotInfo.forEach((info) => {\n      info.annotation.Printable = info.printable;\n    });\n\n    if (createCanvases) {\n      resolve(canvas.toDataURL());\n    }\n\n    const img = document.createElement('img');\n    img.src = canvas.toDataURL();\n    img.onload = () => {\n      resolve(img);\n    };\n  };\n\n  let zoom = 1;\n  let renderRect;\n  if (isCurrentView) {\n    zoom = core.getZoom();\n    renderRect = getCurrentViewRect(pageNumber);\n\n    const pageDimensions = core.getDocument().getPageInfo(pageNumber);\n    if (doesCurrentViewContainEntirePage(renderRect, pageDimensions)) {\n      renderRect = undefined;\n    }\n  }\n\n  if (!renderRect) {\n    zoom = calculatePageZoom(pageNumber);\n  }\n\n  const id = core.getDocument().loadCanvas({\n    pageNumber,\n    zoom,\n    pageRotation: printRotation,\n    drawComplete: onCanvasLoaded,\n    multiplier: PRINT_QUALITY,\n    'print': true,\n    renderRect\n  });\n\n  pendingCanvases.push(id);\n});\n\n// printOptions = includeComments, includeAnnotations, maintainPageOrientation, printQuality, sortStrategy, colorMap, dateFormat, isCurrentView, language, timezone, createCanvases, isGrayscale\nexport const creatingPages = (pagesToPrint, printOptions, onProgress) => {\n  const createdPages = [];\n  pendingCanvases = [];\n  PRINT_QUALITY = printOptions?.printQuality;\n  colorMap = printOptions?.colorMap;\n\n  pagesToPrint.forEach((pageNumber) => {\n    createdPages.push(creatingImage(pageNumber,\n      printOptions?.includeAnnotations,\n      printOptions?.maintainPageOrientation,\n      printOptions?.isCurrentView,\n      printOptions?.createCanvases,\n      printOptions?.isGrayscale));\n\n    if (onProgress) {\n      createdPages[createdPages.length - 1].then((htmlElement) => {\n        onProgress(pageNumber, htmlElement);\n      });\n    }\n\n    const printableAnnotationNotes = getPrintableAnnotationNotes(pageNumber);\n    if (printOptions?.includeComments && printableAnnotationNotes) {\n      const sortedNotes = getSortStrategies()[printOptions?.sortStrategy].getSortedNotes(printableAnnotationNotes);\n      if (sortedNotes.length) {\n        createdPages.push(creatingNotesPage(sortedNotes, pageNumber, printOptions?.dateFormat, printOptions?.language, printOptions?.timezone));\n      }\n      if (onProgress) {\n        createdPages[createdPages.length - 1].then((htmlElement) => {\n          onProgress(pageNumber, htmlElement);\n        });\n      }\n    }\n  });\n\n  return createdPages;\n};","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\n\nimport Button from 'components/Button';\n\nimport core from 'core';\nimport toolStylesExist from 'helpers/toolStylesExist';\nimport getToolStyles from 'helpers/getToolStyles';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport getColor from 'helpers/getColor';\nimport { mapToolNameToKey } from 'constants/map';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './ToolButton.scss';\n\nconst propTypes = {\n  toolName: PropTypes.string.isRequired,\n  group: PropTypes.string,\n  className: PropTypes.string,\n};\n\nconst ToolButton = ({\n  toolName,\n  className,\n  ...restProps\n}) => {\n  const [\n    isActive,\n    iconColorKey,\n    toolButtonObject,\n    customOverrides,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state) === toolName,\n      selectors.getIconColor(state, mapToolNameToKey(toolName)),\n      selectors.getToolButtonObject(state, toolName),\n      selectors.getCustomElementOverrides(state, selectors.getToolButtonDataElement(state, toolName)),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const { group = '', ...restObjectData } = toolButtonObject;\n\n  useEffect(() => {\n    if (typeof customOverrides?.disable === 'undefined') {\n      return;\n    }\n\n    if (customOverrides.disable) {\n      hotkeysManager.off(toolName);\n    } else {\n      hotkeysManager.on(toolName);\n    }\n  }, [customOverrides, toolName]);\n\n  const handleClick = () => {\n    if (isActive) {\n      if (toolName !== 'AnnotationCreateStamp' && toolName !== 'AnnotationCreateRedaction' && toolName !== 'AnnotationEraserTool') {\n        if (toolStylesExist(toolName)) {\n          dispatch(actions.toggleElement('toolStylePopup'));\n          if (toolName === 'AnnotationCreateRubberStamp') {\n            core.setToolMode(defaultTool);\n          }\n        }\n      }\n    } else {\n      if (group === 'miscTools') {\n        dispatch(actions.closeElement('toolStylePopup'));\n      }\n\n      core.setToolMode(toolName);\n      dispatch(actions.setActiveToolGroup(group));\n      dispatch(actions.setLastPickedToolForGroup(group, toolName));\n      if (toolName === 'AnnotationCreateRubberStamp') {\n        dispatch(actions.openElement('toolStylePopup'));\n      }\n    }\n  };\n\n  let color = '';\n  let fillColor = '';\n  let strokeColor = '';\n  const showColor = customOverrides?.showColor || toolButtonObject.showColor;\n  if (showColor === 'always' || (showColor === 'active' && isActive)) {\n    const toolStyles = getToolStyles(toolName);\n    color = toolStyles?.[iconColorKey]?.toHexString?.();\n    fillColor = getColor(toolStyles?.FillColor);\n    strokeColor = getColor(toolStyles?.StrokeColor);\n    if (toolName.indexOf('AnnotationCreateFreeText') > -1 && toolStyles?.StrokeThickness === 0) {\n      // transparent\n      strokeColor = 'ff000000';\n    }\n  }\n\n  return (\n    <Button\n      className={classNames({\n        'tool-button': true,\n        hasStyles: toolStylesExist(toolName),\n        [className]: className,\n      })}\n      onClick={handleClick}\n      isActive={isActive}\n      color={color}\n      fillColor={fillColor}\n      strokeColor={strokeColor}\n      {...restProps}\n      {...restObjectData}\n    />\n  );\n};\n\nToolButton.propTypes = propTypes;\n\nexport default ToolButton;\n","import ToolButton from './ToolButton';\n\nexport default ToolButton;","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport enableFeatures from 'src/apis/enableFeatures';\nimport disableFeatures from 'src/apis/disableFeatures';\nimport Feature from 'constants/feature';\nimport { PRIORITY_ONE } from 'constants/actionPriority';\nimport DataElements from 'constants/dataElement';\n\nconst features = [Feature.Download, Feature.Print, Feature.Search, Feature.NotesPanel];\nconst dataElements = [\n  'panToolButton',\n  'selectToolButton',\n  'outlinesPanelButton',\n  'bookmarksPanelButton',\n  'signaturePanelButton',\n  'toolbarGroup-Shapes',\n  'toolbarGroup-Insert',\n  'toolbarGroup-Edit',\n  'toolbarGroup-EditText',\n  'toolbarGroup-FillAndSign',\n  'toolbarGroup-Forms',\n  'stickyToolGroupButton',\n  'freeTextToolGroupButton',\n  'markInsertTextGroupButton',\n  'markReplaceTextGroupButton',\n  'shapeToolGroupButton',\n  'freeHandToolGroupButton',\n  'freeHandHighlightToolGroupButton',\n  'undoButton',\n  'redoButton',\n  'eraserToolButton'\n];\n\nexport const enterReaderMode = async (store) => {\n  store.dispatch(actions.openElement(DataElements.LOADING_MODAL));\n\n  const state = store.getState();\n  const docViewer = core.getDocumentViewer();\n\n  // Sync text annotations\n  const pdfDoc = await docViewer.getDocument().getPDFDoc();\n  const xfdf = await core.getAnnotationManager().exportAnnotations({\n    widgets: false,\n    fields: false\n  });\n\n  const PDFNet = window.Core.PDFNet;\n  PDFNet.initialize().then(() => {\n    const main = async () => {\n      try {\n        const fdfDoc = await PDFNet.FDFDoc.createFromXFDF(xfdf);\n        await pdfDoc.fdfUpdate(fdfDoc);\n\n        // Enter Reader Mode\n        core.setDisplayMode('Single');\n        store.dispatch(actions.setReaderMode(true));\n        disableFeatures(store)(features, PRIORITY_ONE);\n        store.dispatch(actions.disableElements(dataElements, PRIORITY_ONE));\n        if (!selectors.isElementDisabled(state, 'toolbarGroup-Annotate')) {\n          store.dispatch(actions.setToolbarGroup('toolbarGroup-Annotate'));\n          store.dispatch(actions.setActiveToolGroup(''));\n        } else {\n          store.dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n        }\n        docViewer.setToolMode(docViewer.getTool(window.Core.Tools.ToolNames.EDIT));\n      } catch (err) {\n        console.warn(err);\n      } finally {\n        store.dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      }\n    };\n    PDFNet.runWithCleanup(main);\n  });\n};\n\nexport const exitReaderMode = async (store) => {\n  const PDFNet = window.Core.PDFNet;\n\n  // Exit Reader Mode\n  store.dispatch(actions.setReaderMode(false));\n  enableFeatures(store)(features, PRIORITY_ONE);\n  store.dispatch(actions.enableElements(dataElements, PRIORITY_ONE));\n\n  // Sync text annotations\n  const pdfDoc = await core.getDocumentViewer().getDocument().getPDFDoc();\n  const fdfDoc = await pdfDoc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);\n  const xfdf = await fdfDoc.saveAsXFDFAsString();\n  const annotManager = core.getAnnotationManager();\n  await annotManager.importAnnotations(xfdf, { replace: [window.Core.Annotations.TextMarkupAnnotation] });\n};\n","export const defaultNoteDateFormat = 'MMM D, LT';\nexport const defaultPrintedNoteDateFormat = 'L LTS';","export const getAnnotationClass = (annotation) => {\n  if (annotation instanceof window.Core.Annotations.CaretAnnotation) {\n    return 'caret';\n  }\n  if (annotation instanceof window.Core.Annotations.CustomAnnotation) {\n    return 'custom';\n  }\n  if (annotation instanceof window.Core.Annotations.EllipseAnnotation) {\n    return 'ellipse';\n  }\n  if (annotation instanceof window.Core.Annotations.FileAttachmentAnnotation) {\n    return 'fileattachment';\n  }\n  if (annotation instanceof window.Core.Annotations.FreeHandAnnotation) {\n    return 'freehand';\n  }\n  if (\n    annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n    annotation.getIntent() === window.Core.Annotations.FreeTextAnnotation.Intent.FreeTextCallout\n  ) {\n    return 'callout';\n  }\n  if (annotation instanceof window.Core.Annotations.FreeTextAnnotation) {\n    return 'freetext';\n  }\n  if (annotation instanceof window.Core.Annotations.LineAnnotation) {\n    return 'line';\n  }\n  if (annotation instanceof window.Core.Annotations.Link) {\n    return 'other';\n  }\n  if (annotation instanceof window.Core.Annotations.PolygonAnnotation) {\n    return 'polygon';\n  }\n  if (annotation instanceof window.Core.Annotations.PolylineAnnotation) {\n    return 'polyline';\n  }\n  if (annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n    return 'rectangle';\n  }\n  if (annotation instanceof window.Core.Annotations.RedactionAnnotation) {\n    return 'redact';\n  }\n  if (annotation instanceof window.Core.Annotations.SignatureWidgetAnnotation) {\n    return 'signature';\n  }\n  if (annotation instanceof window.Core.Annotations.StampAnnotation) {\n    return 'stamp';\n  }\n  if (annotation instanceof window.Core.Annotations.StickyAnnotation) {\n    return 'stickyNote';\n  }\n  if (annotation instanceof window.Core.Annotations.TextHighlightAnnotation) {\n    return 'highlight';\n  }\n  if (annotation instanceof window.Core.Annotations.TextStrikeoutAnnotation) {\n    return 'strikeout';\n  }\n  if (annotation instanceof window.Core.Annotations.TextUnderlineAnnotation) {\n    return 'underline';\n  }\n  if (annotation instanceof window.Core.Annotations.TextSquigglyAnnotation) {\n    return 'squiggly';\n  }\n  if (annotation instanceof window.Core.Annotations.Model3DAnnotation) {\n    return '3D';\n  }\n\n  return 'other';\n};\n","import { isAndroid, isMobile } from 'helpers/device';\nimport { defaultNoteDateFormat, defaultPrintedNoteDateFormat } from 'constants/defaultTimeFormat';\nimport { panelMinWidth, RESIZE_BAR_WIDTH, panelNames } from 'constants/panel';\nimport { PLACEMENT, POSITION, ITEM_TYPE } from 'constants/customizationVariables';\nimport DataElements from 'constants/dataElement';\nimport { getAllAssociatedGroupedItems, getFirstToolForGroupedItems } from '../actions/exposedActions';\nimport { getNestedGroupedItems } from 'helpers/modularUIHelpers';\nimport * as exposedOfficeEditorSelectors from './officeEditorSelectors';\n\n// OE selectors\nexport const {\n  isStyleButtonActive,\n  getPointSizeSelectionKey,\n  getCursorStyleToPreset,\n  getCurrentFontFace,\n  isListToggleActive,\n} = exposedOfficeEditorSelectors;\n\n// viewer\nexport const getModularComponent = (state, dataElement) => state.viewer.modularComponents[dataElement];\nexport const getScaleOverlayPosition = (state) => state.viewer.scaleOverlayPosition;\nexport const getDefaultPrintMargins = (state) => state.viewer.defaultPrintMargins;\nexport const getColors = (state, tool, type) => {\n  type = type ? type.toLowerCase() : type;\n  if (tool && state.viewer.toolColorOverrides[tool]) {\n    return state.viewer.toolColorOverrides[tool];\n  }\n  return type === 'text' ? state.viewer.textColors : state.viewer.colors;\n};\nexport const getCustomElementSize = (state, dataElement) => state.viewer.customElementSizes?.[dataElement] || 0;\nexport const getActiveFlyout = (state) => state.viewer.activeFlyout;\nexport const getFlyoutPosition = (state) => state.viewer.flyoutPosition;\nexport const getFlyoutMap = (state) => state.viewer.flyoutMap;\nexport const getFlyout = (state, dataElement) => state.viewer.flyoutMap[dataElement];\nexport const getFlyoutToggleElement = (state) => state.viewer.flyoutToggleElement;\nexport const getInitialsOffset = (state) => state.viewer.initalsOffset;\nexport const isSavedSignaturesTabEnabled = (state) => state.viewer.savedSignatureTabEnabled;\nexport const getSyncViewer = (state) => state.viewer.syncViewer;\nexport const isCompareStarted = (state) => state.viewer.isCompareStarted;\nexport const isComparisonDisabled = (state) => state.advanced.disableMultiViewerComparison;\nexport const getIsComparisonOverlayEnabled = (state) => state.viewer.isComparisonOverlayEnabled;\nexport const getActiveDocumentViewerKey = (state) => (state.viewer.isMultiViewerMode && state.viewer.activeDocumentViewerKey ? state.viewer.activeDocumentViewerKey : 1);\nexport const isMultiViewerMode = (state) => state.viewer.isMultiViewerMode;\nexport const isMultiViewerReady = (state) => state.viewer.isMultiViewerReady;\nexport const getGenericPanels = (state, location) => {\n  if (location) {\n    return state.viewer.genericPanels.filter((item) => item.location === location);\n  }\n  return state.viewer.genericPanels;\n};\nexport const getActiveCustomPanel = (state, wrapperPanel) => state.viewer.activeCustomPanel[wrapperPanel];\nexport const shouldShowApplyCropWarning = (state) => state.viewer.shouldShowApplyCropWarning;\nexport const shouldShowApplySnippingWarning = (state) => state.viewer.shouldShowApplySnippingWarning;\nexport const getPresetCropDimensions = (state) => state.viewer.presetCropDimensions;\nexport const getPresetNewPageDimensions = (state) => state.viewer.presetNewPageDimensions;\nexport const getDateTimeFormats = (state) => state.viewer.dateTimeFormats;\nexport const getThumbnailSelectionMode = (state) => state.viewer.thumbnailSelectionMode;\nexport const getFonts = (state) => state.viewer.fonts;\nexport const getTabs = (state) => state.viewer.tabs;\nexport const getActiveTab = (state) => state.viewer.activeTab;\nexport const getIsMultiTab = (state) => state.viewer.isMultiTab;\nexport const getTabManager = (state) => state.viewer.TabManager;\nexport const getIsHighContrastMode = (state) => state.viewer.highContrastMode;\nexport const getLastPickedToolForGroup = (state, group) => state.viewer.lastPickedToolForGroup[group];\nexport const getStandardStamps = (state) => state.viewer.standardStamps;\nexport const getCustomStamps = (state) => state.viewer.customStamps;\nexport const getSelectedStampIndex = (state) => state.viewer.selectedStampIndex;\nexport const getLastSelectedStampIndex = (state) => state.viewer.lastSelectedStampIndex;\nexport const getSelectedStamp = (state) => {\n  const standardStamps = getStandardStamps(state);\n  const customStamps = getCustomStamps(state);\n  const index = getSelectedStampIndex(state);\n  let selectedStamp = standardStamps[index];\n  // selected stamp is not found in standard stamps, search dynamic stamps\n  if (!selectedStamp && !!customStamps.length) {\n    selectedStamp = customStamps[index - standardStamps.length];\n  }\n  return selectedStamp;\n};\nexport const getSavedSignatures = (state) => state.viewer.savedSignatures;\nexport const getDisplayedSignatures = (state) => state.viewer.savedSignatures.filter(state.viewer.displayedSignaturesFilterFunction);\nexport const getSelectedDisplayedSignatureIndex = (state) => state.viewer.selectedDisplayedSignatureIndex;\nexport const getSelectedDisplayedSignature = (state) => getDisplayedSignatures(state)[getSelectedDisplayedSignatureIndex(state)];\nexport const getDisplayedSignaturesFilterFunction = (state) => state.viewer.displayedSignaturesFilterFunction;\nexport const getSignatureMode = (state) => state.viewer.signatureMode;\nexport const getSavedInitials = (state) => state.viewer.savedInitials;\nexport const getSelectedDisplayedInitialsIndex = (state) => state.viewer.selectedDisplayedInitialsIndex;\nexport const getIsInitialsModeEnabled = (state) => state.viewer.isInitialsModeEnabled;\nexport const getDisplayedInitial = (state) => state.viewer.savedInitials[state.viewer.selectedDisplayedInitialsIndex];\n\nexport const getAutoFocusNoteOnAnnotationSelection = (state) => state.viewer.autoFocusNoteOnAnnotationSelection;\nexport const getNotesInLeftPanel = (state) => state.viewer.notesInLeftPanel;\nexport const getLeftPanelWidth = (state) => state.viewer.panelWidths.leftPanel;\nexport const getSearchPanelWidth = (state) => state.viewer.panelWidths.searchPanel;\nexport const getNotesPanelWidth = (state) => state.viewer.panelWidths.notesPanel;\n\nexport const getDeleteScaleInfo = (state) => state.viewer.deleteScale;\n\nexport const getRedactionPanelWidth = (state) => state.viewer.panelWidths.redactionPanel;\n\nexport const getWv3dPropertiesPanelWidth = (state) => state.viewer.panelWidths.wv3dPropertiesPanel;\n\nexport const getComparePanelWidth = (state) => state.viewer.panelWidths.comparePanel;\n\nexport const getTextEditingPanelWidth = (state) => state.viewer.panelWidths.textEditingPanel;\n\nexport const getWatermarkPanelWidth = (state) => state.viewer.panelWidths.watermarkPanel;\n\nexport const getMobilePanelSize = (state) => state.viewer.mobilePanelSize;\nexport const getLeftPanelWidthWithResizeBar = (state) => state.viewer.panelWidths.leftPanel + RESIZE_BAR_WIDTH;\nexport const getSearchPanelWidthWithResizeBar = (state) => state.viewer.panelWidths.searchPanel + RESIZE_BAR_WIDTH;\nexport const getNotesPanelWidthWithResizeBar = (state) => state.viewer.panelWidths.notesPanel + RESIZE_BAR_WIDTH;\nexport const getComparePanelWidthWithResizeBar = (state) => state.viewer.panelWidths.comparePanel + RESIZE_BAR_WIDTH;\nexport const getDocumentContentContainerWidthStyle = (state) => {\n  const notesPanelWidth = getNotesPanelWidthWithResizeBar(state);\n  const searchPanelWidth = getSearchPanelWidthWithResizeBar(state);\n  const leftPanelWidth = getLeftPanelWidthWithResizeBar(state);\n  const watermarkPanelWidth = getWatermarkPanelWidth(state);\n  const textEditingPanelWidth = getTextEditingPanelWidth(state);\n  const wv3dPropertiesPanelWidth = getWv3dPropertiesPanelWidth(state);\n  const comparePanelWidth = getComparePanelWidthWithResizeBar(state);\n  const redactionPanelWidth = getRedactionPanelWidth(state);\n  const notesInLeftPanel = getNotesInLeftPanel(state);\n\n  const isLeftPanelOpen = isElementOpen(state, 'leftPanel');\n  const isNotesPanelOpen = isElementOpen(state, 'notesPanel');\n  const isSearchPanelOpen = isElementOpen(state, 'searchPanel');\n  const isRedactionPanelOpen = isElementOpen(state, 'redactionPanel');\n  const isTextEditingPanelOpen = isElementOpen(state, 'textEditingPanel');\n  const isWv3dPropertiesPanelOpen = isElementOpen(state, 'wv3dPropertiesPanel');\n  const isComparePanelOpen = isElementOpen(state, 'comparePanel');\n  const isWatermarkPanelOpen = isElementOpen(state, 'watermarkPanel');\n\n  const genericPanelOnLeft = getOpenGenericPanel(state, 'left');\n  const genericPanelOnRight = getOpenGenericPanel(state, 'right');\n\n  const { customizableUI } = getFeatureFlags(state);\n\n  const spaceTakenUpByPanels =\n    0 +\n    (!customizableUI &&\n      (isLeftPanelOpen ? leftPanelWidth : 0) +\n      (isNotesPanelOpen && !notesInLeftPanel ? notesPanelWidth : 0) +\n      (isSearchPanelOpen ? searchPanelWidth : 0) +\n      (isRedactionPanelOpen ? redactionPanelWidth : 0) +\n      (isTextEditingPanelOpen ? textEditingPanelWidth : 0) +\n      (isWv3dPropertiesPanelOpen ? wv3dPropertiesPanelWidth : 0) +\n      (isComparePanelOpen ? comparePanelWidth : 0) +\n      (isWatermarkPanelOpen ? watermarkPanelWidth : 0)\n    ) +\n    (genericPanelOnLeft ? getPanelWidth(state, genericPanelOnLeft) : 0) +\n    (genericPanelOnRight ? getPanelWidth(state, genericPanelOnRight) : 0);\n\n  // Do not count headers without items\n  const activeRightHeaderWidth = getActiveRightHeaderWidth(state);\n  const activeLeftHeaderWidth = getActiveLeftHeaderWidth(state);\n  const spaceTakenUpByHeaders = activeLeftHeaderWidth + activeRightHeaderWidth;\n  return `calc(100% - ${spaceTakenUpByPanels + spaceTakenUpByHeaders}px)`;\n};\n\nexport const getOpenGenericPanel = (state, location) => {\n  let genericPanels = state.viewer.genericPanels;\n  const panelsWithMobileVersion = [\n    panelNames.SIGNATURE_LIST,\n    panelNames.RUBBER_STAMP,\n    panelNames.STYLE,\n    panelNames.NOTES,\n    panelNames.SEARCH,\n    panelNames.TEXT_EDITING,\n    panelNames.TABS,\n    panelNames.REDACTION,\n  ];\n\n  if (location) {\n    genericPanels = state.viewer.genericPanels.filter((item) => {\n      if (!isMobile()) {\n        return item.location === location;\n      }\n      // when we are on mobile, if the panel has a mobile version, we don't need to count on this panel measurement\n      return item.location === location && !panelsWithMobileVersion.includes(item.dataElement);\n    });\n  }\n\n  return genericPanels\n    .map((item) => item.dataElement)\n    .find((elName) => isElementOpen(state, elName) === true);\n};\n\nexport const getDocumentContainerLeftMargin = (state) => {\n  const genericPanelOpenOnLeft = getOpenGenericPanel(state, PLACEMENT.LEFT);\n  return 0 +\n    (isElementOpen(state, 'leftPanel') ? getLeftPanelWidthWithResizeBar(state) : 0) +\n    (genericPanelOpenOnLeft ? getPanelWidth(state, genericPanelOpenOnLeft) : 0);\n};\n\nexport const getCalibrationInfo = (state) => state.viewer.calibrationInfo;\nexport const getIsAddingNewScale = (state) => state.viewer.isAddingNewScale;\n\nexport const getMeasurementScalePreset = (state) => state.viewer.measurementScalePreset;\nexport const getIsMultipleScalesMode = (state) => state.viewer.isMultipleScalesMode;\nexport const getIsNotesPanelMultiSelectEnabled = (state) => state.viewer.isNotesPanelMultiSelectEnabled;\n\nexport const getDocumentContainerWidth = (state) => state.viewer.documentContainerWidth;\nexport const getDocumentContainerHeight = (state) => state.viewer.documentContainerHeight;\n\nexport const isElementDisabled = (state, dataElement) => state.viewer?.disabledElements[dataElement]?.disabled;\n\nexport const isElementOpen = (state, dataElement) => !!(state.viewer?.openElements[dataElement] && !state.viewer?.disabledElements[dataElement]?.disabled);\n\nexport const isElementHidden = (state, dataElement) => state.viewer?.hiddenElements[dataElement];\n\nexport const allButtonsInGroupDisabled = (state, toolGroup) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  const dataElements = Object.values(toolButtonObjects)\n    .filter(({ group }) => group === toolGroup)\n    .map(({ dataElement }) => dataElement);\n\n  return dataElements.every((dataElement) => isElementDisabled(state, dataElement));\n};\n\nexport const getToolbarHeaders = (state) => state.viewer.headers;\n\nexport const getSelectedScale = (state) => state.viewer.selectedScale;\n\nexport const getCustomHeadersAdditionalProperties = (state) => {\n  return state.viewer.customHeadersAdditionalProperties;\n};\n\nconst getToolbarGroupDataElements = (state) => {\n  return Object.keys(state.viewer.headers).filter((key) => key.includes('toolbarGroup-'));\n};\n\nexport const getEnabledToolbarGroups = (state) => {\n  const toolbarGroupDataElements = getToolbarGroupDataElements(state);\n  return toolbarGroupDataElements.filter((dataElement) => {\n    // The items will come from 'children' if it is a ToolbarGroup created by the API createTool\n    const headerItems = state.viewer.headers[dataElement];\n    const flattenHeaderItems = (dataItems) => {\n      return dataItems.reduce((total, item) => {\n        if (item.children) {\n          total.push(...flattenHeaderItems(item.children));\n        } else {\n          total.push(item);\n        }\n        return total;\n      }, []);\n    };\n\n    const itemsToCheck = flattenHeaderItems(headerItems);\n    const toolGroupButtons = itemsToCheck.filter(({ dataElement }) => {\n      return dataElement && dataElement.includes('ToolGroupButton');\n    });\n    const isEveryToolGroupButtonDisabled =\n      !dataElement.includes('toolbarGroup-View') &&\n      toolGroupButtons.every(({ dataElement: toolGroupDataElement }) => {\n        return isElementDisabled(state, toolGroupDataElement);\n      });\n    return !isElementDisabled(state, `${dataElement}`) && !isEveryToolGroupButtonDisabled;\n  });\n};\n\nexport const getCurrentToolbarGroup = (state) => state.viewer.toolbarGroup;\n\nexport const getActiveGroupedItems = (state) => state.viewer.activeGroupedItems;\n\nexport const getFixedGroupedItems = (state) => state.viewer.fixedGroupedItems;\n\nexport const getLastPickedToolForGroupedItems = (state, group) => {\n  const getLastPickedTool = (group) => {\n    const lastPickedTool = state.viewer.lastPickedToolForGroupedItems[group];\n\n    if (!lastPickedTool) {\n      const firstToolForGroupedItems = getFirstToolForGroupedItems(state, group);\n      return firstToolForGroupedItems;\n    }\n    return lastPickedTool;\n  };\n\n  if (Array.isArray(group)) {\n    let firstTool = '';\n    for (const groupItem of group) {\n      const lastPickedTool = getLastPickedTool(groupItem);\n      if (lastPickedTool) {\n        firstTool = lastPickedTool;\n        break;\n      }\n    }\n    return firstTool;\n  }\n  return getLastPickedTool(group);\n};\n\nexport const getActiveCustomRibbon = (state) => state.viewer.activeCustomRibbon;\n\nexport const getLastPickedToolAndGroup = (state) => state.viewer.lastPickedToolAndGroup;\n\nexport const getActiveHeaders = (state) => {\n  const allHeaders = Object.values(state.viewer.modularHeaders);\n  const activeGroupedItemsSet = new Set(state.viewer.activeGroupedItems);\n  const fixedGroupedItemsSet = new Set(state.viewer.fixedGroupedItems);\n  const componentsMap = state.viewer.modularComponents;\n\n  // An item is active if it meets one of the following conditions:\n  // 1. It is not a grouped item\n  // 2. It is a grouped item and its dataElement is in the activeGroupedItems or fixedGroupedItems\n  const isActiveItem = (item) => {\n    const modularComponent = componentsMap[item];\n    if (!modularComponent) {\n      return false;\n    }\n\n    const { type, dataElement } = modularComponent;\n    return type !== ITEM_TYPE.GROUPED_ITEMS ||\n      activeGroupedItemsSet.has(dataElement) ||\n      fixedGroupedItemsSet.has(dataElement);\n  };\n\n  // if a header contains at least one active item, it is active\n  return allHeaders.filter(({ items }) => items?.length && items.some(isActiveItem));\n};\n\nexport const getActiveTheme = (state) => state.viewer.activeTheme;\n\nexport const getTimezone = (state) => state.viewer.timezone;\n\nexport const getDefaultHeaderItems = (state) => {\n  return state.viewer.headers.default;\n};\n\n//* * The following selectors use the normalized header structure, replacing the existing selectors */\nconst hydrateItems = (itemIds, components) => {\n  return itemIds.map((itemId) => {\n    const item = components[itemId];\n    if (!item) {\n      return null;\n    }\n\n    const hydratedItem = { ...item };\n\n    if (item.items && item.items.length > 0) {\n      hydratedItem.items = hydrateItems(item.items, components);\n    }\n\n    return hydratedItem;\n  }).filter((item) => item !== null);\n};\n\nexport const getHydratedHeader = (state, dataElement) => {\n  const header = state.viewer.modularHeaders[dataElement];\n  if (!header) {\n    return null;\n  }\n\n  const components = state.viewer.modularComponents;\n  const hydratedHeader = {\n    ...header,\n    items: hydrateItems(header.items, components)\n  };\n\n  return hydratedHeader;\n};\n\nexport const getHydratedHeaders = (state, placement) => {\n  const allHeaders = Object.values(state.viewer.modularHeaders);\n\n  let headersToHydrate;\n  if (placement) {\n    headersToHydrate = allHeaders.filter((header) => header.placement === placement);\n  } else {\n    headersToHydrate = allHeaders;\n  }\n\n  const components = state.viewer.modularComponents;\n  const hydratedHeaders = headersToHydrate.map((header) => {\n    return {\n      ...header,\n      items: hydrateItems(header.items, components)\n    };\n  });\n\n  return hydratedHeaders;\n};\n\nexport const getTopHeaders = (state) => {\n  return getHydratedHeaders(state, PLACEMENT.TOP);\n};\n\nexport const getBottomHeaders = (state) => {\n  return getHydratedHeaders(state, PLACEMENT.BOTTOM);\n};\n\nexport const getLeftHeader = (state) => {\n  return getHydratedHeaders(state, PLACEMENT.LEFT);\n};\n\nexport const getRightHeader = (state) => {\n  return getHydratedHeaders(state, PLACEMENT.RIGHT);\n};\n\nexport const getActiveTopHeaders = (state) => {\n  return getActiveHeaders(state)\n    .filter((header) => header.placement === PLACEMENT.TOP)\n    .filter((header) => !header.float);\n};\n\nexport const getTopHeadersHeight = (state) => {\n  const activeHeaders = getActiveTopHeaders(state);\n  return activeHeaders.length * state.viewer.modularHeadersHeight.topHeaders;\n};\n\nexport const getBottomHeadersHeight = (state) => {\n  const activeHeaders = getActiveHeaders(state)\n    .filter((header) => header.placement === PLACEMENT.BOTTOM)\n    .filter((header) => !header.float);\n\n  return activeHeaders.length * state.viewer.modularHeadersHeight.bottomHeaders;\n};\n\nexport const getRightHeaderWidth = (state) => state.viewer.modularHeadersWidth.rightHeader;\n\nexport const getLeftHeaderWidth = (state) => state.viewer.modularHeadersWidth.leftHeader;\n\nexport const getActiveLeftHeaderWidth = (state) => {\n  const activeHeaders = getActiveHeaders(state);\n  const isLeftHeaderActive = activeHeaders?.some((header) => header.placement === PLACEMENT.LEFT);\n  return isLeftHeaderActive ? getLeftHeaderWidth(state) : 0;\n};\n\nexport const getActiveRightHeaderWidth = (state) => {\n  const activeHeaders = getActiveHeaders(state);\n  const isRightHeaderActive = activeHeaders?.some((header) => header.placement === PLACEMENT.RIGHT);\n  return isRightHeaderActive ? getRightHeaderWidth(state) : 0;\n};\n\nexport const getTopFloatingContainerHeight = (state) => state.viewer.floatingContainersDimensions.topFloatingContainerHeight;\n\nexport const getBottomFloatingContainerHeight = (state) => state.viewer.floatingContainersDimensions.bottomFloatingContainerHeight;\n\n// This returns the normalized header, not the fully hydrated header\nexport const getFloatingHeaders = (state, placement, position) => {\n  return Object.values(state.viewer.modularHeaders).filter((header) => header.placement === placement &&\n    header.position === position &&\n    header.float\n  );\n};\n\nexport const getTopStartFloatingHeaders = (state) => getFloatingHeaders(state, PLACEMENT.TOP, POSITION.START);\nexport const getBottomStartFloatingHeaders = (state) => getFloatingHeaders(state, PLACEMENT.BOTTOM, POSITION.START);\nexport const getTopEndFloatingHeaders = (state) => getFloatingHeaders(state, PLACEMENT.TOP, POSITION.END);\nexport const getBottomEndFloatingHeaders = (state) => getFloatingHeaders(state, PLACEMENT.BOTTOM, POSITION.END);\n\nexport const getActiveHeaderItems = (state) => {\n  return state.viewer.headers[state.viewer.activeHeaderGroup];\n};\n\nexport const getDisabledElementPriority = (state, dataElement) => state.viewer.disabledElements[dataElement]?.priority;\n\nexport const getToolsHeaderItems = (state) => {\n  const toolbarGroup = getCurrentToolbarGroup(state);\n  return state.viewer.headers[toolbarGroup] || [];\n};\n\nexport const getGroupedItemsWithSelectedTool = (state, toolName) => {\n  const modularComponents = state.viewer.modularComponents;\n\n  const filterGroupedItems = (dataElement) => {\n    const { type, items } = modularComponents[dataElement];\n\n    if (type !== ITEM_TYPE.GROUPED_ITEMS) {\n      return false;\n    }\n\n    if (type === ITEM_TYPE.GROUPED_ITEMS) {\n      const nestedGroupedItems = [dataElement, ...getNestedGroupedItems(state, dataElement)];\n      if (nestedGroupedItems.length > 0) {\n        return nestedGroupedItems.some((groupedItem) => modularComponents[groupedItem].items.some((subItem) => {\n          const subItemDetails = modularComponents[subItem];\n          return subItemDetails?.type === ITEM_TYPE.TOOL_BUTTON && subItemDetails.toolName === toolName;\n        }),\n        );\n      }\n\n      return items.some((item) => {\n        const itemDetails = modularComponents[item];\n        return itemDetails?.type === ITEM_TYPE.TOOL_BUTTON && itemDetails.toolName === toolName;\n      });\n    }\n\n    return false;\n  };\n\n  return Object.keys(modularComponents).filter(filterGroupedItems);\n};\n\nexport const getAlwaysVisibleGroupedItems = (state) => {\n  const modularComponents = state.viewer.modularComponents;\n  return Object.keys(modularComponents).filter((dataElement) => modularComponents[dataElement].alwaysVisible);\n};\n\nexport const getGroupedItemsOfCustomRibbon = (state, customRibbonDataElement) => {\n  const modularComponents = state.viewer.modularComponents;\n  const groupedItems = modularComponents[customRibbonDataElement]?.groupedItems || [];\n  const allAssociatedGroupedItems = getAllAssociatedGroupedItems(state, groupedItems);\n\n  return allAssociatedGroupedItems;\n};\n\nexport const getRibbonItemAssociatedWithGroupedItem = (state, groupedItemDataElement) => {\n  const modularComponents = state.viewer.modularComponents;\n  const ribbonItems = Object.keys(modularComponents).find((component) => {\n    const { type, groupedItems = [] } = modularComponents[component];\n\n    if (type === ITEM_TYPE.RIBBON_ITEM) {\n      const allGroupedItems = [...groupedItems, ...getNestedGroupedItems(state, groupedItems)];\n      return allGroupedItems?.includes(groupedItemDataElement);\n    }\n    return false;\n  });\n  return ribbonItems;\n};\n\nexport const getModularComponentFunctions = (state) => state.viewer.modularComponentFunctions;\n\nexport const getToolbarGroupItems = (toolbarGroup) => (state) => {\n  return state.viewer.headers[toolbarGroup];\n};\n\nexport const getToolButtonObjects = (state) => {\n  return state.viewer.toolButtonObjects;\n};\n\nexport const isToolGroupReorderingEnabled = (state) => {\n  return state.viewer.enableToolGroupReordering;\n};\n\nexport const isNoteSubmissionWithEnterEnabled = (state) => {\n  return state.viewer.enableNoteSubmissionWithEnter;\n};\n\nexport const isNotesPanelTextCollapsingEnabled = (state) => {\n  return state.viewer.isNotesPanelTextCollapsingEnabled;\n};\n\nexport const isNotesPanelRepliesCollapsingEnabled = (state) => {\n  return state.viewer.isNotesPanelRepliesCollapsingEnabled;\n};\n\nexport const isCommentThreadExpansionEnabled = (state) => {\n  return state.viewer.isCommentThreadExpansionEnabled;\n};\n\nexport const getActiveToolNamesForActiveToolGroup = (state) => {\n  const { activeToolGroup } = state.viewer;\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).filter((toolName) => {\n    const toolButtonObject = toolButtonObjects[toolName];\n    const { group, dataElement } = toolButtonObject;\n    return group === activeToolGroup && !isElementDisabled(state, dataElement);\n  });\n};\n\nexport const getToolButtonDataElements = (state, toolNames) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return toolNames.map((toolName) => toolButtonObjects[toolName]?.dataElement).filter(Boolean);\n};\n\nexport const getToolButtonObject = (state, toolName) => getToolButtonObjects(state)[toolName];\n\nexport const getToolButtonDataElement = (state, toolName) => getToolButtonObject(state, toolName)?.dataElement;\n\nexport const getToolNamesByGroup = (state, toolGroup) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).filter((name) => toolButtonObjects[name].group === toolGroup);\n};\n\nexport const getToolNameByDataElement = (state, dataElement) => {\n  const toolButtonObjects = getToolButtonObjects(state);\n  return Object.keys(toolButtonObjects).find((name) => toolButtonObjects[name].dataElement === dataElement);\n};\n\nexport const getActiveToolName = (state) => state.viewer.activeToolName;\n\nexport const getActiveToolStyles = (state) => state.viewer.activeToolStyles;\n\nexport const getCustomColor = (state) => state.viewer.customColor;\n\nexport const getCustomColors = (state) => state.viewer.customColors;\n\nexport const getActiveLeftPanel = (state) => state.viewer.activeLeftPanel;\n\nexport const isAnyCustomPanelOpen = (state) => state.viewer.genericPanels.some((panel) => state.viewer.openElements[panel.dataElement]);\n\nexport const getActiveToolGroup = (state) => state.viewer.activeToolGroup;\n\nexport const getNotePopupId = (state) => state.viewer.notePopupId;\n\nexport const getFitMode = (state) => state.viewer.fitMode;\n\nexport const getZoom = (state, documentViewerKey = 1) => state.viewer.zoomLevels[documentViewerKey];\n\nexport const getDisplayMode = (state) => state.viewer.displayMode;\n\nexport const getCurrentPage = (state) => state.viewer.currentPage;\n\nexport const getSortStrategy = (state) => state.viewer.sortStrategy;\n\nexport const getRotation = (state) => state.viewer.rotation;\n\nexport const getNoteDateFormat = (state) => state.viewer.noteDateFormat || defaultNoteDateFormat;\n\nexport const getPrintedNoteDateFormat = (state) => state.viewer.printedNoteDateFormat || defaultPrintedNoteDateFormat;\n\nexport const isFullScreen = (state) => state.viewer.isFullScreen;\n\nexport const doesDocumentAutoLoad = (state) => state.viewer.doesAutoLoad;\n\nexport const isDocumentReadOnly = (state) => state.viewer.isReadOnly;\n\nexport const getCustomPanels = (state) => state.viewer.customPanels;\n\nexport const getCustomModals = (state) => state.viewer.customModals;\n\nexport const getPageLabels = (state) => state.viewer.pageLabels;\n\nexport const getSelectedThumbnailPageIndexes = (state) => state.viewer.selectedThumbnailPageIndexes;\n\nexport const getShiftKeyThumbnailPivotIndex = (state) => state.viewer.shiftKeyThumbnailPivotIndex;\n\nexport const getDisabledCustomPanelTabs = (state) => state.viewer.customPanels.reduce((disabledTabs, { tab }) => {\n  if (state.viewer.disabledElements[tab.dataElement]?.disabled) {\n    disabledTabs.push(tab.dataElement);\n  }\n  return disabledTabs;\n}, []);\n\nexport const isEmbedPrintSupported = (state) => !isAndroid && state.viewer.useEmbeddedPrint;\n\nexport const useClientSidePrint = (state) => state.viewer.useClientSidePrint;\n\nexport const isOutlineControlVisible = (state) => state.viewer.outlineControlVisibility;\n\nexport const shouldAutoExpandOutlines = (state) => state.viewer.autoExpandOutlines;\n\nexport const isAnnotationNumberingEnabled = (state) => {\n  return state.viewer.isAnnotationNumberingEnabled;\n};\n\nexport const isBookmarkIconShortcutVisible = (state) => state.viewer.bookmarkIconShortcutVisibility;\n\nexport const getColorMap = (state) => state.viewer.colorMap;\n\nexport const getCursorOverlayData = (state) => state.viewer.cursorOverlay;\n\nexport const getOpenElements = (state) => state.viewer.openElements;\n\nexport const getDisabledElements = (state) => state.viewer.disabledElements;\n\nexport const getcurrentStyleTab = (state, colorMapKey) => state.viewer.colorMap[colorMapKey]?.currentStyleTab;\n\nexport const getIconColor = (state, colorMapKey) => state.viewer.colorMap[colorMapKey]?.iconColor;\n\nexport const getCustomNoteFilter = (state) => state.viewer.customNoteFilter;\n\nexport const getInlineCommentFilter = (state) => state.viewer.inlineCommentFilter;\n\nexport const getIsReplyDisabled = (state) => state.viewer.isReplyDisabledFunc;\n\nexport const getZoomList = (state) => state.viewer.zoomList;\n\nexport const getMeasurementUnits = (state) => state.viewer.measurementUnits;\n\nexport const getIsNoteEditing = (state) => state.viewer.isNoteEditing;\n\nexport const getMaxSignaturesCount = (state) => state.viewer.maxSignaturesCount;\n\nexport const getUserData = (state) => state.viewer.userData;\n\nexport const getIsMentionEnabled = (state) => !!state.viewer.userData;\n\nexport const getSignatureFonts = (state) => state.viewer.signatureFonts;\n\nexport const getSelectedTab = (state, id) => state.viewer.tab[id];\n\nexport const getCustomElementOverrides = (state, dataElement = '') => state.viewer.customElementOverrides[dataElement];\n\nexport const getPopupItems = (state, popupDataElement) => state.viewer[popupDataElement] || [];\n\nexport const getMenuOverlayItems = (state) => state.viewer.menuOverlay;\n\nexport const getIsThumbnailMergingEnabled = (state) => state.viewer.isThumbnailMerging;\n\nexport const getIsThumbnailReorderingEnabled = (state) => state.viewer.isThumbnailReordering;\n\nexport const isThumbnailMultiselectEnabled = (state) => state.viewer.isThumbnailMultiselect;\n\nexport const getIsMultipleViewerMerging = (state) => state.viewer.isMultipleViewerMerging;\n\nexport const getEnableNotesPanelVirtualizedList = (state) => state.viewer.enableNotesPanelVirtualizedList;\n\nexport const notesShowLastUpdatedDate = (state) => state.viewer.notesShowLastUpdatedDate;\n\nexport const getAllowPageNavigation = (state) => state.viewer.allowPageNavigation;\n\nexport const getCustomMeasurementOverlay = (state) => state.viewer.customMeasurementOverlay;\n\nexport const getAnnotationContentOverlayHandler = (state) => state.viewer.annotationContentOverlayHandler;\n\nexport const getEnableMouseWheelZoom = (state) => state.viewer.enableMouseWheelZoom;\n\nexport const isReaderMode = (state) => state.viewer.isReaderMode;\n\nexport const getCertificates = (state) => state.digitalSignatureValidation.certificates;\n\nexport const getTrustLists = (state) => state.digitalSignatureValidation.trustLists;\n\nexport const getValidationModalWidgetName = (state) => state.digitalSignatureValidation.validationModalWidgetName;\n\nexport const getVerificationResult = (state, fieldName) => state.digitalSignatureValidation.verificationResult[fieldName] || {};\n\nexport const getIsRevocationCheckingEnabled = (state) => state.digitalSignatureValidation.isRevocationCheckingEnabled;\n\nexport const getRevocationProxyPrefix = (state) => state.digitalSignatureValidation.revocationProxyPrefix;\n\nexport const isThumbnailSelectingPages = (state) => state.viewer.thumbnailSelectingPages;\n\nexport const getWatermarkModalOptions = (state) => state.viewer.watermarkModalOptions;\n\nexport const getZoomStepFactors = (state) => state.viewer.zoomStepFactors;\n\n// warning message\nexport const getWarningMessage = (state) => state.viewer.warning?.message || '';\n\nexport const getWarningTitle = (state) => state.viewer.warning?.title || '';\n\nexport const getWarningConfirmEvent = (state) => state.viewer.warning?.onConfirm;\n\nexport const getWarningConfirmBtnText = (state) => state.viewer.warning?.confirmBtnText;\n\nexport const getWarningSecondaryEvent = (state) => state.viewer.warning?.onSecondary;\n\nexport const getWarningSecondaryBtnText = (state) => state.viewer.warning?.secondaryBtnText;\n\nexport const getWarningSecondaryBtnClass = (state) => state.viewer.warning?.secondaryBtnClass;\n\nexport const getWarningCancelEvent = (state) => state.viewer.warning?.onCancel;\n\nexport const getShowAskAgainCheckbox = (state) => state.viewer.warning?.showAskAgainCheckbox || false;\n\nexport const getShowDeleteTabWarning = (state) => state.viewer.warning?.showDeleteTabWarning ?? true;\n\nexport const isAccessibleMode = (state) => state.viewer.isAccessibleMode;\n\nexport const getWarningTemplateStrings = (state) => state.viewer.warning?.templateStrings || {};\n\nexport const getWarningModalClass = (state) => state.viewer.warning?.modalClass || '';\n\nexport const getWarningCloseEvent = (state) => state.viewer.warning?.onClose;\n\n// error message\nexport const getErrorMessage = (state) => state.viewer.errorMessage || '';\n\n// error title\nexport const getErrorTitle = (state) => state.viewer.errorTitle || '';\n\n// document\nexport const getPasswordAttempts = (state) => state.document.passwordAttempts;\n\nexport const getPrintQuality = (state) => state.document.printQuality;\n\nexport const getDefaultPrintOptions = (state) => state.document.defaultPrintOptions;\n\nexport const getTotalPages = (state, documentViewerKey = 1) => state.document.totalPages[documentViewerKey];\n\nexport const getOutlines = (state) => state.document.outlines;\n\nexport const getOutlineEditingEnabled = (state) => state.viewer.isOutlineEditingEnabled;\n\nexport const getBookmarks = (state) => state.document.bookmarks;\n\nexport const getPortfolio = (state) => state.document.portfolio;\n\nexport const getLayers = (state) => state.document.layers;\n\nexport const getLoadingProgress = (state) => state.document.loadingProgress;\n\n// user\nexport const getUserName = (state) => state.user.name;\n\n// advanced\nexport const getServerUrl = (state) => state.advanced.serverUrl;\n\n// search\nexport const getSearchValue = (state) => state.search.value;\n\nexport const shouldClearSearchPanelOnClose = (state) => state.search.clearSearchPanelOnClose;\n\nexport const isCaseSensitive = (state) => state.search.isCaseSensitive;\n\nexport const getReplaceValue = (state) => state.search.replaceValue;\n\nexport const getNextResultValue = (state) => state.search.nextResult;\n\nexport const isWholeWord = (state) => state.search.isWholeWord;\n\nexport const isWildcard = (state) => state.search.isWildcard;\n\nexport const isSearchUp = (state) => state.search.isSearchUp;\n\nexport const isAmbientString = (state) => state.search.isAmbientString;\n\nexport const isRegex = (state) => state.search.isRegex;\n\nexport const isProcessingSearchResults = (state) => state.search.isProcessingSearchResults;\n\nexport const getRedactionSearchPatterns = (state) => state.search.redactionSearchPatterns;\n\nexport const getNoteTransformFunction = (state) => state.viewer.noteTransformFunction;\n\nexport const getCustomNoteSelectionFunction = (state) => state.viewer.customNoteFunction;\n\nexport const getCustomApplyRedactionsHandler = (state) => state.viewer.customApplyRedactionsHandler;\n\nexport const getCustomMultiViewerSyncHandler = (state) => state.viewer.customMultiViewerSyncHandler;\n\nexport const getCustomMultiViewerAcceptedFileFormats = (state) => state.viewer.customMultiViewerAcceptedFileFormats;\n\nexport const isSnapModeEnabled = (state) => state.viewer.isSnapModeEnabled;\n\nexport const getUnreadAnnotationIdSet = (state) => state.viewer.unreadAnnotationIdSet;\n\nexport const getCurrentLanguage = (state) => state.viewer.currentLanguage;\n\nexport const shouldFadePageNavigationComponent = (state) => state.viewer.fadePageNavigationComponent;\n\nexport const isContentEditWarningHidden = (state) => state.viewer.hideContentEditWarning;\n\nexport const areContentEditWorkersLoaded = (state) => state.viewer.contentEditWorkersLoaded;\n\nexport const getCurrentContentBeingEdited = (state) => state.viewer.currentContentBeingEdited;\n\nexport const getFeatureFlags = (state) => state.featureFlags;\n\nexport const isRightClickAnnotationPopupEnabled = (state) => state.viewer.enableRightClickAnnotationPopup;\n\nexport const isInDesktopOnlyMode = (state) => state.viewer.isInDesktopOnlyMode;\n\nexport const getPanelWidth = (state, dataElement) => state.viewer.panelWidths[dataElement] || panelMinWidth;\n\nexport const pageDeletionConfirmationModalEnabled = (state) => state.viewer.pageDeletionConfirmationModalEnabled;\n\nexport const getPageReplacementFileList = (state) => state.viewer.pageReplacementFileList;\n\nexport const getPageManipulationOverlayItems = (state) => state.viewer.pageManipulationOverlay;\n\nexport const getMultiPageManipulationControlsItems = (state) => state.viewer.multiPageManipulationControls;\n\nexport const getMultiPageManipulationControlsItemsSmall = (state) => state.viewer.multiPageManipulationControlsSmall;\n\nexport const getMultiPageManipulationControlsItemsLarge = (state) => state.viewer.multiPageManipulationControlsLarge;\n\nexport const getPageManipulationOverlayAlternativePosition = (state) => state.viewer.pageManipulationOverlayAlternativePosition;\n\nexport const openingPageManipulationOverlayByRightClickEnabled = (state) => state.viewer.pageManipulationOverlayOpenByRightClick;\n\nexport const getThumbnailControlMenuItems = (state) => state.viewer.thumbnailControlMenu;\n\nexport const shouldShowPresets = (state) => {\n  const response = state.viewer.toolButtonObjects[state.viewer.activeToolName];\n  return response?.showPresets ?? true;\n};\n\nexport const shouldResetAudioPlaybackPosition = (state) => state.viewer.shouldResetAudioPlaybackPosition;\n\nexport const getActiveSoundAnnotation = (state) => state.viewer.activeSoundAnnotation;\n\nexport const getEmbeddedJSPopupStyle = (state) => state.viewer.embeddedJSPopupStyle;\n\nexport const getWv3dPropertiesPanelModelData = (state) => state.wv3dPropertiesPanel.modelData;\n\nexport const getWv3dPropertiesPanelSchema = (state) => state.wv3dPropertiesPanel.schema;\n\nexport const getIsOfficeEditorMode = (state) => state.viewer.isOfficeEditorMode;\n\nexport const getOfficeEditorCursorProperties = (state) => state.officeEditor.cursorProperties;\nexport const getOfficeEditorSelectionProperties = (state) => state.officeEditor.selectionProperties;\nexport const isCursorInTable = (state) => getOfficeEditorCursorProperties(state).locationProperties.inTable;\n\nexport const getOfficeEditorEditMode = (state) => state.officeEditor.editMode;\n\nexport const getAvailableFontFaces = (state) => state.officeEditor.availableFontFaces;\n\nexport const getCSSFontValues = (state) => state.officeEditor.cssFontValues;\n\nexport const getContentBoxEditor = (state) => state.viewer.contentBoxEditor;\n\nexport const getAnnotationFilters = (state) => state.viewer.annotationFilters;\n\nexport const getNotesPanelCustomHeaderOptions = (state) => state.viewer.notesPanelCustomHeaderOptions;\n\nexport const getNotesPanelCustomEmptyPanel = (state) => state.viewer.notesPanelCustomEmptyPanel;\n\nexport const isReplyAttachmentPreviewEnabled = (state) => state.viewer.replyAttachmentPreviewEnabled;\n\nexport const getReplyAttachmentHandler = (state) => state.viewer.replyAttachmentHandler;\n\nexport const getCustomSettings = (state) => state.viewer.customSettings;\n\nexport const isToolDefaultStyleUpdateFromAnnotationPopupEnabled = (state) => state.viewer.toolDefaultStyleUpdateFromAnnotationPopupEnabled;\n\nexport const isAnnotationToolStyleSyncingEnabled = (state) => state.viewer.annotationToolStyleSyncingEnabled;\n\nexport const getShortcutKeyMap = (state) => state.viewer.shortcutKeyMap;\n\nexport const getMultiViewerSyncScrollMode = (state) => state.viewer.multiViewerSyncScrollMode;\n\nexport const getTextSignatureQuality = (state) => state.viewer.textSignatureCanvasMultiplier;\n\nexport const getIsMeasurementAnnotationFilterEnabled = (state) => state.viewer.isMeasurementAnnotationFilterEnabled;\n\n// We will need to refactor this once we have generic panels\nexport const isRightPanelOpen = (state) => {\n  const rightPanelElements = [\n    DataElements.NOTES_PANEL,\n    DataElements.SEARCH_PANEL,\n    DataElements.REDACTION_PANEL,\n    DataElements.TEXT_EDITING_PANEL,\n    DataElements.WV3D_PROPERTIES_PANEL,\n    DataElements.COMPARE_PANEL,\n    DataElements.WATERMARK_PANEL\n  ];\n\n  return rightPanelElements.some((element) => isElementOpen(state, element));\n};\n\nexport const isLeftPanelOpen = (state) => {\n  const genericPanelOnLeft = getOpenGenericPanel(state, 'left');\n  return genericPanelOnLeft?.length > 0;\n};\n\nexport const getOpenRightPanelWidth = (state) => {\n  const panelMap = [\n    { name: DataElements.NOTES_PANEL, isOpen: isElementOpen, getWidth: getNotesPanelWidthWithResizeBar },\n    { name: DataElements.SEARCH_PANEL, isOpen: isElementOpen, getWidth: getSearchPanelWidthWithResizeBar },\n    { name: DataElements.WATERMARK_PANEL, isOpen: isElementOpen, getWidth: getWatermarkPanelWidth },\n    { name: DataElements.TEXT_EDITING_PANEL, isOpen: isElementOpen, getWidth: getTextEditingPanelWidth },\n    { name: DataElements.WV3D_PROPERTIES_PANEL, isOpen: isElementOpen, getWidth: getWv3dPropertiesPanelWidth },\n    { name: DataElements.COMPARE_PANEL, isOpen: isElementOpen, getWidth: getComparePanelWidthWithResizeBar },\n    { name: DataElements.REDACTION_PANEL, isOpen: isElementOpen, getWidth: getRedactionPanelWidth },\n  ];\n\n  for (const panel of panelMap) {\n    if (panel.isOpen(state, panel.name)) {\n      return panel.getWidth(state);\n    }\n  }\n\n  return 0; // return 0 if no panel is open\n};\n\nexport const getIsShowComparisonButtonEnabled = (state) => {\n  return state.viewer.isShowComparisonButtonEnabled;\n};\n\nexport const getIsMultiViewerModeAvailable = (state) => {\n  return state.viewer.isMultiViewerModeAvailable;\n};\n\nexport const getMaxPasswordAttempts = (state) => {\n  return state.document.maxPasswordAttempts;\n};\n\nexport const isKeyboardOpen = (state) => state.viewer.isKeyboardOpen;\n\nexport const canUndo = (state) => {\n  return state.viewer.canUndo[state.viewer.activeDocumentViewerKey];\n};\n\nexport const canRedo = (state) => {\n  return state.viewer.canRedo[state.viewer.activeDocumentViewerKey];\n};","import core from 'core';\nimport { rgbaToHex } from 'src/helpers/color';\nimport { getOfficeEditorCursorProperties, getOfficeEditorSelectionProperties } from './exposedSelectors';\n\nconst isStyleButtonActive = (state, styleType) => {\n  if (!core.getDocument()) {\n    return false;\n  }\n  const isTextSelected = core.getOfficeEditor().isTextSelected();\n\n  const cursorProperties = getOfficeEditorCursorProperties(state);\n  const selectionProperties = getOfficeEditorSelectionProperties(state);\n\n  const properties = isTextSelected ? selectionProperties : cursorProperties;\n  const isActive = styleType === 'underline' ?\n    properties.underlineStyle === 'single' :\n    properties[styleType];\n  return isActive;\n};\n\nconst getPointSizeSelectionKey = (state) => {\n  if (!core.getDocument()) {\n    return '';\n  }\n  const isTextSelected = core.getOfficeEditor().isTextSelected();\n\n  const cursorProperties = getOfficeEditorCursorProperties(state);\n  const selectionProperties = getOfficeEditorSelectionProperties(state);\n\n  const properties = isTextSelected ? selectionProperties : cursorProperties;\n  const pointSize = properties.pointSize;\n  const pointSizeSelectionKey = pointSize === undefined ? '' : pointSize.toString();\n  return pointSizeSelectionKey;\n};\n\nconst getCursorStyleToPreset = (state, AVAILABLE_STYLE_PRESET_MAP, COMMON_COLORS) => {\n  if (!core.getDocument()) {\n    return '';\n  }\n  const isTextSelected = core.getOfficeEditor().isTextSelected();\n\n  const cursorProperties = getOfficeEditorCursorProperties(state);\n  const selectionProperties = getOfficeEditorSelectionProperties(state);\n\n  const properties = isTextSelected ? selectionProperties : cursorProperties;\n\n  const {\n    pointSize,\n    color: currentColor\n  } = properties || {};\n\n  const defaultStylePreset = 'Normal Text';\n  if (!pointSize || !currentColor) {\n    return defaultStylePreset;\n  }\n\n  const fontSize = `${pointSize}pt`;\n  let color = COMMON_COLORS['black'];\n  if (color) {\n    color = rgbaToHex(\n      currentColor.r,\n      currentColor.g,\n      currentColor.b\n    ).slice(0, -2);\n  }\n\n  return Object.keys(AVAILABLE_STYLE_PRESET_MAP).find(\n    (style) => AVAILABLE_STYLE_PRESET_MAP[style].fontSize === fontSize && AVAILABLE_STYLE_PRESET_MAP[style].color === color\n  ) || defaultStylePreset;\n};\n\nconst getCurrentFontFace = (state) => {\n  if (!core.getDocument()) {\n    return '';\n  }\n  const isTextSelected = core.getOfficeEditor().isTextSelected();\n\n  const cursorProperties = getOfficeEditorCursorProperties(state);\n  const selectionProperties = getOfficeEditorSelectionProperties(state);\n\n  const properties = isTextSelected ? selectionProperties : cursorProperties;\n  const fontFace = properties.fontFace || '';\n  return fontFace;\n};\n\nconst isListToggleActive = (state) => {\n  if (!core.getDocument()) {\n    return false;\n  }\n  const isTextSelected = core.getOfficeEditor().isTextSelected();\n\n  const cursorProperties = getOfficeEditorCursorProperties(state);\n  const selectionProperties = getOfficeEditorSelectionProperties(state);\n\n  const properties = isTextSelected ? selectionProperties : cursorProperties;\n  const activeListType = properties.paragraphProperties.listType;\n  return activeListType;\n};\n\nexport {\n  isStyleButtonActive,\n  getPointSizeSelectionKey,\n  getCursorStyleToPreset,\n  getCurrentFontFace,\n  isListToggleActive,\n};","import { useEffect, useRef } from 'react';\n\nexport default (callback = () => {}, deps) => {\n  const didMount = useRef(false);\n\n  useEffect(() => {\n    if (!didMount.current) {\n      didMount.current = true;\n      return;\n    }\n\n    return callback();\n  // eslint-disable-next-line\n  }, deps);\n};\n","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","export const rgbaToHex = (r, g, b, a = 1) => {\n  r = r.toString(16);\n  g = g.toString(16);\n  b = b.toString(16);\n  a = Math.round(a * 255).toString(16);\n\n  if (r.length === 1) {\n    r = `0${r}`;\n  }\n  if (g.length === 1) {\n    g = `0${g}`;\n  }\n  if (b.length === 1) {\n    b = `0${b}`;\n  }\n  if (a.length === 1) {\n    a = `0${a}`;\n  }\n\n  return `#${r}${g}${b}${a}`;\n};\n\nexport function hexToRGBA(hexString) {\n  let a = 1;\n  if (hexString.length === 9) {\n    a = (parseInt(hexString.slice(7, 9), 16) / 255).toFixed(2);\n  } else if (hexString === 'transparent') {\n    return { r: 0, g: 0, b: 0, a: 0 };\n  }\n  const r = parseInt(hexString.slice(1, 3), 16);\n  const g = parseInt(hexString.slice(3, 5), 16);\n  const b = parseInt(hexString.slice(5, 7), 16);\n  return { r, g, b, a };\n}\n\nexport const getHexToRgbaString = (hexString) => {\n  const { r, g, b, a } = hexToRGBA(hexString);\n\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const isDarkColorHex = (hexString) => {\n  const R = parseInt(hexString.substring(1, 3), 16);\n  const G = parseInt(hexString.substring(3, 5), 16);\n  const B = parseInt(hexString.substring(5, 7), 16);\n\n  return R < 40 && G < 40 && B < 40;\n};\n\nexport const isLightColorHex = (hexString) => {\n  const R = parseInt(hexString.substring(1, 3), 16);\n  const G = parseInt(hexString.substring(3, 5), 16);\n  const B = parseInt(hexString.substring(5, 7), 16);\n\n  return R > 215 && G > 215 && B > 215;\n};","import core from 'core';\nimport { saveAs } from 'file-saver';\nimport { getEmbeddedFileData, getFileAttachments } from './getFileAttachments';\n\nconst extensionRegExp = /(?:\\.([^.?]+))?$/;\n\nconst getExtension = (filename) => extensionRegExp.exec(filename)[1] || '';\n\nconst getFileNameWithoutExtension = (filename) => {\n  const extension = getExtension(filename);\n  if (extension === '') {\n    return filename;\n  }\n  return filename.slice(0, -(extension.length + 1));\n};\n\nexport const PORTFOLIO_CONSTANTS = {\n  COLLECTION: 'Collection',\n  FILE_NAME: 'FileName',\n  ADOBE_ORDER: 'adobe:Order',\n  CI: 'CI',\n  REORDER: 'Reorder',\n  SORT: 'Sort',\n  SCHEMA: 'Schema',\n  SUBTYPE: 'Subtype',\n};\n\nexport const isOpenableFile = (extension) => {\n  return window.Core.SupportedFileFormats.CLIENT.includes(extension);\n};\n\nexport const hasChildren = (portfolioItem) => {\n  return portfolioItem?.children?.length > 0;\n};\n\nconst getNextLargestValue = (files) => {\n  // TODO: will need to also get order values from folders\n  return Math.max(...files.map((a) => a.order)) + 1;\n};\n\nexport const getPortfolioFiles = async () => {\n  if (!core.isFullPDFEnabled()) {\n    return [];\n  }\n\n  const { embeddedFiles } = await getFileAttachments();\n  const unsortedPortfolioFiles = embeddedFiles.map(({ filename, fileObject, id, order }) => ({\n    id,\n    order,\n    name: filename,\n    nameWithoutExtension: getFileNameWithoutExtension(filename),\n    extension: getExtension(filename),\n    isFolder: false,\n    getNestedLevel: () => 0,\n    children: [],\n    fileObject,\n  }));\n\n  return unsortedPortfolioFiles.sort((a, b) => a.order - b.order);\n};\n\nexport const addFile = async (pdfDoc, file, order = undefined) => {\n  const PDFNet = window.Core.PDFNet;\n\n  // Create FileSpec dict\n  const fs = await pdfDoc.createIndirectDict();\n  fs.putName('Type', 'Filespec');\n  fs.putString('F', file.name);\n  fs.putText('UF', file.name);\n\n  // Create EmbeddedFile dict\n  const ef = await fs.putDict('EF');\n  const flateFilter = await PDFNet.Filter.createFlateEncode();\n  const embeddedStream = await pdfDoc.createIndirectStream(await file.arrayBuffer(), flateFilter);\n  ef.put('F', embeddedStream);\n\n  if (order === undefined) {\n    order = getNextLargestValue(await getPortfolioFiles());\n  }\n\n  // Add internal order\n  const ci = await pdfDoc.createIndirectDict();\n  await ci.putNumber(PORTFOLIO_CONSTANTS.ADOBE_ORDER, order);\n  await fs.put(PORTFOLIO_CONSTANTS.CI, ci);\n\n  // Add file attachment\n  const fileSpec = await PDFNet.FileSpec.createFromObj(fs);\n  await pdfDoc.addFileAttachment(file.name, fileSpec);\n};\n\nconst addCoverPage = async (pdfDoc) => {\n  const PDFNet = window.Core.PDFNet;\n\n  // Here we dynamically generate cover page (please see ElementBuilder\n  // sample for more extensive coverage of PDF creation API).\n  const page = await pdfDoc.pageCreate(await PDFNet.Rect.init(0, 0, 200, 200));\n\n  const b = await PDFNet.ElementBuilder.create();\n  const w = await PDFNet.ElementWriter.create();\n  w.beginOnPage(page);\n  const font = await PDFNet.Font.create(pdfDoc, PDFNet.Font.StandardType1Font.e_helvetica);\n  w.writeElement(await b.createTextBeginWithFont(font, 12));\n  const e = await b.createNewTextRun('PDF Portfolio');\n  e.setTextMatrixEntries(1, 0, 0, 1, 70, 96);\n  const gstate = await e.getGState();\n  gstate.setFillColorSpace(await PDFNet.ColorSpace.createDeviceRGB());\n  gstate.setFillColorWithColorPt(await PDFNet.ColorPt.init(0, 0, 0));\n  w.writeElement(e);\n  w.writeElement(await b.createTextEnd());\n  w.end();\n\n  pdfDoc.pagePushBack(page);\n};\n\nconst addCollection = async (pdfDoc, defaultFile = '') => {\n  const root = await pdfDoc.getRoot();\n  let collection = await root.findObj(PORTFOLIO_CONSTANTS.COLLECTION);\n  if (!collection) {\n    collection = await pdfDoc.createIndirectDict();\n  }\n\n  // You could here manipulate any entry in the Collection dictionary.\n  // For example, the following line sets the tile mode for initial view mode\n  // Please refer to section '2.3.5 Collections' in PDF Reference for details.\n  await collection.putName('View', 'T');\n\n  // Add default file for viewing (if not set, the cover page will show)\n  if (defaultFile) {\n    await collection.putString('D', defaultFile);\n  }\n\n  // Add Reorder\n  const reorder = await pdfDoc.createIndirectName(PORTFOLIO_CONSTANTS.REORDER);\n  await reorder.setName(PORTFOLIO_CONSTANTS.ADOBE_ORDER);\n  await collection.put(PORTFOLIO_CONSTANTS.REORDER, reorder);\n\n  // Add Sort\n  const sort = await collection.putDict(PORTFOLIO_CONSTANTS.SORT);\n  const sArray = await sort.putArray('S');\n  await sArray.insertName(0, PORTFOLIO_CONSTANTS.ADOBE_ORDER);\n  await sArray.insertName(1, PORTFOLIO_CONSTANTS.FILE_NAME);\n\n  // Add Schema\n  const schema = await pdfDoc.createIndirectDict();\n\n  const orderSchema = await pdfDoc.createIndirectDict();\n  await orderSchema.putString('N', 'Order');\n  await orderSchema.putNumber('O', 5);\n  await orderSchema.putName(PORTFOLIO_CONSTANTS.SUBTYPE, 'N');\n\n  const fileNameSchema = await pdfDoc.createIndirectDict();\n  await fileNameSchema.putString('N', 'Name');\n  await fileNameSchema.putBool('E', true);\n  await fileNameSchema.putNumber('O', 0);\n  await fileNameSchema.putName(PORTFOLIO_CONSTANTS.SUBTYPE, 'F');\n\n  // There are other fields in Schema (AFRelationship, CompressedSize, CreationDate, Description, ModDate, Size) but looks like we don't really need them\n  await schema.put(PORTFOLIO_CONSTANTS.ADOBE_ORDER, orderSchema);\n  await schema.put(PORTFOLIO_CONSTANTS.FILE_NAME, fileNameSchema);\n  await collection.put(PORTFOLIO_CONSTANTS.SCHEMA, schema);\n\n  // Add collection to root as an indirect dict\n  await root.put(PORTFOLIO_CONSTANTS.COLLECTION, collection);\n};\n\nexport const createPortfolio = async (files) => {\n  const PDFNet = window.Core.PDFNet;\n  await PDFNet.initialize();\n\n  const pdfDoc = await PDFNet.PDFDoc.create();\n\n  let firstFileName = '';\n  for (const [index, file] of files.entries()) {\n    if (index === 0) {\n      firstFileName = file.name;\n    }\n    await addFile(pdfDoc, file, index);\n  }\n  await addCoverPage(pdfDoc);\n  await addCollection(pdfDoc, firstFileName);\n\n  return pdfDoc;\n};\n\nconst getPDFNetFiles = async () => {\n  let files = null;\n  if (core.isFullPDFEnabled()) {\n    const PDFNet = window.Core.PDFNet;\n    let doc = core.getDocument();\n    if (doc) {\n      doc = await doc.getPDFDoc();\n    }\n    // doc will be undefined for non-pdf files\n    if (doc) {\n      await PDFNet.runWithCleanup(async () => {\n        files = await PDFNet.NameTree.find(doc, 'EmbeddedFiles');\n      });\n    }\n    if (files && (await files.isValid())) {\n      return files;\n    }\n  }\n  return null;\n};\n\nexport const findPDFNetPortfolioItem = async (id) => {\n  let target = null;\n  const files = await getPDFNetFiles();\n  if (!files) {\n    return;\n  }\n\n  // Traverse the list of embedded files.\n  const fileItr = await files.getIteratorBegin();\n  while (await fileItr.hasNext()) {\n    const filesIteratorKey = await fileItr.key();\n    if (id === filesIteratorKey.id) {\n      target = fileItr;\n      break;\n    }\n    await fileItr.next();\n  }\n\n  return target;\n};\n\nexport const renamePortfolioFile = async (id, newName) => {\n  const target = await findPDFNetPortfolioItem(id);\n  if (!target) {\n    return;\n  }\n  const filesIteratorValue = await target.value();\n  // filesIteratorKey.getAsPDFText() returns name with nested level if file is in folder: format \"<0>name.pdf\"\n  await filesIteratorValue.putString('F', newName);\n  await filesIteratorValue.putText('UF', newName);\n};\n\nexport const deletePortfolioFile = async (id) => {\n  const target = await findPDFNetPortfolioItem(id);\n  const files = await getPDFNetFiles();\n  if (!target || !files) {\n    return;\n  }\n  await files.erase(target);\n};\n\nexport const downloadPortfolioFile = async (portfolioItem) => {\n  const { fileObject, name } = portfolioItem;\n  try {\n    const blob = await getEmbeddedFileData(fileObject);\n    saveAs(blob, name);\n  } catch (e) {\n    console.warn(e);\n  }\n};\n\nexport const reorderPortfolioFile = async (id, newOrder) => {\n  const target = await findPDFNetPortfolioItem(id);\n  if (!target) {\n    return;\n  }\n  const filesIteratorValue = await target.value();\n  const ciValue = await (await filesIteratorValue.get(PORTFOLIO_CONSTANTS.CI)).value();\n  await ciValue.putNumber(PORTFOLIO_CONSTANTS.ADOBE_ORDER, newOrder);\n};","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","import actions from 'actions';\nimport classNames from 'classnames';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\nimport { isMobileSize, isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Swipeable } from 'react-swipeable';\nimport selectors from 'selectors';\nimport useArrowFocus from '../../hooks/useArrowFocus';\nimport getRootNode from 'helpers/getRootNode';\nimport DataElements from 'constants/dataElement';\nimport './FlyoutMenu.scss';\n\nconst MENUS = [\n  DataElements.MENU_OVERLAY,\n  'groupOverlay',\n  DataElements.VIEW_CONTROLS_OVERLAY,\n  'searchOverlay',\n  'signatureOverlay',\n  DataElements.ZOOM_OVERLAY,\n  'zoomOverlay1',\n  'zoomOverlay2',\n  'redactionOverlay',\n  'toolStylePopup',\n  DataElements.PAGE_MANIPULATION_OVERLAY,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL,\n  'tabMenu',\n];\n\nconst TRIGGERS = [\n  DataElements.MENU_OVERLAY_BUTTON,\n  DataElements.VIEW_CONTROLS_OVERLAY_BUTTON,\n  DataElements.ZOOM_OVERLAY_BUTTON,\n  'zoomOverlayButton1',\n  'zoomOverlayButton2',\n  DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON,\n  DataElements.THUMBNAILS_CONTROL_ROTATE_POPUP_TRIGGER,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_TRIGGER,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL_TRIGGER,\n  'tabTrigger',\n];\n\nconst propTypes = {\n  /** Menu must be one of the available menus. */\n  menu: PropTypes.oneOf(MENUS).isRequired,\n  /** The button that triggered the menu. */\n  trigger: PropTypes.oneOf(TRIGGERS).isRequired,\n  /** The menu content. */\n  children: PropTypes.node.isRequired,\n  /** Fired when the menu is closed. */\n  onClose: PropTypes.func,\n  /** Accessibility */\n  ariaLabel: PropTypes.string,\n};\n\nconst viewerHeight = window.isApryseWebViewerWebComponent ? getRootNode()?.host.clientHeight : window.innerHeight;\n\nfunction FlyoutMenu({ menu, trigger, onClose, children, ariaLabel }) {\n  const dispatch = useDispatch();\n\n  const allOtherMenus = useMemo(() => MENUS.filter((m) => m !== menu), [menu]);\n\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, menu));\n  const isOpen = useSelector((state) => selectors.isElementOpen(state, menu));\n\n  const isInDesktopOnlyMode = useSelector((state) => selectors.isInDesktopOnlyMode(state));\n  const pageManipulationOverlayAlternativePosition = useSelector((state) => selectors.getPageManipulationOverlayAlternativePosition(state),\n  );\n\n  const closeMenu = useCallback(() => {\n    dispatch(actions.closeElements([menu]));\n    onClose && onClose();\n  }, [dispatch, menu, onClose]);\n\n  const overlayRef = useRef(null);\n  useArrowFocus(!isDisabled && isOpen, closeMenu, overlayRef);\n\n  const onClickOutside = useCallback(\n    (e) => {\n      const menuButton = getRootNode().querySelector(`[data-element=\"${trigger}\"]`);\n      const clickedMenuButton = menuButton?.contains(e.target);\n      if (!clickedMenuButton) {\n        closeMenu();\n      }\n    },\n    [closeMenu, trigger],\n  );\n  useOnClickOutside(overlayRef, onClickOutside);\n\n  const [position, setPosition] = useState(() => ({ left: 0, right: 'auto', top: 'auto' }));\n  const isMobile = isMobileSize();\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  const getAlternativePosition = () => {\n    const alternativePosition = pageManipulationOverlayAlternativePosition;\n    const verticalGap = isMobile && isTabletAndMobile ? 14 : 6;\n    const clickTop = alternativePosition.top;\n    let top = clickTop + verticalGap;\n    if (clickTop > 100) {\n      const flyoutMenuHeight = overlayRef.current.clientHeight;\n      /**\n       * if the right-click click was not on the top of the page, we should check if the popup will fit on the\n       * the viewport and, if not, can adjust its position to \"pass\" the click position, otherwise the popup should always be below them\n       */\n      if (clickTop + flyoutMenuHeight > viewerHeight) {\n        const calculatedTop = viewerHeight - flyoutMenuHeight - verticalGap;\n        top = calculatedTop > 0 ? calculatedTop : 0;\n        alternativePosition.top = top;\n      }\n    }\n\n    return alternativePosition;\n  };\n\n  // When open: close others, position, and listen for resizes to position.\n  // Uselayouteffect prevents \"jumpy\" behaviour from opening in old position and immediately repositioning the flyout\n  useLayoutEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements(allOtherMenus));\n\n      const onResize = () => {\n        let overlayAlternativePosition;\n\n        if (trigger === DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON && pageManipulationOverlayAlternativePosition) {\n          overlayAlternativePosition = getAlternativePosition();\n        } else {\n          overlayAlternativePosition = getOverlayPositionBasedOn(trigger, overlayRef, isMobile && isTabletAndMobile);\n          overlayAlternativePosition.maxHeight = viewerHeight - overlayAlternativePosition.top;\n        }\n        setPosition(overlayAlternativePosition);\n      };\n      onResize();\n\n      window.addEventListener('resize', onResize);\n      return () => window.removeEventListener('resize', onResize);\n    }\n  }, [allOtherMenus, dispatch, isOpen, isTabletAndMobile, trigger, isMobile]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const overlayClass = classNames('Overlay', 'FlyoutMenu', {\n    mobile: isMobile && !isInDesktopOnlyMode,\n    closed: !isOpen,\n  });\n\n  return (\n    <Swipeable onSwipedUp={closeMenu} onSwipedDown={closeMenu} preventDefaultTouchmoveEvent>\n      <div\n        className={overlayClass}\n        data-element={menu}\n        style={!isMobile || isInDesktopOnlyMode ? position : undefined}\n        ref={overlayRef}\n        role=\"listbox\"\n        aria-label={ariaLabel}\n      >\n        {isMobile && !isInDesktopOnlyMode && <div className=\"swipe-indicator\" />}\n        {children}\n      </div>\n    </Swipeable>\n  );\n}\n\nFlyoutMenu.propTypes = propTypes;\nexport default FlyoutMenu;\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","import React, { useState, useEffect } from 'react';\nimport './CollapsibleSection.scss';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nconst CollapsibleSection = (props) => {\n  const {\n    header,\n    children,\n    className,\n    role,\n    style,\n    // use h2 as default heading level since we assume that this will be used with a parent component that should be using h1\n    headingLevel = 2,\n    isInitiallyExpanded = true,\n    isExpanded: controlledIsExpanded,\n    onToggle,\n    ariaControls,\n    expansionDescription,\n  } = props;\n\n  CollapsibleSection.propTypes = {\n    header: PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n    children: PropTypes.node.isRequired,\n    className: PropTypes.string,\n    role: PropTypes.string,\n    style: PropTypes.object,\n    headingLevel: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    isInitiallyExpanded: PropTypes.bool,\n    isExpanded: PropTypes.bool,\n    onToggle: PropTypes.func,\n    ariaControls: PropTypes.string,\n    expansionDescription: PropTypes.string,\n  };\n\n  const [isExpanded, setIsExpanded] = useState(isInitiallyExpanded);\n\n  useEffect(() => {\n    if (controlledIsExpanded !== undefined) {\n      setIsExpanded(controlledIsExpanded);\n    }\n  }, [controlledIsExpanded]);\n\n  const handleToggle = () => {\n    const newExpandedState = !isExpanded;\n    setIsExpanded(newExpandedState);\n    if (onToggle) {\n      onToggle(newExpandedState);\n    }\n  };\n\n  const HeadingTag = `h${headingLevel}`;\n\n  const headerContent = typeof header === 'function' ? header() : header;\n\n  return (\n    <div className={classNames({ CollapsibleSection: true, [className]: !!className })} role={role} style={style}>\n      <HeadingTag className=\"collapsible-page-group-header\">\n        <button onClick={handleToggle} aria-expanded={isExpanded} aria-controls={ariaControls} aria-label={expansionDescription}>\n          {headerContent}\n          <Icon\n            className=\"arrow\"\n            glyph={`icon-chevron-${isExpanded ? 'up' : 'down'}`}\n          />\n        </button>\n      </HeadingTag>\n      {isExpanded && (\n        <div className=\"collapsible-content\">\n          {children}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default CollapsibleSection;","import CollapsibleSection from './CollapsibleSection';\n\nexport default CollapsibleSection;","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es-x/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","module.exports = {};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n  if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","module.exports = {};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","import core from 'core';\r\nimport { PORTFOLIO_CONSTANTS } from './portfolio';\r\n\r\nexport async function getFileAttachments() {\r\n  const attachments = {\r\n    fileAttachmentAnnotations: [],\r\n    embeddedFiles: [],\r\n  };\r\n  if (!core.isFullPDFEnabled()) {\r\n    console.warn('Need fullAPI to be able to to view embedded files.');\r\n  } else {\r\n    const PDFNet = window.Core.PDFNet;\r\n    let doc = core.getDocument();\r\n    if (doc) {\r\n      doc = await doc.getPDFDoc();\r\n    }\r\n    const main = async () => {\r\n      const files = await PDFNet.NameTree.find(doc, 'EmbeddedFiles');\r\n      if (files && (await files.isValid())) {\r\n        // Traverse the list of embedded files.\r\n        const fileItr = await files.getIteratorBegin();\r\n        for (let counter = 0; await fileItr.hasNext(); await fileItr.next(), ++counter) {\r\n          const filesIteratorValue = await fileItr.value();\r\n          const filesIteratorKey = await fileItr.key();\r\n          // filesIteratorKey.getAsPDFText() returns name with nested level if file is in folder: format \"<0>name.pdf\"\r\n          const fileObject = await filesIteratorValue.get('F');\r\n          const fileData = await fileObject.value();\r\n          const filenameText = await fileData.getAsPDFText();\r\n          const filename = filenameText.slice(filenameText.lastIndexOf('/') + 1);\r\n          // Assume order is -1 for files without an order instead of getting the next largest value. Files will be displayed at the top of the list\r\n          let order = -1;\r\n          try {\r\n            // After being created with Adobe, the nested files don’t have an internal order (the ones at root level will always have an internal order), so they won't always have 'CI'\r\n            const ciValue = await (await filesIteratorValue.get(PORTFOLIO_CONSTANTS.CI)).value();\r\n            const adobeOrderValue = await (await ciValue.get(PORTFOLIO_CONSTANTS.ADOBE_ORDER)).value();\r\n            order = await adobeOrderValue.getNumber();\r\n          } catch (e) {\r\n            console.warn(e);\r\n          }\r\n          attachments.embeddedFiles.push({\r\n            filename,\r\n            id: filesIteratorKey.id,\r\n            order,\r\n            fileObject: filesIteratorValue\r\n          });\r\n        }\r\n      }\r\n    };\r\n\r\n    // doc will be undefined for non-pdf files\r\n    if (doc) {\r\n      await PDFNet.runWithCleanup(main);\r\n    }\r\n  }\r\n  const fileAttachmentAnnotations = core\r\n    .getAnnotationsList()\r\n    .filter((annot) => annot instanceof window.Core.Annotations.FileAttachmentAnnotation);\r\n\r\n  // re-order fileAttachment annotations by page number\r\n  fileAttachmentAnnotations.forEach((annot) => {\r\n    if (!attachments.fileAttachmentAnnotations[annot.PageNumber]) {\r\n      attachments.fileAttachmentAnnotations[annot.PageNumber] = [];\r\n    }\r\n    attachments.fileAttachmentAnnotations[annot.PageNumber].push(annot);\r\n  });\r\n  return attachments;\r\n}\r\n\r\nexport async function getEmbeddedFileData(iterator) {\r\n  const PDFNet = window.Core.PDFNet;\r\n  const fileSpec = await PDFNet.FileSpec.createFromObj(iterator);\r\n  const stm = await fileSpec.getFileData();\r\n  const filterReader = await PDFNet.FilterReader.create(stm);\r\n  const buffer = await filterReader.readAllIntoBuffer();\r\n  const blob = new Blob([buffer]);\r\n  return blob;\r\n}\r\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'root'\n    if (!this.nodes) this.nodes = []\n  }\n\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child)\n\n    if (sample) {\n      if (type === 'prepend') {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before\n        } else {\n          delete sample.raws.before\n        }\n      } else if (this.first !== sample) {\n        for (let node of nodes) {\n          node.raws.before = sample.raws.before\n        }\n      }\n    }\n\n    return nodes\n  }\n\n  removeChild(child, ignore) {\n    let index = this.index(child)\n\n    if (!ignore && index === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index].raws.before\n    }\n\n    return super.removeChild(child)\n  }\n\n  toResult(opts = {}) {\n    let lazy = new LazyResult(new Processor(), this, opts)\n    return lazy.stringify()\n  }\n}\n\nRoot.registerLazyResult = dependant => {\n  LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n  Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","import getRootNode from 'helpers/getRootNode';\n\nexport default () => {\n  getRootNode().querySelector('#file-picker')?.click();\n};\n","import core from 'core';\n\nexport default (toolName) => {\n  // we don't want to show the style popup for this tool\n  // TODO: there might be a better way to handle this. We can potentially have an API for hiding style popup for certain tools\n  if (toolName === 'CropPage' || toolName === 'SnippingTool') {\n    return false;\n  }\n\n  const tool = core.getTool(toolName);\n  let hasStyles;\n\n  if (tool?.defaults) {\n    hasStyles = Object.keys(tool.defaults).length > 0;\n  } else {\n    hasStyles = false;\n  }\n\n  return hasStyles;\n};\n","import core from 'core';\nimport getToolStyles from 'helpers/getToolStyles';\nimport { mapAnnotationToToolName } from 'constants/map';\nimport actions from 'actions';\n\nexport default (dispatch, annotationConstructor, activeDocumentViewerKey = 1) => {\n  const annotations = createTextAnnotation(annotationConstructor, activeDocumentViewerKey);\n\n  core.clearSelection(activeDocumentViewerKey);\n  core.addAnnotations(annotations, activeDocumentViewerKey);\n  core.selectAnnotations(annotations, activeDocumentViewerKey);\n  dispatch(actions.closeElement('textPopup'));\n};\n\n\nconst createTextAnnotation = (annotationConstructor, activeDocumentViewerKey = 1) => {\n  const annotations = [];\n  const quads = core.getSelectedTextQuads(activeDocumentViewerKey);\n\n  Object.keys(quads).forEach((pageNumber) => {\n    pageNumber = parseInt(pageNumber, 10);\n    const annotation = createAnnotation(annotationConstructor, pageNumber, quads);\n\n    if (window.Core.Tools.TextAnnotationCreateTool.AUTO_SET_TEXT && !(annotation instanceof window.Core.Annotations.RedactionAnnotation)) {\n      annotation.setContents(core.getSelectedText(activeDocumentViewerKey));\n    }\n\n    annotation.setCustomData('trn-annot-preview', core.getSelectedText(activeDocumentViewerKey));\n\n    if (annotation instanceof window.Core.Annotations.RedactionAnnotation) {\n      setRedactionStyle(annotation);\n      annotation.IsText = true;\n    }\n\n    setAnnotationStyle(annotation);\n\n    annotations.push(annotation);\n  });\n\n  return annotations;\n};\n\nconst createAnnotation = (annotationConstructor, pageNumber, quads) => {\n  const annotation = new annotationConstructor();\n\n  annotation.PageNumber = pageNumber;\n  annotation.Quads = quads[pageNumber];\n  annotation.Author = core.getCurrentUser();\n  return annotation;\n};\n\nconst setAnnotationStyle = (annotation) => {\n  const toolName = mapAnnotationToToolName(annotation);\n\n  if (toolName) {\n    const newStyles = getToolStyles(toolName);\n    Object.keys(newStyles).forEach((property) => {\n      annotation[property] = newStyles[property];\n    });\n  }\n};\n\nconst setRedactionStyle = (annotation) => {\n  const { AnnotationCreateRedaction: { defaults: style = {} } } = core.getToolModeMap();\n\n  if (style) {\n    if (style.StrokeColor) {\n      const color = style.StrokeColor;\n      annotation.StrokeColor = new window.Core.Annotations.Color(color['R'], color['G'], color['B'], color['A']);\n    }\n    if (style.StrokeThickness) {\n      annotation.StrokeThickness = style['StrokeThickness'];\n    }\n    if (style.FillColor) {\n      const fillColor = style.FillColor;\n      annotation.FillColor = new window.Core.Annotations.Color(fillColor['R'], fillColor['G'], fillColor['B'], fillColor['A']);\n    }\n  }\n};","import getRootNode from './getRootNode';\n\nexport const getWebComponentScale = () => {\n  if (window.isApryseWebViewerWebComponent) {\n    const hostContainer = getRootNode().host;\n    const containerBox = hostContainer.getBoundingClientRect();\n    return {\n      scaleX: containerBox.width / hostContainer.offsetWidth,\n      scaleY: containerBox.height / hostContainer.offsetHeight,\n    };\n  }\n  return {\n    scaleX: 1,\n    scaleY: 1,\n  };\n};","/**\n * An instance of Hotkeys that can be used to enable, disable or register custom hotkeys in the viewer\n * @name UI.hotkeys\n * @see UI.Hotkeys\n * @type {Class<UI.Hotkeys>}\n */\n\nimport hotkeysManager, { Keys } from 'helpers/hotkeysManager';\n\nexport default {\n  on: (...args) => {\n    hotkeysManager.on(...args);\n  },\n  off: (...args) => {\n    hotkeysManager.off(...args);\n  },\n  Keys,\n};\n","import core from 'core';\nimport { getWebComponentScale } from './getWebComponentScale';\nimport getRootNode from './getRootNode';\n\n// gap between the annotation selection box and the popup element\nconst defaultGap = 17;\n\nexport const getAnnotationPopupPositionBasedOn = (annotation, popup, documentViewerKey = 1, gap = defaultGap) => {\n  const { left, top } = calcAnnotationPopupPosition(\n    getAnnotationPosition(annotation, documentViewerKey),\n    getPopupDimensions(popup),\n    documentViewerKey,\n    gap,\n  );\n\n  return { left: Math.max(left, 4), top };\n};\n\nexport const getTextPopupPositionBasedOn = (allQuads, popup, documentViewerKey = 1) => {\n  const { left, top } = calcTextPopupPosition(\n    getSelectedTextPosition(allQuads, documentViewerKey),\n    getPopupDimensions(popup),\n    documentViewerKey,\n  );\n\n  return { left, top };\n};\n\nexport const getAnnotationPosition = (annotation, documentViewerKey = 1) => {\n  const { left, top, right, bottom } = getAnnotationPageCoordinates(annotation, documentViewerKey);\n  const pageNumber = annotation.getPageNumber();\n  const currentDocumentPageCount = core.getDocumentViewers()[documentViewerKey - 1].getPageCount();\n\n  if (pageNumber > currentDocumentPageCount) {\n    return { topLeft: null, bottomRight: null };\n  }\n\n  const topLeft = convertPageCoordinatesToWindowCoordinates(left, top, pageNumber, documentViewerKey);\n  const bottomRight = convertPageCoordinatesToWindowCoordinates(right, bottom, pageNumber, documentViewerKey);\n\n  if (annotation['NoZoom']) {\n    const isNote = annotation instanceof window.Core.Annotations.StickyAnnotation;\n    const rect = annotation.getRect();\n    const width = isNote ? window.Core.Annotations.StickyAnnotation['SIZE'] : rect.getWidth();\n    const height = isNote ? window.Core.Annotations.StickyAnnotation['SIZE'] : rect.getHeight();\n    const rotation = core.getCompleteRotation(annotation.PageNumber, documentViewerKey);\n    if (rotation === 0) {\n      bottomRight.x = topLeft.x + width;\n      bottomRight.y = topLeft.y + height;\n      if (isNote) {\n        bottomRight.x += width * 0.2;\n      }\n    } else {\n      if (isNote) {\n        bottomRight.x = topLeft.x + width * 1.2;\n        bottomRight.y = topLeft.y + height;\n      } else {\n        if (rotation === 1) {\n          topLeft.x = bottomRight.x - height;\n          bottomRight.y = topLeft.y + width;\n        } else if (rotation === 2) {\n          topLeft.x = bottomRight.x - width;\n          topLeft.y = bottomRight.y - height;\n        } else if (rotation === 3) {\n          topLeft.y = bottomRight.y - width;\n          bottomRight.x = topLeft.x + height;\n        }\n      }\n    }\n  }\n\n  return { topLeft, bottomRight };\n};\n\nconst getAnnotationPageCoordinates = (annotation, documentViewerKey = 1) => {\n  const rect = annotation.getRect();\n  let { x1: left, y1: top, x2: right, y2: bottom } = rect;\n\n  const isNote = annotation instanceof window.Core.Annotations.StickyAnnotation;\n  const noteAdjustment = window.Core.Annotations.StickyAnnotation['SIZE'];\n\n  const rotation = core.getCompleteRotation(annotation.PageNumber, documentViewerKey);\n  if (rotation === 1) {\n    [top, bottom] = [bottom, top];\n    if (isNote) {\n      top -= noteAdjustment;\n      bottom -= noteAdjustment;\n    }\n  } else if (rotation === 2) {\n    [left, right] = [right, left];\n    [top, bottom] = [bottom, top];\n    if (isNote) {\n      top -= noteAdjustment;\n      bottom -= noteAdjustment;\n      left -= noteAdjustment;\n      right -= noteAdjustment;\n    }\n  } else if (rotation === 3) {\n    [left, right] = [right, left];\n    if (isNote) {\n      left -= noteAdjustment;\n      right -= noteAdjustment;\n    }\n  }\n\n  return { left, top, right, bottom };\n};\n\nconst getSelectedTextPosition = (allQuads, documentViewerKey) => {\n  const { startPageNumber, endPageNumber } = getSelectedTextPageNumber(allQuads);\n  const { left, right, top, bottom } = getSelectedTextPageCoordinates(\n    allQuads,\n    startPageNumber,\n    endPageNumber\n  );\n\n  let topLeft = convertPageCoordinatesToWindowCoordinates(left, top, startPageNumber, documentViewerKey);\n  let bottomRight = convertPageCoordinatesToWindowCoordinates(right, bottom, endPageNumber, documentViewerKey);\n\n  if (core.getRotation() > 1) {\n    const tmp = topLeft;\n    topLeft = bottomRight;\n    bottomRight = tmp;\n  }\n\n  return { topLeft, bottomRight };\n};\n\nconst getSelectedTextPageNumber = (allQuads) => {\n  const pageNumbers = Object.keys(allQuads).map((pageNumber) => Number(pageNumber));\n  // Object.keys returns keys in arbitrary order so use Math.min/max instead of index to access array\n  const startPageNumber = Math.min(...pageNumbers);\n  const endPageNumber = Math.max(...pageNumbers);\n\n  return { startPageNumber, endPageNumber };\n};\n\nconst getSelectedTextPageCoordinates = (allQuads, startPageNumber, endPageNumber) => {\n  const getTopAndBottom = () => {\n    const firstQuad = allQuads[startPageNumber][0];\n    const top = firstQuad.y3;\n\n    const endPageQuads = allQuads[endPageNumber];\n    const lastQuad = endPageQuads[endPageQuads.length - 1];\n    const bottom = lastQuad.y1;\n\n    return { top, bottom };\n  };\n\n  const getLeftAndRight = () => {\n    let left;\n    let right;\n\n    Object.keys(allQuads).forEach((pageNumber) => {\n      allQuads[pageNumber].forEach((quad) => {\n        const { x1: quadLeft, x2: quadRight } = quad;\n\n        if (!left || quadLeft < left) {\n          left = quadLeft;\n        }\n        if (!right || quadRight > right) {\n          right = quadRight;\n        }\n      });\n    });\n\n    return { left, right };\n  };\n\n  const { top, bottom } = getTopAndBottom();\n  const { left, right } = getLeftAndRight();\n\n  return { left, top, bottom, right };\n};\n\nconst convertPageCoordinatesToWindowCoordinates = (x, y, pageNumber, documentViewerKey = 1) => {\n  const displayMode = core.getDisplayModeObject(documentViewerKey);\n\n  return displayMode.pageToWindow({ x, y }, pageNumber);\n};\n\nconst getPopupDimensions = (popup) => {\n  const { width, height } = popup.current.getBoundingClientRect();\n\n  return { width, height };\n};\n\nconst calcAnnotationPopupPosition = (annotationPosition, popupDimension, documentViewerKey, gap) => {\n  const top = calcPopupTop(annotationPosition, popupDimension, documentViewerKey, gap);\n  const left = calcPopupLeft(annotationPosition, popupDimension, documentViewerKey);\n\n  return { left, top };\n};\n\nconst calcTextPopupPosition = (selectedTextPosition, popupDimension, documentViewerKey) => {\n  const top = calcPopupTop(selectedTextPosition, popupDimension, documentViewerKey);\n  const left = calcPopupLeft(selectedTextPosition, popupDimension, documentViewerKey);\n\n  return { left, top };\n};\n\nexport const calcPopupLeft = ({ topLeft, bottomRight }, { width }, documentViewerKey) => {\n  const { scrollLeft } = core.getScrollViewElement(documentViewerKey);\n  const center = (topLeft.x + bottomRight.x) / 2 - scrollLeft;\n\n  width /= getWebComponentScale()?.scaleX;\n  let left = center - width / 2;\n\n  if (left < 0) {\n    left = 0;\n  } else if (left + width > window.innerWidth) {\n    left = window.innerWidth - width;\n  }\n\n  return Math.round(left);\n};\n\n/**\n * @ignore\n * @param {number} annotationPosition The position of the annotation (topLeft, bottomRight)\n * @param {number} popupDimension The deminition of the popup (width, height)\n * this is specifically used for the annotation popup to keep the popup on the same side of the annotation.\n */\nexport const calcPopupTop = ({ topLeft, bottomRight }, { height }, documentViewerKey, gap = defaultGap) => {\n  const padding = 5;\n  const scrollContainer = core.getScrollViewElement(documentViewerKey);\n  const boundingBox = scrollContainer.getBoundingClientRect();\n  const visibleRegion = {\n    left: boundingBox.left + scrollContainer.scrollLeft,\n    right: boundingBox.left + scrollContainer.scrollLeft + boundingBox.width,\n    top: boundingBox.top + scrollContainer.scrollTop,\n    bottom: boundingBox.top + scrollContainer.scrollTop + boundingBox.height,\n  };\n\n  const scaleY = getWebComponentScale()?.scaleY;\n  const isWebComponent = window.isApryseWebViewerWebComponent;\n  if (isWebComponent) {\n    const hostContainer = getRootNode().host;\n    const containerBox = hostContainer.getBoundingClientRect();\n    visibleRegion.top = (visibleRegion.top - containerBox.top) / scaleY;\n    visibleRegion.bottom = (visibleRegion.bottom - containerBox.top) / scaleY;\n  }\n\n  const annotTop = topLeft.y - gap;\n  const annotBottom = bottomRight.y + gap;\n\n  height /= scaleY;\n\n  let top;\n  if (annotBottom + height < visibleRegion.bottom) {\n    top = annotBottom;\n  } else if (annotTop - height > visibleRegion.top) {\n    top = annotTop - height;\n  } else {\n    // if there is no enough room to fit the style popup in either way (top or bottom)\n    // We want to place it on the side that has more space\n    if (annotTop > visibleRegion.bottom - annotBottom) { // if top has more space, place it to top\n      top = visibleRegion.top + padding;\n    } else { // otherwise, place it to bottom\n      top = visibleRegion.bottom - padding - height;\n    }\n  }\n\n  return Math.round(top - scrollContainer.scrollTop);\n};\n\nexport const getReaderModePopupPositionBasedOn = (annotPosition, popup, viewer) => {\n  const { width, height } = popup.current.getBoundingClientRect();\n  const viewerRect = viewer.current.getBoundingClientRect();\n\n  let top = 5;\n  const annotTop = annotPosition.top - defaultGap;\n  const annotBottom = annotPosition.bottom + defaultGap;\n  if (annotBottom + height < viewerRect.height) {\n    top = annotBottom;\n  } else if (annotTop > height) {\n    top = annotTop - height;\n  }\n  top = Math.round(top + viewerRect.top);\n\n  const paddingLeft = parseFloat(viewer.current.firstChild.style.paddingLeft);\n  const center = (annotPosition.left + annotPosition.right) / 2 + paddingLeft;\n  let left = center - width / 2;\n  if (left < 0) {\n    left = 0;\n  } else if (left + width > viewerRect.width) {\n    left = viewerRect.width - width;\n  }\n  left = Math.round(left + viewerRect.left);\n\n  return { top, left };\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport Tooltip from 'components/Tooltip';\nimport selectors from 'selectors';\n\nimport './CustomElement.scss';\n\nconst propTypes = {\n  className: PropTypes.string,\n  dataElement: PropTypes.string,\n  display: PropTypes.string,\n  render: PropTypes.func.isRequired,\n  renderArguments: PropTypes.array,\n  mediaQueryClassName: PropTypes.string,\n  title: PropTypes.string,\n};\n\nconst CustomElement = ({\n  className = 'CustomElement',\n  dataElement,\n  display,\n  render,\n  renderArguments,\n  mediaQueryClassName,\n  title,\n}) => {\n  const [reactComponent, setReactComponent] = useState(null);\n  const wrapperRef = useRef();\n  const toolTipWrapperRef = useRef();\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n\n  useEffect(() => {\n    // currently UI is running in an iframe, and there are two ways an user can add a CustomElement component to the header using setHeaderItems.\n    // one way is in a config file. This way the element created by document.createElement() is an instanceof window.Element but not window.parent.Element since\n    // code inside the config is running inside the iframe and window.parent is the iframe\n    // the other way is calling setHeaderItems and creating elements outside the iframe. This way the element is an instanceof window.parent.Element, not window.Element\n    const isDOMElement = (element) => {\n      try {\n        return (\n          element instanceof window.Element ||\n          element instanceof window.parent.Element\n        );\n      } catch (e) {\n        return false;\n      }\n    };\n\n    const isReactElement = (element) => React.isValidElement(element);\n\n    if (!isDisabled) {\n      const element = (renderArguments) ? render(...renderArguments) : render();\n      if (isDOMElement(element)) {\n        const wrapperElement = toolTipWrapperRef.current ? toolTipWrapperRef.current : wrapperRef.current;\n\n        while (wrapperElement.firstChild) {\n          wrapperElement.removeChild(wrapperElement.firstChild);\n        }\n        wrapperElement.appendChild(element);\n      } else if (isReactElement(element)) {\n        setReactComponent(element);\n      } else {\n        console.warn(\n          'The object returned by the render function does not seem to be either a DOM element or a React Component',\n        );\n      }\n    }\n  }, [isDisabled, render, renderArguments]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const children = (\n    <div\n      className={classNames({\n        [className]: !!className,\n        [mediaQueryClassName]: !!mediaQueryClassName,\n      })}\n      ref={wrapperRef}\n      data-element={dataElement}\n      style={{ display }}\n    >\n      {reactComponent}\n    </div>\n  );\n\n  return title ? (<Tooltip content={title} ref={toolTipWrapperRef}>{children}</Tooltip>) : children;\n};\n\nCustomElement.propTypes = propTypes;\n\nexport default CustomElement;\n","import CustomElement from './CustomElement';\n\nexport default CustomElement;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","import { Choice as ChoiceComponent } from '@pdftron/webviewer-react-toolkit';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nimport './Choice.scss';\n\nconst propTypes = {\n  dataElement: PropTypes.string,\n};\n\nconst Choice = React.forwardRef(({ dataElement, ...props }, ref) => {\n  const isDisabled = useSelector((state) => (dataElement ? selectors.isElementDisabled(state, dataElement) : false));\n\n  return isDisabled ? null : <ChoiceComponent {...props} ref={ref} center />;\n});\n\nChoice.displayName = 'Choice';\nChoice.propTypes = propTypes;\n\nexport default Choice;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport { BASIC_PALETTE } from 'constants/commonColors';\n\nimport './ColorPalette.scss';\n\nconst dataElement = 'colorPalette';\n\nclass ColorPalette extends React.PureComponent {\n  static propTypes = {\n    property: PropTypes.string.isRequired,\n    color: PropTypes.object,\n    onStyleChange: PropTypes.func.isRequired,\n    overridePalette: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n    colorMapKey: PropTypes.string\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.palette = BASIC_PALETTE;\n  }\n\n  setColor = (bg) => {\n    const { property, onStyleChange } = this.props;\n    if (!bg) {\n      onStyleChange(property, new window.Core.Annotations.Color(0, 0, 0, 0));\n    } else {\n      const color = new window.Core.Annotations.Color(bg);\n      onStyleChange(property, color);\n    }\n  }\n\n  render() {\n    const {\n      hasPadding,\n      style = {},\n      property,\n      color,\n      overridePalette,\n      overridePalette2,\n      colorMapKey,\n      t,\n      isDisabled,\n    } = this.props;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    const allowTransparent = !(property === 'TextColor' || property === 'StrokeColor');\n\n    let palette = overridePalette2 || overridePalette?.[colorMapKey] || overridePalette?.global || this.palette;\n    if (!allowTransparent) {\n      palette = palette.filter((p) => p?.toLowerCase() !== 'transparency');\n    }\n    /* eslint-disable custom/no-hex-colors */\n    const transparentIcon = (\n      <svg\n        width=\"100%\"\n        height=\"100%\"\n        className={classNames({\n          transparent: true,\n        })}\n      >\n        <line stroke=\"#d82e28\" x1=\"0\" y1=\"100%\" x2=\"100%\" y2=\"0\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n      </svg>\n    );\n    /* eslint-enable custom/no-hex-colors */\n\n    return (\n      <div\n        data-element=\"colorPalette\"\n        className={classNames({\n          'ColorPalette': true,\n          padding: hasPadding,\n        })}\n        style={style}\n      >\n        {palette.map((bg) => bg?.toLowerCase()).map((bg, i) => (\n          !bg\n            ? <div key={i} className=\"dummy-cell\" />\n            : <button\n              key={i}\n              className=\"cell-container\"\n              onClick={() => {\n                this.setColor(bg === 'transparency' ? null : bg);\n              }}\n              aria-label={`${t('option.colorPalette.colorLabel')} ${bg.toUpperCase()}`}\n            >\n              <div\n                className={classNames({\n                  'cell-outer': true,\n                  active: color?.toHexString?.()?.toLowerCase() === bg || (!color?.toHexString?.() && bg === 'transparency'),\n                })}\n              >\n                <div\n                  className={classNames({\n                    cell: true,\n                    border: true,\n                  })}\n                  style={{ backgroundColor: bg }}\n                >\n                  {bg === 'transparency' && transparentIcon}\n                </div>\n              </div>\n            </button>\n        ))}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  overridePalette: selectors.getCustomElementOverrides(state, dataElement),\n  isDisabled: selectors.isElementDisabled(state, 'colorPalette'),\n});\n\nexport default connect(mapStateToProps)(withTranslation()(ColorPalette));\n","import ColorPalette from './ColorPalette';\n\nexport default ColorPalette;","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\n\n// This hook is used to focus on the previously focused element when an element like a modal is closed\nconst useFocusOnClose = (onCloseClick) => {\n  const dispatch = useDispatch();\n\n  const onCloseHandler = useCallback((event) => {\n    onCloseClick(event);\n    const focusedElement = dispatch(actions.popFocusedElement());\n    if (focusedElement) {\n      focusedElement.focus();\n    }\n  }, [onCloseClick]);\n\n  return onCloseHandler;\n};\n\nexport default useFocusOnClose;\n","import useFocusOnClose from './useFocusOnClose';\n\nexport default useFocusOnClose;","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Button.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import getRootNode from 'helpers/getRootNode';\n\nexport default (element, overlay, isTabletAndMobile, selector = 'data-element') => {\n  const isApryseWebViewerWebComponent = window.isApryseWebViewerWebComponent;\n  const innerWidth = isApryseWebViewerWebComponent ? getRootNode().host.clientWidth : window.innerWidth;\n  const innerHeight = isApryseWebViewerWebComponent ? getRootNode().host.clientHeight : window.innerHeight;\n  const button = getRootNode().querySelector(`[${selector}=\"${element}\"]`);\n\n  let left = 0;\n  let right = 'auto';\n\n  // by default the button is visible in the header\n  // but it can be removed from the DOM by calling viewerInstance.disableElement(...);\n  // in this case we are not able to position the overlay correctly so we just \"hide\" the overlay\n  if (!button || !overlay.current) {\n    return { left: -9999, right };\n  }\n\n  const {\n    bottom: buttonBottom,\n    left: buttonLeft,\n  } = button.getBoundingClientRect();\n  const { width: overlayWidth, height: overlayHeight } = overlay.current.getBoundingClientRect();\n  const rootLeft = isApryseWebViewerWebComponent ? getRootNode().host.getBoundingClientRect().left : 0;\n  if ((buttonLeft - rootLeft) + overlayWidth > innerWidth) {\n    const rightMargin = 6;\n    left = innerWidth - rightMargin - overlayWidth;\n    right = 'auto';\n  } else {\n    left = buttonLeft - rootLeft;\n    right = 'auto';\n  }\n\n  const verticalGap = isTabletAndMobile ? 14 : 6;\n  const rootTop = isApryseWebViewerWebComponent ? getRootNode().host.getBoundingClientRect().top : 0;\n  let top = (buttonBottom - rootTop) + verticalGap;\n  if (buttonBottom > 100) {\n    // if the buttons are not on the top of the page, the popup can adjust its position to \"pass\" them, otherwise the popup should always be below them\n    if (buttonBottom + overlayHeight > innerHeight) {\n      const calculatedTop = innerHeight - overlayHeight - verticalGap;\n      top = calculatedTop > 0 ? calculatedTop : 0;\n    }\n  }\n\n  return {\n    left: !isNaN(left) ? Math.max(left, 0) : left,\n    right,\n    top,\n  };\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\nimport loadDocument from 'helpers/loadDocument';\nimport { setLoadingProgress } from 'actions/internalActions';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport downloadPdf from 'helpers/downloadPdf';\nimport Events from 'constants/events';\nimport isString from 'lodash/isString';\nimport DataElements from 'constants/dataElement';\nimport getRootNode, { getInstanceNode } from 'helpers/getRootNode';\n\nexport const enableMultiTab = () => (dispatch, getState) => {\n  const state = getState();\n  // if already in multi-tab mode do not recreate TabManager\n  if (selectors.getIsMultiTab(state) && selectors.getTabManager(state)) {\n    return;\n  }\n  const doc = core.getDocument();\n  let docArr = [];\n  if (doc) {\n    docArr.push(doc);\n  } else {\n    let initialDoc = getHashParameters('d', '');\n    initialDoc = initialDoc ? JSON.parse(initialDoc) : '';\n    if (initialDoc) {\n      if (Array.isArray(initialDoc)) {\n        docArr = docArr.concat(initialDoc);\n      } else {\n        docArr.push(initialDoc);\n      }\n    }\n  }\n  const tabManager = new TabManager(docArr, [], { dispatch, getState });\n  dispatch(actions.setMultiTab(true));\n  dispatch(actions.setTabManager(tabManager));\n  // Fix for event not firing on some devices\n  setTimeout(() => {\n    fireEvent(Events.TAB_MANAGER_READY);\n  }, 300);\n\n\n  // In some cases, enabling MultiTab and calling loadDocument can result\n  // in a race condition where the viewer opens an empty multi-tab message\n  // page. To prevent this, we are using a timeout.\n  function docLoadedEvent() {\n    const doc = core.getDocument();\n    const tabs = selectors.getTabs(state);\n    const exist = tabs.some((item) => item.options?.filename === doc.filename);\n    if (!exist) {\n      doc.getFileData().then((data) => {\n        try {\n          tabManager.addTab(new File([data], doc.getFilename()));\n        } catch (error) {\n          console.error(error);\n        }\n      });\n    }\n    core.removeEventListener('documentLoaded', docLoadedEvent);\n  }\n  core.addEventListener('documentLoaded', docLoadedEvent);\n};\n\nexport function prepareMultiTab(initialDoc, store) {\n  const extensions = getHashParameters('extension', null)?.split(',');\n  if (extensions && extensions.length !== 1 && extensions.length !== initialDoc.length) {\n    throw new Error(`'initialDoc' array length doesn't match 'extension' array length.\n          Please add an extension for each document or add one for all documents.\n          ex:\n          Webviewer({ initialDoc: ['pdf_doc', 'word_doc'], extension: ['pdf', 'docx'] })\n          OR\n          Webviewer({ initialDoc: ['pdf_doc1', 'pdf_doc2', 'pdf_doc3'], extension: ['pdf'] })`);\n  }\n  if (extensions && extensions.length === 1) {\n    console.warn(`Extension option '${extensions[0]}' will be applied to all tabs from the constructor.`);\n  }\n  store.dispatch(actions.setMultiTab(true));\n  const tabManager = new TabManager(initialDoc, extensions, store);\n  store.dispatch(actions.setTabManager(tabManager));\n  tabManager.listenForAnnotChanges();\n  // Fix for event not firing on some devices\n  setTimeout(() => {\n    fireEvent(Events.TAB_MANAGER_READY);\n  }, 300);\n}\n\nexport default class TabManager {\n  db;\n  store;\n  useDB;\n\n  constructor(docArr, extensionArr, store) {\n    this.store = store;\n    const state = this.store.getState();\n    this.useDB = !state.advanced.disableIndexedDB;\n    const { tabs, isMultiTab } = state.viewer;\n\n    if (this.useDB) {\n      const req = indexedDB.open('WebViewer Files', 1);\n      req.onerror = TabManager.indexedDBNotSupported;\n      req.onsuccess = async () => {\n        this.db = req.result;\n        this.db.onerror = TabManager.throwError;\n      };\n      req.onupgradeneeded = (e) => {\n        e.target.result.createObjectStore('files');\n      };\n    }\n\n    // if already in multi-tab mode and already save created the TabManager do not recreate TabManager\n    if (isMultiTab && selectors.getTabManager(state)) {\n      return;\n    }\n\n    docArr.forEach((doc, index) => {\n      const extension = extensionArr && isString(doc) ? extensionArr[extensionArr.length > 1 ? index : 0] : undefined;\n      let filename = `Document ${tabs.length + 1}`;\n      if (isString(doc)) {\n        filename = doc.substring(doc.lastIndexOf('/') + 1);\n      } else if (doc instanceof window.Core.Document && doc.getFilename && doc.getFilename()) {\n        filename = doc.getFilename();\n      }\n      tabs.push(new Tab(tabs.length, doc, this, {\n        filename,\n        extension,\n      }, this.useDB));\n    });\n\n    this.store.dispatch(actions.setTabs(tabs));\n    this.prepareTabEventListeners();\n  }\n\n  prepareTabEventListeners() {\n    const documentViewer = core.getDocumentViewer(1);\n\n    // To control if the document was downloaded or not after any document changes\n    documentViewer.addEventListener('finishedRendering', () => {\n      this.listenForAnnotChanges();\n      this.listenToDocumentDownloaded(documentViewer);\n    }, { once: true });\n  }\n\n  async setActiveTab(id, saveCurrentActiveTabState = true) {\n    this.store.dispatch(actions.openElement(DataElements.PROGRESS_MODAL));\n    this.store.dispatch(setLoadingProgress(0));\n\n    const state = this.store.getState();\n    const { tabs, activeTab } = state.viewer;\n    const currentTab = tabs.find((tab) => tab.id === activeTab);\n    const isEmptyPageOpen = selectors.isElementOpen(state, DataElements.MULTITABS_EMPTY_PAGE);\n    this.prepareTabEventListeners();\n    const newTab = tabs.find((tab) => tab.id === id);\n    if (!newTab) {\n      return console.error(`Tab id not found: ${id}`);\n    }\n    if (currentTab) {\n      await core.getDocumentViewer().getAnnotationManager().exportAnnotations();\n      await core.getDocumentViewer().getAnnotationsLoadedPromise();\n    }\n    fireEvent(Events['BEFORE_TAB_CHANGED'], {\n      currentTab: currentTab ? {\n        src: currentTab.src,\n        options: currentTab.options,\n        id: currentTab.id,\n        annotationsChanged: currentTab.changes.annotations,\n        hasUnsavedChanges: currentTab.changes.hasUnsavedChanges\n      } : null,\n      nextTab: {\n        src: newTab.src,\n        options: newTab.options,\n        id: newTab.id,\n      },\n    });\n    // Need this timeout because window.dispatchEvent is synchronous\n    // This will cause the document to be closed if the customer exports an XFDF or runs another async call here\n    // Allow a timeout of 400ms for async calls to finish before closing the document.\n    setTimeout(async () => {\n      if (currentTab) {\n        saveCurrentActiveTabState && await currentTab.saveCurrentActiveTabState(this.db);\n        core.closeDocument();\n      }\n      this.store.dispatch(actions.setActiveTab(id));\n      isEmptyPageOpen && this.store.dispatch(actions.closeElement(DataElements.MULTITABS_EMPTY_PAGE));\n      await newTab.load(this.store.dispatch, this.db, this.getViewerState(state));\n    }, 400);\n  }\n\n  getViewerState = (state) => {\n    const currentViewerState = {};\n    const viewerState = state.viewer;\n\n    currentViewerState.documentContainerWidth = viewerState.documentContainerWidth;\n    currentViewerState.documentContainerHeight = viewerState.documentContainerHeight;\n    currentViewerState.isNotesPanelOpen = selectors.isElementOpen(state, 'notesPanel');\n    currentViewerState.isLeftPanelOpen = selectors.isElementOpen(state, 'leftPanel');\n    currentViewerState.isSearchPanelOpen = selectors.isElementOpen(state, 'searchPanel');\n    currentViewerState.activeToolName = viewerState.activeToolName;\n\n    return currentViewerState;\n  }\n\n  showDeleteWarning(tabToDelete) {\n    const title = 'warning.closeFile.title';\n    const message = 'warning.closeFile.message';\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        downloadPdf(this.store.dispatch).then(() => {\n          tabToDelete.changes.hasUnsavedChanges = false;\n          this.deleteTab(tabToDelete.id);\n        });\n      },\n      onSecondary: () => {\n        tabToDelete.changes.hasUnsavedChanges = false;\n        this.deleteTab(tabToDelete.id);\n      },\n      confirmBtnText: 'action.download',\n      secondaryBtnText: 'warning.closeFile.rejectDownloadButton',\n      secondaryBtnClass: 'secondary-btn-custom',\n      showAskAgainCheckbox: true,\n      onClose: (disableWarning) => {\n        disableWarning && this.store.dispatch(actions.disableDeleteTabWarning());\n      }\n    };\n    this.store.dispatch(actions.showWarningMessage(confirmationWarning));\n  }\n\n  deleteTab(id) {\n    const state = this.store.getState();\n    const { tabs, activeTab } = state.viewer;\n    const tabToDelete = tabs.find((tab) => tab.id === id);\n    const shouldShowWarning = selectors.getShowDeleteTabWarning(state) && tabToDelete.changes.hasUnsavedChanges;\n\n    if (shouldShowWarning) {\n      this.showDeleteWarning(tabToDelete);\n    } else {\n      const [deletedTab] = tabs.splice(tabs.findIndex((tab) => tab.id === id), 1);\n      deletedTab.delete(this.db);\n      fireEvent(Events['TAB_DELETED'], {\n        src: deletedTab.src,\n        options: deletedTab.options,\n        id: deletedTab.id,\n      });\n      if (id === activeTab && tabs.length) {\n        this.setActiveTab(tabs[0].id);\n      } else if (!tabs.length) {\n        core.closeDocument();\n        this.store.dispatch(actions.setActiveTab(null));\n      }\n      this.store.dispatch(actions.setTabs(tabs));\n    }\n  }\n\n  async addTab(src, options = {}) {\n    const saveCurrentTabState = options['saveCurrentActiveTabState'] || options['saveCurrent'];\n    const useDB = options['useDB'] === false ? options['useDB'] && this.useDB : this.useDB;\n    const shouldLoadTab = options['setActive'] || options['load'];\n    const { tabs } = this.store.getState().viewer;\n    const currId = tabs.reduce((highestId, tab) => {\n      return tab.id > highestId ? tab.id : highestId;\n    }, 0);\n    if (!('filename' in options)) {\n      options['filename'] = `Document ${currId + 2}`;\n      if (isString(src)) {\n        options['filename'] = src.substring(src.lastIndexOf('/') + 1);\n      } else if (src instanceof window.Core.Document && src.getFilename && src.getFilename()) {\n        options['filename'] = src.getFilename();\n      } else if (src instanceof File || Object.prototype.toString.call(src) === '[object File]') {\n        options['filename'] = src['name'];\n      }\n    }\n    const tab = new Tab(currId + 1, src, this, options, useDB);\n    tabs.push(tab);\n    fireEvent(Events['TAB_ADDED'], {\n      src: tab.src,\n      options: tab.options,\n      id: tab.id,\n    });\n    if (shouldLoadTab) {\n      await this.setActiveTab(tab.id, saveCurrentTabState);\n    }\n    this.store.dispatch(actions.setTabs(tabs));\n    return tab.id;\n  }\n\n  moveTab(from, to) {\n    const { tabs } = this.store.getState().viewer;\n    const tab = tabs.splice(from, 1)[0];\n    tabs.splice(to, 0, tab);\n    fireEvent(Events['TAB_MOVED'], {\n      src: tab.src,\n      options: tab.options,\n      id: tab.id,\n      prevIndex: from,\n      newIndex: to,\n    });\n    this.store.dispatch(actions.setTabs(tabs));\n  }\n\n  listenForAnnotChanges() {\n    const onAnnotChange = (_, __, info) => {\n      if (info.imported) {\n        return;\n      }\n      const { tabs, activeTab } = this.store.getState().viewer;\n      const tab = tabs.find((t) => t.id === activeTab);\n      // if we switch between multiviewer and multitab amd have annotations being removed,\n      // we can end up with a events fired for tabs that are no longer in the store\n      if (tab) {\n        tab.changes.annotations = true;\n        tab.changes.hasUnsavedChanges = true;\n      }\n      removeListeners();\n    };\n    const onFieldChange = () => {\n      const { tabs, activeTab } = this.store.getState().viewer;\n      const tab = tabs.find((t) => t.id === activeTab);\n      if (tab) {\n        tab.changes.annotations = true;\n        tab.changes.hasUnsavedChanges = true;\n      }\n      removeListeners();\n    };\n\n    core.addEventListener('annotationChanged', onAnnotChange);\n    core.addEventListener('fieldChanged', onFieldChange, { once: true });\n\n    const removeListeners = () => {\n      core.removeEventListener('annotationChanged', onAnnotChange);\n      core.removeEventListener('fieldChanged', onFieldChange);\n    };\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  listenToDocumentDownloaded = async (documentViewer) => {\n    const { tabs, activeTab } = this.store.getState().viewer;\n    const currentTab = tabs.find((tab) => tab.id === activeTab);\n\n    const onFileDownloaded = () => {\n      currentTab.changes.hasUnsavedChanges = false;\n    };\n\n    const onPagesUpdated = (info) => {\n      if (info.source !== 'refresh') {\n        currentTab.changes.hasUnsavedChanges = true;\n      }\n    };\n\n    getInstanceNode().addEventListener(Events.FILE_DOWNLOADED, onFileDownloaded);\n    documentViewer.addEventListener('pagesUpdated', onPagesUpdated);\n\n    const removeListeners = () => {\n      getInstanceNode().removeEventListener(Events.FILE_DOWNLOADED, onFileDownloaded);\n      documentViewer.removeEventListener('pagesUpdated', onPagesUpdated);\n    };\n\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  };\n\n  // eslint-disable-next-line generator-star-spacing\n  *[Symbol.iterator]() {\n    const { tabs } = this.store.getState().viewer;\n    for (const tab of tabs) {\n      yield tab;\n    }\n  }\n\n  map(cb) {\n    const mapped = [];\n    let index = 0;\n    const { tabs } = this.store.getState().viewer;\n    for (const tab of tabs) {\n      mapped.push(cb(tab, index++));\n    }\n    return mapped;\n  }\n\n  static throwError() {\n    console.warn('File database has encountered an error. File data will not be saved when switching tabs');\n  }\n\n  static indexedDBNotSupported() {\n    console.warn('IndexedDB is not supported, file data will not be saved');\n  }\n\n  static MAX_FILE_SIZE = 2.5e8; // 250MB (in bytes)\n}\n\nexport class Tab {\n  disabled = false;\n  saveData = {\n    annotInDB: false,\n    docInDB: false,\n    scrollTop: undefined, // Float\n    scrollLeft: undefined, // Float\n    page: null, // Int\n    annots: null, // XFDF String\n  };\n  changes = {\n    annotations: false,\n    hasUnsavedChanges: false\n  };\n\n  id;\n  src;\n  options;\n  useDB;\n  tabManager;\n\n  constructor(id, src, tabManager, options = {}, useDB = true) {\n    this.id = id;\n    this.src = src;\n    this.options = options;\n    this.useDB = useDB;\n    this.tabManager = tabManager;\n  }\n\n  async preLoad(db) {\n    if (!this.useDB) {\n      return console.error('Cant preload tab with useDB = false');\n    }\n    const file = await fetch(this.src);\n    await this.writeToDB(db, await file.arrayBuffer());\n  }\n\n  async load(dispatch, db, viewerState) {\n    const annotsChanged = (this.saveData.annotInDB || this.saveData.annots);\n    this.options.loadAnnotations = !annotsChanged;\n    core.addEventListener('documentUnloaded', async () => {\n      this.restorePageDataOnLoad(viewerState, dispatch);\n      annotsChanged && await this.restoreAnnotDataOnLoad(db);\n    }, { once: true });\n    if (this.useDB && this.saveData.docInDB) {\n      const tx = db.transaction('files', 'readonly');\n      const store = tx.objectStore('files');\n      const req = store.get(this.id);\n      req.onsuccess = async () => {\n        const doc = req.result;\n        loadDocument(dispatch, doc, this.options);\n      };\n      tx.commit();\n    } else {\n      loadDocument(dispatch, this.src, this.options);\n    }\n  }\n\n  async saveCurrentActiveTabState(db) {\n    this.disabled = true;\n    this.savePageData();\n    const document = core.getDocument();\n    if (this.useDB && (document?.type === workerTypes.PDF && document.arePagesAltered() || this.src instanceof window.Core.Document)) {\n      await this.saveFileData(db, document);\n    } else if (this.changes.annotations) {\n      if (this.useDB) {\n        await this.saveAnnotDataInDB(db);\n      } else {\n        await this.saveAnnotData();\n      }\n    }\n    this.disabled = false;\n  }\n\n  async saveFileData(db, document) {\n    this.saveData.annotInDB = false;\n    const xfdfString = await core.exportAnnotations();\n    const data = await document.getFileData({\n      xfdfString,\n      flags: window.Core.SaveOptions.LINEARIZED,\n      finishedWithDocument: true,\n    });\n    await this.writeToDB(db, data);\n  }\n\n  async saveAnnotData() {\n    this.saveData.annotInDB = false;\n    const annotData = await core.exportAnnotations({ options: { fields: true, widgets: true, links: true } });\n    if (annotData) {\n      this.saveData.annots = annotData;\n    }\n  }\n\n  async saveAnnotDataInDB(db) {\n    const annotData = await core.exportAnnotations({ options: { fields: true, widgets: true, links: true } });\n    if (annotData) {\n      const annots = annotData;\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      store.put(annots, `${this.id}-annots`);\n      await tx.commit();\n      this.saveData.annotInDB = true;\n    }\n  }\n\n  savePageData() {\n    const docContainer = getRootNode()\n      .getElementById('app')\n      .getElementsByClassName('DocumentContainer')[0];\n    this.saveData.scrollTop = docContainer.scrollTop;\n    this.saveData.scrollLeft = docContainer.scrollLeft;\n    this.saveData.page = core.getCurrentPage();\n    const precision = 10000;\n    this.saveData.zoom = Math.floor(core.getZoom() * precision) / precision;\n  }\n\n  restorePageDataOnLoad(viewerState, dispatch) {\n    const docContainer = getRootNode()\n      .getElementById('app')\n      .getElementsByClassName('DocumentContainer')[0];\n\n    const updateScroll = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      docContainer.scrollTo({\n        top: this.saveData.scrollTop,\n        left: this.saveData.scrollLeft,\n      });\n    };\n\n    viewerState.isNotesPanelOpen && dispatch(actions.openElement('notesPanel'));\n    viewerState.isLeftPanelOpen && dispatch(actions.openElement('leftPanel'));\n    viewerState.isSearchPanelOpen && dispatch(actions.openElement('searchPanel'));\n    viewerState.activeToolName && core.setToolMode(viewerState.activeToolName);\n\n    const updateViewer = async () => {\n      await core.getDocument().getDocumentCompletePromise();\n      this.saveData.zoom && await core.zoomTo(this.saveData.zoom);\n      this.saveData.page && await core.setCurrentPage(this.saveData.page);\n    };\n\n    core.addEventListener('documentLoaded', updateViewer, { once: true });\n\n    !isNaN(this.saveData.scrollTop) && core.addEventListener('finishedRendering', updateScroll, { once: true });\n    const removeListeners = () => {\n      core.removeEventListener('documentLoaded', updateViewer);\n      core.removeEventListener('finishedRendering', updateScroll);\n    };\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  async updateAnnotations(db) {\n    const state = this.tabManager.store.getState();\n    const activeTabId = selectors.getActiveTab(state);\n    if (activeTabId !== this.id) {\n      return selectors.getTabs(state).find((tab) => tab.id === activeTabId).updateAnnotations(db);\n    }\n\n    if (this.saveData.annotInDB) {\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      const annotReq = store.get(`${this.id}-annots`);\n      annotReq.onsuccess = async () => {\n        await core.getDocument().getDocumentCompletePromise();\n        await core.getAnnotationManager().importAnnotations(annotReq.result);\n      };\n      await tx.commit();\n    } else if (this.saveData.annots) {\n      await core.getDocument().getDocumentCompletePromise();\n      await core.getAnnotationManager().importAnnotations(this.saveData.annots);\n    }\n  }\n\n  async restoreAnnotDataOnLoad(db) {\n    const updateAnnotations = () => this.updateAnnotations(db);\n    const removeListeners = () => {\n      core.removeEventListener('documentLoaded', updateAnnotations);\n    };\n    core.addEventListener('documentLoaded', updateAnnotations, { once: true });\n    core.addEventListener('documentUnloaded', removeListeners, { once: true });\n  }\n\n  async writeToDB(db, arrBuff) {\n    const tx = db.transaction('files', 'readwrite');\n    const store = tx.objectStore('files');\n    store.put(arrBuff, this.id);\n    this.saveData.docInDB = true;\n    await tx.commit();\n  }\n\n  async delete(db) {\n    if (this.useDB) {\n      const tx = db.transaction('files', 'readwrite');\n      const store = tx.objectStore('files');\n      store.delete(this.id);\n      store.delete(`${this.id}-annot-states`);\n      store.delete(`${this.id}-annots`);\n      await tx.commit();\n    }\n  }\n}\n","var baseGetTag = require('./_baseGetTag'),\n    isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\nimport { getDataWithKey } from 'constants/map';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport HorizontalDivider from 'components/HorizontalDivider';\nimport Tooltip from 'components/Tooltip';\n\nimport './ColorPaletteHeader.scss';\n\nclass ColorPaletteHeader extends React.PureComponent {\n  static propTypes = {\n    style: PropTypes.object.isRequired,\n    colorPalette: PropTypes.oneOf(['TextColor', 'StrokeColor', 'FillColor']),\n    colorMapKey: PropTypes.string.isRequired,\n    setActivePalette: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n    isTextColorPaletteDisabled: PropTypes.bool,\n    isFillColorPaletteDisabled: PropTypes.bool,\n    isBorderColorPaletteDisabled: PropTypes.bool,\n  }\n\n  setActivePalette = (newPalette) => {\n    const { setActivePalette, colorMapKey } = this.props;\n\n    setActivePalette(colorMapKey, newPalette);\n  }\n\n  render() {\n    const {\n      t,\n      colorPalette,\n      colorMapKey,\n      toolName,\n      disableSeparator\n    } = this.props;\n    const { styleTabs } = getDataWithKey(colorMapKey);\n\n    if (toolName && (toolName.includes('Line') || toolName.includes('Arrow') || toolName.includes('Polyline'))) {\n      return (\n        <div className=\"palette-options\">\n          {['StrokeColor', 'FillColor'].map((palette, i) => <React.Fragment key={i}>\n            <Tooltip content={`option.annotationColor.${palette}`}>\n              <div\n                className={classNames({\n                  'palette-options-button': true,\n                  active: colorPalette === palette,\n                  disabled: palette === 'FillColor',\n                })}\n              >\n                {t(`option.annotationColor.${palette}`)}\n              </div>\n            </Tooltip>\n            {i < 1 && <div className=\"palette-options-divider\" />}\n          </React.Fragment>,\n          )}\n        </div>\n      );\n    }\n\n\n    if (styleTabs.length < 2) {\n      if (disableSeparator) {\n        return null;\n      }\n      return <HorizontalDivider/>;\n    }\n\n\n    return (\n      <div className=\"palette-options\">\n        {styleTabs.map((pallette, i) => <React.Fragment key={i}>\n          <Tooltip content={`option.annotationColor.${pallette}`}>\n            <button\n              className={classNames({\n                'palette-options-button': true,\n                active: colorPalette === pallette,\n              })}\n              onClick={() => this.setActivePalette(pallette)}\n            >\n              {t(`option.annotationColor.${pallette}`)}\n            </button>\n          </Tooltip>\n          {i < styleTabs.length - 1 && <div className=\"palette-options-divider\" />}\n        </React.Fragment>,\n        )}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  // TODO: Actually disable these elements\n  // isTextColorPaletteDisabled, isBorderColorPaletteDisabled, isFillColorPaletteDisabled\n  // TextColor, StrokeColor, FillColor\n  isTextColorPaletteDisabled: selectors.isElementDisabled(state, 'textColorPalette'),\n  isFillColorPaletteDisabled: selectors.isElementDisabled(state, 'fillColorPalette'),\n  isBorderColorPaletteDisabled: selectors.isElementDisabled(state, 'borderColorPalette'),\n});\n\nconst mapDispatchToProps = {\n  setActivePalette: actions.setActivePalette,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation(null, { wait: false })(ColorPaletteHeader));\n","import ColorPaletteHeader from './ColorPaletteHeader';\n\nexport default ColorPaletteHeader;","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Dropdown from 'components/Dropdown';\nimport './StyleOption.scss';\nimport { defaultStrokeStyles, cloudyStrokeStyle } from 'constants/strokeStyleIcons';\n\n\nconst withCloudyStyle = defaultStrokeStyles.concat(cloudyStrokeStyle);\n\nfunction StyleOption(props) {\n  const lineEndingDropdownWidth = 60;\n  const { onLineStyleChange, properties, isEllipse } = props;\n  if (!properties || !properties.hasOwnProperty('StrokeStyle')) {\n    // if there is no StrokeStyle property, there is no point rendering <Dropdown>\n    return null;\n  }\n  const [selectedMiddleLineStyle, setSelectedMiddleLineStyle] = useState(properties.StrokeStyle);\n  const [t] = useTranslation();\n\n  function onClickMiddleLineStyle(key) {\n    setSelectedMiddleLineStyle(key);\n    onLineStyleChange('middle', key);\n  }\n\n  return (\n    <div className=\"StyleOption\">\n      <div className=\"styles-container\">\n        <label className=\"styles-title\" htmlFor=\"styleOptions\">{t('option.styleOption.style')}</label>\n        <Dropdown\n          dataElement=\"borderStylePicker\"\n          images={ (isEllipse) ? defaultStrokeStyles : withCloudyStyle }\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickMiddleLineStyle}\n          currentSelectionKey={selectedMiddleLineStyle}\n        />\n      </div>\n    </div>\n  );\n}\n\nStyleOption.propTypes = {\n  borderStyle: PropTypes.string,\n  isEllipse: PropTypes.bool,\n  properties: PropTypes.object,\n  onLineStyleChange: PropTypes.func.isRequired,\n};\n\nexport default StyleOption;\n","import StyleOption from './StyleOption';\n\nexport default StyleOption;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Dropdown from 'components/Dropdown';\nimport { defaultStartLineStyles, defaultStrokeStyles, defaultEndLineStyles } from 'constants/strokeStyleIcons';\n\nimport './LineStyleOptions.scss';\n\nconst middleLineStyles = defaultStrokeStyles;\n\nfunction LineStyleOptions({ properties, onLineStyleChange }) {\n  const [t] = useTranslation();\n  const [selectedStartLineStyle, setSelectedStartLineStyle] = useState(properties.StartLineStyle);\n  const [selectedEndLineStyle, setSelectedEndLineStyle] = useState(properties.EndLineStyle);\n  const [selectedMiddleLineStyle, setSelectedMiddleLineStyle] = useState(properties.StrokeStyle);\n\n  function onClickStartLineStyle(key) {\n    setSelectedStartLineStyle(key);\n    onLineStyleChange('start', key);\n  }\n\n  function onClickMiddleLineStyle(key) {\n    setSelectedMiddleLineStyle(key);\n    onLineStyleChange('middle', key);\n  }\n\n  function onClickEndLineStyle(key) {\n    setSelectedEndLineStyle(key);\n    onLineStyleChange('end', key);\n  }\n\n  const lineEndingDropdownWidth = 62;\n\n  return (\n    <div className=\"LineStyleOptions\">\n      <div className=\"LayoutTitle\">{t('option.lineStyleOptions.title')}</div>\n      <div className=\"StyleContainer\">\n        <Dropdown\n          dataElement=\"startLineStyleDropdown\"\n          images={defaultStartLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickStartLineStyle}\n          currentSelectionKey={selectedStartLineStyle}\n        />\n\n        <Dropdown\n          dataElement=\"middleLineStyleDropdown\"\n          images={middleLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickMiddleLineStyle}\n          currentSelectionKey={selectedMiddleLineStyle}\n        />\n\n        <Dropdown\n          dataElement=\"endLineStyleDropdown\"\n          images={defaultEndLineStyles}\n          width={lineEndingDropdownWidth}\n          onClickItem={onClickEndLineStyle}\n          currentSelectionKey={selectedEndLineStyle}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default LineStyleOptions;","import LineStyleOptions from './LineStyleOptions';\n\nexport default LineStyleOptions;","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport i18next from 'i18next';\n\nimport ColorPaletteHeader from 'components/ColorPaletteHeader';\nimport ColorPalette from 'components/ColorPalette';\nimport ColorPalettePicker from 'components/ColorPalettePicker';\nimport Slider from 'components/Slider';\nimport StyleOption from 'components/StyleOption';\nimport Icon from 'components/Icon';\nimport TextStylePicker from 'components/TextStylePicker';\nimport LabelTextEditor from 'components/LabelTextEditor';\nimport LineStyleOptions from 'components/LineStyleOptions';\nimport Choice from 'components/Choice/Choice';\n\nimport { circleRadius } from 'constants/slider';\nimport DataElements from 'constants/dataElement';\nimport { workerTypes } from 'constants/types';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport pickBy from 'lodash/pickBy';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport classNames from 'classnames';\nimport { isMobile } from 'helpers/device';\nimport getMeasurementTools from 'helpers/getMeasurementTools';\nimport core from 'core';\n\nimport './StylePopup.scss';\n\nclass StylePopup extends React.PureComponent {\n  static propTypes = {\n    style: PropTypes.object.isRequired,\n    onStyleChange: PropTypes.func.isRequired,\n    onPropertyChange: PropTypes.func.isRequired,\n    onSliderChange: PropTypes.func.isRequired,\n    onRichTextStyleChange: PropTypes.func,\n    onLineStyleChange: PropTypes.func,\n    isFreeText: PropTypes.bool,\n    onFreeTextSizeToggle: PropTypes.func,\n    isFreeTextAutoSize: PropTypes.bool,\n    isEllipse: PropTypes.bool,\n    isMeasure: PropTypes.bool,\n    colorMapKey: PropTypes.string.isRequired,\n    currentStyleTab: PropTypes.oneOf(['TextColor', 'StrokeColor', 'FillColor']),\n    isColorPaletteDisabled: PropTypes.bool,\n    isOpacitySliderDisabled: PropTypes.bool,\n    isStrokeThicknessSliderDisabled: PropTypes.bool,\n    isFontSizeSliderDisabled: PropTypes.bool,\n    isStyleOptionDisabled: PropTypes.bool,\n    isStylePopupDisabled: PropTypes.bool,\n    hideSnapModeCheckbox: PropTypes.bool,\n    closeElement: PropTypes.func,\n    openElement: PropTypes.func,\n    onSnapModeChange: PropTypes.func,\n    properties: PropTypes.object,\n    isRedaction: PropTypes.bool,\n    fonts: PropTypes.array,\n    isSnapModeEnabled: PropTypes.bool,\n    isInFormBuilderAndNotFreeText: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      document: core.getDocument(),\n      documentType: core.getDocument()?.getType(),\n    };\n  }\n\n  componentDidMount() {\n    core.addEventListener('documentLoaded', this.onDocumentLoaded);\n  }\n\n  componentWillUnmount() {\n    core.removeEventListener('documentLoaded', this.onDocumentLoaded);\n  }\n\n  onDocumentLoaded = () => {\n    this.setState({\n      document: core.getDocument(),\n      documentType: core.getDocument()?.getType(),\n    });\n  };\n\n  onSnappingChange = (event) => {\n    if (!core.isFullPDFEnabled()) {\n      return;\n    }\n\n    const enableSnapping = event.target.checked;\n    const mode = enableSnapping\n      ? core.getDocumentViewer().SnapMode.e_DefaultSnapMode | core.getDocumentViewer().SnapMode.POINT_ON_LINE\n      : null;\n    const measurementTools = getMeasurementTools();\n\n    measurementTools.forEach((tool) => {\n      tool.setSnapMode?.(mode);\n    });\n    if (this.props.onSnapModeChange) {\n      this.props.onSnapModeChange(enableSnapping);\n    }\n  };\n\n  renderSliders = () => {\n    const {\n      style: { Opacity, StrokeThickness, FontSize },\n      onStyleChange,\n      onSliderChange,\n      isFreeText,\n      isMeasure = false,\n      // TODO: Actually disable these elements\n      isOpacitySliderDisabled,\n      isStrokeThicknessSliderDisabled,\n      isFontSizeSliderDisabled,\n      currentStyleTab,\n    } = this.props;\n    const lineStart = circleRadius;\n    const sliderProps = {};\n    if (!isOpacitySliderDisabled) {\n      sliderProps.Opacity = {\n        property: 'Opacity',\n        displayProperty: 'opacity',\n        value: Opacity,\n        getDisplayValue: (Opacity) => `${Math.round(Opacity * 100)}%`,\n        dataElement: DataElements.OPACITY_SLIDER,\n        getCirclePosition: (lineLength, Opacity) => Opacity * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: (circlePosition) => circlePosition,\n        withInputField: true,\n        inputFieldType: 'number',\n        min: 0,\n        max: 100,\n        step: 1,\n        getLocalValue: (opacity) => parseInt(opacity) / 100,\n      };\n    }\n    if (!isStrokeThicknessSliderDisabled) {\n      sliderProps.StrokeThickness = {\n        property: 'StrokeThickness',\n        displayProperty: 'thickness',\n        value: StrokeThickness,\n        getDisplayValue: (strokeThickness) => {\n          const placeOfDecimal =\n            Math.floor(strokeThickness) !== strokeThickness ? strokeThickness.toString().split('.')[1].length || 0 : 0;\n          if (StrokeThickness === 0 || (StrokeThickness >= 1 && (placeOfDecimal > 2 || placeOfDecimal === 0))) {\n            return `${Math.round(strokeThickness)}pt`;\n          }\n          return `${parseFloat(strokeThickness).toFixed(2)}pt`;\n        },\n        dataElement: DataElements.STROKE_THICKNESS_SLIDER,\n        getCirclePosition: (lineLength, strokeThickness) => (strokeThickness / 20) * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: (circlePosition) => {\n          if (circlePosition >= 1 / 20) {\n            return Math.round(circlePosition * 20);\n          }\n          if (circlePosition >= 0.75 / 20 && circlePosition < 1 / 20) {\n            return 0.75;\n          }\n          if (circlePosition >= 0.5 / 20 && circlePosition < 0.75 / 20) {\n            return 0.5;\n          }\n          if (circlePosition >= 0.25 / 20 && circlePosition < 0.5 / 20) {\n            return 0.25;\n          }\n          if (circlePosition >= 0.08 / 20 && circlePosition < 0.25 / 20) {\n            return 0.1;\n          }\n          return isFreeText ? 0 : 0.1;\n        },\n        withInputField: true,\n        inputFieldType: 'number',\n        min: isFreeText ? 0 : 0.1,\n        max: 20,\n        step: 1,\n        getLocalValue: (strokeThickness) => parseFloat(strokeThickness).toFixed(2),\n      };\n    }\n    if (!isFontSizeSliderDisabled) {\n      sliderProps.FontSize = {\n        property: 'FontSize',\n        displayProperty: 'text',\n        value: FontSize,\n        getDisplayValue: (FontSize) => `${Math.round(parseInt(FontSize, 10))}pt`,\n        dataElement: DataElements.FONT_SIZE_SLIDER,\n        getCirclePosition: (lineLength, FontSize) => ((parseInt(FontSize, 10) - 5) / 40) * lineLength + lineStart,\n        convertRelativeCirclePositionToValue: (circlePosition) => `${circlePosition * 40 + 5}pt`,\n        min: 5,\n        max: 45,\n        step: 1,\n        withInputField: true,\n        inputFieldType: 'number',\n        getLocalValue: (FontSize) => `${parseFloat(FontSize).toFixed(2)}pt`,\n      };\n    }\n\n    // default sliders\n    let sliders = { Opacity, StrokeThickness, FontSize };\n    if (currentStyleTab === 'TextColor') {\n      sliders = { Opacity, FontSize };\n    } else if (currentStyleTab === 'StrokeColor') {\n      sliders = { Opacity, StrokeThickness };\n    } else if (currentStyleTab === 'FillColor') {\n      sliders = { Opacity };\n    }\n\n    if (isMeasure) {\n      sliders.FontSize = FontSize;\n    }\n\n    if (isOpacitySliderDisabled) {\n      delete sliders.Opacity;\n    }\n\n    if (\n      isStrokeThicknessSliderDisabled ||\n      this.props.colorMapKey === 'markInsertText' ||\n      this.props.colorMapKey === 'markReplaceText'\n    ) {\n      delete sliders.StrokeThickness;\n    }\n\n    if (isFontSizeSliderDisabled) {\n      delete sliders.FontSize;\n    }\n\n    // we still want to render a slider if the value is 0\n    sliders = pickBy(sliders, (slider) => slider !== null && slider !== undefined);\n\n    const sliderComponents = Object.keys(sliders).map((key) => {\n      const props = sliderProps[key];\n\n      return <Slider {...props} key={key} onStyleChange={onStyleChange} onSliderChange={onSliderChange} />;\n    });\n\n    return (\n      <React.Fragment>\n        {sliderComponents.length > 0 && <div className=\"sliders-container\">{sliderComponents}</div>}\n      </React.Fragment>\n    );\n  };\n\n  render() {\n    const {\n      toolName,\n      isColorPaletteDisabled,\n      currentStyleTab,\n      style,\n      colorMapKey,\n      onStyleChange,\n      isStyleOptionDisabled,\n      disableSeparator,\n      hideSnapModeCheckbox,\n      isFreeText,\n      isEllipse,\n      isTextStyleContainerActive,\n      isColorsContainerActive,\n      isLabelTextContainerActive,\n      isLabelTextContainerDisabled,\n      openElement,\n      closeElement,\n      properties,\n      onPropertyChange,\n      onRichTextStyleChange,\n      isRedaction,\n      fonts,\n      showLineStyleOptions,\n      onLineStyleChange,\n      isSnapModeEnabled,\n      isInFormBuilderAndNotFreeText,\n      onFreeTextSizeToggle,\n      isFreeTextAutoSize\n    } = this.props;\n\n    // We do not have sliders to show up for redaction annots\n    if (isRedaction) {\n      style.Opacity = null;\n      style.StrokeThickness = null;\n    }\n\n    const { Scale, Precision, Style } = style;\n\n    const textMenuItems = {\n      [DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER]: isTextStyleContainerActive,\n      [DataElements.STYLE_POPUP_COLORS_CONTAINER]: isColorsContainerActive,\n      [DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER]: isLabelTextContainerActive,\n    };\n\n    const openTextMenuItem = (dataElement) => {\n      if (!textMenuItems[dataElement]) {\n        openElement(dataElement);\n        if (isMobile()) {\n          for (const element in textMenuItems) {\n            if (element !== dataElement) {\n              closeElement(element);\n            }\n          }\n        }\n      } else {\n        closeElement(dataElement);\n      }\n    };\n    const openLabelText = () => openTextMenuItem(DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER);\n    const openTextStyle = () => openTextMenuItem(DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER);\n    const openColors = () => openTextMenuItem(DataElements.STYLE_POPUP_COLORS_CONTAINER);\n\n    const className = classNames({\n      Popup: true,\n      StylePopup: true,\n    });\n\n    const showTextStyle = currentStyleTab === 'TextColor' && (isFreeText || isRedaction);\n    const showColorsMenu = currentStyleTab === 'TextColor' && (isFreeText || isRedaction);\n    const showColorPicker = !(showColorsMenu && !isColorsContainerActive);\n    const showLabelText = currentStyleTab === 'TextColor' && isRedaction;\n    const showSliders = isColorPaletteDisabled || showColorPicker;\n    const hideStylePicker = currentStyleTab !== 'StrokeColor' && (isFreeText || isRedaction);\n    const wasDocumentSwappedToClientSide =\n      this.state.documentType === workerTypes.WEBVIEWER_SERVER && !this.state.document.isWebViewerServerDocument();\n    const isEligibleDocumentForSnapping = this.state.documentType?.toLowerCase() === workerTypes.PDF || wasDocumentSwappedToClientSide;\n\n    const showMeasurementSnappingOption = Scale && Precision && isEligibleDocumentForSnapping && !hideSnapModeCheckbox;\n\n    return (\n      <div className={className} data-element=\"stylePopup\">\n        {currentStyleTab && !isColorPaletteDisabled && (\n          <>\n            <ColorPaletteHeader\n              colorPalette={currentStyleTab}\n              colorMapKey={colorMapKey}\n              style={style}\n              toolName={toolName}\n              disableSeparator={disableSeparator}\n            />\n            {showLabelText && !isLabelTextContainerDisabled && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openLabelText} onTouchStart={openLabelText} role={'toolbar'}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.labelText')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isLabelTextContainerActive ? 'up' : 'down'}`} />\n                </div>\n                {isLabelTextContainerActive && (\n                  <div className=\"menu-items\">\n                    <LabelTextEditor properties={properties} onPropertyChange={onPropertyChange} />\n                  </div>\n                )}\n                <div className=\"divider\" />\n              </>\n            )}\n            {showTextStyle && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openTextStyle} onTouchStart={openTextStyle} role={'toolbar'}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.textStyle')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isTextStyleContainerActive ? 'up' : 'down'}`} />\n                </div>\n                {isTextStyleContainerActive && (\n                  <div className=\"menu-items\">\n                    <TextStylePicker\n                      fonts={fonts}\n                      onPropertyChange={onPropertyChange}\n                      onRichTextStyleChange={onRichTextStyleChange}\n                      properties={properties}\n                      isRedaction={isRedaction}\n                      isFreeText={isFreeText}\n                      onFreeTextSizeToggle={onFreeTextSizeToggle}\n                      isFreeTextAutoSize={isFreeTextAutoSize}\n                    />\n                  </div>\n                )}\n                <div className=\"divider\" />\n              </>\n            )}\n            {showColorsMenu && (\n              <>\n                <div className=\"collapsible-menu\" onClick={openColors} onTouchStart={openColors} role={'toolbar'}>\n                  <div className=\"menu-title\">\n                    {i18next.t('option.stylePopup.colors')}\n                  </div>\n                  <Icon glyph={`icon-chevron-${isColorsContainerActive ? 'up' : 'down'}`} />\n                </div>\n              </>\n            )}\n            {showColorPicker && (\n              <>\n                <ColorPalette\n                  color={style[currentStyleTab]}\n                  property={currentStyleTab}\n                  onStyleChange={onStyleChange}\n                  colorMapKey={colorMapKey}\n                  useMobileMinMaxWidth\n                />\n                <ColorPalettePicker\n                  color={style[currentStyleTab]}\n                  property={currentStyleTab}\n                  onStyleChange={onStyleChange}\n                  enableEdit\n                />\n              </>\n            )}\n          </>\n        )}\n        {showSliders && this.renderSliders()}\n        {showMeasurementSnappingOption && (\n          <div className=\"snapping-option\">\n            <Choice\n              dataElement=\"measurementSnappingOption\"\n              id=\"measurement-snapping\"\n              type=\"checkbox\"\n              label={i18next.t('option.shared.enableSnapping')}\n              checked={isSnapModeEnabled}\n              onChange={this.onSnappingChange}\n            />\n          </div>\n        )}\n        {showLineStyleOptions && <LineStyleOptions properties={properties} onLineStyleChange={onLineStyleChange} />}\n        {\n          !isStyleOptionDisabled &&\n          !showLineStyleOptions &&\n          !hideStylePicker &&\n          currentStyleTab === 'StrokeColor' &&\n          !isInFormBuilderAndNotFreeText && (\n            <StyleOption\n              borderStyle={Style}\n              properties={properties}\n              isEllipse={isEllipse}\n              onLineStyleChange={onLineStyleChange}\n            />\n          )}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state, { colorMapKey, isFreeText, isRedaction }) => ({\n  currentStyleTab: selectors.getcurrentStyleTab(state, colorMapKey),\n  isStylePopupDisabled: selectors.isElementDisabled(state, DataElements.STYLE_POPUP),\n  isColorPaletteDisabled: selectors.isElementDisabled(state, DataElements.COLOR_PALETTE),\n  isOpacitySliderDisabled: selectors.isElementDisabled(state, DataElements.OPACITY_SLIDER),\n  isStrokeThicknessSliderDisabled: selectors.isElementDisabled(state, DataElements.STROKE_THICKNESS_SLIDER),\n  isFontSizeSliderDisabled:\n    selectors.isElementDisabled(state, DataElements.FONT_SIZE_SLIDER) || isFreeText || isRedaction,\n  isStyleOptionDisabled: selectors.isElementDisabled(state, DataElements.STYLE_OPTION),\n  isTextStyleContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER),\n  isColorsContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_COLORS_CONTAINER),\n  isLabelTextContainerActive: selectors.isElementOpen(state, DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER),\n  isLabelTextContainerDisabled: selectors.isElementDisabled(state, DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER),\n  fonts: selectors.getFonts(state),\n  isSnapModeEnabled: selectors.isSnapModeEnabled(state),\n  isInFormBuilderAndNotFreeText: core.getFormFieldCreationManager().isInFormFieldCreationMode() && !isFreeText,\n});\n\nconst mapDispatchToProps = {\n  closeElement: actions.closeElement,\n  openElement: actions.openElement,\n  onSnapModeChange: actions.setEnableSnapMode,\n};\nconst ConnectedStylePopup = connect(mapStateToProps, mapDispatchToProps)(StylePopup);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedStylePopup {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import connectedComponent from './StylePopup';\n\nexport default connectedComponent;","\n// Function parses the \"30pt\" string to array [30, 'pt']\nfunction parseFontSize(fontSize) {\n  if (typeof fontSize === 'number') {\n    return [fontSize, 'pt'];\n  }\n  if (fontSize && !Array.isArray(fontSize)) {\n    const result = fontSize?.match(/([0-9.]+)|([a-z]+)/gi);\n    return [parseFloat(result[0]), result[1]];\n  }\n  return [undefined, 'pt'];\n}\n\nexport default parseFontSize;","import React, { useState, useEffect } from 'react';\nimport './TextStylePicker.scss';\nimport Dropdown from 'components/Dropdown';\nimport FontSizeDropdown from 'components/FontSizeDropdown';\nimport Button from 'components/Button';\nimport Choice from 'components/Choice';\nimport PropTypes from 'prop-types';\nimport i18next from 'i18next';\nimport parseFontSize from 'helpers/parseFontSize';\n\n\nconst TextStylePicker = ({\n  onPropertyChange,\n  properties,\n  onRichTextStyleChange,\n  isRedaction,\n  isContentEditing,\n  fonts,\n  stateless = false,\n  textEditFormat = {},\n  textEditHandleFormatChange = () => { },\n  isFreeText = false,\n  onFreeTextSizeToggle,\n  isFreeTextAutoSize,\n  isRichTextEditMode,\n  isDisabled = false,\n}) => {\n  // List is not complete\n  const supportedFonts = fonts?.length ? fonts : ['Helvetica', 'Times New Roman'];\n  const font = isRichTextEditMode ? properties?.quillFont : properties?.Font;\n  const changeFont = (font) => {\n    if (isContentEditing || isRedaction) {\n      onPropertyChange('Font', font);\n      return;\n    }\n    selectQuillFont(font);\n    if (!isRichTextEditMode) {\n      onPropertyChange('Font', font);\n    }\n  };\n\n  useEffect(() => {\n    setItalic(properties?.italic || false);\n    setBold(properties?.bold || false);\n    setUnderline(properties?.underline || false);\n    setStrikeout(properties?.strikeout || false);\n    setQuillFont(properties?.quillFont || font);\n    setQuillFontSize(properties?.quillFontSize || fontSize);\n  }, [properties]);\n\n  /**\n   * @ignore\n   * We determine the font size by first checking its an AutoSize Font and using the Calculated Font Size if it is. Otherwise\n   * we use the FontSize property. In the case where no properties exist we default to 12pt.\n   * @param {object} properties\n   * @returns {string}\n   */\n  const getFontSize = (properties) => {\n    const defaultFontSize = isFreeTextAutoSize || properties?.FontSize === '0pt' ? properties?.calculatedFontSize : properties?.FontSize;\n    if (isRichTextEditMode) {\n      return properties.quillFontSize;\n    }\n    return defaultFontSize || undefined;\n  };\n\n  const fontSize = getFontSize(properties);\n\n  const changeFontSize = (fontSize) => {\n    if (isContentEditing || isRedaction) {\n      onPropertyChange('FontSize', fontSize);\n      return;\n    }\n    selectQuillFontSize(fontSize);\n    if (!isRichTextEditMode) {\n      onPropertyChange('FontSize', fontSize);\n    }\n  };\n\n  const defaultBold = properties?.bold || false;\n  const [bold, setBold] = useState(defaultBold);\n  const toggleBold = () => {\n    onRichTextStyleChange('font-weight', !bold ? 'bold' : '');\n    setBold(!bold);\n  };\n  const selectQuillFont = (val) => {\n    onRichTextStyleChange('font-family', val);\n    setQuillFont(val);\n  };\n  const selectQuillFontSize = (val) => {\n    onRichTextStyleChange('font-size', val);\n    setQuillFontSize(val);\n  };\n\n  const defaultItalic = properties?.italic || false;\n  const defaultQuillFont = properties?.quillFont || font;\n  const [quillFont, setQuillFont] = useState(defaultQuillFont);\n  const [quillFontSize, setQuillFontSize] = useState(fontSize);\n  const [italic, setItalic] = useState(defaultItalic);\n  const toggleItalic = () => {\n    onRichTextStyleChange('font-style', !italic ? 'italic' : '');\n    setItalic(!italic);\n  };\n\n  const defaultUnderline = properties?.underline || false;\n  const defaultStrikeout = properties?.strikeout || false;\n  const [underline, setUnderline] = useState(defaultUnderline);\n  const [strikeout, setStrikeout] = useState(defaultStrikeout);\n  const toggleUnderline = () => {\n    const newUnderline = !underline;\n    if (newUnderline) {\n      onRichTextStyleChange('underline', true);\n    } else {\n      onRichTextStyleChange('underline', false);\n    }\n    setUnderline(newUnderline);\n  };\n  const toggleStrikeout = () => {\n    const newStrikeout = !strikeout;\n    if (newStrikeout) {\n      onRichTextStyleChange('line-through', true);\n    } else {\n      onRichTextStyleChange('line-through', false);\n    }\n    setStrikeout(newStrikeout);\n  };\n\n  const textAlign = properties?.TextAlign || 'left';\n  const changeXAlign = (xAlign) => {\n    onPropertyChange('TextAlign', xAlign);\n  };\n\n  const textVerticalAlign = properties?.TextVerticalAlign || 'top';\n  const changeYAlign = (yAlign) => {\n    onPropertyChange('TextVerticalAlign', yAlign);\n  };\n\n  const [error, setError] = useState('');\n  const fontSizeResult = parseFontSize(fontSize);\n  const fontSizePropsToUpdate = fontSizeResult[0];\n\n  const defaultConfig = {\n    quillFont: {\n      dataElement: 'freeTextQuillFontSelection',\n      onClick: selectQuillFont,\n      isActive: stateless ? defaultQuillFont : quillFont,\n    },\n    quillFontSize: {\n      dataElement: 'freeTextQuillFontSizeSelection',\n      onClick: selectQuillFontSize,\n      isActive: stateless ? fontSize : quillFontSize,\n    },\n    bold: {\n      dataElement: 'freeTextBoldButton',\n      onClick: toggleBold,\n      isActive: stateless ? defaultBold : bold,\n    },\n    italic: {\n      dataElement: 'freeTextItalicButton',\n      onClick: toggleItalic,\n      isActive: stateless ? defaultItalic : italic,\n    },\n    underline: {\n      dataElement: 'freeTextUnderlineButton',\n      onClick: toggleUnderline,\n      isActive: stateless ? defaultUnderline : underline,\n    },\n    strikeout: {\n      dataElement: 'freeTextStrikeoutButton',\n      onClick: toggleStrikeout,\n      isActive: stateless ? defaultStrikeout : strikeout,\n    },\n    leftAlign: {\n      dataElement: 'freeTextAlignLeftButton',\n      isActive: textAlign === 'left',\n      alignValue: 'left'\n    },\n    centerAlign: {\n      dataElement: 'freeTextAlignCenterButton',\n      isActive: textAlign === 'center',\n      alignValue: 'center'\n    },\n    rightAlign: {\n      dataElement: 'freeTextAlignRightButton',\n      isActive: textAlign === 'right',\n      alignValue: 'right'\n    },\n  };\n\n  const contentEditConfig = {\n    bold: {\n      dataElement: 'richTextBoldButton',\n      onClick: textEditHandleFormatChange('bold'),\n      isActive: textEditFormat?.bold,\n    },\n    italic: {\n      dataElement: 'richTextItalicButton',\n      onClick: textEditHandleFormatChange('italic'),\n      isActive: textEditFormat?.italic,\n    },\n    underline: {\n      dataElement: 'richTextUnderlineButton',\n      onClick: textEditHandleFormatChange('underline'),\n      isActive: textEditFormat?.underline,\n    },\n    strikeout: {\n      dataElement: 'richTextStrikeoutButton',\n      onClick: textEditHandleFormatChange('strike'),\n      isActive: textEditFormat?.strike,\n    },\n    leftAlign: {\n      dataElement: 'richTextAlignLeftButton',\n      isActive: textEditFormat.textAlign === 'Start',\n      alignValue: 'Start'\n    },\n    centerAlign: {\n      dataElement: 'richTextAlignCenterButton',\n      isActive: textEditFormat.textAlign === 'Center',\n      alignValue: 'Center'\n    },\n    rightAlign: {\n      dataElement: 'richTextAlignRightButton',\n      isActive: textEditFormat.textAlign === 'End',\n      alignValue: 'End'\n    },\n  };\n\n  const currentConfig = isContentEditing ? contentEditConfig : defaultConfig;\n\n  return (\n    <>\n      <div className={`container-fluid ${error && 'error'}`}>\n        <div className=\"container-dropdown\">\n          <Dropdown\n            className={'border-color'}\n            items={supportedFonts}\n            onClickItem={changeFont}\n            currentSelectionKey={defaultQuillFont}\n            getCustomItemStyle={(item) => ({ fontFamily: item })}\n            maxHeight={200}\n            placeholder={isContentEditing ? 'Font' : undefined}\n            disableFocusing={true}\n            disabled={isDisabled}\n          />\n          <FontSizeDropdown\n            fontSize={fontSizePropsToUpdate}\n            key={fontSizePropsToUpdate}\n            fontUnit={fontSizeResult[1]}\n            onFontSizeChange={changeFontSize}\n            onError={setError}\n            applyOnlyOnBlur={isContentEditing}\n            disabled={isFreeTextAutoSize || isDisabled}\n            displayEmpty={isRichTextEditMode && !properties?.quillFontSize || fontSizePropsToUpdate === undefined}\n          />\n        </div>\n        {error && <div className=\"error-text\">{error}</div>}\n      </div>\n      <div className=\"icon-grid\">\n        {!isRedaction && (\n          <div className=\"row rich-text-format\">\n            <Button\n              dataElement={currentConfig.bold.dataElement}\n              onClick={currentConfig.bold.onClick}\n              img=\"icon-menu-bold\"\n              title=\"option.richText.bold\"\n              isActive={currentConfig.bold.isActive}\n              disabled={isDisabled}\n            />\n            <Button\n              dataElement={currentConfig.italic.dataElement}\n              onClick={currentConfig.italic.onClick}\n              img=\"icon-menu-italic\"\n              title=\"option.richText.italic\"\n              isActive={currentConfig.italic.isActive}\n              disabled={isDisabled}\n            />\n            <Button\n              dataElement={currentConfig.underline.dataElement}\n              onClick={currentConfig.underline.onClick}\n              img=\"icon-menu-text-underline\"\n              title=\"option.richText.underline\"\n              isActive={currentConfig.underline.isActive}\n              disabled={isDisabled}\n            />\n            <Button\n              dataElement={currentConfig.strikeout.dataElement}\n              onClick={currentConfig.strikeout.onClick}\n              img=\"icon-tool-text-manipulation-strikethrough\"\n              title=\"option.richText.strikeout\"\n              isActive={currentConfig.strikeout.isActive}\n              disabled={isDisabled}\n            />\n          </div>\n        )}\n        <div className={`row text-horizontal-alignment ${isRedaction ? 'isRedaction' : ''}`}>\n          <Button\n            dataElement={currentConfig.leftAlign.dataElement}\n            onClick={() => changeXAlign(currentConfig.leftAlign.alignValue)}\n            img=\"icon-menu-align-left\"\n            title=\"option.richText.alignLeft\"\n            isActive={currentConfig.leftAlign.isActive}\n            disabled={isDisabled}\n          />\n          <Button\n            dataElement={currentConfig.centerAlign.dataElement}\n            onClick={() => changeXAlign(currentConfig.centerAlign.alignValue)}\n            img=\"icon-menu-align-centre\"\n            title=\"option.richText.alignCenter\"\n            isActive={currentConfig.centerAlign.isActive}\n            disabled={isDisabled}\n          />\n          <Button\n            dataElement={currentConfig.rightAlign.dataElement}\n            onClick={() => changeXAlign(currentConfig.rightAlign.alignValue)}\n            img=\"icon-menu-align-right\"\n            title=\"option.richText.alignRight\"\n            isActive={currentConfig.rightAlign.isActive}\n            disabled={isDisabled}\n          />\n          {!isRedaction && !isContentEditing && (\n            <Button\n              dataElement=\"freeTextJustifyCenterButton\"\n              onClick={() => changeXAlign('justify')}\n              img=\"icon-text-justify-center\"\n              title=\"option.richText.justifyCenter\"\n              isActive={textAlign === 'justify'}\n              disabled={isDisabled}\n            />\n          )}\n        </div>\n        {!isRedaction && !isContentEditing && (\n          <div className=\"row text-vertical-alignment\">\n            <Button\n              onClick={() => changeYAlign('top')}\n              img=\"icon-arrow-to-top\"\n              title=\"option.richText.alignTop\"\n              isActive={textVerticalAlign === 'top'}\n              disabled={isFreeTextAutoSize}\n            />\n            <Button\n              onClick={() => changeYAlign('center')}\n              img=\"icon-arrow-to-middle\"\n              title=\"option.richText.alignMiddle\"\n              isActive={textVerticalAlign === 'center'}\n              disabled={isFreeTextAutoSize}\n            />\n            <Button\n              onClick={() => changeYAlign('bottom')}\n              img=\"icon-arrow-to-bottom\"\n              title=\"option.richText.alignBottom\"\n              isActive={textVerticalAlign === 'bottom'}\n              disabled={isFreeTextAutoSize}\n            />\n          </div>\n        )}{isFreeText && (<div className=\"row text-vertical-alignment auto-size-checkbox\">\n          <Choice\n            id=\"free-text-autosize-font-button\"\n            label={i18next.t('option.freeTextOption.autoSizeFont')}\n            aria-label={i18next.t('option.freeTextOption.autoSizeFont')}\n            checked={isFreeTextAutoSize}\n            onChange={onFreeTextSizeToggle}\n          />\n        </div>)}\n      </div>\n    </>\n  );\n};\n\nTextStylePicker.propTypes = {\n  onPropertyChange: PropTypes.func.isRequired,\n  properties: PropTypes.object,\n  textEditFormat: PropTypes.object,\n  textEditHandleFormatChange: PropTypes.func,\n  isRedaction: PropTypes.bool,\n  isContentEditing: PropTypes.bool,\n  isFreeText: PropTypes.bool,\n  isFreeTextAutoSize: PropTypes.bool,\n  onFreeTextSizeToggle: PropTypes.func,\n  isRichTextEditMode: PropTypes.bool,\n  isDisabled: PropTypes.bool,\n};\n\nexport default TextStylePicker;\n","import TextStylePicker from './TextStylePicker';\n\nexport default TextStylePicker;","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n  return passed;\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var uncurriedNativeMethod = uncurryThis(nativeMethod);\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n        }\n        return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array<any> | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n  for (var i = 0, length = array.length; i < length; i++) {\n    if (callback.apply(callback, [array[i], i, array])) return array[i];\n  }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  // $FlowIgnore[method-unbinding]\n  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean %checks*/\n{\n  return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n  return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n)\n/*: ?Error*/\n{\n  if (props[propName]) {\n    return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n  }\n}","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n  return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n","'use strict';\n\nif (typeof process === 'undefined' ||\n    !process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = { nextTick: nextTick };\n} else {\n  module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\n\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n  constructor(defaults) {\n    if (\n      defaults &&\n      typeof defaults.value !== 'undefined' &&\n      typeof defaults.value !== 'string'\n    ) {\n      defaults = { ...defaults, value: String(defaults.value) }\n    }\n    super(defaults)\n    this.type = 'decl'\n  }\n\n  get variable() {\n    return this.prop.startsWith('--') || this.prop[0] === '$'\n  }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\n\nfunction cloneNode(obj, parent) {\n  let cloned = new obj.constructor()\n\n  for (let i in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n      /* c8 ignore next 2 */\n      continue\n    }\n    if (i === 'proxyCache') continue\n    let value = obj[i]\n    let type = typeof value\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) cloned[i] = parent\n    } else if (i === 'source') {\n      cloned[i] = value\n    } else if (Array.isArray(value)) {\n      cloned[i] = value.map(j => cloneNode(j, cloned))\n    } else {\n      if (type === 'object' && value !== null) value = cloneNode(value)\n      cloned[i] = value\n    }\n  }\n\n  return cloned\n}\n\nclass Node {\n  constructor(defaults = {}) {\n    this.raws = {}\n    this[isClean] = false\n    this[my] = true\n\n    for (let name in defaults) {\n      if (name === 'nodes') {\n        this.nodes = []\n        for (let node of defaults[name]) {\n          if (typeof node.clone === 'function') {\n            this.append(node.clone())\n          } else {\n            this.append(node)\n          }\n        }\n      } else {\n        this[name] = defaults[name]\n      }\n    }\n  }\n\n  addToError(error) {\n    error.postcssNode = this\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s = this.source\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n      )\n    }\n    return error\n  }\n\n  after(add) {\n    this.parent.insertAfter(this, add)\n    return this\n  }\n\n  assign(overrides = {}) {\n    for (let name in overrides) {\n      this[name] = overrides[name]\n    }\n    return this\n  }\n\n  before(add) {\n    this.parent.insertBefore(this, add)\n    return this\n  }\n\n  cleanRaws(keepBetween) {\n    delete this.raws.before\n    delete this.raws.after\n    if (!keepBetween) delete this.raws.between\n  }\n\n  clone(overrides = {}) {\n    let cloned = cloneNode(this)\n    for (let name in overrides) {\n      cloned[name] = overrides[name]\n    }\n    return cloned\n  }\n\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertAfter(this, cloned)\n    return cloned\n  }\n\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertBefore(this, cloned)\n    return cloned\n  }\n\n  error(message, opts = {}) {\n    if (this.source) {\n      let { end, start } = this.rangeBy(opts)\n      return this.source.input.error(\n        message,\n        { column: start.column, line: start.line },\n        { column: end.column, line: end.line },\n        opts\n      )\n    }\n    return new CssSyntaxError(message)\n  }\n\n  getProxyProcessor() {\n    return {\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else {\n          return node[prop]\n        }\n      },\n\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (\n          prop === 'prop' ||\n          prop === 'value' ||\n          prop === 'name' ||\n          prop === 'params' ||\n          prop === 'important' ||\n          /* c8 ignore next */\n          prop === 'text'\n        ) {\n          node.markDirty()\n        }\n        return true\n      }\n    }\n  }\n\n  markDirty() {\n    if (this[isClean]) {\n      this[isClean] = false\n      let next = this\n      while ((next = next.parent)) {\n        next[isClean] = false\n      }\n    }\n  }\n\n  next() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index + 1]\n  }\n\n  positionBy(opts, stringRepresentation) {\n    let pos = this.source.start\n    if (opts.index) {\n      pos = this.positionInside(opts.index, stringRepresentation)\n    } else if (opts.word) {\n      stringRepresentation = this.toString()\n      let index = stringRepresentation.indexOf(opts.word)\n      if (index !== -1) pos = this.positionInside(index, stringRepresentation)\n    }\n    return pos\n  }\n\n  positionInside(index, stringRepresentation) {\n    let string = stringRepresentation || this.toString()\n    let column = this.source.start.column\n    let line = this.source.start.line\n\n    for (let i = 0; i < index; i++) {\n      if (string[i] === '\\n') {\n        column = 1\n        line += 1\n      } else {\n        column += 1\n      }\n    }\n\n    return { column, line }\n  }\n\n  prev() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index - 1]\n  }\n\n  rangeBy(opts) {\n    let start = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    }\n    let end = this.source.end\n      ? {\n        column: this.source.end.column + 1,\n        line: this.source.end.line\n      }\n      : {\n        column: start.column + 1,\n        line: start.line\n      }\n\n    if (opts.word) {\n      let stringRepresentation = this.toString()\n      let index = stringRepresentation.indexOf(opts.word)\n      if (index !== -1) {\n        start = this.positionInside(index, stringRepresentation)\n        end = this.positionInside(index + opts.word.length, stringRepresentation)\n      }\n    } else {\n      if (opts.start) {\n        start = {\n          column: opts.start.column,\n          line: opts.start.line\n        }\n      } else if (opts.index) {\n        start = this.positionInside(opts.index)\n      }\n\n      if (opts.end) {\n        end = {\n          column: opts.end.column,\n          line: opts.end.line\n        }\n      } else if (typeof opts.endIndex === 'number') {\n        end = this.positionInside(opts.endIndex)\n      } else if (opts.index) {\n        end = this.positionInside(opts.index + 1)\n      }\n    }\n\n    if (\n      end.line < start.line ||\n      (end.line === start.line && end.column <= start.column)\n    ) {\n      end = { column: start.column + 1, line: start.line }\n    }\n\n    return { end, start }\n  }\n\n  raw(prop, defaultType) {\n    let str = new Stringifier()\n    return str.raw(this, prop, defaultType)\n  }\n\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this)\n    }\n    this.parent = undefined\n    return this\n  }\n\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this\n      let foundSelf = false\n      for (let node of nodes) {\n        if (node === this) {\n          foundSelf = true\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node)\n          bookmark = node\n        } else {\n          this.parent.insertBefore(bookmark, node)\n        }\n      }\n\n      if (!foundSelf) {\n        this.remove()\n      }\n    }\n\n    return this\n  }\n\n  root() {\n    let result = this\n    while (result.parent && result.parent.type !== 'document') {\n      result = result.parent\n    }\n    return result\n  }\n\n  toJSON(_, inputs) {\n    let fixed = {}\n    let emitInputs = inputs == null\n    inputs = inputs || new Map()\n    let inputsNextIndex = 0\n\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        /* c8 ignore next 2 */\n        continue\n      }\n      if (name === 'parent' || name === 'proxyCache') continue\n      let value = this[name]\n\n      if (Array.isArray(value)) {\n        fixed[name] = value.map(i => {\n          if (typeof i === 'object' && i.toJSON) {\n            return i.toJSON(null, inputs)\n          } else {\n            return i\n          }\n        })\n      } else if (typeof value === 'object' && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs)\n      } else if (name === 'source') {\n        let inputId = inputs.get(value.input)\n        if (inputId == null) {\n          inputId = inputsNextIndex\n          inputs.set(value.input, inputsNextIndex)\n          inputsNextIndex++\n        }\n        fixed[name] = {\n          end: value.end,\n          inputId,\n          start: value.start\n        }\n      } else {\n        fixed[name] = value\n      }\n    }\n\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n    }\n\n    return fixed\n  }\n\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor())\n    }\n    return this.proxyCache\n  }\n\n  toString(stringifier = stringify) {\n    if (stringifier.stringify) stringifier = stringifier.stringify\n    let result = ''\n    stringifier(this, i => {\n      result += i\n    })\n    return result\n  }\n\n  warn(result, text, opts) {\n    let data = { node: this }\n    for (let i in opts) data[i] = opts[i]\n    return result.warn(text, data)\n  }\n\n  get proxyOf() {\n    return this\n  }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n  let str = new Stringifier(builder)\n  str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\nlet { isAbsolute, resolve } = require('path')\nlet { nanoid } = require('nanoid/non-secure')\n\nlet terminalHighlight = require('./terminal-highlight')\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\n\nlet fromOffsetCache = Symbol('fromOffsetCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nclass Input {\n  constructor(css, opts = {}) {\n    if (\n      css === null ||\n      typeof css === 'undefined' ||\n      (typeof css === 'object' && !css.toString)\n    ) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`)\n    }\n\n    this.css = css.toString()\n\n    if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n      this.hasBOM = true\n      this.css = this.css.slice(1)\n    } else {\n      this.hasBOM = false\n    }\n\n    if (opts.from) {\n      if (\n        !pathAvailable ||\n        /^\\w+:\\/\\//.test(opts.from) ||\n        isAbsolute(opts.from)\n      ) {\n        this.file = opts.from\n      } else {\n        this.file = resolve(opts.from)\n      }\n    }\n\n    if (pathAvailable && sourceMapAvailable) {\n      let map = new PreviousMap(this.css, opts)\n      if (map.text) {\n        this.map = map\n        let file = map.consumer().file\n        if (!this.file && file) this.file = this.mapResolve(file)\n      }\n    }\n\n    if (!this.file) {\n      this.id = '<input css ' + nanoid(6) + '>'\n    }\n    if (this.map) this.map.file = this.from\n  }\n\n  error(message, line, column, opts = {}) {\n    let result, endLine, endColumn\n\n    if (line && typeof line === 'object') {\n      let start = line\n      let end = column\n      if (typeof start.offset === 'number') {\n        let pos = this.fromOffset(start.offset)\n        line = pos.line\n        column = pos.col\n      } else {\n        line = start.line\n        column = start.column\n      }\n      if (typeof end.offset === 'number') {\n        let pos = this.fromOffset(end.offset)\n        endLine = pos.line\n        endColumn = pos.col\n      } else {\n        endLine = end.line\n        endColumn = end.column\n      }\n    } else if (!column) {\n      let pos = this.fromOffset(line)\n      line = pos.line\n      column = pos.col\n    }\n\n    let origin = this.origin(line, column, endLine, endColumn)\n    if (origin) {\n      result = new CssSyntaxError(\n        message,\n        origin.endLine === undefined\n          ? origin.line\n          : { column: origin.column, line: origin.line },\n        origin.endLine === undefined\n          ? origin.column\n          : { column: origin.endColumn, line: origin.endLine },\n        origin.source,\n        origin.file,\n        opts.plugin\n      )\n    } else {\n      result = new CssSyntaxError(\n        message,\n        endLine === undefined ? line : { column, line },\n        endLine === undefined ? column : { column: endColumn, line: endLine },\n        this.css,\n        this.file,\n        opts.plugin\n      )\n    }\n\n    result.input = { column, endColumn, endLine, line, source: this.css }\n    if (this.file) {\n      if (pathToFileURL) {\n        result.input.url = pathToFileURL(this.file).toString()\n      }\n      result.input.file = this.file\n    }\n\n    return result\n  }\n\n  fromOffset(offset) {\n    let lastLine, lineToIndex\n    if (!this[fromOffsetCache]) {\n      let lines = this.css.split('\\n')\n      lineToIndex = new Array(lines.length)\n      let prevIndex = 0\n\n      for (let i = 0, l = lines.length; i < l; i++) {\n        lineToIndex[i] = prevIndex\n        prevIndex += lines[i].length + 1\n      }\n\n      this[fromOffsetCache] = lineToIndex\n    } else {\n      lineToIndex = this[fromOffsetCache]\n    }\n    lastLine = lineToIndex[lineToIndex.length - 1]\n\n    let min = 0\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1\n    } else {\n      let max = lineToIndex.length - 2\n      let mid\n      while (min < max) {\n        mid = min + ((max - min) >> 1)\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1\n        } else {\n          min = mid\n          break\n        }\n      }\n    }\n    return {\n      col: offset - lineToIndex[min] + 1,\n      line: min + 1\n    }\n  }\n\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file\n    }\n    return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n  }\n\n  origin(line, column, endLine, endColumn) {\n    if (!this.map) return false\n    let consumer = this.map.consumer()\n\n    let from = consumer.originalPositionFor({ column, line })\n    if (!from.source) return false\n\n    let to\n    if (typeof endLine === 'number') {\n      to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n    }\n\n    let fromUrl\n\n    if (isAbsolute(from.source)) {\n      fromUrl = pathToFileURL(from.source)\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n      )\n    }\n\n    let result = {\n      column: from.column,\n      endColumn: to && to.column,\n      endLine: to && to.line,\n      line: from.line,\n      url: fromUrl.toString()\n    }\n\n    if (fromUrl.protocol === 'file:') {\n      if (fileURLToPath) {\n        result.file = fileURLToPath(fromUrl)\n      } else {\n        /* c8 ignore next 2 */\n        throw new Error(`file: protocol is not available in this PostCSS build`)\n      }\n    }\n\n    let source = consumer.sourceContentFor(from.source)\n    if (source) result.source = source\n\n    return result\n  }\n\n  toJSON() {\n    let json = {}\n    for (let name of ['hasBOM', 'css', 'file', 'id']) {\n      if (this[name] != null) {\n        json[name] = this[name]\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map }\n      if (json.map.consumerCache) {\n        json.map.consumerCache = undefined\n      }\n    }\n    return json\n  }\n\n  get from() {\n    return this.file || this.id\n  }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n  terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'comment'\n  }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","import React, { useState, useEffect } from 'react';\r\nimport selectors from 'selectors';\r\nimport actions from 'actions';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useTranslation } from 'react-i18next';\r\nimport ColorPalettePicker from './ColorPalettePicker';\r\nimport { COMMON_COLORS } from 'constants/commonColors';\r\n\r\nfunction ColorPickerModalRedux(props) {\r\n  const { property, onStyleChange, color, enableEdit, ...rest } = props;\r\n\r\n  const dispatch = useDispatch();\r\n  const [t] = useTranslation();\r\n  const [modifyColorMode, setModifyColorMode] = useState('');\r\n  const [colorToBeDeleted, setColorToBeDeleted] = useState('');\r\n\r\n  const activeCustomColor = useSelector(selectors.getCustomColor);\r\n  const customColors = useSelector(selectors.getCustomColors);\r\n\r\n  useEffect(() => {\r\n    if (activeCustomColor && color && (modifyColorMode || getHexColor(activeCustomColor) !== getHexColor(color))) {\r\n      handleColorChange(activeCustomColor);\r\n    }\r\n  }, [activeCustomColor, modifyColorMode]);\r\n\r\n  const handleDeleteColor = () => {\r\n    const updatedCustomColors = customColors.filter((color) => color !== colorToBeDeleted);\r\n    dispatch(actions.setCustomColors(updatedCustomColors));\r\n    setColorToBeDeleted('');\r\n    dispatch(actions.setCustomColor(null));\r\n  };\r\n\r\n  const getHexColor = (givenColor) => {\r\n    if (givenColor && givenColor.A) {\r\n      return givenColor.toHexString().toLowerCase();\r\n    }\r\n    return COMMON_COLORS['black'];\r\n  };\r\n\r\n  const openColorPicker = (addNew) => {\r\n    addNew ? setModifyColorMode('add') : setModifyColorMode('update');\r\n    dispatch(actions.openElement('ColorPickerModal'));\r\n  };\r\n\r\n  const openDeleteModal = async () => {\r\n    const message = t('warning.colorPicker.deleteMessage');\r\n    const title = t('warning.colorPicker.deleteTitle');\r\n    const confirmBtnText = t('action.ok');\r\n\r\n    const warning = {\r\n      message,\r\n      title,\r\n      confirmBtnText,\r\n      onConfirm: async () => {\r\n        handleDeleteColor();\r\n      },\r\n    };\r\n    dispatch(actions.showWarningMessage(warning));\r\n  };\r\n\r\n  const handleColorChange = (newColor) => {\r\n    if (newColor) {\r\n      const newColorHex = getHexColor(newColor);\r\n      const newColorExist = customColors.includes(newColorHex);\r\n      const selectedColorindex = customColors.indexOf(color?.toHexString?.()?.toLowerCase() || '');\r\n      // if add an new color or selected some pre-defined color\r\n      if (modifyColorMode === 'add') {\r\n        // add to the list if the new color doesn't exist\r\n        if (!newColorExist) {\r\n          dispatch(actions.setCustomColors([...customColors, newColorHex]));\r\n        }\r\n        // if the new color exist, then auto-selected it using (onStyleChange)\r\n      } else if (modifyColorMode === 'update') {\r\n        // if edit an existing color\r\n        // if the new color doesn't exist, then we replace it on the selected color spot\r\n        if (!newColorExist) {\r\n          const updatedCustomColors = [...customColors];\r\n          updatedCustomColors[selectedColorindex] = newColorHex;\r\n          dispatch(actions.setCustomColors(updatedCustomColors));\r\n        }\r\n        // if the new color does exist then selected the existing one using (onStyleChange)\r\n      }\r\n      onStyleChange(property, newColor);\r\n    }\r\n  };\r\n\r\n  const handleColorOnClick = (newColor) => {\r\n    onStyleChange(property, new window.Core.Annotations.Color(newColor));\r\n    if (color && color.A !== 0 && color.toHexString().toLowerCase() && newColor === color.toHexString().toLowerCase()) {\r\n      dispatch(actions.setCustomColor(color));\r\n    }\r\n  };\r\n\r\n  const newProps = {\r\n    ...rest,\r\n    color,\r\n    property,\r\n    getHexColor,\r\n    handleColorOnClick,\r\n    customColors,\r\n    openColorPicker,\r\n    colorToBeDeleted,\r\n    setColorToBeDeleted,\r\n    openDeleteModal,\r\n    enableEdit,\r\n  };\r\n  return <ColorPalettePicker {...newProps} />;\r\n}\r\n\r\nexport default ColorPickerModalRedux;\r\n","import ColorPickerModalRedux from './ColorPalettePickerRedux';\r\n\r\nexport default ColorPickerModalRedux;","let grayscaleDarknessFactor = 1;\n\nexport const setGrayscaleDarknessFactor = (factor) => {\n  grayscaleDarknessFactor = factor;\n};\n\nexport const getGrayscaleDarknessFactor = () => grayscaleDarknessFactor;\n","// The values in this array should match the language codes of the json files inside the i18n folder\nconst Languages = [\n  ['en', 'English'],\n  ['el', 'Ελληνικά'],\n  ['de', 'Deutsch'],\n  ['es', 'Español'],\n  ['fr', 'Français'],\n  ['hu', 'Magyar'],\n  ['it', 'Italiano'],\n  ['ja', '日本語'],\n  ['ko', '한국어'],\n  ['nl', 'Nederlands'],\n  ['pt_br', 'Português'],\n  ['pl', 'Polski'],\n  ['uk', 'українська'],\n  ['ru', 'Pусский'],\n  ['ro', 'Romanian'],\n  ['sv', 'Svenska'],\n  ['tr', 'Türk'],\n  ['th', 'ไทย'],\n  ['vi', 'Tiếng Việt'],\n  ['ms', 'Melayu'],\n  ['hi', 'हिन्दी'],\n  ['bn', 'বাংলা'],\n  ['zh_cn', '简体中文'],\n  ['zh_tw', '繁體中文'],\n  ['cs', 'česky, čeština'],\n  ['id', 'Bahasa Indonesia']\n];\n\n/**\n * Contains string enums for the default languages found in WebViewer.\n * @name UI.Languages\n * @property {string} EN English (en)\n * @property {string} CS česky, čeština (cs)\n * @property {string} EL Ελληνικά (el)\n * @property {string} DE Deutsch (de)\n * @property {string} ES Español (es)\n * @property {string} FR Français (fr)\n * @property {string} HU Magyar (hu)\n * @property {string} IT Italiano (it)\n * @property {string} JA 日本語 (ja)\n * @property {string} KO 한국어 (ko)\n * @property {string} NL Nederlands (nl)\n * @property {string} PT_BR Português (pt_br)\n * @property {string} PL Polski (pl)\n * @property {string} UK українська (uk)\n * @property {string} RU Pусский (ru)\n * @property {string} RO Romanian (ro)\n * @property {string} SV Svenska (sv)\n * @property {string} TR Türk (tr)\n * @property {string} TH ไทย (th)\n * @property {string} VI Tiếng Việt (vi)\n * @property {string} ID Bahasa Indonesia (id)\n * @property {string} MS Melayu (ms)\n * @property {string} HI हिन्दी (hi)\n * @property {string} BN বাংলা (bn)\n * @property {string} ZH_CN 简体中文 (zh_cn)\n * @property {string} ZH_TW 繁體中文 (zh_tw)\n * @example\n  WebViewer(...).then(function(instance) {\n    instance.UI.setLanguage(instance.UI.Languages.FR);\n  });\n */\n\nexport const languageEnum = Languages.reduce((acc, pair) => {\n  const code = pair[0];\n  acc[code.toUpperCase()] = code;\n  return acc;\n}, {});\n\nexport default Languages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\nimport defaultTool from 'constants/defaultTool';\n\nimport core from 'core';\nimport getToolStyles from 'helpers/getToolStyles';\nimport getColor from 'helpers/getColor';\nimport { mapToolNameToKey } from 'constants/map';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport './ToolGroupButton.scss';\n\nclass ToolGroupButton extends React.PureComponent {\n  static propTypes = {\n    activeToolName: PropTypes.string.isRequired,\n    toolGroup: PropTypes.string.isRequired,\n    mediaQueryClassName: PropTypes.string.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    img: PropTypes.string,\n    title: PropTypes.string,\n    toolNames: PropTypes.arrayOf(PropTypes.string),\n    toolButtonObjects: PropTypes.object,\n    lastPickedToolForGroup: PropTypes.string,\n    allButtonsInGroupDisabled: PropTypes.bool,\n    openElement: PropTypes.func.isRequired,\n    toggleElement: PropTypes.func.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    setActiveToolGroup: PropTypes.func.isRequired,\n    isActive: PropTypes.bool.isRequired,\n    showColor: PropTypes.string,\n    iconColorKey: PropTypes.string,\n  };\n\n  onClick = () => {\n    const {\n      setActiveToolGroup,\n      isActive,\n      closeElement,\n      openElement,\n      toolGroup,\n      toolNames,\n      lastPickedToolForGroup,\n    } = this.props;\n\n    if (isActive) {\n      closeElement('toolStylePopup');\n      core.setToolMode(defaultTool);\n      setActiveToolGroup('');\n    } else {\n      closeElement('toolStylePopup');\n      if (toolGroup === 'signatureTools' || toolGroup === 'rubberStampTools') {\n        core.setToolMode(defaultTool);\n      } else {\n        core.setToolMode(lastPickedToolForGroup || toolNames[0]);\n      }\n      setActiveToolGroup(toolGroup);\n      openElement('toolsOverlay');\n    }\n  };\n\n  render() {\n    const {\n      toolNames,\n      lastPickedToolForGroup,\n      isActive,\n      mediaQueryClassName,\n      dataElement,\n      toolButtonObjects,\n      allButtonsInGroupDisabled,\n      iconColorKey,\n      showColor,\n      title,\n    } = this.props;\n    const toolName = lastPickedToolForGroup || toolNames[0];\n    const img = this.props.img\n      ? this.props.img\n      : toolButtonObjects[toolName]?.img;\n    let color = '';\n    let fillColor = '';\n    let strokeColor = '';\n    if (showColor !== 'never' && isActive) {\n      const toolStyles = getToolStyles(toolName);\n      if (iconColorKey) {\n        color = toolStyles[iconColorKey]?.toHexString?.();\n      }\n      fillColor = getColor(toolStyles.FillColor);\n      strokeColor = getColor(toolStyles.StrokeColor);\n      if (toolName.indexOf('AnnotationCreateFreeText') > -1 && toolStyles?.StrokeThickness === 0) {\n        // transparent\n        strokeColor = 'ff000000';\n      }\n    }\n\n    if (toolName.indexOf('AnnotationCreateRedaction') > -1 && !isActive) {\n      // The redaction icon needs a default fill for it's inactive state\n      fillColor = '868E96';\n    }\n\n    return allButtonsInGroupDisabled ? null : (\n      <DataElementWrapper\n        className={classNames({\n          'tool-group-button': true,\n          active: isActive,\n        })}\n        dataElement={dataElement}\n      >\n        <Button\n          title={title}\n          mediaQueryClassName={mediaQueryClassName}\n          isActive={isActive}\n          img={img}\n          color={color}\n          fillColor={fillColor}\n          strokeColor={strokeColor}\n          dataElement={dataElement}\n          onClick={this.onClick}\n        />\n      </DataElementWrapper>\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  lastPickedToolForGroup: selectors.getLastPickedToolForGroup(state, ownProps.toolGroup),\n  savedSignatures: selectors.getSavedSignatures(state),\n  isActive: selectors.getActiveToolGroup(state) === ownProps.toolGroup,\n  activeToolName: selectors.getActiveToolName(state),\n  toolNames: selectors.getToolNamesByGroup(state, ownProps.toolGroup),\n  toolButtonObjects: selectors.getToolButtonObjects(state),\n  allButtonsInGroupDisabled: selectors.allButtonsInGroupDisabled(state, ownProps.toolGroup),\n  iconColorKey: selectors.getIconColor(\n    state,\n    mapToolNameToKey(selectors.getActiveToolName(state)),\n  ),\n});\n\nconst mapDispatchToProps = {\n  openElement: actions.openElement,\n  toggleElement: actions.toggleElement,\n  closeElement: actions.closeElement,\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolGroupButton = connect(mapStateToProps, mapDispatchToProps)(ToolGroupButton);\n\nconst connectedComponent = (props) => {\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  return (\n    <ConnectedToolGroupButton {...props} isTabletAndMobile={isTabletAndMobile} />\n  );\n};\n\nexport default connectedComponent;\n","import connectedComponent from './ToolGroupButton';\n\nexport default connectedComponent;","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","import { useEffect, useCallback } from 'react';\nimport { focusableElementDomString } from '@pdftron/webviewer-react-toolkit';\nimport { findFocusableIndex } from '../helpers/accessibility';\n\n/**\n * Use arrows to focus within a menu.\n * @param {boolean} isOpen Is the menu currently open.\n * @param {Function} onClose Function to close menu. Must be memoized!\n * @param {HTMLElement} overlayRef The wrapper element for the menu.\n */\nexport default function useArrowFocus(isOpen, onClose, overlayRef) {\n  const getFocusableElements = useCallback(() => {\n    return overlayRef.current.querySelectorAll(focusableElementDomString);\n  }, [overlayRef]);\n\n  useEffect(() => {\n    if (isOpen) {\n      const lastFocusedElement = document.activeElement;\n\n      const keydownListener = (e) => {\n        // Tab and escape close the menu.\n        if (e.key === 'Tab' || e.key === 'Escape') {\n          onClose();\n          if (lastFocusedElement) {\n            lastFocusedElement.focus();\n          }\n          return;\n        }\n\n        // Up and Down keys used to navigate overlay menu.\n        if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n          const focusable = getFocusableElements();\n\n          if (focusable.length === 0) {\n            return;\n          }\n\n          let focusIndex = findFocusableIndex(focusable, document.activeElement);\n          if (e.key === 'ArrowUp' && focusIndex === -1) {\n            focusIndex = 0;\n          }\n\n          const vector = e.key === 'ArrowUp' ? -1 : 1;\n          focusable[(focusIndex + vector + focusable.length) % focusable.length].focus();\n          // User is \"tabbing\", so show button outlines.\n          document.documentElement.setAttribute('data-tabbing', 'true');\n        }\n      };\n\n      window.addEventListener('keydown', keydownListener);\n      return () => window.removeEventListener('keydown', keydownListener);\n    }\n  }, [getFocusableElements, isOpen, onClose]);\n}\n","import hotkeys from 'src/apis/hotkeys';\nimport core from 'core';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport getAnnotationCreateToolNames from 'helpers/getAnnotationCreateToolNames';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\n// a higher order function that creates the enableTools and disableTools APIs\nexport default (enable, store) => (\n  toolNames,\n) => {\n  const map = {\n    AnnotationCreateTextUnderline: 'textUnderlineToolButton',\n    AnnotationCreateTextHighlight: 'textHighlightToolButton',\n    AnnotationCreateTextSquiggly: 'textSquigglyToolButton',\n    AnnotationCreateTextStrikeout: 'textStrikeoutToolButton',\n  };\n\n  let emptyArgument = false;\n\n  if (toolNames === undefined) {\n    toolNames = getAnnotationCreateToolNames();\n    emptyArgument = true;\n  }\n\n  const toolNameArray = typeof toolNames === 'string' ? [toolNames] : toolNames;\n  const dataElements = selectors.getToolButtonDataElements(\n    store.getState(),\n    toolNameArray,\n  );\n\n  // if the argument is empty, disable the forms group to prevent the user from re-enabling all tools\n  if (emptyArgument) {\n    dataElements.push('toolbarGroup-Forms');\n  }\n\n  // for the tool names in the map, enable/disable other related buttons\n  Object.keys(map).forEach((toolName) => {\n    if (toolNameArray.indexOf(toolName) !== -1) {\n      dataElements.push(map[toolName]);\n    }\n  });\n\n  const currTool = core.getToolMode();\n  if (!enable && toolNames.indexOf(currTool?.name) > -1) {\n    core.setToolMode(window.Core.Tools.ToolNames.EDIT);\n  }\n\n  if (enable) {\n    toolNameArray.forEach((toolName) => {\n      toolName && hotkeys.on(toolName);\n    });\n\n    store.dispatch(actions.enableElements(dataElements, PRIORITY_TWO));\n  } else {\n    toolNameArray.forEach((toolName) => {\n      toolName && hotkeys.off(toolName);\n    });\n\n    store.dispatch(actions.disableElements(dataElements, PRIORITY_TWO));\n  }\n};\n","import core from 'core';\nimport localStorageManager from 'helpers/localStorageManager';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport hotkeysManager, { Shortcuts } from 'helpers/hotkeysManager';\nimport { enableMultiTab } from 'helpers/TabManager';\nimport Feature from 'constants/feature';\nimport { PRIORITY_TWO } from 'constants/actionPriority';\nimport actions from 'actions';\nimport enableTools from 'src/apis/enableTools';\nimport disableTools from 'src/apis/disableTools';\nimport setToolMode from 'src/apis/setToolMode';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport { isOfficeEditorMode } from './officeEditor';\n\n// a higher order function that creates the enableFeatures and disableFeatures APIs\nexport default (enable, store) => (features, priority = PRIORITY_TWO) => {\n  // map a feature to the dataElements that should be enabled/disabled and the function to run\n  const map = {\n    [Feature.Ribbons]: {\n      dataElements: [\n        'ribbons',\n      ],\n    },\n    [Feature.Annotating]: {\n      dataElements: [\n        'toolsHeader',\n        'toggleToolsButton',\n        'linkButton',\n        'noteState',\n        DataElements.NOTE_MULTI_SELECT_MODE_BUTTON,\n      ],\n      fn: () => {\n        const state = store.getState();\n        const isCustomizableUI = state.featureFlags.customizableUI;\n        if (!isCustomizableUI) {\n          if (enable) {\n            store.dispatch(actions.enableRibbons());\n          } else {\n            store.dispatch(actions.setReadOnlyRibbons());\n          }\n        }\n      },\n    },\n    [Feature.Measurement]: {\n      dataElements: [\n        'toolbarGroup-Measure',\n        'measurementOverlay',\n        'distanceToolGroupButton',\n        'arcMeasurementToolGroupButton',\n        'perimeterToolGroupButton',\n        'areaToolGroupButton',\n        'rectangleAreaToolGroupButton',\n        'ellipseAreaToolGroupButton',\n        'countToolGroupButton',\n        'cloudyRectangleAreaToolGroupButton',\n      ],\n    },\n    [Feature.Annotations]: {\n      dataElements: [\n        'ribbons',\n        'notesPanel',\n        'toggleNotesButton',\n        'toggleToolsButton',\n        'toolsButton',\n        'linkButton',\n        'toolsHeader',\n        'toolsOverlay',\n        'default-ribbon-group',\n        'tools-header',\n        'notesPanelToggle',\n        'rubberStampPanel',\n        'stylePanel',\n        'signatureListPanel',\n        'markReplaceTextToolButton',\n      ],\n      fn: () => {\n        if (enable) {\n          core.showAnnotations(core.getAnnotationsList());\n          enableTools(store)();\n        } else {\n          core.hideAnnotations(core.getAnnotationsList());\n          disableTools(store)();\n        }\n      },\n    },\n    [Feature.Download]: {\n      dataElements: ['downloadButton'],\n      fn: () => {\n        if (enable) {\n          store.dispatch(actions.enableDeleteTabWarning());\n        } else {\n          store.dispatch(actions.disableDeleteTabWarning());\n        }\n      }\n    },\n    [Feature.FilePicker]: {\n      dataElements: ['filePickerHandler', 'filePickerButton'],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.OPEN_FILE);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.OPEN_FILE);\n        }\n      }\n    },\n    [Feature.LocalStorage]: {\n      fn: () => {\n        if (enable) {\n          localStorageManager.enableLocalStorage();\n        } else {\n          localStorageManager.disableLocalStorage();\n        }\n      },\n    },\n    [Feature.NotesPanel]: {\n      dataElements: [\n        'notesPanelButton',\n        'notesPanel',\n        'toggleNotesButton',\n        'notesPanelToggle',\n      ],\n    },\n    [Feature.InlineComment]: {\n      dataElements: [\n        DataElements.INLINE_COMMENT_POPUP,\n        DataElements.INLINE_COMMENT_POPUP_EXPAND_BUTTON,\n        DataElements.INLINE_COMMENT_POPUP_CLOSE_BUTTON,\n      ],\n      fn: () => {\n        if (enable) {\n          store.dispatch(actions.setEnableRightClickAnnotationPopup(true));\n        }\n      },\n    },\n    [Feature.RightClickAnnotationPopup]: {\n      dataElements: [\n        // no elements: enabling this will open the popup on right click\n        // disabling this will open the popup on left click\n      ],\n      fn: () => {\n        if (enable) {\n          store.dispatch(actions.setEnableRightClickAnnotationPopup(true));\n        } else {\n          store.dispatch(actions.disableElements([\n            DataElements.INLINE_COMMENT_POPUP,\n            DataElements.INLINE_COMMENT_POPUP_EXPAND_BUTTON,\n            DataElements.INLINE_COMMENT_POPUP_CLOSE_BUTTON,\n          ], PRIORITY_TWO));\n          store.dispatch(actions.setEnableRightClickAnnotationPopup(false));\n        }\n      },\n    },\n    [Feature.Print]: {\n      dataElements: ['printButton', 'printModal'],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.PRINT);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.PRINT);\n        }\n      }\n    },\n    [Feature.Redaction]: {\n      dataElements: [\n        'toolbarGroup-Redact',\n        'redactionToolGroupButton',\n        'redactionPanel',\n        'redactionPanelToggle',\n        'pageRedactionToolGroupButton',\n      ],\n      fn: () => {\n        if (enable && !core.isFullPDFEnabled()) {\n          console.warn('Full api is not enabled, applying redactions is disabled');\n        } else {\n          core.enableRedaction(enable);\n          const currentToolbarGroup = selectors.getCurrentToolbarGroup(store.getState());\n          if (!enable && currentToolbarGroup === 'toolbarGroup-Redact') {\n            setToolMode('AnnotationEdit');\n          }\n        }\n      }\n    },\n    [Feature.TextSelection]: {\n      dataElements: ['textPopup', 'textSelectButton'],\n      fn: () => {\n        if (!enable) {\n          core.clearSelection();\n          core.setToolMode('AnnotationEdit');\n        }\n        window.Core.Tools.Tool.ENABLE_TEXT_SELECTION = enable;\n      },\n    },\n    [Feature.TouchScrollLock]: {\n      fn: () => {\n        touchEventManager.enableTouchScrollLock = enable;\n      },\n    },\n    [Feature.Copy]: {\n      dataElements: ['copyTextButton'],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.COPY);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.COPY);\n        }\n      }\n    },\n    [Feature.MultipleViewerMerging]: {\n      fn: () => {\n        store.dispatch(actions.setIsMultipleViewerMerging(enable));\n      },\n    },\n    [Feature.ThumbnailMerging]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailMerging(enable));\n      },\n    },\n    [Feature.ThumbnailReordering]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailReordering(enable));\n      },\n    },\n    [Feature.ThumbnailMultiselect]: {\n      fn: () => {\n        store.dispatch(actions.setThumbnailMultiselect(enable));\n      },\n    },\n    [Feature.NotesPanelVirtualizedList]: {\n      fn: () => {\n        store.dispatch(actions.setEnableNotesPanelVirtualizedList(enable));\n      },\n    },\n    [Feature.PageNavigation]: {\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.UP);\n          hotkeysManager.enableShortcut(Shortcuts.DOWN);\n          hotkeysManager.enableShortcut(Shortcuts.PREVIOUS_PAGE);\n          hotkeysManager.enableShortcut(Shortcuts.NEXT_PAGE);\n        } else {\n          // TODO: doing this will also remove handlers that users registered to 'up' and 'down' and we need to address this issue.\n          // it doesn't seem like we can fix the issue now by doing hotkeysManager.off('down', arrowDownHandler) because hotkeysManager.on will create a new function reference\n          // , register that new function to the hotkey and we don't have a reference to that function.\n          // to fix this issue we may need to breaking the instance.hotkeys.on API.\n          hotkeysManager.disableShortcut(Shortcuts.UP);\n          hotkeysManager.disableShortcut(Shortcuts.DOWN);\n          hotkeysManager.disableShortcut(Shortcuts.PREVIOUS_PAGE);\n          hotkeysManager.disableShortcut(Shortcuts.NEXT_PAGE);\n          core.setDisplayMode('Single');\n        }\n\n        touchEventManager.allowSwipe = enable;\n        store.dispatch(actions.setAllowPageNavigation(enable));\n      }\n    },\n    [Feature.MouseWheelZoom]: {\n      fn: () => {\n        store.dispatch(actions.setMouseWheelZoom(enable));\n      }\n    },\n    [Feature.Search]: {\n      dataElements: [\n        'searchButton',\n        'searchPanelToggle',\n      ],\n      fn: () => {\n        if (enable) {\n          hotkeysManager.enableShortcut(Shortcuts.SEARCH);\n        } else {\n          hotkeysManager.disableShortcut(Shortcuts.SEARCH);\n        }\n      }\n    },\n    [Feature.MathSymbols]: {\n      dataElements: ['mathSymbolsButton', 'richTextPopup'],\n    },\n    [Feature.OutlineEditing]: {\n      dataElements: [\n        'outlineControls',\n        'addNewOutlineButtonContainer',\n        'addNewOutlineButton',\n        'outlineEditPopup',\n        'outlineRenameButton',\n        'outlineSetDestinationButton',\n        'outlineDeleteButton',\n      ],\n      fn: () => {\n        store.dispatch(actions.setIsOutlineEditing(enable));\n      }\n    },\n    [Feature.NotesShowLastUpdatedDate]: {\n      fn: () => {\n        store.dispatch(actions.setNotesShowLastUpdatedDate(enable));\n      }\n    },\n    [Feature.MultiTab]: {\n      fn: () => {\n        if (isOfficeEditorMode()) {\n          console.warn('Multi-tab is not supported in Office Editor mode');\n          return;\n        }\n\n        if (enable) {\n          if (selectors.isMultiViewerMode(store.getState())) {\n            console.error('MultiTab and MultiViewerMode cannot be enabled at the same time, disabling MultiViewerMode');\n            store.dispatch(actions.setIsMultiViewerMode(false));\n          }\n          store.dispatch(enableMultiTab());\n        } else {\n          store.dispatch(actions.setMultiTab(false));\n          store.dispatch(actions.setTabManager(null));\n          store.dispatch(actions.setTabs([]));\n          store.dispatch(actions.setActiveTab(0));\n        }\n      },\n    },\n    [Feature.ChangeView]: {\n      dataElements: [\n        'changeViewToolGroupButton',\n      ]\n    },\n    [Feature.ContentEdit]: {\n      dataElements: [\n        'toolbarGroup-EditText',\n        'addParagraphToolGroupButton',\n        'addImageContentToolGroupButton',\n        'contentEditButton',\n        'searchAndReplace',\n      ],\n    },\n    [Feature.MultiViewerMode]: {\n      fn: () => {\n        if (enable && selectors.getIsMultiTab(store.getState())) {\n          console.error('MultiTab and MultiViewerMode cannot be enabled at the same time, disabling MultiTab');\n          store.dispatch(actions.setMultiTab(false));\n          store.dispatch(actions.setTabManager(null));\n          store.dispatch(actions.setTabs([]));\n          store.dispatch(actions.setActiveTab(0));\n        }\n        console.warn('Feature.MultiViewerMode is deprecated and will be removed in the next major release. Please use UI.enterMultiViewerMode and UI.exitMultiViewerMode instead.');\n        store.dispatch(actions.setIsMultiViewerMode(enable));\n      }\n    },\n    [Feature.SideBySideView]: {\n      fn: () => {\n        store.dispatch(actions.setIsMultiViewerModeAvailable(enable));\n      }\n    },\n    [Feature.ComparePages]: {\n      fn: () => {\n        store.dispatch(actions.setComparePagesButtonEnabled(enable));\n      }\n    },\n    [Feature.Initials]: {\n      dataElements: [\n        'signatureOptionsDropdown',\n        'savedSignatureAndInitialsTabs',\n      ],\n      fn: () => {\n        const state = store.getState();\n        const signatures = selectors.getDisplayedSignatures(state);\n        if (signatures?.length > 0) {\n          store.dispatch(actions.setInitialsOffset(signatures.length));\n        }\n        store.dispatch(actions.setInitialsMode(enable));\n      }\n    },\n    [Feature.SavedSignaturesTab]: {\n      dataElements: [DataElements.SAVED_SIGNATURES_TAB],\n      fn: () => {\n        store.dispatch(actions.setSavedSignaturesTabEnabled(enable));\n        if (!enable) {\n          store.dispatch(actions.setSelectedTab('signatureModal', 'inkSignaturePanelButton'));\n        }\n      }\n    },\n    [Feature.Panel]: {\n      fn: () => {\n        const state = store.getState();\n        const keys = state.viewer.genericPanels.map((item) => item.dataElement);\n        if (enable) {\n          store.dispatch(actions.enableElements(keys, priority));\n        } else {\n          store.dispatch(actions.disableElements(keys, priority));\n        }\n      }\n    },\n    [Feature.WatermarkPanel]: {\n      dataElements: [\n        DataElements.WATERMARK_PANEL,\n        DataElements.WATERMARK_PANEL_TOGGLE,\n      ],\n    },\n    [Feature.WatermarkPanelImageTab]: {\n      dataElements: [\n        DataElements.WATERMARK_PANEL_IMAGE_TAB,\n      ],\n    },\n    [Feature.LegacyRichTextPopup]: {\n      dataElements: [DataElements.LEGACY_RICH_TEXT_POPUP],\n    },\n    [Feature.Portfolio]: {\n      dataElements: [\n        DataElements.CREATE_PORTFOLIO_BUTTON,\n        DataElements.PORTFOLIO_PANEL_BUTTON,\n        DataElements.PORTFOLIO_PANEL,\n      ],\n    },\n  };\n\n  if (!Array.isArray(features)) {\n    features = [features];\n  }\n\n  features.forEach((feature) => {\n    const { dataElements = [], fn = () => { } } = map[feature];\n\n    if (enable) {\n      store.dispatch(actions.enableElements(dataElements, priority));\n    } else {\n      store.dispatch(actions.disableElements(dataElements, priority));\n    }\n\n    fn();\n  });\n};\n","/**\n * Sets tool mode.\n * @method UI.setToolMode\n * @param {string|Core.Tools.ToolNames} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setToolMode('AnnotationEdit');\n  });\n */\n\nimport core from 'core';\n\nexport default (toolName) => {\n  core.setToolMode(toolName);\n};","export default () => {\n  return !!(document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement);\n};\n","var currentId = 0;\n/**\n * Generates a sequential string to use as a unique identifier. This should be\n * used over `getId` if you need to use it as a DOM id, or a React key.\n *\n * @param prefix Optional. Prefix for the string id.\n */\nexport function getStringId(prefix) {\n    if (prefix === void 0) { prefix = 'id'; }\n    return prefix + \"_\" + (currentId++).toString(16);\n}\n/**\n * Returns a Symbol to uniquely identify something. Will fallback to using\n * string.\n *\n * @param description Description of the Symbol. Used as string prefix if not supported.\n */\nexport function getId(description) {\n    if (typeof Symbol === 'function')\n        return Symbol(description);\n    return description + \"_\" + getStringId();\n}\n","import { useMemo } from 'react';\nimport { getStringId } from '../utils';\n/**\n * If an ID is not given, will generate and memoize an ID to use for a11y\n * or any other purpose.\n * @param id The optional ID provided by props.\n */\nexport function useID(id) {\n    return useMemo(function () { return id || getStringId('label'); }, [id]);\n}\n","var WritableStream = require('stream').Writable;\nvar util = require('util');\nvar Blob = require('blob');\nvar URL = global.URL || global.webkitURL || global.mozURL;\n\nfunction BlobStream() {\n  if (!(this instanceof BlobStream))\n    return new BlobStream;\n    \n  WritableStream.call(this);\n  this._chunks = [];\n  this._blob = null;\n  this.length = 0;\n}\n\nutil.inherits(BlobStream, WritableStream);\n\nBlobStream.prototype._write = function(chunk, encoding, callback) {\n  // convert chunks to Uint8Arrays (e.g. Buffer when array fallback is being used)\n  if (!(chunk instanceof Uint8Array))\n    chunk = new Uint8Array(chunk);\n    \n  this.length += chunk.length;\n  this._chunks.push(chunk);\n  callback();\n};\n\nBlobStream.prototype.toBlob = function(type) {\n  type = type || 'application/octet-stream';\n  \n  // cache the blob if needed\n  if (!this._blob) {\n    this._blob = new Blob(this._chunks, {\n      type: type\n    });\n    \n    this._chunks = []; // free memory\n  }\n  \n  // if the cached blob's type doesn't match the requested type, make a new blob\n  if (this._blob.type !== type)\n    this._blob = new Blob([this._blob], { type: type });\n  \n  return this._blob;\n};\n\nBlobStream.prototype.toBlobURL = function(type) {\n  return URL.createObjectURL(this.toBlob(type));\n};\n\nmodule.exports = BlobStream;\n","var fetchApi\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch\n  }\n}\n\nif (typeof require !== 'undefined' && (typeof window === 'undefined' || typeof window.document === 'undefined')) {\n  var f = fetchApi || require('cross-fetch')\n  if (f.default) f = f.default\n  exports.default = f\n  module.exports = exports.default\n}\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * @typedef {Object} UI.MentionsManager.Mention\n * @property {string} email The email of the mentioned person. This is passed from setUserData.\n * @property {string} value The value(display name) of the mentioned person. This is passed from setUserData.\n * @property {string} type The type of the mentioned person. This is passed from setUserData.\n * @property {string} id The id of the mentioned person. This is passed from setUserData.\n * @property {string} annotId The id of the annotation in which the contents contain the mentions.\n */\n\n/**\n * @typedef {Object} mentionData\n * @property {UI.MentionsManager.Mention} mentions an array of mentions that an annotation contains\n * @property {string} contentWithoutMentions the content of an annotation, but without mentions\n * @ignore\n */\n\n/**\n * @typedef {Object.<string, string>} UI.MentionsManager.UserData\n * @property {string} value The display name of the user, which will be displayed in the suggestion overlay.\n * @property {string} [id] The unique id of the user. Default to `value`.\n * @property {string} [email] The email of the user, which will be displayed under `value` in the suggestion overlay, if present.\n */\n\n/**\n * @class\n * @name MentionsManager\n * @memberof UI\n * @extends Core.EventHandler\n */\nclass MentionsManager {\n  initialize(store, annotManager) {\n    this.store = store;\n    /**\n     * the key represents the event name\n     * the value is an array of callbacks that will be called when the given key event is triggered\n     * @type {Object.<string, Function[]>}\n     * @ignore\n     */\n    this.events = {};\n    /**\n     * the key represents an annotation's id\n     * the value is a mentionMap\n     * @type {Object.<string, mentionData>}\n     * @example\n     * {\n     *   'eb15d11a-ef1b-6d03-adba-e0eb64bbf6d2': {\n     *     mentions: [\n     *       {\n     *         email: 'cahang@apryse.com',\n     *         value: 'Edmiz',\n     *         type: 'user',\n     *         id: 'aidsfuha-32123123',\n     *       },\n     *       ...\n     *     ],\n     *     contentWithoutMentions: '...'\n     *   }\n     * }\n     * @ignore\n     */\n    this.idMentionDataMap = {};\n    this.allowedTrailingCharacters = [' ', '\\n'];\n    this.mentionLookupCallback = this.defaultMentionsSearchCallback;\n    annotManager.addEventListener('annotationChanged', (annotations, action, { imported }) => {\n      if (!annotations.length || !this.getUserData().length) {\n        return;\n      }\n      if (action === 'add') {\n        imported ? this.handleAnnotationsAdded(annotations, imported) : this.handleAnnotationsAdded(annotations);\n      } else if (action === 'modify') {\n        this.handleAnnotationsModified(annotations);\n      } else if (action === 'delete') {\n        this.handleAnnotationsDeleted(annotations);\n      }\n    });\n  }\n\n  handleAnnotationsAdded(annotations, imported = false) {\n    let newMentions = [];\n\n    annotations.forEach((annotation) => {\n      const mentionData = this.extractMentionDataFromAnnot(annotation);\n\n      this.idMentionDataMap[annotation.Id] = mentionData;\n      newMentions = newMentions.concat(mentionData.mentions);\n    });\n\n    if (newMentions.length && !imported) {\n      this.trigger('mentionChanged', [newMentions, 'add']);\n    }\n  }\n\n  handleAnnotationsModified(annotations) {\n    const newMentions = [];\n    let modifiedMentions = [];\n    const deletedMentions = [];\n\n    for (const annotation of annotations) {\n      const prevMentionData = this.idMentionDataMap[annotation.Id] || {\n        mentions: [],\n        contentWithoutMentions: '',\n      };\n      const currMentionData = this.extractMentionDataFromAnnot(annotation);\n      const prevMentions = prevMentionData.mentions;\n      const currMentions = currMentionData.mentions;\n\n      this.idMentionDataMap[annotation.Id] = currMentionData;\n\n      for (const currMention of currMentions) {\n        const isNewMention = !prevMentions.find((prevMention) => this.isSameMention(prevMention, currMention)\n        );\n        if (isNewMention) {\n          newMentions.push(currMention);\n        }\n      }\n\n      for (const prevMention of prevMentions) {\n        const isDeletedMention = !currMentions.find((currMention) => this.isSameMention(prevMention, currMention)\n        );\n        if (isDeletedMention) {\n          deletedMentions.push(prevMention);\n        }\n      }\n\n      if (\n        prevMentions.length &&\n        prevMentionData.contentWithoutMentions !== currMentionData.contentWithoutMentions\n      ) {\n        modifiedMentions = modifiedMentions.concat(currMentions);\n      }\n    }\n\n    if (newMentions.length) {\n      this.trigger('mentionChanged', [newMentions, 'add']);\n    }\n    if (modifiedMentions.length) {\n      this.trigger('mentionChanged', [modifiedMentions, 'modify']);\n    }\n    if (deletedMentions.length) {\n      this.trigger('mentionChanged', [deletedMentions, 'delete']);\n    }\n  }\n\n  handleAnnotationsDeleted(annotations) {\n    let deletedMentions = [];\n\n    annotations.forEach((annotation) => {\n      if (this.idMentionDataMap[annotation.Id]) {\n        deletedMentions = deletedMentions.concat(this.idMentionDataMap[annotation.Id].mentions);\n        delete this.idMentionDataMap[annotation.Id];\n      }\n    });\n\n    if (deletedMentions.length) {\n      this.trigger('mentionChanged', [deletedMentions, 'delete']);\n    }\n  }\n\n  doesDeltaContainMention(deltas) {\n    const containsMention = deltas.some((delta) => {\n      return delta.insert?.mention;\n    });\n    return containsMention;\n  }\n\n  getFormattedTextFromDeltas(deltas) {\n    const formattedMentionTextList = [];\n    deltas.forEach((delta) => {\n      if (delta.insert) {\n        if (typeof (delta.insert) === 'string') {\n          formattedMentionTextList.push(delta.insert);\n        } else if (delta.insert.mention) {\n          const mention = delta.insert.mention;\n          const formattedMentionText = `${mention.denotationChar}[${mention.value}](${mention.id})`;\n          formattedMentionTextList.push(formattedMentionText);\n        }\n      }\n    });\n    return formattedMentionTextList.join('');\n  }\n\n  /**\n   * @param {string} str a string to extract mention data from\n   * @returns {object} returns an object that contains the following properties\n   * plainTextValue: a string that has been transformed to not have the markups in the incoming string\n   * ids: an array of strings that contains the mentioned ids\n   * @ignore\n   */\n  extractMentionDataFromStr(str) {\n    // the value of the markup is defined at https://github.com/signavio/react-mentions#configuration\n    const markupRegex = /@\\[(.*?)\\]\\((.*?)\\)/g;\n    const ids = [];\n    let match;\n    let plainTextValue = str;\n\n    // iterate through the matches, extract ids and build the plainTextValue\n    // after the iteration finishes, if the incoming string is Hello! @[Zhijie Zhang](zzhang@apryse.com), then we should have:\n    // {\n    //   plainTextValue: Hello! Zhijie Zhang,\n    //   ids: ['zzhang@apryse.com'],\n    // }\n    // eslint-disable-next-line no-cond-assign\n    while ((match = markupRegex.exec(str)) !== null) {\n      const [wholeMatch, displayName, id] = match;\n\n      ids.push(id);\n      plainTextValue = plainTextValue.replace(\n        // keep the @ and only replace the remaining text\n        wholeMatch.slice(1),\n        displayName,\n      );\n    }\n\n    return {\n      plainTextValue,\n      ids,\n    };\n  }\n\n  /**\n   * @param {string} content\n   * @returns {mentionData}\n   * @ignore\n   */\n  extractMentionDataFromAnnot(annotation) {\n    let mentionData = annotation.getCustomData('trn-mention');\n    const userData = this.getUserData();\n    const contents = annotation.getContents();\n    const result = {\n      mentions: [],\n      contentWithoutMentions: contents,\n    };\n\n    if (mentionData === '') {\n      return result;\n    }\n\n    mentionData = JSON.parse(mentionData);\n\n    userData.forEach((user) => {\n      if (mentionData.ids.includes(user.id) && this.isValidMention(contents, user.value)) {\n        result.mentions.push({\n          ...user,\n          annotId: annotation.Id,\n        });\n\n        result.contentWithoutMentions = result.contentWithoutMentions.replace(`@${user.value}`, '');\n      }\n    });\n\n    return result;\n  }\n\n  isValidMention(content, value) {\n    value = `@${value}`;\n\n    const startIndex = content.indexOf(value);\n    const nextChar = content[startIndex + value.length];\n    const isEndOfString = typeof nextChar === 'undefined';\n    const allowedChars = this.getAllowedTrailingCharacters();\n\n    // New line character needs to be allowed in testing\n    // mention, otherwise it leads unexpected behaviours\n    if (Array.isArray(allowedChars) && allowedChars.indexOf('\\n') === -1) {\n      allowedChars.push('\\n');\n    }\n\n    return isEndOfString || allowedChars === '*' || allowedChars.includes(nextChar);\n  }\n\n  isSameMention(prevMention, currMention) {\n    for (const key in prevMention) {\n      if (prevMention[key] !== currMention[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  createMentionReply(annotation, value) {\n    const { plainTextValue, ids } = this.extractMentionDataFromStr(value);\n\n    const replyAnnot = new window.Core.Annotations.StickyAnnotation();\n    replyAnnot['InReplyTo'] = annotation['Id'];\n    replyAnnot['X'] = annotation['X'];\n    replyAnnot['Y'] = annotation['Y'];\n    replyAnnot['PageNumber'] = annotation['PageNumber'];\n    replyAnnot['Author'] = core.getCurrentUser();\n    replyAnnot.setContents(plainTextValue || '');\n    replyAnnot.setCustomData('trn-mention', JSON.stringify({\n      contents: value,\n      ids,\n    }));\n\n    annotation.addReply(replyAnnot);\n    return replyAnnot;\n  }\n\n  /**\n   * Sets the user data that will be displayed in the suggestions overlay when an @ is entered in the textarea.\n   * @method UI.MentionsManager#setUserData\n   * @param {UI.MentionsManager.UserData[]} userData An array of user data\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setUserData([\n      {\n        value: 'John Doe',\n      },\n      {\n        value: 'Jane Doe',\n        email: 'jDoe@gmail.com'\n      }\n    ]);\n  });\n   */\n  setUserData(userData) {\n    userData = userData.map((user) => ({\n      ...user,\n      id: user.id || user.email || user.value,\n    }));\n\n    this.store.dispatch(actions.setUserData(userData));\n  }\n\n  /**\n   * Gets the user data\n   * @method UI.MentionsManager#getUserData\n   * @returns {UI.MentionsManager.UserData[]} An array of user data\n   */\n  getUserData() {\n    return selectors.getUserData(this.store.getState());\n  }\n\n  /**\n   * Sets the characters that can follow a mention, while not invalidating it\n   * By default, a mention can only be followed by a space, or is located at the end of the string\n   * @method UI.MentionsManager#setAllowedTrailingCharacters\n   * @param {string[]|'*'} chars An array of characters. If `*` is passed, then a mention can be followed by any characters\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setUserData([\n      {\n        value: 'John Doe',\n      },\n    ]);\n\n    // this is considered as a mention, because `@John Doe` is at the end of the string\n    'Hello, @John Doe'\n\n    // this is considered as a mention, because `@John Doe` is followed by a space\n    'Hello, @John Doe How are you?'\n\n    // this is NOT considered as a mention, because `@John Doe` is followed by a comma\n    '@John Doe, Hello!'\n\n    instance.mentions.setAllowedTrailingCharacters([' ', ',']);\n\n    // this is now considered as a mention, because comma is an allowed trailing character\n    '@John Doe, Hello!'\n  });\n   */\n  setAllowedTrailingCharacters(chars) {\n    this.allowedTrailingCharacters = chars;\n  }\n\n  /**\n   * Gets the allowed trailing characters\n   * @method UI.MentionsManager#getAllowedTrailingCharacters\n   * @returns {string[]|'*'} An array of trailing characters, or '*'\n   */\n  getAllowedTrailingCharacters() {\n    return this.allowedTrailingCharacters;\n  }\n\n  on(eventName, fn) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = [];\n    }\n\n    this.events[eventName].push(fn);\n\n    return this;\n  }\n\n  off(eventName, fn) {\n    if (!this.events) {\n      return this;\n    }\n\n    if (typeof eventName === 'undefined') {\n      this.events = {};\n    }\n\n    if (!this.events[eventName]) {\n      return this;\n    }\n\n    if (fn) {\n      this.events[eventName] = this.events[eventName].filter((handler) => handler !== fn);\n    } else {\n      this.events[eventName] = [];\n    }\n\n    return this;\n  }\n\n  one(eventName, fn) {\n    const origFn = fn;\n\n    fn = (...args) => {\n      this.off(eventName, fn);\n\n      origFn.apply(this, args);\n    };\n\n    return this.on(eventName, fn);\n  }\n\n  trigger(eventName, ...data) {\n    if (!this.events) {\n      return this;\n    }\n\n    if (!this.events[eventName]) {\n      return this;\n    }\n\n    // normalize data if only an array is passed in as data\n    // for example: trigger('mentionChanged', [mentions])\n    // data will be passed to the handler: (mentions) => {}\n    if (data.length === 1 && Array.isArray(data[0])) {\n      data = data[0];\n    }\n\n    this.events[eventName].forEach((fn) => {\n      fn.call(this, ...data);\n    });\n\n    return this;\n  }\n\n  addEventListener(...args) {\n    this.on(...args);\n  }\n\n  setEventListener(...args) {\n    this.on(...args);\n  }\n\n  removeEventListener(...args) {\n    this.off(...args);\n  }\n\n\n  /**\n   * Sets the mention lookup callback function used by quill-mentions to filter the users in the suggestions overlay.\n   * @method UI.MentionsManager#setMentionLookupCallback\n   * @param {function} callback A callback function that returns an array of users that displayed in the suggestions overlay.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.mentions.setMentionLookupCallback(async (userData, searchTerm) => {\n      const matches = [];\n      userData.forEach((user) => {\n        if (user.name === 'John Doe') {\n          matches.push(user);\n        }\n      });\n      return matches;\n    });\n  });\n   */\n  setMentionLookupCallback(callback) {\n    this.mentionLookupCallback = callback;\n  }\n\n  /**\n   * Gets the current mention lookup callback function being used by quill-mentions to filter the users in the suggestions overlay.\n   * @method UI.MentionsManager#getMentionLookupCallback\n   * @returns {function} the current function used to filter users in the suggestions overlay\n   */\n  getMentionLookupCallback() {\n    return this.mentionLookupCallback;\n  }\n\n  /**\n   * The default mention lookup callback used to filter users in the suggestions overlay.\n   * @method UI.MentionsManager#defaultMentionLookupCallback\n   */\n  defaultMentionsSearchCallback(userData, searchTerm) {\n    if (searchTerm.length === 0) {\n      return (userData);\n    }\n\n    const matches = [];\n    const searchTermLowerCase = searchTerm.toLowerCase();\n    userData.forEach(function(user) {\n      const userValueIncludesSearchTerm = user.value.toLowerCase().includes(searchTermLowerCase);\n      const userIdIncludesSearchTerm = user.id && user.id.toLowerCase().includes(searchTermLowerCase);\n      const userEmailIncludesSearchTerm = user.email && user.email.toLowerCase().includes(searchTermLowerCase);\n\n      if (userValueIncludesSearchTerm || userIdIncludesSearchTerm || userEmailIncludesSearchTerm) {\n        matches.push(user);\n      }\n    });\n\n    return (matches);\n  }\n}\n\n/**\n * Triggered when a mention or mentions have been changed (added, deleted, modified).\n * Attach like instance.mentions.on('mentionChanged', callback)\n * @name UI.MentionsManager#mentionChanged\n * @event\n * @param {UI.MentionsManager.Mention} mentions The mentions that were changed\n * @param {'add'|'modify'|'delete'} action The action that occurred (add, delete, modify)\n */\n\nexport default new MentionsManager();\nexport {\n  MentionsManager\n};\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Swipeable } from 'react-swipeable';\nimport Button from 'components/Button';\nimport FocusTrap from 'components/FocusTrap';\nimport PropTypes from 'prop-types';\nimport './ModalWrapper.scss';\nimport useFocusOnClose from 'hooks/useFocusOnClose';\n\nconst SwipeableWrapper = ({\n  onSwipedDown,\n  onSwipedUp,\n  closeHandler,\n  swipeToClose = false,\n  children,\n}) => {\n  return swipeToClose ? (\n    <Swipeable\n      onSwipedUp={onSwipedUp || closeHandler}\n      onSwipedDown={onSwipedDown || closeHandler}\n      preventDefaultTouchmoveEvent\n    >\n      {children}\n    </Swipeable>\n  ) : (\n    children\n  );\n};\n\nSwipeableWrapper.propTypes = {\n  onSwipedDown: PropTypes.func,\n  onSwipedUp: PropTypes.func,\n  closeHandler: PropTypes.func,\n  swipeToClose: PropTypes.bool,\n  children: PropTypes.node,\n};\n\nconst ModalWrapper = (props) => {\n  const [t] = useTranslation();\n  const onCloseHandler = useFocusOnClose(props.onCloseClick);\n\n  useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (event.key === 'Escape' && props.isOpen) {\n        onCloseHandler();\n      }\n    };\n\n    window.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      window.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [onCloseHandler, props.isOpen]);\n\n  const renderHeader = () => {\n    if (props.title) {\n      return (\n        <div className=\"header-container\">\n          <div className=\"left-header\">\n            <h2>{t(props.title)}</h2>\n            {props.backButtonDataElement && (\n              <Button\n                className=\"back-button\"\n                dataElement={props.backButtonDataElement}\n                title={t('action.back')}\n                img={'icon-arrow-back'}\n                onClick={props.onBackClick}\n              />\n            )}\n          </div>\n          <Button\n            className=\"close-button\"\n            dataElement={props.closeButtonDataElement}\n            title=\"action.close\"\n            img=\"ic_close_black_24px\"\n            onClick={onCloseHandler}\n          />\n        </div>\n      );\n    }\n    return null;\n  };\n\n  const accessibleLabel = props.accessibleLabel ? t(props.accessibleLabel) : t(props.title);\n\n  return (\n    <FocusTrap locked={props.isOpen}>\n      <div\n        className=\"modal-container\"\n        onClick={props.containerOnClick}\n        role=\"dialog\"\n        aria-modal=\"true\"\n        aria-label={accessibleLabel}\n      >\n        <div className=\"wrapper\">\n          <SwipeableWrapper {...props}>\n            <div className=\"swipe-indicator\" />\n            {renderHeader()}\n          </SwipeableWrapper>\n          {props.children}\n        </div>\n      </div>\n    </FocusTrap>\n  );\n};\n\nModalWrapper.propTypes = {\n  title: PropTypes.string,\n  isOpen: PropTypes.bool.isRequired,\n  closeButtonDataElement: PropTypes.string,\n  backButtonDataElement: PropTypes.string,\n  onBackClick: PropTypes.func,\n  onCloseClick: PropTypes.func.isRequired,\n  containerOnClick: PropTypes.func,\n  swipeToClose: PropTypes.bool,\n  accessibleLabel: PropTypes.string,\n  onSwipedUp: PropTypes.func,\n  onSwipedDown: PropTypes.func,\n};\n\nexport default ModalWrapper;","import ModalWrapper from './ModalWrapper';\n\nexport default ModalWrapper;","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n  bold: function bold() {\n    return createHTML(this, 'b', '', '');\n  }\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = toString(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n","const Scale = window.Core.Scale;\n\nexport const PresetMeasurementSystems = {\n  METRIC: 'metric',\n  IMPERIAL: 'imperial'\n};\n\nconst metricPreset = [\n  ['1:10', new Scale([[1, 'mm'], [10, 'mm']])],\n  ['1:20', new Scale([[1, 'mm'], [20, 'mm']])],\n  ['1:50', new Scale([[1, 'mm'], [50, 'mm']])],\n  ['1:100', new Scale([[1, 'mm'], [100, 'mm']])],\n  ['1:200', new Scale([[1, 'mm'], [200, 'mm']])],\n  ['1:500', new Scale([[1, 'mm'], [500, 'mm']])],\n  ['1:1000', new Scale([[1, 'mm'], [1000, 'mm']])]\n];\nconst imperialPreset = [\n  ['1/16\"=1\\'-0\"', new Scale([[1 / 16, 'in'], [1, 'ft-in']])],\n  ['3/32\"=1\\'-0\"', new Scale([[3 / 32, 'in'], [1, 'ft-in']])],\n  ['1/8\"=1\\'-0\"', new Scale([[1 / 8, 'in'], [1, 'ft-in']])],\n  ['3/16\"=1\\'-0\"', new Scale([[3 / 16, 'in'], [1, 'ft-in']])],\n  ['1/4\"=1\\'-0\"', new Scale([[1 / 4, 'in'], [1, 'ft-in']])],\n  ['3/8\"=1\\'-0\"', new Scale([[3 / 8, 'in'], [1, 'ft-in']])],\n  ['1/2\"=1\\'-0\"', new Scale([[1 / 2, 'in'], [1, 'ft-in']])],\n  ['3/4\"=1\\'-0\"', new Scale([[3 / 4, 'in'], [1, 'ft-in']])],\n  ['1\"=1\\'-0\"', new Scale([[1, 'in'], [1, 'ft-in']])]\n];\n\nexport const getMeasurementScalePreset = () => ({\n  [PresetMeasurementSystems.METRIC]: metricPreset,\n  [PresetMeasurementSystems.IMPERIAL]: imperialPreset\n});\n\nconst decimalPrecisions = [\n  ['0.1', 0.1],\n  ['0.01', 0.01],\n  ['0.001', 0.001],\n  ['0.0001', 0.0001]\n];\nconst fractionalPrecisions = [\n  ['1/8', 0.125],\n  ['1/16', 0.0625],\n  ['1/32', 0.03125],\n  ['1/64', 0.015625]\n];\nexport const PrecisionType = {\n  DECIMAL: 'decimal',\n  FRACTIONAL: 'fractional'\n};\nexport const precisionOptions = {\n  [PrecisionType.DECIMAL]: decimalPrecisions,\n  [PrecisionType.FRACTIONAL]: fractionalPrecisions\n};\n\nexport const precisionFractions = {\n  0.125: '1/8',\n  0.0625: '1/16',\n  0.03125: '1/32',\n  0.015625: '1/64'\n};\n\nexport const numberRegex = /^\\d*(\\.\\d*)?$/;\nexport const fractionRegex = /^\\d*(\\s\\d\\/\\d*)$/;\nexport const pureFractionRegex = /^(\\d\\/\\d*)*$/;\nexport const floatRegex = /^(\\d+)?(\\.)?(\\d+)?$/;\nexport const inFractionalRegex = /^((\\d+) )?((\\d+)\\/)?(\\d+)\"$/;\nexport const ftInFractionalRegex = /^((\\d+)'-)?((\\d+) )?((\\d+)\\/)?(\\d+)\"$/;\nexport const ftInDecimalRegex = /^((\\d+)ft-)?(((\\d+).)?(\\d+))in$/;\n\nexport const parseFtInDecimal = (valueStr) => {\n  const matches = valueStr.match(ftInDecimalRegex);\n  let sum = 0;\n  sum += matches[2] ? Number(matches[2]) : 0;\n  if (matches[3] && Number(matches[3])) {\n    sum += (Number(matches[3]) / 12);\n  }\n  return sum;\n};\nexport const parseInFractional = (valueStr) => {\n  const matches = valueStr.match(inFractionalRegex);\n  let sum = 0;\n  sum += matches[2] ? Number(matches[2]) : 0;\n  if (matches[5] && Number(matches[5])) {\n    if (matches[4] && Number(matches[4])) {\n      sum += (Number(matches[4]) / Number(matches[5]));\n    } else {\n      sum += Number(matches[5]);\n    }\n  }\n  return sum;\n};\nexport const parseFtInFractional = (valueStr) => {\n  const matches = valueStr.match(ftInFractionalRegex);\n  let sum = 0;\n  sum += matches[2] ? Number(matches[2]) : 0;\n  sum += matches[4] ? Number(matches[4]) / 12 : 0;\n  if (matches[7] && Number(matches[7])) {\n    if (matches[6] && Number(matches[6])) {\n      sum += (Number(matches[6]) / Number(matches[7])) / 12;\n    } else {\n      sum += Number(matches[7]) / 12;\n    }\n  }\n  return sum;\n};\n\nexport const fractionalUnits = ['in', 'ft-in'];\nexport const metricUnits = ['mm', 'cm', 'm', 'km'];\n\nexport const ifFractionalPrecision = (precision) => fractionalPrecisions.map((item) => item[0]).includes(precision) || fractionalPrecisions.map((item) => item[1]).includes(precision);\n\nexport const hintValues = {\n  'in': 'eg. 1 1/2\"',\n  'ft-in': 'eg. 1\\'-1 1/2\"',\n  'ft-in decimal': 'eg. 1ft-10.5in'\n};\n\n// the base unit is cm\nconst unitConversion = {\n  'mm': 0.1,\n  'cm': 1,\n  'm': 100,\n  'km': 100000,\n  'mi': 160394,\n  'yd': 91.44,\n  'ft': 30.48,\n  'in': 2.54,\n  'ft\\'': 30.48,\n  'in\"': 2.54,\n  'pt': 0.0352778,\n  'ft-in': 30.48\n};\n\nexport const convertUnit = (value, unit, newUnit) => {\n  return value * unitConversion[unit] / unitConversion[newUnit];\n};\n\nexport const scalePresetPrecision = {\n  [imperialPreset[0][0]]: fractionalPrecisions[1],\n  [imperialPreset[1][0]]: fractionalPrecisions[2],\n  [imperialPreset[2][0]]: fractionalPrecisions[0],\n  [imperialPreset[3][0]]: fractionalPrecisions[1],\n  [imperialPreset[4][0]]: fractionalPrecisions[0],\n  [imperialPreset[5][0]]: fractionalPrecisions[0],\n  [imperialPreset[6][0]]: fractionalPrecisions[0],\n  [imperialPreset[7][0]]: fractionalPrecisions[0],\n  [imperialPreset[8][0]]: fractionalPrecisions[0]\n};\n\nexport const initialScale = new Scale({ pageScale: { value: 1, unit: 'in' }, worldScale: { value: 1, unit: 'in' } });\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import core from 'core';\n\nexport default (customInput, pageLabels, totalPages = core.getTotalPages(), onError = () => {}) => {\n  // By default we use total pages of loaded doc. But we could also use this for a doc\n  // that is not loaded (like in page replacement) so we want the option to pass it as a param\n\n  const pagesToPrint = [];\n\n  // no input, assume every page\n  if (!customInput) {\n    for (let i = 1; i <= totalPages; i++) {\n      pagesToPrint.push(i);\n    }\n    return pagesToPrint;\n  }\n\n  const pageGroups = customInput.split(',');\n  pageGroups.forEach((pageGroup) => {\n    const range = pageGroup.split('-');\n    const isSinglePage = range.length === 1;\n    const isRangeOfPages = range.length === 2;\n\n    if (isSinglePage) {\n      const page = getPageNumber(range[0], pageLabels, totalPages, onError);\n      pagesToPrint.push(page);\n    } else if (isRangeOfPages) {\n      addRangeOfPagesTo(pagesToPrint, range, pageLabels, totalPages, onError);\n    }\n  });\n\n  return pagesToPrint\n    .filter((pageNumber, index, pagesToPrint) => {\n      const isUnique = pagesToPrint.indexOf(pageNumber) === index;\n      const isValidPageNumber = pageNumber > 0 && pageNumber <= totalPages;\n      return isUnique && isValidPageNumber;\n    })\n    .sort((a, b) => a - b);\n};\n\nconst addRangeOfPagesTo = (pagesToPrint, range, pageLabels, totalPages, onError) => {\n  const start = getPageNumber(range[0], pageLabels, totalPages, onError);\n  let end;\n\n  if (range[1] === '') {\n    // range like 4- means page 4 to the end of the document\n    end = core.getTotalPages();\n  } else {\n    end = getPageNumber(range[1], pageLabels, totalPages, onError);\n  }\n\n  for (let i = start; i <= end; i++) {\n    pagesToPrint.push(i);\n  }\n};\n\nconst getPageNumber = (character, pageLabels, totalPages, onError) => {\n  const pageIndex = pageLabels?.indexOf(character);\n\n  let pageNumber;\n\n  if (pageIndex === -1 && !isNaN(character) && +character > 0 && +character <= totalPages) {\n    return +character;\n  }\n\n  if (pageIndex === -1) {\n    onError && onError(character);\n    console.warn(`${character} is not a valid page label`);\n  } else {\n    pageNumber = pageIndex + 1;\n  }\n\n  return pageNumber;\n};\n","import core from 'core';\n\n/**\n * We can just pass object down as a prop, but many properties of that object won't be used by the child component,\n * so here we select properties that will be used.\n * @ignore\n * @param annotation is an annotation created by a tool\n * @return current style of that object.\n */\nexport default (annotation) => {\n  const styleProperty = [\n    'FillColor',\n    'StrokeColor',\n    'TextColor',\n    'Opacity',\n    'StrokeThickness',\n    'FontSize',\n    'Precision',\n    'Scale',\n    'Style',\n  ];\n  const style = {};\n\n  styleProperty.forEach((property) => {\n    const value = annotation[property];\n\n    if (value !== null && value !== undefined) {\n      style[property] = annotation[property];\n    }\n  });\n\n  // Special case for the highlight annotation. It only have opacity when blend mode is working\n  if (annotation.elementName === 'highlight' && !core.isBlendModeSupported(annotation['BlendMode'])) {\n    style.Opacity = null;\n  }\n\n  // widget don't support opacity\n  if (annotation.isFormFieldPlaceholder()) {\n    style.Opacity = null;\n  }\n\n  return style;\n};\n","export default {\n  THUMBNAIL: 'thumbnail',\n  CHECKBOX: 'checkbox',\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n      return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeSearch, rx, S);\n\n      if (res.done) return res.value;\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var map = {\n\t\"./apryse-logo.svg\": 638,\n\t\"./calibrate.svg\": 639,\n\t\"./digital_signature_error.svg\": 640,\n\t\"./digital_signature_valid.svg\": 641,\n\t\"./digital_signature_warning.svg\": 642,\n\t\"./group-annotations-icon.svg\": 643,\n\t\"./ic-alignment-bottom.svg\": 644,\n\t\"./ic-alignment-center-horizontal.svg\": 645,\n\t\"./ic-alignment-center-vertical.svg\": 646,\n\t\"./ic-alignment-left.svg\": 647,\n\t\"./ic-alignment-main.svg\": 648,\n\t\"./ic-alignment-right.svg\": 649,\n\t\"./ic-alignment-top.svg\": 650,\n\t\"./ic-audio-redact.svg\": 651,\n\t\"./ic-bookmark.svg\": 652,\n\t\"./ic-calibrate.svg\": 653,\n\t\"./ic-copy-color.svg\": 654,\n\t\"./ic-delete.svg\": 655,\n\t\"./ic-distribute-horizontal.svg\": 656,\n\t\"./ic-distribute-vertical.svg\": 657,\n\t\"./ic-edit-page.svg\": 658,\n\t\"./ic-file-cad.svg\": 659,\n\t\"./ic-file-doc.svg\": 660,\n\t\"./ic-file-etc.svg\": 661,\n\t\"./ic-file-img.svg\": 662,\n\t\"./ic-file-pdf.svg\": 663,\n\t\"./ic-file-ppt.svg\": 664,\n\t\"./ic-file-xls.svg\": 665,\n\t\"./ic-fill-and-sign.svg\": 666,\n\t\"./ic-full-frame-video-and-audio-redact.svg\": 667,\n\t\"./ic-full-frame-video-redact.svg\": 668,\n\t\"./ic-hamburger-menu.svg\": 669,\n\t\"./ic-indent-decrease.svg\": 670,\n\t\"./ic-indent-increase.svg\": 671,\n\t\"./ic-insert text.svg\": 672,\n\t\"./ic-layer.svg\": 673,\n\t\"./ic-paragraph.svg\": 674,\n\t\"./ic-replace text.svg\": 675,\n\t\"./ic-table.svg\": 676,\n\t\"./ic-wv3d-properties-panel-menu.svg\": 677,\n\t\"./ic_annotation_area_black_24px.svg\": 678,\n\t\"./ic_annotation_cloudy_rectangular_area_black_24px.svg\": 679,\n\t\"./ic_annotation_ellipse_area_black.svg\": 680,\n\t\"./ic_annotation_eraser_black_24px.svg\": 681,\n\t\"./ic_annotation_rectangular_area_black_24px.svg\": 682,\n\t\"./ic_annotation_signature_black_24px.svg\": 683,\n\t\"./ic_annotation_strikeout_black_24px.svg\": 684,\n\t\"./ic_annotation_underline_black_24px.svg\": 685,\n\t\"./ic_bookmarks_black_24px.svg\": 686,\n\t\"./ic_check_black_24px.svg\": 687,\n\t\"./ic_chevron_down_black_24px.svg\": 688,\n\t\"./ic_chevron_left_black_24px.svg\": 689,\n\t\"./ic_chevron_right_black_24px.svg\": 690,\n\t\"./ic_chevron_up_black_24px.svg\": 691,\n\t\"./ic_close_black_24px.svg\": 692,\n\t\"./ic_copy_black_24px.svg\": 693,\n\t\"./ic_crop_black_24px.svg\": 694,\n\t\"./ic_edit_page_24px.svg\": 695,\n\t\"./ic_fileattachment_24px.svg\": 696,\n\t\"./ic_layers_24px.svg\": 697,\n\t\"./ic_pause_24px.svg\": 698,\n\t\"./ic_play_24px.svg\": 699,\n\t\"./ic_select_black_24px.svg\": 700,\n\t\"./ic_snipping_black_24px.svg\": 701,\n\t\"./ic_sound_24px.svg\": 702,\n\t\"./ic_thumbnails_grid_black_24px.svg\": 703,\n\t\"./icon-action-redo.svg\": 704,\n\t\"./icon-action-undo.svg\": 705,\n\t\"./icon-add-file.svg\": 706,\n\t\"./icon-add-folder.svg\": 707,\n\t\"./icon-alert.svg\": 708,\n\t\"./icon-annotation-select-multiple.svg\": 709,\n\t\"./icon-annotation-status-accepted.svg\": 710,\n\t\"./icon-annotation-status-cancelled.svg\": 711,\n\t\"./icon-annotation-status-completed.svg\": 712,\n\t\"./icon-annotation-status-marked.svg\": 713,\n\t\"./icon-annotation-status-none.svg\": 714,\n\t\"./icon-annotation-status-rejected.svg\": 715,\n\t\"./icon-annotation-status-unmarked.svg\": 716,\n\t\"./icon-arrow-back.svg\": 717,\n\t\"./icon-arrow-down.svg\": 718,\n\t\"./icon-arrow-left.svg\": 719,\n\t\"./icon-arrow-right.svg\": 720,\n\t\"./icon-arrow-to-bottom.svg\": 721,\n\t\"./icon-arrow-to-middle.svg\": 722,\n\t\"./icon-arrow-to-top.svg\": 723,\n\t\"./icon-arrow-up.svg\": 724,\n\t\"./icon-chat-bubble.svg\": 725,\n\t\"./icon-chevron-down.svg\": 726,\n\t\"./icon-chevron-left.svg\": 727,\n\t\"./icon-chevron-right.svg\": 728,\n\t\"./icon-chevron-up.svg\": 729,\n\t\"./icon-close.svg\": 730,\n\t\"./icon-comments-filter.svg\": 731,\n\t\"./icon-compare-change.svg\": 732,\n\t\"./icon-compare-file-open.svg\": 733,\n\t\"./icon-content-edit.svg\": 734,\n\t\"./icon-copy.svg\": 735,\n\t\"./icon-copy2.svg\": 736,\n\t\"./icon-cut.svg\": 737,\n\t\"./icon-dark-mode-option.svg\": 738,\n\t\"./icon-delete-line.svg\": 739,\n\t\"./icon-detach-toolbar.svg\": 740,\n\t\"./icon-double-chevron-down.svg\": 741,\n\t\"./icon-download.svg\": 742,\n\t\"./icon-drag-handle.svg\": 743,\n\t\"./icon-edit-form-field.svg\": 744,\n\t\"./icon-folder.svg\": 745,\n\t\"./icon-form-field-checkbox.svg\": 746,\n\t\"./icon-form-field-combobox.svg\": 747,\n\t\"./icon-form-field-listbox.svg\": 748,\n\t\"./icon-form-field-radiobutton.svg\": 749,\n\t\"./icon-form-field-signature.svg\": 750,\n\t\"./icon-form-field-text.svg\": 751,\n\t\"./icon-header-chat-line.svg\": 752,\n\t\"./icon-header-compare.svg\": 753,\n\t\"./icon-header-file-picker-line.svg\": 754,\n\t\"./icon-header-full-screen-exit.svg\": 755,\n\t\"./icon-header-full-screen.svg\": 756,\n\t\"./icon-header-page-manipulation-insert-above.svg\": 757,\n\t\"./icon-header-page-manipulation-line.svg\": 758,\n\t\"./icon-header-page-manipulation-page-layout-cover-line.svg\": 759,\n\t\"./icon-header-page-manipulation-page-layout-double-page-line.svg\": 760,\n\t\"./icon-header-page-manipulation-page-layout-single-page-line.svg\": 761,\n\t\"./icon-header-page-manipulation-page-rotation-clockwise-line.svg\": 762,\n\t\"./icon-header-page-manipulation-page-rotation-counterclockwise-line.svg\": 763,\n\t\"./icon-header-page-manipulation-page-transition-continuous-page-line.svg\": 764,\n\t\"./icon-header-page-manipulation-page-transition-page-by-page-line.svg\": 765,\n\t\"./icon-header-page-manipulation-page-transition-reader.svg\": 766,\n\t\"./icon-header-pan.svg\": 767,\n\t\"./icon-header-print-line.svg\": 768,\n\t\"./icon-header-search.svg\": 769,\n\t\"./icon-header-select-line.svg\": 770,\n\t\"./icon-header-settings-line.svg\": 771,\n\t\"./icon-header-sidebar-line.svg\": 772,\n\t\"./icon-header-zoom-fit-to-page.svg\": 773,\n\t\"./icon-header-zoom-fit-to-width.svg\": 774,\n\t\"./icon-header-zoom-in-line.svg\": 775,\n\t\"./icon-header-zoom-marquee.svg\": 776,\n\t\"./icon-header-zoom-out-line.svg\": 777,\n\t\"./icon-image-green.svg\": 778,\n\t\"./icon-info.svg\": 779,\n\t\"./icon-keyboard.svg\": 780,\n\t\"./icon-light-mode-option.svg\": 781,\n\t\"./icon-linestyle-cloudy-line.svg\": 782,\n\t\"./icon-linestyle-dash-1-4-8-4.svg\": 783,\n\t\"./icon-linestyle-dash-2-2.svg\": 784,\n\t\"./icon-linestyle-dash-3-6-10-6.svg\": 785,\n\t\"./icon-linestyle-dash-4-4.svg\": 786,\n\t\"./icon-linestyle-dash-4-6-10-6.svg\": 787,\n\t\"./icon-linestyle-dash-6-6.svg\": 788,\n\t\"./icon-linestyle-end-arrow-closed-reverse.svg\": 789,\n\t\"./icon-linestyle-end-arrow-closed.svg\": 790,\n\t\"./icon-linestyle-end-arrow-open-reverse.svg\": 791,\n\t\"./icon-linestyle-end-arrow-open.svg\": 792,\n\t\"./icon-linestyle-end-butt.svg\": 793,\n\t\"./icon-linestyle-end-circle.svg\": 794,\n\t\"./icon-linestyle-end-diamond.svg\": 795,\n\t\"./icon-linestyle-end-slash.svg\": 796,\n\t\"./icon-linestyle-end-square.svg\": 797,\n\t\"./icon-linestyle-none.svg\": 798,\n\t\"./icon-linestyle-solid-line.svg\": 799,\n\t\"./icon-linestyle-start-arrow-closed-reverse.svg\": 800,\n\t\"./icon-linestyle-start-arrow-closed.svg\": 801,\n\t\"./icon-linestyle-start-arrow-open-reverse.svg\": 802,\n\t\"./icon-linestyle-start-arrow-open.svg\": 803,\n\t\"./icon-linestyle-start-butt.svg\": 804,\n\t\"./icon-linestyle-start-circle.svg\": 805,\n\t\"./icon-linestyle-start-diamond.svg\": 806,\n\t\"./icon-linestyle-start-slash.svg\": 807,\n\t\"./icon-linestyle-start-square.svg\": 808,\n\t\"./icon-lock-wire.svg\": 809,\n\t\"./icon-lock.svg\": 810,\n\t\"./icon-magnifying-glass.svg\": 811,\n\t\"./icon-menu-add.svg\": 812,\n\t\"./icon-menu-align-centre.svg\": 813,\n\t\"./icon-menu-align-left.svg\": 814,\n\t\"./icon-menu-align-right.svg\": 815,\n\t\"./icon-menu-bold.svg\": 816,\n\t\"./icon-menu-both-align.svg\": 817,\n\t\"./icon-menu-centre-align.svg\": 818,\n\t\"./icon-menu-checkmark.svg\": 819,\n\t\"./icon-menu-italic.svg\": 820,\n\t\"./icon-menu-left-align.svg\": 821,\n\t\"./icon-menu-right-align.svg\": 822,\n\t\"./icon-menu-style-line.svg\": 823,\n\t\"./icon-menu-text-underline.svg\": 824,\n\t\"./icon-no-marked-redactions.svg\": 825,\n\t\"./icon-office-editor-bullet-list.svg\": 826,\n\t\"./icon-office-editor-circle.svg\": 827,\n\t\"./icon-office-editor-line-spacing.svg\": 828,\n\t\"./icon-office-editor-list-style-arrow.svg\": 829,\n\t\"./icon-office-editor-list-style-bullet.svg\": 830,\n\t\"./icon-office-editor-list-style-check.svg\": 831,\n\t\"./icon-office-editor-list-style-diamond.svg\": 832,\n\t\"./icon-office-editor-list-style-latin-roman.svg\": 833,\n\t\"./icon-office-editor-list-style-number-decimal.svg\": 834,\n\t\"./icon-office-editor-list-style-number-latin-1.svg\": 835,\n\t\"./icon-office-editor-list-style-number-latin-2.svg\": 836,\n\t\"./icon-office-editor-list-style-roman-latin.svg\": 837,\n\t\"./icon-office-editor-list-style-square-bullet.svg\": 838,\n\t\"./icon-office-editor-list-style-square.svg\": 839,\n\t\"./icon-office-editor-number-list.svg\": 840,\n\t\"./icon-office-editor-page-break.svg\": 841,\n\t\"./icon-open-folder.svg\": 842,\n\t\"./icon-operation-eraser.svg\": 843,\n\t\"./icon-operation-redo.svg\": 844,\n\t\"./icon-operation-undo.svg\": 845,\n\t\"./icon-page-insertion-insert.svg\": 846,\n\t\"./icon-page-manipulation-extract.svg\": 847,\n\t\"./icon-page-move-down.svg\": 848,\n\t\"./icon-page-move-up.svg\": 849,\n\t\"./icon-page-replacement.svg\": 850,\n\t\"./icon-panel-outlines.svg\": 851,\n\t\"./icon-panel-thumbnail-line.svg\": 852,\n\t\"./icon-paste-without-formatting.svg\": 853,\n\t\"./icon-paste.svg\": 854,\n\t\"./icon-pdf-portfolio.svg\": 855,\n\t\"./icon-pencil-line.svg\": 856,\n\t\"./icon-plus-sign.svg\": 857,\n\t\"./icon-portfolio-file.svg\": 858,\n\t\"./icon-portfolio-folder.svg\": 859,\n\t\"./icon-post-reply.svg\": 860,\n\t\"./icon-redact-panel.svg\": 861,\n\t\"./icon-save.svg\": 862,\n\t\"./icon-signature-plus-disabled.svg\": 863,\n\t\"./icon-signature-plus-sign.svg\": 864,\n\t\"./icon-style-panel-toggle.svg\": 865,\n\t\"./icon-sync.svg\": 866,\n\t\"./icon-text-bold.svg\": 867,\n\t\"./icon-text-italic.svg\": 868,\n\t\"./icon-text-justify-center.svg\": 869,\n\t\"./icon-text-underline.svg\": 870,\n\t\"./icon-thumbtack.svg\": 871,\n\t\"./icon-tool-arc.svg\": 872,\n\t\"./icon-tool-callout-line.svg\": 873,\n\t\"./icon-tool-changeview.svg\": 874,\n\t\"./icon-tool-check-stamp.svg\": 875,\n\t\"./icon-tool-comment-line.svg\": 876,\n\t\"./icon-tool-cross-stamp.svg\": 877,\n\t\"./icon-tool-dot-stamp.svg\": 878,\n\t\"./icon-tool-fill-and-sign-calendar.svg\": 879,\n\t\"./icon-tool-highlight.svg\": 880,\n\t\"./icon-tool-image-line.svg\": 881,\n\t\"./icon-tool-link.svg\": 882,\n\t\"./icon-tool-measurement-arc.svg\": 883,\n\t\"./icon-tool-measurement-area-ellipse-line.svg\": 884,\n\t\"./icon-tool-measurement-area-line.svg\": 885,\n\t\"./icon-tool-measurement-area-polygon-line.svg\": 886,\n\t\"./icon-tool-measurement-cloud-area-line.svg\": 887,\n\t\"./icon-tool-measurement-distance-line.svg\": 888,\n\t\"./icon-tool-measurement-perimeter.svg\": 889,\n\t\"./icon-tool-model3d.svg\": 890,\n\t\"./icon-tool-more.svg\": 891,\n\t\"./icon-tool-page-redact.svg\": 892,\n\t\"./icon-tool-pen-highlight.svg\": 893,\n\t\"./icon-tool-pen-line.svg\": 894,\n\t\"./icon-tool-redaction-area.svg\": 895,\n\t\"./icon-tool-select-area-redaction.svg\": 896,\n\t\"./icon-tool-select-pages.svg\": 897,\n\t\"./icon-tool-shape-arrow.svg\": 898,\n\t\"./icon-tool-shape-cloud.svg\": 899,\n\t\"./icon-tool-shape-line.svg\": 900,\n\t\"./icon-tool-shape-oval.svg\": 901,\n\t\"./icon-tool-shape-polygon.svg\": 902,\n\t\"./icon-tool-shape-polyline.svg\": 903,\n\t\"./icon-tool-shape-rectangle.svg\": 904,\n\t\"./icon-tool-signature.svg\": 905,\n\t\"./icon-tool-stamp-line.svg\": 906,\n\t\"./icon-tool-text-free-text.svg\": 907,\n\t\"./icon-tool-text-manipulation-highlight.svg\": 908,\n\t\"./icon-tool-text-manipulation-squiggly.svg\": 909,\n\t\"./icon-tool-text-manipulation-strikethrough.svg\": 910,\n\t\"./icon-tool-text-manipulation-underline.svg\": 911,\n\t\"./icon-tool-unlink.svg\": 912,\n\t\"./icon-tools-more-active.svg\": 913,\n\t\"./icon-tools-more-vertical.svg\": 914,\n\t\"./icon-tools-more.svg\": 915,\n\t\"./icon-unposted-comment.svg\": 916,\n\t\"./icon-view.svg\": 917,\n\t\"./icon-watermark-panel.svg\": 918,\n\t\"./icon-zoom-thumb-in.svg\": 919,\n\t\"./icon-zoom-thumb-out.svg\": 920,\n\t\"./illustration - empty state - outlines.svg\": 921,\n\t\"./multi select.svg\": 922,\n\t\"./redact-icons-credit-card.svg\": 923,\n\t\"./redact-icons-email.svg\": 924,\n\t\"./redact-icons-image.svg\": 925,\n\t\"./redact-icons-phone-number.svg\": 926,\n\t\"./style-panel-no-tool-selected.svg\": 927,\n\t\"./textselect_cursor.svg\": 928,\n\t\"./ungroup-annotations-icon.svg\": 929\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 362;","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Date = global.Date;\nvar getTime = uncurryThis(Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return getTime(new Date());\n  }\n});\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n  if (!matchesSelectorFunc) {\n    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n      // $FlowIgnore: Doesn't think elements are indexable\n      return (0, _shims.isFunction)(el[method]);\n    });\n  } // Might not be found entirely (not an Element?) - in that case, bail\n  // $FlowIgnore: Doesn't think elements are indexable\n\n\n  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n  return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n  var node = el;\n\n  do {\n    if (matchesSelector(node, selector)) return true;\n    if (node === baseNode) return false;\n    node = node.parentNode;\n  } while (node);\n\n  return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.addEventListener) {\n    el.addEventListener(event, handler, options);\n  } else if (el.attachEvent) {\n    el.attachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = handler;\n  }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n  if (!el) return;\n\n  var options = _objectSpread({\n    capture: true\n  }, inputOptions); // $FlowIgnore[method-unbinding]\n\n\n  if (el.removeEventListener) {\n    el.removeEventListener(event, handler, options);\n  } else if (el.detachEvent) {\n    el.detachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = null;\n  }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetTop which is including margin. See getBoundPosition\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height += (0, _shims.int)(computedStyle.borderTopWidth);\n  height += (0, _shims.int)(computedStyle.borderBottomWidth);\n  return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetLeft which is including margin. See getBoundPosition\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width += (0, _shims.int)(computedStyle.borderLeftWidth);\n  width += (0, _shims.int)(computedStyle.borderRightWidth);\n  return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var height = node.clientHeight;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height -= (0, _shims.int)(computedStyle.paddingTop);\n  height -= (0, _shims.int)(computedStyle.paddingBottom);\n  return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n  var width = node.clientWidth;\n  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width -= (0, _shims.int)(computedStyle.paddingLeft);\n  width -= (0, _shims.int)(computedStyle.paddingRight);\n  return width;\n}\n/*:: interface EventWithOffset {\n  clientX: number, clientY: number\n}*/\n\n\n// Get from offsetParent\nfunction offsetXYFromParent(evt\n/*: EventWithOffset*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\n)\n/*: ControlPosition*/\n{\n  var isBody = offsetParent === offsetParent.ownerDocument.body;\n  var offsetParentRect = isBody ? {\n    left: 0,\n    top: 0\n  } : offsetParent.getBoundingClientRect();\n  var x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n  var y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n  return {\n    x: x,\n    y: y\n  };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n  var translation = getTranslation(controlPos, positionOffset, 'px');\n  return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default), translation);\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n  var translation = getTranslation(controlPos, positionOffset, '');\n  return translation;\n}\n\nfunction getTranslation(_ref2, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n  var x = _ref2.x,\n      y = _ref2.y;\n  var translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n\n  if (positionOffset) {\n    var defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n    var defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n    translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n  }\n\n  return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) {\n    return identifier === t.identifier;\n  }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) {\n    return identifier === t.identifier;\n  });\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n  var styleEl = doc.getElementById('react-draggable-style-el');\n\n  if (!styleEl) {\n    styleEl = doc.createElement('style');\n    styleEl.type = 'text/css';\n    styleEl.id = 'react-draggable-style-el';\n    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n    doc.getElementsByTagName('head')[0].appendChild(styleEl);\n  }\n\n  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n  if (!doc) return;\n\n  try {\n    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n    if (doc.selection) {\n      // $FlowIgnore: IE\n      doc.selection.empty();\n    } else {\n      // Remove selection caused by scroll, unless it's a focused input\n      // (we use doc.defaultView in case we're in an iframe)\n      var selection = (doc.defaultView || window).getSelection();\n\n      if (selection && selection.type !== 'Caret') {\n        selection.removeAllRanges();\n      }\n    }\n  } catch (e) {// probably IE\n  }\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.add(className);\n  } else {\n    if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n      el.className += \" \".concat(className);\n    }\n  }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n  if (el.classList) {\n    el.classList.remove(className);\n  } else {\n    el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n  }\n}","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentCropPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var writableHwm = options.writableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    pna.nextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    pna.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    pna.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      pna.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n  if (state.corkedRequestsFree) {\n    state.corkedRequestsFree.next = corkReq;\n  } else {\n    state.corkedRequestsFree = corkReq;\n  }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n  constructor(message, line, column, source, file, plugin) {\n    super(message)\n    this.name = 'CssSyntaxError'\n    this.reason = message\n\n    if (file) {\n      this.file = file\n    }\n    if (source) {\n      this.source = source\n    }\n    if (plugin) {\n      this.plugin = plugin\n    }\n    if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n      if (typeof line === 'number') {\n        this.line = line\n        this.column = column\n      } else {\n        this.line = line.line\n        this.column = line.column\n        this.endLine = column.line\n        this.endColumn = column.column\n      }\n    }\n\n    this.setMessage()\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError)\n    }\n  }\n\n  setMessage() {\n    this.message = this.plugin ? this.plugin + ': ' : ''\n    this.message += this.file ? this.file : '<css input>'\n    if (typeof this.line !== 'undefined') {\n      this.message += ':' + this.line + ':' + this.column\n    }\n    this.message += ': ' + this.reason\n  }\n\n  showSourceCode(color) {\n    if (!this.source) return ''\n\n    let css = this.source\n    if (color == null) color = pico.isColorSupported\n    if (terminalHighlight) {\n      if (color) css = terminalHighlight(css)\n    }\n\n    let lines = css.split(/\\r?\\n/)\n    let start = Math.max(this.line - 3, 0)\n    let end = Math.min(this.line + 2, lines.length)\n\n    let maxWidth = String(end).length\n\n    let mark, aside\n    if (color) {\n      let { bold, gray, red } = pico.createColors(true)\n      mark = text => bold(red(text))\n      aside = text => gray(text)\n    } else {\n      mark = aside = str => str\n    }\n\n    return lines\n      .slice(start, end)\n      .map((line, index) => {\n        let number = start + 1 + index\n        let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n        if (number === this.line) {\n          let spacing =\n            aside(gutter.replace(/\\d/g, ' ')) +\n            line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n          return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^')\n        }\n        return ' ' + aside(gutter) + line\n      })\n      .join('\\n')\n  }\n\n  toString() {\n    let code = this.showSourceCode()\n    if (code) {\n      code = '\\n\\n' + code + '\\n'\n    }\n    return this.name + ': ' + this.message + code\n  }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n  constructor(defaults) {\n    // type needs to be passed to super, otherwise child roots won't be normalized correctly\n    super({ type: 'document', ...defaults })\n\n    if (!this.nodes) {\n      this.nodes = []\n    }\n  }\n\n  toResult(opts = {}) {\n    let lazy = new LazyResult(new Processor(), this, opts)\n\n    return lazy.stringify()\n  }\n}\n\nDocument.registerLazyResult = dependant => {\n  LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n  Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n  constructor(processor, root, opts) {\n    this.processor = processor\n    this.messages = []\n    this.root = root\n    this.opts = opts\n    this.css = undefined\n    this.map = undefined\n  }\n\n  toString() {\n    return this.css\n  }\n\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin\n      }\n    }\n\n    let warning = new Warning(text, opts)\n    this.messages.push(warning)\n\n    return warning\n  }\n\n  warnings() {\n    return this.messages.filter(i => i.type === 'warning')\n  }\n\n  get content() {\n    return this.css\n  }\n}\n\nmodule.exports = Result\nResult.default = Result\n","'use strict'\n\nlet Container = require('./container')\nlet Parser = require('./parser')\nlet Input = require('./input')\n\nfunction parse(css, opts) {\n  let input = new Input(css, opts)\n  let parser = new Parser(input)\n  try {\n    parser.parse()\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (e.name === 'CssSyntaxError' && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse SCSS with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-scss parser'\n        } else if (/\\.sass/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse Sass with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-sass parser'\n        } else if (/\\.less$/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse Less with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-less parser'\n        }\n      }\n    }\n    throw e\n  }\n\n  return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'atrule'\n  }\n\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.append(...children)\n  }\n\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.prepend(...children)\n  }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'rule'\n    if (!this.nodes) this.nodes = []\n  }\n\n  get selectors() {\n    return list.comma(this.selector)\n  }\n\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null\n    let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n    this.selector = values.join(sep)\n  }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","import core from 'core';\nimport getRootNode, { getInstanceNode } from './getRootNode';\n\n/**\n * @ignore\n * Utility function that returns a bounding box of the current view of WebViewer.\n * @param {number} pageNumber Page number of the current page being viewed.\n * @returns {Core.Math.Rect} A {@link Core.Math.Rect} containing the two points that form a bounding box of current view.\n */\nfunction getCurrentViewRect(pageNumber) {\n  const displayMode = core.getDisplayModeObject();\n  const containerElement = core.getScrollViewElement();\n  const documentElement = core.getViewerElement();\n  const headerElement = getRootNode().querySelector('.Header');\n  const headerItemsElements = getRootNode().querySelector('.HeaderToolsContainer');\n  const isApryseWebViewerWebComponent = window.isApryseWebViewerWebComponent;\n  let innerWidth = window.innerWidth;\n  let innerHeight = window.innerHeight;\n  let containerScrollLeft = containerElement.scrollLeft;\n  let documentElementOffsetLeft = documentElement.offsetLeft;\n\n  if (isApryseWebViewerWebComponent) {\n    const instanceRect = getInstanceNode().getBoundingClientRect();\n    innerWidth = instanceRect.width;\n    innerHeight = instanceRect.height;\n    containerScrollLeft = instanceRect.x + containerElement.scrollLeft;\n    documentElementOffsetLeft = instanceRect.x + documentElement.offsetLeft;\n  }\n\n  const coordinates = [];\n  const headerHeight = (headerElement?.clientHeight + headerItemsElements?.clientHeight) || 0;\n\n  coordinates[0] = displayMode.windowToPageNoRotate({\n    x: Math.max(containerScrollLeft, documentElementOffsetLeft),\n    y: Math.max(containerElement.scrollTop + headerHeight, 0)\n  }, pageNumber);\n\n  coordinates[1] = displayMode.windowToPageNoRotate({\n    x: Math.min(innerWidth, documentElementOffsetLeft + documentElement.offsetWidth) + containerScrollLeft,\n    y: innerHeight + containerElement.scrollTop\n  }, pageNumber);\n\n  const x1 = Math.min(coordinates[0].x, coordinates[1].x);\n  const y1 = Math.min(coordinates[0].y, coordinates[1].y);\n  const x2 = Math.max(coordinates[0].x, coordinates[1].x);\n  const y2 = Math.max(coordinates[0].y, coordinates[1].y);\n\n  return new window.Core.Math.Rect(x1, y1, x2, y2);\n}\n\n/**\n * @ignore\n * Utility function that checks if current view rect contains the entire page.\n * @param {Core.Math.Rect} currentViewRect Object containing { x1, y1, x2, y2 } positions.\n * @param {object} pageDimensions Object containing width and height of page to compare.\n * @returns {boolean} Returns true if the whole page fits within current view rect.\n */\nfunction doesCurrentViewContainEntirePage(currentViewRect, pageDimensions) {\n  if (!currentViewRect || !pageDimensions) {\n    return undefined;\n  }\n\n  const dimesions = {\n    width: currentViewRect.x2 - currentViewRect.x1,\n    height: currentViewRect.y2 - currentViewRect.y1\n  };\n\n  return (\n    dimesions.width >= pageDimensions.width &&\n    dimesions.height >= pageDimensions.height\n  );\n}\n\nexport {\n  getCurrentViewRect,\n  doesCurrentViewContainEntirePage\n};","export default [\n  {\n    displayMode: 'Single',\n    pageTransition: 'default',\n    layout: 'single',\n  },\n  {\n    displayMode: 'Continuous',\n    pageTransition: 'continuous',\n    layout: 'single',\n  },\n  {\n    displayMode: 'Facing',\n    pageTransition: 'default',\n    layout: 'double',\n  },\n  {\n    displayMode: 'FacingContinuous',\n    pageTransition: 'continuous',\n    layout: 'double',\n  },\n  {\n    displayMode: 'CoverFacing',\n    pageTransition: 'default',\n    layout: 'cover',\n  },\n  {\n    displayMode: 'Cover',\n    pageTransition: 'continuous',\n    layout: 'cover',\n  },\n];","import React, { useEffect } from 'react';\nimport i18next from 'i18next';\n\nimport './TextEditingPanel.scss';\nimport PropTypes from 'prop-types';\nimport TextStylePicker from 'components/TextStylePicker';\nimport ColorPalette from 'components/ColorPalette';\nimport ColorPalettePicker from 'components/ColorPalettePicker';\nimport Button from 'components/Button';\nimport HorizontalDivider from 'components/HorizontalDivider';\n\nconst TextEditingPanel = ({\n  addActiveColor,\n  contentSelectMode,\n  disableLinkButton,\n  fonts,\n  format,\n  handleAddLinkToText,\n  handleColorChange,\n  handlePropertyChange,\n  handleTextFormatChange,\n  rgbColor,\n  textEditProperties = {},\n  undoRedoProperties,\n  customColors = [],\n  isCustomUI,\n}) => {\n  const currentPalette = 'TextColor';\n  const FONT_PLACEHOLDER = 'Font';\n\n  useEffect(() => {\n    if (!('Font' in textEditProperties)) {\n      // hack to use placeholder in font dropdown needs to have a non-empty, not included value\n      textEditProperties['Font'] = FONT_PLACEHOLDER;\n    }\n  }, []);\n\n  /**\n   * @ignore\n   * Prevent the blur event from being triggered when clicking on panel buttons\n   * otherwise we can't style the text inline since a blur event is triggered before a click event\n   * @param {HTMLElement} Component the component to wrap\n   * @returns {HTMLElement}\n   */\n  const textPanelSectionWrapper = (Component) => {\n    return (\n      <div className=\"text-editing-panel-section\">\n        <div\n          className=\"text-editing-panel-menu-items\"\n          onMouseDown={(e) => {\n            if (e.type !== 'touchstart') {\n              e.preventDefault();\n            }\n          }}\n        >\n          {Component}\n        </div>\n      </div>\n    );\n  };\n\n  const textStylesSection = (\n    <div className=\"text-editing-panel-section\">\n      <div className=\"top-panel text-editing-panel-menu-items\">\n        <span className=\"text-editing-panel-heading\" >{i18next.t('stylePanel.headings.textStyles')}</span>\n        <div className={`text-editing-panel-text-style-picker ${contentSelectMode ? '' : 'inactive'}`}>\n          <TextStylePicker\n            fonts={fonts}\n            onPropertyChange={handlePropertyChange}\n            properties={textEditProperties}\n            isContentEditing={true}\n            textEditFormat={format}\n            textEditHandleFormatChange={handleTextFormatChange}\n            isDisabled={!contentSelectMode}\n          />\n        </div>\n        <div className=\"link-section\">\n          <Button\n            dataElement=\"textPanelAddLinkButton\"\n            onClick={handleAddLinkToText}\n            img=\"icon-tool-link\"\n            title=\"link.urlLink\"\n            disabled={disableLinkButton}\n          />\n        </div>\n      </div>\n    </div>\n  );\n\n  const hexColor = (rgbColor) ? rgbColor.toHexString() : '';\n  const arrayOfHex = (customColors) ? customColors.map((hex) => hex.toUpperCase()) : [];\n  const isCopyBtnDisabled = arrayOfHex.indexOf(hexColor) > -1;\n\n  const colorPaletteSection = textPanelSectionWrapper(\n    <div className=\"color-palette-section\">\n      <span className=\"text-editing-panel-heading\">{i18next.t('stylePanel.headings.currentColor')}</span>\n      <div className=\"text-editing-row\">\n        <ColorPalette\n          colorMapKey=\"freeText\"\n          color={rgbColor}\n          property={currentPalette}\n          onStyleChange={handleColorChange}\n          overridePalette2={[rgbColor?.toHexString()]}\n        />\n        <Button\n          img=\"ic-copy-color\"\n          onClick={addActiveColor}\n          title={i18next.t('stylePanel.addColorToCustom')}\n          dataElement={'addColorToCustom'}\n          className={isCustomUI ? '' : 'addToCustomButton'}\n          disabled={isCopyBtnDisabled}\n        />\n      </div>\n      <div className=\"custom-colors-section\">\n        <span className=\"text-editing-panel-heading\">{i18next.t('stylePanel.headings.customColors')}</span>\n        <div className=\"text-editing-row custom-colors-pallete\">\n          <ColorPalettePicker\n            color={rgbColor}\n            property={currentPalette}\n            onStyleChange={handleColorChange}\n            disableTitle\n            enableEdit\n            getHexColor={(color) => color?.toHexString()}\n          />\n        </div>\n      </div>\n    </div>\n  );\n\n  const undoRedoSection = (\n    <div className=\"text-editing-panel-section\">\n      <div className=\"text-editing-panel-menu-items\">\n        <div className='text-editing-panel-menu-items-buttons undo-redo'>\n          <Button\n            img=\"icon-action-undo\"\n            dataElement=\"textPanelUndoButton\"\n            disabled={!undoRedoProperties?.canUndo}\n            onClick={undoRedoProperties?.handleUndo}\n            title={i18next.t('action.undo')}\n          />\n          <Button\n            img=\"icon-action-redo\"\n            dataElement=\"textPanelRedoButton\"\n            disabled={!undoRedoProperties?.canRedo}\n            onClick={undoRedoProperties?.handleRedo}\n            title={i18next.t('action.redo')}\n          />\n        </div>\n      </div>\n    </div>\n  );\n\n  return (\n    <>\n      <div className=\"text-editing-panel\">\n        {textStylesSection}\n        <HorizontalDivider style={{ paddingTop: 0, paddingBottom: 0 }} />\n        {colorPaletteSection}\n        <HorizontalDivider style={{ paddingTop: 0, paddingBottom: 0 }} />\n        {undoRedoProperties ? undoRedoSection : undefined }\n      </div>\n    </>\n  );\n};\n\nTextEditingPanel.propTypes = {\n  addActiveColor: PropTypes.func,\n  contentSelectMode: PropTypes.bool,\n  disableLinkButton: PropTypes.bool,\n  fonts: PropTypes.arrayOf(PropTypes.string),\n  format: PropTypes.object,\n  handleAddLinkToText: PropTypes.func,\n  handleColorChange: PropTypes.func,\n  handlePropertyChange: PropTypes.func,\n  handleTextFormatChange: PropTypes.func,\n  rgbColor: PropTypes.object,\n  textEditProperties: PropTypes.object,\n  undoRedoProperties: PropTypes.object,\n  customColors: PropTypes.array,\n  isCustomUI: PropTypes.bool,\n};\n\nexport default TextEditingPanel;\n","import useOnContentEditHistoryUndoRedoChanged from './useOnContentEditHistoryUndoRedoChanged';\n\nexport default useOnContentEditHistoryUndoRedoChanged;","import { useEffect, useState, useCallback } from 'react';\nimport core from 'core';\n\nexport default function useOnContentEditHistoryUndoRedoChanged() {\n  const contentEditHistoryManager = core.getDocumentViewer().getContentEditHistoryManager();\n\n  const [isUndoEnabled, setIsUndoEnabled] = useState(false);\n  const [isRedoEnabled, setIsRedoEnabled] = useState(false);\n\n  const handleUndo = useCallback(() => {\n    if (isUndoEnabled) {\n      contentEditHistoryManager.undo();\n    }\n  }, [isUndoEnabled]);\n\n  const handleRedo = useCallback(() => {\n    if (isRedoEnabled) {\n      contentEditHistoryManager.redo();\n    }\n  }, [isRedoEnabled]);\n\n  useEffect(() => {\n    const onUndoRedoStateChanged = () => {\n      setIsUndoEnabled(contentEditHistoryManager.canUndo());\n      setIsRedoEnabled(contentEditHistoryManager.canRedo());\n    };\n\n    window.Core.ContentEdit.addEventListener('undoRedoStatusChanged', onUndoRedoStateChanged);\n    return () => window.Core.ContentEdit.removeEventListener('undoRedoStatusChanged', onUndoRedoStateChanged);\n  }, []);\n\n  return { canUndo: isUndoEnabled, canRedo: isRedoEnabled, handleUndo, handleRedo };\n}","import React, { useEffect, useState, useRef } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Icon from 'components/Icon';\nimport TextEditingPanel from './TextEditingPanel';\nimport DataElements from 'constants/dataElement';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport useOnContentEditHistoryUndoRedoChanged from 'hooks/useOnContentEditHistoryUndoRedoChanged';\nimport { COMMON_COLORS } from 'constants/commonColors';\n\nconst fonts = [];\n\nconst conversionMap = {\n  Font: 'fontName',\n  FontSize: 'fontSize',\n  TextAlign: 'textAlign',\n};\n\nconst TextEditingPanelContainer = ({ dataElement = 'textEditingPanel' }) => {\n  const [isOpen, isDisabled, textEditingPanelWidth, isInDesktopOnlyMode, isCustomUI] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, dataElement),\n      selectors.isElementDisabled(state, dataElement),\n      selectors.getTextEditingPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getFeatureFlags(state)?.customizableUI,\n    ],\n    shallowEqual,\n  );\n\n  const customColors = useSelector(selectors.getCustomColors);\n  const undoRedoProperties = useOnContentEditHistoryUndoRedoChanged();\n  const isMobile = isMobileSize();\n  const dispatch = useDispatch();\n\n  // selection modes used are 'FreeText' and 'ContentBox'\n  const [selectionMode, setSelectionMode] = useState(null);\n\n  const annotationRef = useRef(null);\n  const contentEditorRef = useRef(null);\n  const [selectedContentBox, setSelectedContentBox] = useState(null);\n  const [textEditProperties, setTextEditProperties] = useState({});\n  const [format, setFormat] = useState({});\n  const DEFAULT_COLOR = new window.Core.Annotations.Color(COMMON_COLORS['black']);\n\n  useDidUpdate(() => {\n    const supportedFonts = window.Core.ContentEdit.getContentEditingFonts();\n\n    supportedFonts.then((res) => res.forEach((font) => {\n      if (!fonts.includes(font)) {\n        fonts.push(font);\n      }\n    }));\n  }, [selectionMode]);\n\n  useEffect(() => {\n    const handleSelectionChange = async () => {\n      if (contentEditorRef.current && core.getContentEditManager().isInContentEditMode()) {\n        const attribute = await contentEditorRef.current.getTextAttributes();\n        const color = new window.Core.Annotations.Color(attribute.fontColor);\n\n        const fontObject = {\n          FontSize: attribute.fontSize,\n          Font: getFontName(attribute.fontName),\n          TextAlign: attribute.textAlign\n        };\n\n        if (!fonts.includes(fontObject.Font)) {\n          fonts.push(fontObject.Font);\n        }\n\n        setTextEditProperties(fontObject);\n        handleColorChange(null, color);\n\n        // remove the fontName attribute so that we don't override the fontName when we set the text attributes\n        delete attribute.fontName;\n        window.Core.ContentEdit.setTextAttributes(attribute);\n\n        setFormat({ ...attribute, color });\n      }\n    };\n    core.addEventListener('contentEditSelectionChange', handleSelectionChange);\n    return () => core.removeEventListener('contentEditSelectionChange', handleSelectionChange);\n  }, []);\n\n  /**\n   * @ignore\n   * Small routine that strips out the bold and italic from the font name, separates the Font into separate words for the UI\n   * @param {string} fontString\n   * @returns {string} the separated font name\n   */\n  function getFontName(fontString) {\n    const cleanedFontString = fontString.replace(/(Bold|Italic)/gi, '').trim();\n    const words = [];\n    let currentWord = '';\n\n    for (const char of cleanedFontString) {\n      if (char.toUpperCase() === char) {\n        if (currentWord) {\n          words.push(currentWord.trim());\n        }\n        currentWord = char;\n      } else {\n        currentWord += char;\n      }\n    }\n\n    if (currentWord) {\n      words.push(currentWord.trim());\n    }\n\n    const separatedFontName = words.join(' ');\n\n    return separatedFontName;\n  }\n\n  useEffect(() => {\n    const handleEditorStarted = ({ editor }) => {\n      contentEditorRef.current = editor;\n      dispatch(actions.setContentBoxEditor(contentEditorRef.current));\n    };\n    core.addEventListener('contentBoxEditStarted', handleEditorStarted);\n    return () => core.removeEventListener('contentBoxEditStarted', handleEditorStarted);\n  }, []);\n\n  useEffect(() => {\n    const handleEditorEnd = () => {\n      if (core.getContentEditManager().isInContentEditMode()) {\n        contentEditorRef.current = null;\n        dispatch(actions.setContentBoxEditor(null));\n      }\n    };\n\n    core.addEventListener('contentBoxEditEnded', handleEditorEnd);\n    return () => core.removeEventListener('contentBoxEditEnded', handleEditorEnd);\n  }, []);\n\n  useEffect(() => {\n    const handleContentEditModeStart = () => {\n      dispatch(actions.closeElements(['searchPanel', 'notesPanel', 'redactionPanel', 'wv3dPropertiesPanel']));\n      if (!isMobile) {\n        dispatch(actions.openElement(dataElement));\n      }\n    };\n\n    const handleContentEditModeEnd = () => {\n      dispatch(actions.closeElement(dataElement));\n    };\n\n    core.addEventListener('contentEditModeStarted', handleContentEditModeStart);\n    core.addEventListener('contentEditModeEnded', handleContentEditModeEnd);\n    return () => {\n      core.removeEventListener('contentEditModeStarted', handleContentEditModeStart);\n      core.removeEventListener('contentEditModeEnded', handleContentEditModeEnd);\n    };\n  }, []);\n\n  useEffect(() => {\n    const handleAnnotationSelected = async (annotations, action) => {\n      if (!core.getContentEditManager().isInContentEditMode()) {\n        return;\n      }\n      const annotation = annotations[0];\n      const isFreeText =\n        annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n        annotation.getIntent() === window.Core.Annotations.FreeTextAnnotation.Intent.FreeText &&\n        (annotation.getContentEditAnnotationId() || annotation.ToolName === window.Core.Tools.ToolNames.ADD_PARAGRAPH);\n      if (action === 'selected') {\n        if (!isInDesktopOnlyMode && isMobile) {\n          return;\n        }\n        if (isFreeText) {\n          annotationRef.current = annotation;\n          setSelectionMode('FreeText');\n          if (!isDisabled && !isOpen) {\n            dispatch(actions.toggleElement(dataElement));\n          }\n        } else if (annotation.isContentEditPlaceholder()) {\n          setSelectedContentBox(annotation);\n\n          const textAttributes = await getTextEditPropertiesFromContentEditPlaceHolder(annotation);\n          setFormat(textAttributes);\n          setTextEditProperties(textAttributes);\n          setSelectionMode('ContentBox');\n          annotationRef.current = null;\n          if (!isDisabled && !isOpen) {\n            dispatch(actions.toggleElement(dataElement));\n          }\n        }\n      } else if (action === 'deselected') {\n        if (selectedContentBox !== undefined) {\n          setSelectedContentBox(null);\n          if (!annotationRef.current) {\n            setSelectionMode(null);\n          }\n        }\n      }\n    };\n\n    core.addEventListener('annotationSelected', handleAnnotationSelected);\n    return () => {\n      core.removeEventListener('annotationSelected', handleAnnotationSelected);\n    };\n  }, [isDisabled, isOpen]);\n\n  useEffect(() => {\n    const onResize = () => {\n      if (core.getContentEditManager().isInContentEditMode()) {\n        if (isMobile) {\n          dispatch(actions.closeElement(dataElement));\n        } else {\n          dispatch(actions.openElement(dataElement));\n        }\n      }\n    };\n    window.addEventListener('resize', onResize);\n    return () => window.removeEventListener('resize', onResize);\n  }, []);\n\n  const handlePropertyChange = (property, value) => {\n    if (annotationRef.current) {\n      core.setAnnotationStyles(annotationRef.current, {\n        [property]: value,\n      });\n    } else {\n      setTextEditProperties({\n        ...textEditProperties,\n        [property]: value,\n      });\n    }\n\n    if (selectedContentBox) {\n      switch (property) {\n        case 'Font':\n          window.Core.ContentEdit.setContentFont(selectedContentBox, value);\n          break;\n        case 'FontSize':\n          window.Core.ContentEdit.setContentFontSize(selectedContentBox, value);\n          break;\n        case 'TextAlign':\n          window.Core.ContentEdit.alignContents(selectedContentBox, value);\n          break;\n      }\n    }\n\n    if (property === 'TextAlign') {\n      property = 'textAlign';\n      setFormat((format) => ({\n        ...format,\n        [property]: value\n      }));\n    }\n\n    window.Core.ContentEdit.setTextAttributes({ [conversionMap[property]]: value });\n  };\n\n  const handleTextFormatChange = (updatedDecorator) => () => {\n    if (selectedContentBox) {\n      switch (updatedDecorator) {\n        case 'bold':\n          window.Core.ContentEdit.toggleBoldContents(selectedContentBox);\n          break;\n        case 'italic':\n          window.Core.ContentEdit.toggleItalicContents(selectedContentBox);\n          break;\n        case 'underline':\n          window.Core.ContentEdit.toggleUnderlineContents(selectedContentBox);\n          break;\n        case 'strike':\n          window.Core.ContentEdit.toggleStrikeContents(selectedContentBox);\n          break;\n      }\n\n      setFormat((format) => ({\n        ...format,\n        [updatedDecorator]: !format[updatedDecorator]\n      }));\n    }\n  };\n\n  const handleAddLinkToText = async () => {\n    if (contentEditorRef.current) {\n      await contentEditorRef.current.loadHyperLinkURL();\n      dispatch(actions.openElement(DataElements.CONTENT_EDIT_LINK_MODAL));\n    }\n  };\n\n  const handleColorChange = async (_, color) => {\n    const selection = window.getSelection();\n    const textColor = color?.toHexString?.() || color;\n\n    if (selectedContentBox) {\n      const selectionLength = selection.rangeCount > 0 ? selection.getRangeAt(0) : null;\n      const isParagraphEdit = selectionLength && contentEditorRef.current;\n      if (isParagraphEdit) {\n        const selection = await contentEditorRef.current.getCurrentSelection();\n        const length = selection.endIndex - selection.startIndex;\n        const isValidSelection = length && length > 0;\n        if (isValidSelection) {\n          window.Core.ContentEdit.setTextColor(selectedContentBox, textColor);\n        } else {\n          window.Core.ContentEdit.setTextAttributes({ 'fontColor': textColor });\n        }\n      } else {\n        window.Core.ContentEdit.setTextColor(selectedContentBox, textColor);\n      }\n    }\n    applyFormat('color', textColor);\n  };\n\n  const handleAddActiveColor = () => {\n    if (rgbColor?.toHexString) {\n      const arrayOfColors = new Set([...customColors, rgbColor.toHexString().toLowerCase()]);\n      dispatch(actions.setCustomColors([...arrayOfColors]));\n    }\n  };\n\n  const applyFormat = (formatKey, value) => {\n    if (formatKey === 'color') {\n      value = new window.Core.Annotations.Color(value);\n    }\n\n    // format the entire editor doesn't trigger the editorTextChanged event, so we set the format state here\n    setFormat({\n      ...format,\n      [formatKey]: value,\n    });\n  };\n\n  const getTextEditPropertiesFromContentEditPlaceHolder = async (annotation) => {\n    const fontMap = {};\n\n    fonts.forEach((font) => {\n      const fontKey = font.replace(/\\s+/g, '');\n      fontMap[fontKey] = font;\n    });\n\n    const isTextContentPlaceholder = annotation.isContentEditPlaceholder() && annotation.getContentEditType() === window.Core.ContentEdit.Types.TEXT;\n    if (isTextContentPlaceholder) {\n      const contentBoxId = annotation.getCustomData('contentEditBoxId');\n\n      const editManager = core.getDocumentViewer().getContentEditManager();\n      const attribs = await editManager.getContentBoxAttributes(contentBoxId);\n      const fontName = getFontName(attribs.fontName);\n      const { bold, italic, underline, fontColors, fontSize, textAlign, strike } = attribs;\n      const color = new window.Core.Annotations.Color(fontColors[0].fontColor);\n\n      if (!fonts.includes(fontName)) {\n        fonts.push(fontName);\n      }\n\n      return {\n        Font: fontName,\n        FontSize: fontSize,\n        textAlign,\n        bold,\n        italic,\n        underline,\n        color,\n        strike\n      };\n    }\n  };\n\n  const closeTextEditingPanel = () => {\n    dispatch(actions.closeElement(dataElement));\n  };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeTextEditingPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  const style =\n    !isInDesktopOnlyMode && isMobile\n      ? {}\n      : { width: `${textEditingPanelWidth}px`, minWidth: `${textEditingPanelWidth}px` };\n\n  const [renderNull, setRenderNull] = useState(false);\n\n  useEffect(() => {\n    const timeout = setTimeout(() => {\n      setRenderNull(!isOpen);\n    }, 500);\n    return () => {\n      clearTimeout(timeout);\n    };\n  }, [isOpen]);\n\n  if (isDisabled || (!isOpen && renderNull)) {\n    return null;\n  }\n\n  const rgbColor = format?.color || DEFAULT_COLOR;\n\n  return (\n    <DataElementWrapper dataElement={dataElement} className=\"Panel TextEditingPanel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      <TextEditingPanel\n        undoRedoProperties={undoRedoProperties}\n        freeTextMode={selectionMode === 'FreeText'}\n        contentSelectMode={selectionMode === 'ContentBox'}\n        textEditProperties={textEditProperties}\n        handlePropertyChange={handlePropertyChange}\n        format={format}\n        handleTextFormatChange={handleTextFormatChange}\n        handleColorChange={handleColorChange}\n        fonts={fonts}\n        handleAddLinkToText={handleAddLinkToText}\n        disableLinkButton={!contentEditorRef.current}\n        addActiveColor={handleAddActiveColor}\n        rgbColor={rgbColor}\n        customColors={customColors}\n        isCustomUI={isCustomUI}\n      />\n    </DataElementWrapper>\n  );\n};\n\nexport default TextEditingPanelContainer;\n","import TextEditingPanelContainer from './TextEditingPanelContainer';\n\nexport default TextEditingPanelContainer;\n","import React, { useCallback } from 'react';\nimport './ChangeListItem.scss';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\nimport core from 'core';\nimport selectors from 'selectors/index';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport { setIsScrolledByClickingChangeItem } from 'helpers/multiViewerHelper';\n\nconst propTypes = {\n  oldText: PropTypes.string,\n  newText: PropTypes.string,\n  oldCount: PropTypes.number,\n  newCount: PropTypes.number,\n  type: PropTypes.string,\n  old: PropTypes.object,\n  new: PropTypes.object,\n  selectedAnnotationId: PropTypes.string\n};\n\nconst ChangeListItem = (props) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [syncViewer] = useSelector((state) => [\n    selectors.getSyncViewer(state),\n  ]);\n\n  const onClickItem = useCallback(() => {\n    setIsScrolledByClickingChangeItem(true);\n    if (props.old && props.new && props.old.getPageNumber() !== props.new.getPageNumber()) {\n      dispatch(actions.setSyncViewer(null));\n    }\n    for (const annotation of [props.old, props.new]) {\n      const viewerNumber = annotation === props.old ? 1 : 2;\n      if (!annotation) {\n        continue;\n      }\n      core.getDocumentViewer(viewerNumber).getAnnotationManager().deselectAllAnnotations();\n      core.jumpToAnnotation(annotation, viewerNumber);\n      core.getDocumentViewer(viewerNumber).getAnnotationManager().selectAnnotation(annotation);\n    }\n  }, [syncViewer]);\n\n  let isSelected = false;\n  if (props.selectedAnnotationId && props.old.Id === props.selectedAnnotationId) {\n    isSelected = true;\n  }\n\n  return (\n    <div className={classNames('ChangeListItem', { 'selected': isSelected })} onClick={onClickItem}>\n      <div className=\"icon-change\">\n        <Icon glyph=\"icon-compare-change\" />\n      </div>\n      <div className=\"container-right\">\n        <div className=\"title\">{t('multiViewer.comparePanel.change')}</div>\n        <div className=\"type\">{props.type}</div>\n        {props.old && <div className=\"value-container old\">\n          <div className=\"value-title\">\n            <div>{t('multiViewer.comparePanel.old')}</div>\n            <div>-{props.oldCount}</div>\n          </div>\n          <div className=\"text\">{props.oldText}</div>\n        </div>}\n        {props.new && <div className=\"value-container new\">\n          <div className=\"value-title\">\n            <div>{t('multiViewer.comparePanel.new')}</div>\n            <div>+{props.newCount}</div>\n          </div>\n          <div className=\"text\">{props.newText}</div>\n        </div>}\n      </div>\n    </div>\n  );\n};\n\nChangeListItem.propTypes = propTypes;\n\nexport default ChangeListItem;\n","import ChangeListItem from './ChangeListItem';\n\nexport default ChangeListItem;","import React, { useEffect, useRef, useState } from 'react';\nimport './ComparePanel.scss';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport Events from 'constants/events';\nimport ChangeListItem from 'components/MultiViewer/ComparePanel/ChangeListItem';\nimport core from 'core';\nimport throttle from 'lodash/throttle';\nimport { SYNC_MODES } from 'constants/multiViewerContants';\nimport multiViewerHelper from 'helpers/multiViewerHelper';\nimport fireEvent from 'helpers/fireEvent';\nimport actions from 'actions';\nimport DataElements from 'src/constants/dataElement';\nimport { panelMinWidth } from 'constants/panel';\nimport Icon from 'components/Icon';\n\nconst specialChar = /([!@#$%^&*()+=\\[\\]\\\\';,./{}|\":<>?~_-])/gm;\n\nconst ComparePanel = ({\n  dataElement = 'comparePanel',\n  // For storybook tests\n  initialChangeListData = {},\n  initialTotalChanges = 0,\n}) => {\n  const dispatch = useDispatch();\n  const { t } = useTranslation();\n  const isMobile = isMobileSize();\n  const [\n    isOpen,\n    currentWidth,\n    isInDesktopOnlyMode,\n    isComparisonOverlayEnabled,\n    multiViewerSyncScrollMode,\n  ] = useSelector((state) => [\n    selectors.isElementOpen(state, dataElement),\n    selectors.getComparePanelWidth(state),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.getIsComparisonOverlayEnabled(state),\n    selectors.getMultiViewerSyncScrollMode(state),\n  ]);\n  const isCustom = dataElement !== 'comparePanel';\n  const panelWidth = !isCustom ? currentWidth : panelMinWidth - 32;\n  const [searchValue, setSearchValue] = React.useState('');\n  const style = !isInDesktopOnlyMode && isMobile ? {} : { width: `${panelWidth}px`, minWidth: `${panelWidth}px` };\n  const changeListData = useRef(initialChangeListData);\n  const [annotation, setAnnotation] = useState(null);\n  const [totalChanges, setTotalChanges] = useState(initialTotalChanges);\n  const [filteredListData, setFilteredListData] = useState(initialChangeListData);\n  const filterfuncRef = useRef(\n    throttle(\n      (searchValue) => {\n        if (!changeListData.current) {\n          return [];\n        }\n        if (!searchValue) {\n          setFilteredListData(changeListData.current);\n          return;\n        }\n        searchValue = searchValue.replace(specialChar, '\\\\$&');\n        const keys = Object.keys(changeListData.current);\n        const newData = {};\n        for (const key of keys) {\n          for (const item of changeListData.current[key]) {\n            if (\n              item.oldText?.toLowerCase().match(searchValue.toLowerCase()) ||\n              item.newText?.toLowerCase().match(searchValue.toLowerCase())\n            ) {\n              if (!newData[key]) {\n                newData[key] = [];\n              }\n              newData[key].push(item);\n            }\n          }\n        }\n        setFilteredListData(newData);\n      },\n      100,\n      { leading: true },\n    ),\n  );\n\n  useEffect(() => {\n    const updatePanelItems = (doc1Annotations, doc2Annotations, diffCount) => {\n      dispatch(actions.setIsCompareStarted(true));\n      dispatch(actions.enableElement('comparePanelToggleButton'));\n      dispatch(actions.openElement(DataElements.LOADING_MODAL));\n      const annotMap = {};\n      if (multiViewerSyncScrollMode === SYNC_MODES.SKIP_UNMATCHED) {\n        const doc1AnnotationsClone = [...doc1Annotations];\n        const doc2AnnotationsClone = [...doc2Annotations];\n        const annotationMatches1 = [];\n        const annotationMatches2 = [];\n        while (doc1AnnotationsClone.length || doc2AnnotationsClone.length) {\n          const annotation = doc1AnnotationsClone[0] || doc2AnnotationsClone[0];\n          const ids = [annotation.getCustomData('TextDiffID')];\n          const pageNumbers1 = [];\n          const pageNumbers2 = [];\n          const side1Annotations = [];\n          const side2Annotations = [];\n          const checkIfAnnotionMatches1 = (annotation) => ids.includes(annotation.getCustomData('TextDiffID')) || pageNumbers1.includes(annotation.PageNumber);\n          const checkIfAnnotionMatches2 = (annotation) => ids.includes(annotation.getCustomData('TextDiffID')) || pageNumbers2.includes(annotation.PageNumber);\n          let added = false;\n          do {\n            added = false;\n            for (const annotation of doc1AnnotationsClone) {\n              if (checkIfAnnotionMatches1(annotation)) {\n                const annotId = annotation.getCustomData('TextDiffID');\n                const annotPageNumber = annotation.PageNumber;\n                !ids.includes(annotId) && ids.push(annotId);\n                !pageNumbers1.includes(annotPageNumber) && pageNumbers1.push(annotation.PageNumber);\n                doc1AnnotationsClone.splice(doc1AnnotationsClone.indexOf(annotation), 1);\n                side1Annotations.push(annotation);\n                added = true;\n              }\n            }\n            for (const annotation of doc2AnnotationsClone) {\n              if (checkIfAnnotionMatches2(annotation)) {\n                const annotId = annotation.getCustomData('TextDiffID');\n                const annotPageNumber = annotation.PageNumber;\n                !ids.includes(annotId) && ids.push(annotId);\n                !pageNumbers2.includes(annotPageNumber) && pageNumbers2.push(annotation.PageNumber);\n                doc2AnnotationsClone.splice(doc2AnnotationsClone.indexOf(annotation), 1);\n                side2Annotations.push(annotation);\n                added = true;\n              }\n            }\n          } while (added);\n          if (side1Annotations.length && side2Annotations.length) {\n            annotationMatches1.push(side1Annotations);\n            annotationMatches2.push(side2Annotations);\n          }\n        }\n\n        const matchedPages = { 1: {}, 2: {} };\n        for (const i in annotationMatches1) {\n          const doc1Annotations = annotationMatches1[i];\n          const doc2Annotations = annotationMatches2[i];\n          const doc1Pages = Array.from(new Set(doc1Annotations.map((annotation) => annotation.PageNumber)));\n          const doc2Pages = Array.from(new Set(doc2Annotations.map((annotation) => annotation.PageNumber)));\n          for (const pageNumber of doc1Pages) {\n            matchedPages[1][pageNumber] = {\n              otherSidePages: doc2Pages,\n              thisSidePages: doc1Pages,\n            };\n          }\n          for (const pageNumber of doc2Pages) {\n            matchedPages[2][pageNumber] = {\n              otherSidePages: doc1Pages,\n              thisSidePages: doc2Pages,\n            };\n          }\n        }\n        multiViewerHelper.matchedPages = matchedPages;\n      }\n      const matchedIds = [];\n      for (const index in doc1Annotations) {\n        const annotation = doc1Annotations[index];\n        const type = annotation.getCustomData('TextDiffType');\n        const id = annotation.getCustomData('TextDiffID');\n        const otherAnnotations = doc2Annotations.filter((annotation) => annotation?.getCustomData('TextDiffID') === id);\n        if (!otherAnnotations.length) {\n          continue;\n        }\n        if (!matchedIds.includes(id)) {\n          matchedIds.push(id);\n        }\n        if (!annotMap[annotation.PageNumber]) {\n          annotMap[annotation.PageNumber] = [];\n        }\n        annotMap[annotation.PageNumber].push({\n          new: otherAnnotations[0],\n          newText: otherAnnotations[0]?.Author,\n          newCount: otherAnnotations[0]?.Author?.length,\n          old: annotation,\n          oldText: annotation?.Author,\n          oldCount: annotation?.Author?.length,\n          type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${type}`)}`,\n        });\n        if (otherAnnotations.length > 1) {\n          for (const i in otherAnnotations) {\n            if (i === '0') {\n              continue;\n            }\n            annotMap[annotation.PageNumber].push({\n              new: otherAnnotations[i],\n              newText: otherAnnotations[i]?.Author,\n              newCount: otherAnnotations[i]?.Author?.length,\n              old: annotation,\n              oldText: annotation?.Author,\n              oldCount: annotation?.Author?.length,\n              type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${type}`)}`,\n            });\n          }\n        }\n      }\n      const unmatchedAnnotations1 = doc1Annotations.filter((annotation) => !matchedIds.includes(annotation.getCustomData('TextDiffID')));\n      const unmatchedAnnotations2 = doc2Annotations.filter((annotation) => !matchedIds.includes(annotation.getCustomData('TextDiffID')));\n      for (const annotation of unmatchedAnnotations1) {\n        if (!annotMap[annotation.PageNumber]) {\n          annotMap[annotation.PageNumber] = [];\n        }\n        annotMap[annotation.PageNumber].push({\n          old: annotation,\n          oldText: annotation?.Author,\n          oldCount: annotation?.Author?.length,\n          type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${annotation.getCustomData('TextDiffType')}`)}`,\n        });\n      }\n      for (const annotation of unmatchedAnnotations2) {\n        if (!annotMap[annotation.PageNumber]) {\n          annotMap[annotation.PageNumber] = [];\n        }\n        annotMap[annotation.PageNumber].push({\n          new: annotation,\n          newText: annotation?.Author,\n          newCount: annotation?.Author?.length,\n          type: `${t('multiViewer.comparePanel.textContent')} - ${t(`multiViewer.comparePanel.${annotation.getCustomData('TextDiffType')}`)}`,\n        });\n      }\n      for (const pageNumber of Object.keys(annotMap)) {\n        annotMap[pageNumber] = annotMap[pageNumber].sort((a, b) => {\n          if (a?.new?.PageNumber && b?.new?.PageNumber && a?.new?.PageNumber !== b?.new?.PageNumber) {\n            return a?.new?.PageNumber - b?.new?.PageNumber;\n          }\n          const aY = a?.new?.Y || a?.old?.Y;\n          const bY = b?.new?.Y || b?.old?.Y;\n          if (aY === bY) {\n            return (a?.new?.X || a?.old?.X) - (b?.new?.X || b?.old?.X);\n          }\n          return aY - bY;\n        });\n      }\n      dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      fireEvent(Events.COMPARE_ANNOTATIONS_LOADED, { annotMap, diffCount });\n      if (!isComparisonOverlayEnabled) {\n        core.hideAnnotations(core.getSemanticDiffAnnotations(1), 1);\n        core.hideAnnotations(core.getSemanticDiffAnnotations(2), 2);\n      }\n      setTotalChanges(diffCount);\n      changeListData.current = annotMap;\n      setFilteredListData(annotMap);\n    };\n    const resetPanelItems = () => {\n      setTotalChanges(0);\n      changeListData.current = {};\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      if (action === 'selected') {\n        setAnnotation(annotations);\n      } else if (action === 'deselected') {\n        setAnnotation(null);\n      }\n    };\n    core.addEventListener(Events.COMPARE_ANNOTATIONS_LOADED, updatePanelItems, undefined, 1);\n    core.addEventListener('documentUnloaded', resetPanelItems, undefined, 1);\n    core.addEventListener('documentUnloaded', resetPanelItems, undefined, 2);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => {\n      core.removeEventListener(Events.COMPARE_ANNOTATIONS_LOADED, updatePanelItems, 1);\n      core.removeEventListener('documentUnloaded', resetPanelItems, 1);\n      core.removeEventListener('documentUnloaded', resetPanelItems, 2);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n\n  const renderPageItem = (pageNum) => {\n    const changeListItems = filteredListData[pageNum];\n    return <React.Fragment key={pageNum}>\n      <div className=\"page-number\">{t('multiViewer.comparePanel.page')} {pageNum}</div>\n      {\n        changeListItems.map((props) => {\n          const selectedAnnotationId = (annotation && annotation.length) ? annotation[0].Id : null;\n          return (<ChangeListItem\n            selectedAnnotationId={selectedAnnotationId}\n            key={`${props.new?.Id ?? 'null'}-${props.old?.Id ?? 'null'}`}\n            {...props}\n          />);\n        })\n      }\n    </React.Fragment>;\n  };\n\n  const onSearchInputChange = (e) => {\n    const newValue = e.target.value;\n    setSearchValue(newValue);\n    filterfuncRef.current(newValue);\n  };\n\n  const shouldRenderItems = !!(totalChanges && filteredListData && Object.keys(filteredListData).length);\n  return (\n    <DataElementWrapper\n      className={classNames('Panel', 'ComparePanel', { 'open': isOpen })}\n      dataElement={dataElement}\n      style={style}\n    >\n      <div className=\"input-container\">\n        <Icon glyph=\"icon-header-search\" />\n        <input\n          type=\"text\"\n          autoComplete=\"off\"\n          value={searchValue}\n          onChange={onSearchInputChange}\n          aria-label={t('multiViewer.comparePanel.Find')}\n          id=\"ComparePanel__input\"\n          tabIndex={isOpen ? 0 : -1}\n        />\n      </div>\n      <div className=\"changeListContainer\">\n        <div className=\"changeListTitle\">\n          {t('multiViewer.comparePanel.changesList')} <span>({totalChanges})</span>\n        </div>\n        <div className=\"changeList\">\n          {shouldRenderItems && Object.keys(filteredListData).map((key) => renderPageItem(key))}\n        </div>\n      </div>\n    </DataElementWrapper>\n  );\n};\n\nexport default ComparePanel;\n","import ComparePanel from './ComparePanel';\n\nexport default ComparePanel;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './OverlayItem.scss';\nimport classNames from 'classnames';\n\nclass OverlayItem extends React.PureComponent {\n  static propTypes = {\n    onClick: PropTypes.func,\n    buttonName: PropTypes.string,\n    role: PropTypes.string,\n    selected: PropTypes.bool\n  }\n\n  render() {\n    const { buttonName, role, selected } = this.props;\n    return (\n      <button className={classNames({ OverlayItem: true, selected })} onClick={this.props.onClick} aria-label={buttonName} role={role}>\n        <div className=\"ButtonText\">\n          { buttonName }\n        </div>\n      </button>\n    );\n  }\n}\n\nexport default OverlayItem;\n","import OverlayItem from './OverlayItem';\n\nexport default OverlayItem;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport OverlayItem from '../OverlayItem';\nimport ToolButton from '../ToolButton';\nimport Button from 'components/Button';\nimport './ZoomOverlay.scss';\nimport classNames from 'classnames';\n\nconst propTypes = {\n  zoomList: PropTypes.arrayOf(PropTypes.number).isRequired,\n  currentZoomLevel: PropTypes.number.isRequired,\n  isReaderMode: PropTypes.bool.isRequired,\n  isMarqueeZoomActive: PropTypes.bool.isRequired,\n  onClickZoomLevelOption: PropTypes.func.isRequired,\n  onClickMarqueeZoom: PropTypes.func.isRequired,\n  fitToWidth: PropTypes.func.isRequired,\n  fitToPage: PropTypes.func.isRequired,\n  isMarqueeToolButtonDisabled: PropTypes.bool\n};\n\nfunction ZoomOverlay(props) {\n  const [t] = useTranslation();\n\n  const { zoomList, currentZoomLevel, isReaderMode, isMarqueeZoomActive, fitToWidth, fitToPage, onClickZoomLevelOption, onClickMarqueeZoom, isMarqueeToolButtonDisabled } = props;\n\n  return (\n    <>\n      <Button\n        className=\"ZoomItem\"\n        img=\"icon-header-zoom-fit-to-width\"\n        label={t('action.fitToWidth')}\n        ariaLabel={t('action.fitToWidth')}\n        role=\"option\"\n        onClick={fitToWidth}\n      />\n      {!isReaderMode && (\n        <Button\n          className=\"ZoomItem\"\n          img=\"icon-header-zoom-fit-to-page\"\n          label={t('action.fitToPage')}\n          ariaLabel={t('action.fitToPage')}\n          role=\"option\"\n          onClick={fitToPage}\n        />\n      )}\n      <div className=\"divider\" />\n      {zoomList.map((zoomValue, i) => (\n        <OverlayItem key={i} onClick={() => onClickZoomLevelOption(zoomValue)} buttonName={`${zoomValue * 100}%`} selected={currentZoomLevel === zoomValue} role=\"option\" />\n      ))}\n      {!isReaderMode && (\n        <>\n          {!isMarqueeToolButtonDisabled && (\n            <div className=\"dividerSmall\" />\n          )}\n          <div onClick={() => onClickMarqueeZoom()}>\n            <ToolButton\n              className={classNames({ ZoomItem: true, selected: isMarqueeZoomActive })}\n              role=\"option\"\n              toolName=\"MarqueeZoomTool\"\n              label={t('tool.Marquee')}\n              img=\"icon-header-zoom-marquee\"\n            />\n          </div>\n        </>\n      )}\n    </>\n  );\n}\n\nZoomOverlay.propTypes = propTypes;\n\nexport default ZoomOverlay;\n","import React from 'react';\nimport './MultiViewerWrapper.scss';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst MultiViewerWrapper = ({ children }) => {\n  const isMultiViewerReady = useSelector((state) => selectors.isMultiViewerReady(state));\n  return isMultiViewerReady ? <>{children}</> : null;\n};\n\nexport default MultiViewerWrapper;","import MultiViewerWrapper from 'src/components/MultiViewer/MultiViewerWrapper/MultiViewerWrapper';\n\nexport default MultiViewerWrapper;","var basePick = require('./_basePick'),\n    flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var i18nFromProps = props.i18n;\n\n  var _ref = useContext(I18nContext) || {},\n      i18nFromContext = _ref.i18n,\n      defaultNSFromContext = _ref.defaultNS;\n\n  var i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n    var notReadyT = function notReadyT(k) {\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n\n    var retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n\n  if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n  var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n  var useSuspense = i18nOptions.useSuspense,\n      keyPrefix = i18nOptions.keyPrefix;\n  var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n  var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n    return hasLoadedNamespace(n, i18n, i18nOptions);\n  });\n\n  function getT() {\n    return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  }\n\n  var _useState = useState(getT),\n      _useState2 = _slicedToArray(_useState, 2),\n      t = _useState2[0],\n      setT = _useState2[1];\n\n  var isMounted = useRef(true);\n  useEffect(function () {\n    var bindI18n = i18nOptions.bindI18n,\n        bindI18nStore = i18nOptions.bindI18nStore;\n    isMounted.current = true;\n\n    if (!ready && !useSuspense) {\n      loadNamespaces(i18n, namespaces, function () {\n        if (isMounted.current) setT(getT);\n      });\n    }\n\n    function boundReset() {\n      if (isMounted.current) setT(getT);\n    }\n\n    if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n    if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n    return function () {\n      isMounted.current = false;\n      if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n        return i18n.off(e, boundReset);\n      });\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n        return i18n.store.off(e, boundReset);\n      });\n    };\n  }, [i18n, namespaces.join()]);\n  var isInitial = useRef(true);\n  useEffect(function () {\n    if (isMounted.current && !isInitial.current) {\n      setT(getT);\n    }\n\n    isInitial.current = false;\n  }, [i18n]);\n  var ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(function (resolve) {\n    loadNamespaces(i18n, namespaces, function () {\n      resolve();\n    });\n  });\n}","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar String = global.String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar multiply = function (data, n, c) {\n  var index = -1;\n  var c2 = c;\n  while (++index < 6) {\n    c2 += n * data[index];\n    data[index] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\n\nvar divide = function (data, n) {\n  var index = 6;\n  var c = 0;\n  while (--index >= 0) {\n    c += data[index];\n    data[index] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\n\nvar dataToString = function (data) {\n  var index = 6;\n  var s = '';\n  while (--index >= 0) {\n    if (s !== '' || index === 0 || data[index] !== 0) {\n      var t = String(data[index]);\n      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n    }\n  } return s;\n};\n\nvar FORCED = fails(function () {\n  return un$ToFixed(0.00008, 3) !== '0.000' ||\n    un$ToFixed(0.9, 0) !== '1' ||\n    un$ToFixed(1.255, 2) !== '1.25' ||\n    un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toIntegerOrInfinity(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (number != number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(data, 0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(data, 1e7, 0);\n          j -= 7;\n        }\n        multiply(data, pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(data, 1 << 23);\n          j -= 23;\n        }\n        divide(data, 1 << j);\n        multiply(data, 1, 1);\n        divide(data, 2);\n        result = dataToString(data);\n      } else {\n        multiply(data, 0, z);\n        multiply(data, 1 << -e, 0);\n        result = dataToString(data) + repeat('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat('0', fractDigits - k) + result\n        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n","// cheap lodash replacements\nexport function memoize(fn) {\n  var result = null;\n\n  var memoized = function memoized() {\n    if (result == null) {\n      result = fn();\n    }\n\n    return result;\n  };\n\n  return memoized;\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\nexport function union(itemsA, itemsB) {\n  var set = new Set();\n\n  var insertItem = function insertItem(item) {\n    return set.add(item);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  set.forEach(function (key) {\n    return result.push(key);\n  });\n  return result;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { union, without } from './utils/js_utils';\nexport var EnterLeaveCounter = /*#__PURE__*/function () {\n  function EnterLeaveCounter(isNodeInDocument) {\n    _classCallCheck(this, EnterLeaveCounter);\n\n    _defineProperty(this, \"entered\", []);\n\n    _defineProperty(this, \"isNodeInDocument\", void 0);\n\n    this.isNodeInDocument = isNodeInDocument;\n  }\n\n  _createClass(EnterLeaveCounter, [{\n    key: \"enter\",\n    value: function enter(enteringNode) {\n      var _this = this;\n\n      var previousLength = this.entered.length;\n\n      var isNodeEntered = function isNodeEntered(node) {\n        return _this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode));\n      };\n\n      this.entered = union(this.entered.filter(isNodeEntered), [enteringNode]);\n      return previousLength === 0 && this.entered.length > 0;\n    }\n  }, {\n    key: \"leave\",\n    value: function leave(leavingNode) {\n      var previousLength = this.entered.length;\n      this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);\n      return previousLength > 0 && this.entered.length === 0;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.entered = [];\n    }\n  }]);\n\n  return EnterLeaveCounter;\n}();","import { memoize } from './utils/js_utils';\nexport var isFirefox = memoize(function () {\n  return /firefox/i.test(navigator.userAgent);\n});\nexport var isSafari = memoize(function () {\n  return Boolean(window.safari);\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var MonotonicInterpolant = /*#__PURE__*/function () {\n  function MonotonicInterpolant(xs, ys) {\n    _classCallCheck(this, MonotonicInterpolant);\n\n    _defineProperty(this, \"xs\", void 0);\n\n    _defineProperty(this, \"ys\", void 0);\n\n    _defineProperty(this, \"c1s\", void 0);\n\n    _defineProperty(this, \"c2s\", void 0);\n\n    _defineProperty(this, \"c3s\", void 0);\n\n    var length = xs.length; // Rearrange xs and ys so that xs is sorted\n\n    var indexes = [];\n\n    for (var i = 0; i < length; i++) {\n      indexes.push(i);\n    }\n\n    indexes.sort(function (a, b) {\n      return xs[a] < xs[b] ? -1 : 1;\n    }); // Get consecutive differences and slopes\n\n    var dys = [];\n    var dxs = [];\n    var ms = [];\n    var dx;\n    var dy;\n\n    for (var _i = 0; _i < length - 1; _i++) {\n      dx = xs[_i + 1] - xs[_i];\n      dy = ys[_i + 1] - ys[_i];\n      dxs.push(dx);\n      dys.push(dy);\n      ms.push(dy / dx);\n    } // Get degree-1 coefficients\n\n\n    var c1s = [ms[0]];\n\n    for (var _i2 = 0; _i2 < dxs.length - 1; _i2++) {\n      var m2 = ms[_i2];\n      var mNext = ms[_i2 + 1];\n\n      if (m2 * mNext <= 0) {\n        c1s.push(0);\n      } else {\n        dx = dxs[_i2];\n        var dxNext = dxs[_i2 + 1];\n        var common = dx + dxNext;\n        c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n      }\n    }\n\n    c1s.push(ms[ms.length - 1]); // Get degree-2 and degree-3 coefficients\n\n    var c2s = [];\n    var c3s = [];\n    var m;\n\n    for (var _i3 = 0; _i3 < c1s.length - 1; _i3++) {\n      m = ms[_i3];\n      var c1 = c1s[_i3];\n      var invDx = 1 / dxs[_i3];\n\n      var _common = c1 + c1s[_i3 + 1] - m - m;\n\n      c2s.push((m - c1 - _common) * invDx);\n      c3s.push(_common * invDx * invDx);\n    }\n\n    this.xs = xs;\n    this.ys = ys;\n    this.c1s = c1s;\n    this.c2s = c2s;\n    this.c3s = c3s;\n  }\n\n  _createClass(MonotonicInterpolant, [{\n    key: \"interpolate\",\n    value: function interpolate(x) {\n      var xs = this.xs,\n          ys = this.ys,\n          c1s = this.c1s,\n          c2s = this.c2s,\n          c3s = this.c3s; // The rightmost point in the dataset should give an exact result\n\n      var i = xs.length - 1;\n\n      if (x === xs[i]) {\n        return ys[i];\n      } // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\n\n      var low = 0;\n      var high = c3s.length - 1;\n      var mid;\n\n      while (low <= high) {\n        mid = Math.floor(0.5 * (low + high));\n        var xHere = xs[mid];\n\n        if (xHere < x) {\n          low = mid + 1;\n        } else if (xHere > x) {\n          high = mid - 1;\n        } else {\n          return ys[mid];\n        }\n      }\n\n      i = Math.max(0, high); // Interpolate\n\n      var diff = x - xs[i];\n      var diffSq = diff * diff;\n      return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n    }\n  }]);\n\n  return MonotonicInterpolant;\n}();","import { isSafari, isFirefox } from './BrowserDetector';\nimport { MonotonicInterpolant } from './MonotonicInterpolant';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n  var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n  if (!el) {\n    return null;\n  }\n\n  var _el$getBoundingClient = el.getBoundingClientRect(),\n      top = _el$getBoundingClient.top,\n      left = _el$getBoundingClient.left;\n\n  return {\n    x: left,\n    y: top\n  };\n}\nexport function getEventClientOffset(e) {\n  return {\n    x: e.clientX,\n    y: e.clientY\n  };\n}\n\nfunction isImageNode(node) {\n  var _document$documentEle;\n\n  return node.nodeName === 'IMG' && (isFirefox() || !((_document$documentEle = document.documentElement) !== null && _document$documentEle !== void 0 && _document$documentEle.contains(node)));\n}\n\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n  var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n  var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight; // Work around @2x coordinate discrepancies in browsers\n\n  if (isSafari() && isImage) {\n    dragPreviewHeight /= window.devicePixelRatio;\n    dragPreviewWidth /= window.devicePixelRatio;\n  }\n\n  return {\n    dragPreviewWidth: dragPreviewWidth,\n    dragPreviewHeight: dragPreviewHeight\n  };\n}\n\nexport function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n  // The browsers will use the image intrinsic size under different conditions.\n  // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n  var isImage = isImageNode(dragPreview);\n  var dragPreviewNode = isImage ? sourceNode : dragPreview;\n  var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n  var offsetFromDragPreview = {\n    x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n    y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n  };\n  var sourceWidth = sourceNode.offsetWidth,\n      sourceHeight = sourceNode.offsetHeight;\n  var anchorX = anchorPoint.anchorX,\n      anchorY = anchorPoint.anchorY;\n\n  var _getDragPreviewSize = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight),\n      dragPreviewWidth = _getDragPreviewSize.dragPreviewWidth,\n      dragPreviewHeight = _getDragPreviewSize.dragPreviewHeight;\n\n  var calculateYOffset = function calculateYOffset() {\n    var interpolantY = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the top\n    offsetFromDragPreview.y, // Align at the center\n    offsetFromDragPreview.y / sourceHeight * dragPreviewHeight, // Dock to the bottom\n    offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n    var y = interpolantY.interpolate(anchorY); // Work around Safari 8 positioning bug\n\n    if (isSafari() && isImage) {\n      // We'll have to wait for @3x to see if this is entirely correct\n      y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n    }\n\n    return y;\n  };\n\n  var calculateXOffset = function calculateXOffset() {\n    // Interpolate coordinates depending on anchor point\n    // If you know a simpler way to do this, let me know\n    var interpolantX = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the left\n    offsetFromDragPreview.x, // Align at the center\n    offsetFromDragPreview.x / sourceWidth * dragPreviewWidth, // Dock to the right\n    offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n    return interpolantX.interpolate(anchorX);\n  }; // Force offsets if specified in the options.\n\n\n  var offsetX = offsetPoint.offsetX,\n      offsetY = offsetPoint.offsetY;\n  var isManualOffsetX = offsetX === 0 || offsetX;\n  var isManualOffsetY = offsetY === 0 || offsetY;\n  return {\n    x: isManualOffsetX ? offsetX : calculateXOffset(),\n    y: isManualOffsetY ? offsetY : calculateYOffset()\n  };\n}","var _nativeTypesConfig;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport * as NativeTypes from '../NativeTypes';\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer';\nexport var nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {\n  exposeProperties: {\n    files: function files(dataTransfer) {\n      return Array.prototype.slice.call(dataTransfer.files);\n    },\n    items: function items(dataTransfer) {\n      return dataTransfer.items;\n    },\n    dataTransfer: function dataTransfer(_dataTransfer) {\n      return _dataTransfer;\n    }\n  },\n  matchesTypes: ['Files']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.HTML, {\n  exposeProperties: {\n    html: function html(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer2) {\n      return _dataTransfer2;\n    }\n  },\n  matchesTypes: ['Html', 'text/html']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {\n  exposeProperties: {\n    urls: function urls(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer3) {\n      return _dataTransfer3;\n    }\n  },\n  matchesTypes: ['Url', 'text/uri-list']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {\n  exposeProperties: {\n    text: function text(dataTransfer, matchesTypes) {\n      return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n    },\n    dataTransfer: function dataTransfer(_dataTransfer4) {\n      return _dataTransfer4;\n    }\n  },\n  matchesTypes: ['Text', 'text/plain']\n}), _nativeTypesConfig);","export var FILE = '__NATIVE_FILE__';\nexport var URL = '__NATIVE_URL__';\nexport var TEXT = '__NATIVE_TEXT__';\nexport var HTML = '__NATIVE_HTML__';","export function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n  var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n    return resultSoFar || dataTransfer.getData(typeToTry);\n  }, '');\n  return result != null ? result : defaultValue;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var NativeDragSource = /*#__PURE__*/function () {\n  function NativeDragSource(config) {\n    _classCallCheck(this, NativeDragSource);\n\n    _defineProperty(this, \"item\", void 0);\n\n    _defineProperty(this, \"config\", void 0);\n\n    this.config = config;\n    this.item = {};\n    this.initializeExposedProperties();\n  }\n\n  _createClass(NativeDragSource, [{\n    key: \"initializeExposedProperties\",\n    value: function initializeExposedProperties() {\n      var _this = this;\n\n      Object.keys(this.config.exposeProperties).forEach(function (property) {\n        Object.defineProperty(_this.item, property, {\n          configurable: true,\n          enumerable: true,\n          get: function get() {\n            // eslint-disable-next-line no-console\n            console.warn(\"Browser doesn't allow reading \\\"\".concat(property, \"\\\" until the drop event.\"));\n            return null;\n          }\n        });\n      });\n    }\n  }, {\n    key: \"loadDataTransfer\",\n    value: function loadDataTransfer(dataTransfer) {\n      var _this2 = this;\n\n      if (dataTransfer) {\n        var newProperties = {};\n        Object.keys(this.config.exposeProperties).forEach(function (property) {\n          newProperties[property] = {\n            value: _this2.config.exposeProperties[property](dataTransfer, _this2.config.matchesTypes),\n            configurable: true,\n            enumerable: true\n          };\n        });\n        Object.defineProperties(this.item, newProperties);\n      }\n    }\n  }, {\n    key: \"canDrag\",\n    value: function canDrag() {\n      return true;\n    }\n  }, {\n    key: \"beginDrag\",\n    value: function beginDrag() {\n      return this.item;\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging(monitor, handle) {\n      return handle === monitor.getSourceId();\n    }\n  }, {\n    key: \"endDrag\",\n    value: function endDrag() {// empty\n    }\n  }]);\n\n  return NativeDragSource;\n}();","import { nativeTypesConfig } from './nativeTypesConfig';\nimport { NativeDragSource } from './NativeDragSource';\nexport function createNativeDragSource(type, dataTransfer) {\n  var result = new NativeDragSource(nativeTypesConfig[type]);\n  result.loadDataTransfer(dataTransfer);\n  return result;\n}\nexport function matchNativeItemType(dataTransfer) {\n  if (!dataTransfer) {\n    return null;\n  }\n\n  var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n  return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n    var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n    return matchesTypes.some(function (t) {\n      return dataTransferTypes.indexOf(t) > -1;\n    });\n  })[0] || null;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var OptionsReader = /*#__PURE__*/function () {\n  function OptionsReader(globalContext, options) {\n    _classCallCheck(this, OptionsReader);\n\n    _defineProperty(this, \"ownerDocument\", null);\n\n    _defineProperty(this, \"globalContext\", void 0);\n\n    _defineProperty(this, \"optionsArgs\", void 0);\n\n    this.globalContext = globalContext;\n    this.optionsArgs = options;\n  }\n\n  _createClass(OptionsReader, [{\n    key: \"window\",\n    get: function get() {\n      if (this.globalContext) {\n        return this.globalContext;\n      } else if (typeof window !== 'undefined') {\n        return window;\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      var _this$globalContext;\n\n      if ((_this$globalContext = this.globalContext) !== null && _this$globalContext !== void 0 && _this$globalContext.document) {\n        return this.globalContext.document;\n      } else if (this.window) {\n        return this.window.document;\n      } else {\n        return undefined;\n      }\n    }\n  }, {\n    key: \"rootElement\",\n    get: function get() {\n      var _this$optionsArgs;\n\n      return ((_this$optionsArgs = this.optionsArgs) === null || _this$optionsArgs === void 0 ? void 0 : _this$optionsArgs.rootElement) || this.window;\n    }\n  }]);\n\n  return OptionsReader;\n}();","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter';\nimport { getNodeClientOffset, getEventClientOffset, getDragPreviewOffset } from './OffsetUtils';\nimport { createNativeDragSource, matchNativeItemType } from './NativeDragSources';\nimport * as NativeTypes from './NativeTypes';\nimport { OptionsReader } from './OptionsReader';\nexport var HTML5BackendImpl = /*#__PURE__*/function () {\n  // React-Dnd Components\n  // Internal State\n  function HTML5BackendImpl(manager, globalContext, options) {\n    var _this = this;\n\n    _classCallCheck(this, HTML5BackendImpl);\n\n    _defineProperty(this, \"options\", void 0);\n\n    _defineProperty(this, \"actions\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"registry\", void 0);\n\n    _defineProperty(this, \"enterLeaveCounter\", void 0);\n\n    _defineProperty(this, \"sourcePreviewNodes\", new Map());\n\n    _defineProperty(this, \"sourcePreviewNodeOptions\", new Map());\n\n    _defineProperty(this, \"sourceNodes\", new Map());\n\n    _defineProperty(this, \"sourceNodeOptions\", new Map());\n\n    _defineProperty(this, \"dragStartSourceIds\", null);\n\n    _defineProperty(this, \"dropTargetIds\", []);\n\n    _defineProperty(this, \"dragEnterTargetIds\", []);\n\n    _defineProperty(this, \"currentNativeSource\", null);\n\n    _defineProperty(this, \"currentNativeHandle\", null);\n\n    _defineProperty(this, \"currentDragSourceNode\", null);\n\n    _defineProperty(this, \"altKeyPressed\", false);\n\n    _defineProperty(this, \"mouseMoveTimeoutTimer\", null);\n\n    _defineProperty(this, \"asyncEndDragFrameId\", null);\n\n    _defineProperty(this, \"dragOverTargetIds\", null);\n\n    _defineProperty(this, \"lastClientOffset\", null);\n\n    _defineProperty(this, \"hoverRafId\", null);\n\n    _defineProperty(this, \"getSourceClientOffset\", function (sourceId) {\n      var source = _this.sourceNodes.get(sourceId);\n\n      return source && getNodeClientOffset(source) || null;\n    });\n\n    _defineProperty(this, \"endDragNativeItem\", function () {\n      if (!_this.isDraggingNativeItem()) {\n        return;\n      }\n\n      _this.actions.endDrag();\n\n      if (_this.currentNativeHandle) {\n        _this.registry.removeSource(_this.currentNativeHandle);\n      }\n\n      _this.currentNativeHandle = null;\n      _this.currentNativeSource = null;\n    });\n\n    _defineProperty(this, \"isNodeInDocument\", function (node) {\n      // Check the node either in the main document or in the current context\n      return Boolean(node && _this.document && _this.document.body && _this.document.body.contains(node));\n    });\n\n    _defineProperty(this, \"endDragIfSourceWasRemovedFromDOM\", function () {\n      var node = _this.currentDragSourceNode;\n\n      if (node == null || _this.isNodeInDocument(node)) {\n        return;\n      }\n\n      if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragStartCapture\", function () {\n      _this.clearCurrentDragSourceNode();\n\n      _this.dragStartSourceIds = [];\n    });\n\n    _defineProperty(this, \"handleTopDragStart\", function (e) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      var dragStartSourceIds = _this.dragStartSourceIds;\n      _this.dragStartSourceIds = null;\n      var clientOffset = getEventClientOffset(e); // Avoid crashing if we missed a drop event or our previous drag died\n\n      if (_this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      } // Don't publish the source just yet (see why below)\n\n\n      _this.actions.beginDrag(dragStartSourceIds || [], {\n        publishSource: false,\n        getSourceClientOffset: _this.getSourceClientOffset,\n        clientOffset: clientOffset\n      });\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = matchNativeItemType(dataTransfer);\n\n      if (_this.monitor.isDragging()) {\n        if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n          // Use custom drag image if user specifies it.\n          // If child drag source refuses drag but parent agrees,\n          // use parent's node as drag image. Neither works in IE though.\n          var sourceId = _this.monitor.getSourceId();\n\n          var sourceNode = _this.sourceNodes.get(sourceId);\n\n          var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n\n          if (dragPreview) {\n            var _this$getCurrentSourc = _this.getCurrentSourcePreviewNodeOptions(),\n                anchorX = _this$getCurrentSourc.anchorX,\n                anchorY = _this$getCurrentSourc.anchorY,\n                offsetX = _this$getCurrentSourc.offsetX,\n                offsetY = _this$getCurrentSourc.offsetY;\n\n            var anchorPoint = {\n              anchorX: anchorX,\n              anchorY: anchorY\n            };\n            var offsetPoint = {\n              offsetX: offsetX,\n              offsetY: offsetY\n            };\n            var dragPreviewOffset = getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n            dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n          }\n        }\n\n        try {\n          // Firefox won't drag without setting data\n          dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n        } catch (err) {// IE doesn't support MIME types in setData\n        } // Store drag source node so we can check whether\n        // it is removed from DOM and trigger endDrag manually.\n\n\n        _this.setCurrentDragSourceNode(e.target); // Now we are ready to publish the drag source.. or are we not?\n\n\n        var _this$getCurrentSourc2 = _this.getCurrentSourcePreviewNodeOptions(),\n            captureDraggingState = _this$getCurrentSourc2.captureDraggingState;\n\n        if (!captureDraggingState) {\n          // Usually we want to publish it in the next tick so that browser\n          // is able to screenshot the current (not yet dragging) state.\n          //\n          // It also neatly avoids a situation where render() returns null\n          // in the same tick for the source element, and browser freaks out.\n          setTimeout(function () {\n            return _this.actions.publishDragSource();\n          }, 0);\n        } else {\n          // In some cases the user may want to override this behavior, e.g.\n          // to work around IE not supporting custom drag previews.\n          //\n          // When using a custom drag layer, the only way to prevent\n          // the default drag preview from drawing in IE is to screenshot\n          // the dragging state in which the node itself has zero opacity\n          // and height. In this case, though, returning null from render()\n          // will abruptly end the dragging, which is not obvious.\n          //\n          // This is the reason such behavior is strictly opt-in.\n          _this.actions.publishDragSource();\n        }\n      } else if (nativeType) {\n        // A native item (such as URL) dragged from inside the document\n        _this.beginDragNativeItem(nativeType);\n      } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n        // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n        // Just let it drag. It's a native type (URL or text) and will be picked up in\n        // dragenter handler.\n        return;\n      } else {\n        // If by this time no drag source reacted, tell browser not to drag.\n        e.preventDefault();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEndCapture\", function () {\n      if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n        // Firefox can dispatch this event in an infinite loop\n        // if dragend handler does something like showing an alert.\n        // Only proceed if we have not handled it already.\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEnterCapture\", function (e) {\n      _this.dragEnterTargetIds = [];\n\n      var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n\n      if (!isFirstEnter || _this.monitor.isDragging()) {\n        return;\n      }\n\n      var dataTransfer = e.dataTransfer;\n      var nativeType = matchNativeItemType(dataTransfer);\n\n      if (nativeType) {\n        // A native item (such as file or URL) dragged from outside the document\n        _this.beginDragNativeItem(nativeType, dataTransfer);\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragEnter\", function (e) {\n      var dragEnterTargetIds = _this.dragEnterTargetIds;\n      _this.dragEnterTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey; // If the target changes position as the result of `dragenter`, `dragover` might still\n      // get dispatched despite target being no longer there. The easy solution is to check\n      // whether there actually is a target before firing `hover`.\n\n      if (dragEnterTargetIds.length > 0) {\n        _this.actions.hover(dragEnterTargetIds, {\n          clientOffset: getEventClientOffset(e)\n        });\n      }\n\n      var canDrop = dragEnterTargetIds.some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // IE requires this to fire dragover events\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragOverCapture\", function () {\n      _this.dragOverTargetIds = [];\n    });\n\n    _defineProperty(this, \"handleTopDragOver\", function (e) {\n      var dragOverTargetIds = _this.dragOverTargetIds;\n      _this.dragOverTargetIds = [];\n\n      if (!_this.monitor.isDragging()) {\n        // This is probably a native item type we don't understand.\n        // Prevent default \"drop and blow away the whole document\" action.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n\n        return;\n      }\n\n      _this.altKeyPressed = e.altKey;\n      _this.lastClientOffset = getEventClientOffset(e);\n\n      if (_this.hoverRafId === null && typeof requestAnimationFrame !== 'undefined') {\n        _this.hoverRafId = requestAnimationFrame(function () {\n          if (_this.monitor.isDragging()) {\n            _this.actions.hover(dragOverTargetIds || [], {\n              clientOffset: _this.lastClientOffset\n            });\n          }\n\n          _this.hoverRafId = null;\n        });\n      }\n\n      var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n        return _this.monitor.canDropOnTarget(targetId);\n      });\n\n      if (canDrop) {\n        // Show user-specified drop effect.\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n        }\n      } else if (_this.isDraggingNativeItem()) {\n        // Don't show a nice cursor but still prevent default\n        // \"drop and blow away the whole document\" action.\n        e.preventDefault();\n      } else {\n        e.preventDefault();\n\n        if (e.dataTransfer) {\n          e.dataTransfer.dropEffect = 'none';\n        }\n      }\n    });\n\n    _defineProperty(this, \"handleTopDragLeaveCapture\", function (e) {\n      if (_this.isDraggingNativeItem()) {\n        e.preventDefault();\n      }\n\n      var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n\n      if (!isLastLeave) {\n        return;\n      }\n\n      if (_this.isDraggingNativeItem()) {\n        setTimeout(function () {\n          return _this.endDragNativeItem();\n        }, 0);\n      }\n    });\n\n    _defineProperty(this, \"handleTopDropCapture\", function (e) {\n      _this.dropTargetIds = [];\n\n      if (_this.isDraggingNativeItem()) {\n        var _this$currentNativeSo;\n\n        e.preventDefault();\n        (_this$currentNativeSo = _this.currentNativeSource) === null || _this$currentNativeSo === void 0 ? void 0 : _this$currentNativeSo.loadDataTransfer(e.dataTransfer);\n      } else if (matchNativeItemType(e.dataTransfer)) {\n        // Dragging some elements, like <a> and <img> may still behave like a native drag event,\n        // even if the current drag event matches a user-defined type.\n        // Stop the default behavior when we're not expecting a native item to be dropped.\n        e.preventDefault();\n      }\n\n      _this.enterLeaveCounter.reset();\n    });\n\n    _defineProperty(this, \"handleTopDrop\", function (e) {\n      var dropTargetIds = _this.dropTargetIds;\n      _this.dropTargetIds = [];\n\n      _this.actions.hover(dropTargetIds, {\n        clientOffset: getEventClientOffset(e)\n      });\n\n      _this.actions.drop({\n        dropEffect: _this.getCurrentDropEffect()\n      });\n\n      if (_this.isDraggingNativeItem()) {\n        _this.endDragNativeItem();\n      } else if (_this.monitor.isDragging()) {\n        _this.actions.endDrag();\n      }\n    });\n\n    _defineProperty(this, \"handleSelectStart\", function (e) {\n      var target = e.target; // Only IE requires us to explicitly say\n      // we want drag drop operation to start\n\n      if (typeof target.dragDrop !== 'function') {\n        return;\n      } // Inputs and textareas should be selectable\n\n\n      if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n        return;\n      } // For other targets, ask IE\n      // to enable drag and drop\n\n\n      e.preventDefault();\n      target.dragDrop();\n    });\n\n    this.options = new OptionsReader(globalContext, options);\n    this.actions = manager.getActions();\n    this.monitor = manager.getMonitor();\n    this.registry = manager.getRegistry();\n    this.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument);\n  }\n  /**\n   * Generate profiling statistics for the HTML5Backend.\n   */\n\n\n  _createClass(HTML5BackendImpl, [{\n    key: \"profile\",\n    value: function profile() {\n      var _this$dragStartSource, _this$dragOverTargetI;\n\n      return {\n        sourcePreviewNodes: this.sourcePreviewNodes.size,\n        sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n        sourceNodeOptions: this.sourceNodeOptions.size,\n        sourceNodes: this.sourceNodes.size,\n        dragStartSourceIds: ((_this$dragStartSource = this.dragStartSourceIds) === null || _this$dragStartSource === void 0 ? void 0 : _this$dragStartSource.length) || 0,\n        dropTargetIds: this.dropTargetIds.length,\n        dragEnterTargetIds: this.dragEnterTargetIds.length,\n        dragOverTargetIds: ((_this$dragOverTargetI = this.dragOverTargetIds) === null || _this$dragOverTargetI === void 0 ? void 0 : _this$dragOverTargetI.length) || 0\n      };\n    } // public for test\n\n  }, {\n    key: \"window\",\n    get: function get() {\n      return this.options.window;\n    }\n  }, {\n    key: \"document\",\n    get: function get() {\n      return this.options.document;\n    }\n    /**\n     * Get the root element to use for event subscriptions\n     */\n\n  }, {\n    key: \"rootElement\",\n    get: function get() {\n      return this.options.rootElement;\n    }\n  }, {\n    key: \"setup\",\n    value: function setup() {\n      var root = this.rootElement;\n\n      if (root === undefined) {\n        return;\n      }\n\n      if (root.__isReactDndBackendSetUp) {\n        throw new Error('Cannot have two HTML5 backends at the same time.');\n      }\n\n      root.__isReactDndBackendSetUp = true;\n      this.addEventListeners(root);\n    }\n  }, {\n    key: \"teardown\",\n    value: function teardown() {\n      var root = this.rootElement;\n\n      if (root === undefined) {\n        return;\n      }\n\n      root.__isReactDndBackendSetUp = false;\n      this.removeEventListeners(this.rootElement);\n      this.clearCurrentDragSourceNode();\n\n      if (this.asyncEndDragFrameId) {\n        var _this$window;\n\n        (_this$window = this.window) === null || _this$window === void 0 ? void 0 : _this$window.cancelAnimationFrame(this.asyncEndDragFrameId);\n      }\n    }\n  }, {\n    key: \"connectDragPreview\",\n    value: function connectDragPreview(sourceId, node, options) {\n      var _this2 = this;\n\n      this.sourcePreviewNodeOptions.set(sourceId, options);\n      this.sourcePreviewNodes.set(sourceId, node);\n      return function () {\n        _this2.sourcePreviewNodes.delete(sourceId);\n\n        _this2.sourcePreviewNodeOptions.delete(sourceId);\n      };\n    }\n  }, {\n    key: \"connectDragSource\",\n    value: function connectDragSource(sourceId, node, options) {\n      var _this3 = this;\n\n      this.sourceNodes.set(sourceId, node);\n      this.sourceNodeOptions.set(sourceId, options);\n\n      var handleDragStart = function handleDragStart(e) {\n        return _this3.handleDragStart(e, sourceId);\n      };\n\n      var handleSelectStart = function handleSelectStart(e) {\n        return _this3.handleSelectStart(e);\n      };\n\n      node.setAttribute('draggable', 'true');\n      node.addEventListener('dragstart', handleDragStart);\n      node.addEventListener('selectstart', handleSelectStart);\n      return function () {\n        _this3.sourceNodes.delete(sourceId);\n\n        _this3.sourceNodeOptions.delete(sourceId);\n\n        node.removeEventListener('dragstart', handleDragStart);\n        node.removeEventListener('selectstart', handleSelectStart);\n        node.setAttribute('draggable', 'false');\n      };\n    }\n  }, {\n    key: \"connectDropTarget\",\n    value: function connectDropTarget(targetId, node) {\n      var _this4 = this;\n\n      var handleDragEnter = function handleDragEnter(e) {\n        return _this4.handleDragEnter(e, targetId);\n      };\n\n      var handleDragOver = function handleDragOver(e) {\n        return _this4.handleDragOver(e, targetId);\n      };\n\n      var handleDrop = function handleDrop(e) {\n        return _this4.handleDrop(e, targetId);\n      };\n\n      node.addEventListener('dragenter', handleDragEnter);\n      node.addEventListener('dragover', handleDragOver);\n      node.addEventListener('drop', handleDrop);\n      return function () {\n        node.removeEventListener('dragenter', handleDragEnter);\n        node.removeEventListener('dragover', handleDragOver);\n        node.removeEventListener('drop', handleDrop);\n      };\n    }\n  }, {\n    key: \"addEventListeners\",\n    value: function addEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.addEventListener) {\n        return;\n      }\n\n      target.addEventListener('dragstart', this.handleTopDragStart);\n      target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.addEventListener('dragenter', this.handleTopDragEnter);\n      target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.addEventListener('dragover', this.handleTopDragOver);\n      target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.addEventListener('drop', this.handleTopDrop);\n      target.addEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"removeEventListeners\",\n    value: function removeEventListeners(target) {\n      // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n      if (!target.removeEventListener) {\n        return;\n      }\n\n      target.removeEventListener('dragstart', this.handleTopDragStart);\n      target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n      target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n      target.removeEventListener('dragenter', this.handleTopDragEnter);\n      target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n      target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n      target.removeEventListener('dragover', this.handleTopDragOver);\n      target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n      target.removeEventListener('drop', this.handleTopDrop);\n      target.removeEventListener('drop', this.handleTopDropCapture, true);\n    }\n  }, {\n    key: \"getCurrentSourceNodeOptions\",\n    value: function getCurrentSourceNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n      return _objectSpread({\n        dropEffect: this.altKeyPressed ? 'copy' : 'move'\n      }, sourceNodeOptions || {});\n    }\n  }, {\n    key: \"getCurrentDropEffect\",\n    value: function getCurrentDropEffect() {\n      if (this.isDraggingNativeItem()) {\n        // It makes more sense to default to 'copy' for native resources\n        return 'copy';\n      }\n\n      return this.getCurrentSourceNodeOptions().dropEffect;\n    }\n  }, {\n    key: \"getCurrentSourcePreviewNodeOptions\",\n    value: function getCurrentSourcePreviewNodeOptions() {\n      var sourceId = this.monitor.getSourceId();\n      var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n      return _objectSpread({\n        anchorX: 0.5,\n        anchorY: 0.5,\n        captureDraggingState: false\n      }, sourcePreviewNodeOptions || {});\n    }\n  }, {\n    key: \"isDraggingNativeItem\",\n    value: function isDraggingNativeItem() {\n      var itemType = this.monitor.getItemType();\n      return Object.keys(NativeTypes).some(function (key) {\n        return NativeTypes[key] === itemType;\n      });\n    }\n  }, {\n    key: \"beginDragNativeItem\",\n    value: function beginDragNativeItem(type, dataTransfer) {\n      this.clearCurrentDragSourceNode();\n      this.currentNativeSource = createNativeDragSource(type, dataTransfer);\n      this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n      this.actions.beginDrag([this.currentNativeHandle]);\n    }\n  }, {\n    key: \"setCurrentDragSourceNode\",\n    value: function setCurrentDragSourceNode(node) {\n      var _this5 = this;\n\n      this.clearCurrentDragSourceNode();\n      this.currentDragSourceNode = node; // A timeout of > 0 is necessary to resolve Firefox issue referenced\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n\n      var MOUSE_MOVE_TIMEOUT = 1000; // Receiving a mouse event in the middle of a dragging operation\n      // means it has ended and the drag source node disappeared from DOM,\n      // so the browser didn't dispatch the dragend event.\n      //\n      // We need to wait before we start listening for mousemove events.\n      // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n      // immediately in some browsers.\n      //\n      // See:\n      //   * https://github.com/react-dnd/react-dnd/pull/928\n      //   * https://github.com/react-dnd/react-dnd/issues/869\n      //\n\n      this.mouseMoveTimeoutTimer = setTimeout(function () {\n        var _this5$rootElement;\n\n        return (_this5$rootElement = _this5.rootElement) === null || _this5$rootElement === void 0 ? void 0 : _this5$rootElement.addEventListener('mousemove', _this5.endDragIfSourceWasRemovedFromDOM, true);\n      }, MOUSE_MOVE_TIMEOUT);\n    }\n  }, {\n    key: \"clearCurrentDragSourceNode\",\n    value: function clearCurrentDragSourceNode() {\n      if (this.currentDragSourceNode) {\n        this.currentDragSourceNode = null;\n\n        if (this.rootElement) {\n          var _this$window2;\n\n          (_this$window2 = this.window) === null || _this$window2 === void 0 ? void 0 : _this$window2.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n          this.rootElement.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n        }\n\n        this.mouseMoveTimeoutTimer = null;\n        return true;\n      }\n\n      return false;\n    }\n  }, {\n    key: \"handleDragStart\",\n    value: function handleDragStart(e, sourceId) {\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      if (!this.dragStartSourceIds) {\n        this.dragStartSourceIds = [];\n      }\n\n      this.dragStartSourceIds.unshift(sourceId);\n    }\n  }, {\n    key: \"handleDragEnter\",\n    value: function handleDragEnter(e, targetId) {\n      this.dragEnterTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDragOver\",\n    value: function handleDragOver(e, targetId) {\n      if (this.dragOverTargetIds === null) {\n        this.dragOverTargetIds = [];\n      }\n\n      this.dragOverTargetIds.unshift(targetId);\n    }\n  }, {\n    key: \"handleDrop\",\n    value: function handleDrop(e, targetId) {\n      this.dropTargetIds.unshift(targetId);\n    }\n  }]);\n\n  return HTML5BackendImpl;\n}();","import { HTML5BackendImpl } from './HTML5BackendImpl';\nimport * as NativeTypes from './NativeTypes';\nexport { getEmptyImage } from './getEmptyImage';\nexport { NativeTypes };\nexport var HTML5Backend = function createBackend(manager, context, options) {\n  return new HTML5BackendImpl(manager, context, options);\n};","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n  strike: function strike() {\n    return createHTML(this, 'strike', '', '');\n  }\n});\n","import fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\n\nconst OutlineUtils = {\n  setDoc(doc) {\n    this.doc = doc;\n  },\n  async setOutlineName(path, newName) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    await target.setTitle(newName);\n    const bookmarkEventObject = {\n      ...target,\n      bookmark: target,\n      path,\n      action: 'setOutlineName'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return path;\n  },\n  async setOutlineDestination(path, pageNum, x, y, zoom) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    const PDFNet = window.Core.PDFNet;\n    const document = await this.doc.getPDFDoc();\n    return PDFNet.runWithCleanup(async () => {\n      const page = await document.getPage(pageNum);\n      const destination = await PDFNet.Destination.createXYZ(page, x, y, zoom);\n      target.setAction(await PDFNet.Action.createGoto(destination));\n      const bookmarkEventObject = {\n        ...target,\n        bookmark: target,\n        path,\n        action: 'setOutlineDestination'\n      };\n      fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    });\n  },\n  async addRootOutline(newName, pageNum, x, y, zoom) {\n    const newOutline = await this.createOutlineXYZ(newName, pageNum, x, y, zoom);\n    const doc = await this.doc.getPDFDoc();\n\n    await doc.addRootBookmark(newOutline);\n\n    const bookmarkEventObject = {\n      ...newOutline,\n      bookmark: newOutline,\n      path: '0',\n      action: 'addRootOutline'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return '0';\n  },\n  async addNewOutline(newName, path, pageNum, x, y, zoom) {\n    let target;\n\n    const hasActiveOutline = !!path;\n    if (hasActiveOutline) {\n      target = await this.findPDFNetOutline(path);\n    } else {\n      target = await this.getLastOutline();\n    }\n\n    if (!target) {\n      return null;\n    }\n\n    const newOutline = await this.createOutlineXYZ(newName, pageNum, x, y, zoom);\n    if (hasActiveOutline) {\n      await target.addChild(newOutline);\n    } else {\n      await target.addNext(newOutline);\n    }\n\n    const addedOutlinePath = await this.findPathInTree(newOutline);\n    const bookmarkEventObject = {\n      ...newOutline,\n      bookmark: newOutline,\n      path: addedOutlinePath,\n      action: 'addNewOutline'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return addedOutlinePath;\n  },\n  async createOutlineXYZ(newName, pageNum, x, y, zoom) {\n    const PDFNet = window.Core.PDFNet;\n    const doc = await this.doc.getPDFDoc();\n    return PDFNet.runWithCleanup(async () => {\n      const newOutline = await PDFNet.Bookmark.create(doc, newName);\n\n      const page = await doc.getPage(pageNum);\n      const dest = await PDFNet.Destination.createXYZ(page, x, y, zoom);\n      newOutline.setAction(await PDFNet.Action.createGoto(dest));\n\n      return newOutline;\n    });\n  },\n  async deleteOutline(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    if (target) {\n      const bookmarkEventObject = {\n        ...target,\n        bookmark: target,\n        path,\n        action: 'deleteOutline'\n      };\n      await target.delete();\n      fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    }\n\n    return null;\n  },\n  async moveOutlineUp(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return;\n    }\n\n    const prev = await target.getPrev();\n    if (!(await this.isValid(prev))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n    await prev.addPrev(copy);\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineUp'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineDown(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return path;\n    }\n\n    const next = await target.getNext();\n    if (!(await this.isValid(next))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n    await next.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineDown'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineBeforeTarget(path, targetPath) {\n    const currTarget = await this.findPDFNetOutline(path);\n    const target = await this.findPDFNetOutline(targetPath);\n    if (!target || !currTarget) {\n      return path;\n    }\n    const copy = await currTarget.copy();\n    await currTarget.delete();\n    await target.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineBeforeTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineAfterTarget(path, targetPath) {\n    const currTarget = await this.findPDFNetOutline(path);\n    const target = await this.findPDFNetOutline(targetPath);\n    if (!target || !currTarget) {\n      return path;\n    }\n    const copy = await currTarget.copy();\n    await currTarget.delete();\n    await target.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineAfterTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutward(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target || (await target.getIndent()) === 1) {\n      return path;\n    }\n\n    const parent = await target.getParent();\n    const copy = await target.copy();\n    await target.delete();\n\n    await parent.addNext(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutward'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutwardBeforeParent(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target || (await target.getIndent()) === 1) {\n      return path;\n    }\n\n    const parent = await target.getParent();\n    const copy = await target.copy();\n    await target.delete();\n\n    await parent.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutwardBeforeParent'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineOutwardBeforeAncestor(path, ancestorPath) {\n    const target = await this.findPDFNetOutline(path);\n    const ancestorTarget = await this.findPDFNetOutline(ancestorPath);\n\n    if (!target || (await target.getIndent()) === 1 || !ancestorTarget) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    await ancestorTarget.addPrev(copy);\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineOutwardBeforeAncestor'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineInTarget(path, targetPath) {\n    const target = await this.findPDFNetOutline(path);\n    const targetOutline = await this.findPDFNetOutline(targetPath);\n    if (!target || !targetOutline) {\n      return path;\n    }\n\n    if (!(await this.isValid(targetOutline))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    if (await targetOutline.hasChildren()) {\n      const lastChild = await targetOutline.getLastChild();\n      await lastChild.addNext(copy);\n    } else {\n      await targetOutline.addChild(copy);\n    }\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineInTarget'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async moveOutlineInward(path) {\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return path;\n    }\n\n    const prev = await target.getPrev();\n    if (!(await this.isValid(prev))) {\n      return path;\n    }\n\n    const copy = await target.copy();\n    await target.delete();\n\n    if (await prev.hasChildren()) {\n      const lastChild = await prev.getLastChild();\n      await lastChild.addNext(copy);\n    } else {\n      await prev.addChild(copy);\n    }\n\n    const changedOutlinePath = await this.findPathInTree(copy);\n    const bookmarkEventObject = {\n      ...copy,\n      bookmark: copy,\n      path: changedOutlinePath,\n      action: 'moveOutlineInward'\n    };\n    fireEvent(Events.OUTLINE_BOOKMARKS_CHANGED, bookmarkEventObject);\n    return this.findPathInTree(copy);\n  },\n  async getCanMoveState(path) {\n    const state = { up: false, down: false, outward: false, inward: false };\n    const target = await this.findPDFNetOutline(path);\n\n    if (!target) {\n      return state;\n    }\n\n    const prev = await target.getPrev();\n    if (await this.isValid(prev)) {\n      state.up = true;\n      state.inward = true;\n    }\n\n    const next = await target.getNext();\n    if (await this.isValid(next)) {\n      state.down = true;\n    }\n\n    const parent = await target.getParent();\n    if ((await this.isValid(parent)) && (await target.getIndent()) > 1) {\n      state.outward = true;\n    }\n\n    return state;\n  },\n  getOutlineId(outline) {\n    const name = outline.getName();\n    const path = this.getPath(outline);\n\n    return `${path}${this.getSplitter()}${name}`;\n  },\n  async getLastOutline() {\n    const doc = await this.doc.getPDFDoc();\n    return window.Core.PDFNet.runWithCleanup(async () => {\n      const root = await doc.getFirstBookmark();\n\n      let curr = root;\n      while ((await this.isValid(curr)) && (await this.isValid(await curr.getNext()))) {\n        curr = await curr.getNext();\n      }\n\n      return (await this.isValid(curr)) ? curr : null;\n    });\n  },\n  async findPathInTree(target) {\n    const doc = await this.doc.getPDFDoc();\n    const root = await doc.getFirstBookmark();\n    const queue = [];\n\n    // add all the bookmarks in the first level to the queue\n    // this includes the root bookmark and all of its siblings\n    let i = 0;\n    let curr = root;\n    while (await this.isValid(curr)) {\n      queue.push([curr, `${i}`]);\n      curr = await curr.getNext();\n      i++;\n    }\n\n    // start a BFS to find the target\n    while (queue.length > 0) {\n      const node = queue.shift();\n      const [outline, path] = node;\n\n      if (outline.id === target.id) {\n        return path;\n      }\n\n      if (!(await outline.hasChildren())) {\n        continue;\n      }\n\n      let childIdx = 0;\n      let child = await outline.getFirstChild();\n      while (await this.isValid(child)) {\n        queue.push([child, `${path}${this.getSplitter()}${childIdx}`]);\n\n        child = await child.getNext();\n        childIdx++;\n      }\n    }\n\n    return null;\n  },\n  async findPDFNetOutline(path) {\n    if (!path) {\n      return Promise.resolve(null);\n    }\n\n    const paths = path.split(this.getSplitter());\n    const doc = await this.doc.getPDFDoc();\n    return window.Core.PDFNet.runWithCleanup(async () => {\n      const rootOutline = await doc.getFirstBookmark();\n\n      let curr = rootOutline;\n      for (let level = 0; level < paths.length; level++) {\n        for (let i = 0; i < paths[level]; i++) {\n          if (!curr) {\n            return null;\n          }\n          curr = await curr.getNext();\n        }\n\n        if (level !== paths.length - 1) {\n          curr = await curr.getFirstChild();\n        }\n      }\n\n      if (await this.isValid(curr)) {\n        return curr;\n      }\n\n      return (await this.isValid(curr)) ? curr : null;\n    });\n  },\n  isAncestor(outline, targetOutline) {\n    if (outline === targetOutline) {\n      return false;\n    }\n    let parentOutline = outline.parent;\n    while (parentOutline) {\n      if (parentOutline === targetOutline) {\n        return true;\n      }\n      parentOutline = parentOutline.parent;\n    }\n    return false;\n  },\n  getPathArray(outline) {\n    const paths = [];\n\n    let curr = outline;\n    while (curr) {\n      paths.push(curr.getIndex());\n      curr = curr.getParent();\n    }\n\n    return paths;\n  },\n  getPath(outline) {\n    return this.getPathArray(outline).reverse().join(this.getSplitter());\n  },\n  getNestedLevel(outline) {\n    return this.getPathArray(outline).length - 1;\n  },\n  getSplitter() {\n    return '-';\n  },\n  async isValid(pdfnetOutline) {\n    // eslint-disable-next-line no-return-await\n    return pdfnetOutline && (await pdfnetOutline.isValid());\n  },\n};\n\nexport default Object.create(OutlineUtils);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n    re2[MATCH] = false;\n    // RegExp constructor can alter flags and IsRegExp works correct with @@match\n    return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n  }));\n\nvar handleDotAll = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var brackets = false;\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      result += chr + charAt(string, ++index);\n      continue;\n    }\n    if (!brackets && chr === '.') {\n      result += '[\\\\s\\\\S]';\n    } else {\n      if (chr === '[') {\n        brackets = true;\n      } else if (chr === ']') {\n        brackets = false;\n      } result += chr;\n    }\n  } return result;\n};\n\nvar handleNCG = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var named = [];\n  var names = {};\n  var brackets = false;\n  var ncg = false;\n  var groupid = 0;\n  var groupname = '';\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      chr = chr + charAt(string, ++index);\n    } else if (chr === ']') {\n      brackets = false;\n    } else if (!brackets) switch (true) {\n      case chr === '[':\n        brackets = true;\n        break;\n      case chr === '(':\n        if (exec(IS_NCG, stringSlice(string, index + 1))) {\n          index += 2;\n          ncg = true;\n        }\n        result += chr;\n        groupid++;\n        continue;\n      case chr === '>' && ncg:\n        if (groupname === '' || hasOwn(names, groupname)) {\n          throw new SyntaxError('Invalid capture group name');\n        }\n        names[groupname] = true;\n        named[named.length] = [groupname, groupid];\n        ncg = false;\n        groupname = '';\n        continue;\n    }\n    if (ncg) groupname += chr;\n    else result += chr;\n  } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var groups = [];\n    var rawPattern = pattern;\n    var rawFlags, dotAll, sticky, handled, result, state;\n\n    if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n      return pattern;\n    }\n\n    if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n      pattern = pattern.source;\n      if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n    }\n\n    pattern = pattern === undefined ? '' : toString(pattern);\n    flags = flags === undefined ? '' : toString(flags);\n    rawPattern = pattern;\n\n    if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n      dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n      if (dotAll) flags = replace(flags, /s/g, '');\n    }\n\n    rawFlags = flags;\n\n    if (MISSED_STICKY && 'sticky' in re1) {\n      sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n      if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n    }\n\n    if (UNSUPPORTED_NCG) {\n      handled = handleNCG(pattern);\n      pattern = handled[0];\n      groups = handled[1];\n    }\n\n    result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n    if (dotAll || sticky || groups.length) {\n      state = enforceInternalState(result);\n      if (dotAll) {\n        state.dotAll = true;\n        state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n      }\n      if (sticky) state.sticky = true;\n      if (groups.length) state.groups = groups;\n    }\n\n    if (pattern !== rawPattern) try {\n      // fails in old engines, but we have no alternatives for unsupported regex syntax\n      createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n    } catch (error) { /* empty */ }\n\n    return result;\n  };\n\n  for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n    proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n  }\n\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","import { isIE } from 'helpers/device';\nimport core from 'core';\n\nexport default async (pageNumbersToExtract) => {\n  const documentViewer = core.getDocumentViewer();\n  const doc = documentViewer.getDocument();\n  const annotManager = documentViewer.getAnnotationManager();\n\n  const pageCount = doc.getPageCount();\n  const pageOutOfRange = pageNumbersToExtract.some((page) => page < 1 || page > pageCount);\n\n  if (pageOutOfRange) {\n    return Promise.reject(`Page out of range, please enter an array of numbers between 1 and ${pageCount}`);\n  }\n\n  const finishPromise = new Promise(function(resolve, reject) {\n    try {\n      const pageMap = new Map();\n      pageNumbersToExtract.forEach((page) => pageMap.set(page, true));\n\n      const annotationList = annotManager.getAnnotationsList().filter((annot) => pageMap.has(annot.PageNumber));\n      annotManager.exportAnnotations({ annotationList, widgets: true, links: true, fields: true }).then((xfdfString) => {\n        doc.extractPages(pageNumbersToExtract, xfdfString).then((data) => {\n          const arr = new Uint8Array(data);\n          const fileName = `${doc.getFilename()}.pdf` || 'extractedDocument.pdf';\n\n          let file = null;\n          if (isIE) {\n            file = new Blob([arr], { type: 'application/pdf' });\n          } else {\n            file = new File([arr], fileName, { type: 'application/pdf' });\n          }\n\n          resolve(file);\n        }).catch(function(ex) {\n          reject(ex);\n        });\n      });\n    } catch (ex) {\n      reject(ex);\n    }\n  });\n\n  return finishPromise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar un$ArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (un$ArrayBufferSlice && end === undefined) {\n      return un$ArrayBufferSlice(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      setUint8(viewTarget, index++, getUint8(viewSource, first++));\n    } return result;\n  }\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar call = require('../internals/function-call');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  return call(\n    $fill,\n    aTypedArray(this),\n    value,\n    length > 1 ? arguments[1] : undefined,\n    length > 2 ? arguments[2] : undefined\n  );\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n  TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n  && TypedArrayPrototype.values\n  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n  && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (typedArraySpeciesConstructor(O))(length);\n  });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = typedArraySpeciesConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n  un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n  un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  un$Sort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return un$Sort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = typedArraySpeciesConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { isIE11 } from 'helpers/device';\nimport { getCircleRadius } from 'constants/slider';\n\nimport './Slider.scss';\n\nclass Slider extends React.PureComponent {\n  static propTypes = {\n    property: PropTypes.string.isRequired,\n    value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    displayProperty: PropTypes.string.isRequired,\n    getDisplayValue: PropTypes.func.isRequired,\n    onSliderChange: PropTypes.func.isRequired,\n    dataElement: PropTypes.string,\n    getCirclePosition: PropTypes.func.isRequired,\n    customCircleRadius: PropTypes.number,\n    customLineStrokeWidth: PropTypes.number,\n    convertRelativeCirclePositionToValue: PropTypes.func.isRequired,\n    onStyleChange: PropTypes.func.isRequired,\n    t: PropTypes.func.isRequired,\n    withInputField: PropTypes.bool,\n    inputFieldType: PropTypes.string,\n    min: PropTypes.number,\n    max: PropTypes.number,\n    step: PropTypes.number,\n    getLocalValue: PropTypes.func,\n    shouldHideSliderTitle: PropTypes.bool,\n    shouldHideSliderValue: PropTypes.bool,\n    isMobile: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n    this.isMouseDown = false;\n    this.sliderSvg = React.createRef();\n    this.inputRef = React.createRef();\n    this.lineLength = 0;\n    this.state = {\n      localValue: props.value,\n      isEditingInputField: false,\n    };\n  }\n\n  componentDidMount() {\n    window.addEventListener('mousemove', this.onMove);\n    window.addEventListener('mouseup', this.onMouseUp);\n    window.addEventListener('orientationchange', this.updateSvg);\n    window.addEventListener('resize', this.updateSvg);\n    this.sliderSvg.current.addEventListener('touchmove', this.onMove, { passive: false });\n    this.updateSvg();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.value !== this.props.value) {\n      this.setState({ localValue: this.props.value });\n    }\n  }\n\n  // Fix for slider having the wrong size\n  // eslint-disable-next-line camelcase\n  UNSAFE_componentWillUpdate() {\n    this.setLineLength();\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('mousemove', this.onMove);\n    window.removeEventListener('mouseup', this.onMouseUp);\n    window.removeEventListener('orientationchange', this.updateSvg);\n    window.removeEventListener('resize', this.updateSvg);\n    this.sliderSvg.current.removeEventListener('touchmove', this.onMove, { passive: false });\n  }\n\n  updateSvg = () => {\n    this.setLineLength();\n    this.forceUpdate();\n  };\n\n  setLineLength = () => {\n    this.lineLength =\n      0.94 * this.sliderSvg.current.getBoundingClientRect().width - 2 * getCircleRadius(this.props.isMobile);\n  };\n\n  onMouseDown = (e) => {\n    e.preventDefault();\n    this.isMouseDown = true;\n    this.onMove(e.nativeEvent);\n  };\n\n  onMouseUp = (e) => {\n    const isUsingMouse = !e.touches;\n    if (isUsingMouse && !this.isMouseDown) {\n      return;\n    }\n\n    const { property, onStyleChange, convertRelativeCirclePositionToValue } = this.props;\n    const relativeCirclePosition = this.getRelativeCirclePosition(e);\n    const value = convertRelativeCirclePositionToValue(relativeCirclePosition);\n\n    onStyleChange(property, value);\n    if (this.props.withInputField) {\n      this.setState({\n        isEditingInputField: false,\n      });\n    }\n    this.isMouseDown = false;\n  };\n\n  onTouchStart = (e) => {\n    this.onMove(e);\n  };\n\n  onTouchEnd = (e) => {\n    this.onMouseUp(e);\n  };\n\n  onMove = (e) => {\n    const isUsingMouse = !e.touches;\n    if (isUsingMouse && !this.isMouseDown) {\n      return;\n    }\n\n    e.preventDefault();\n\n    const { property, onSliderChange, convertRelativeCirclePositionToValue } = this.props;\n    const relativeCirclePosition = this.getRelativeCirclePosition(e);\n    const value = convertRelativeCirclePositionToValue(relativeCirclePosition);\n\n    onSliderChange(property, value);\n\n    this.setState({\n      localValue: value,\n    });\n  };\n\n  getRelativeCirclePosition = (e) => {\n    const isUsingMouse = !e.touches;\n    const lineStart = getCircleRadius(this.props.isMobile);\n    const lineEnd = lineStart + this.lineLength;\n    const svgLeft = this.sliderSvg.current.getBoundingClientRect().left;\n    let circlePosition;\n\n    try {\n      if (isUsingMouse) {\n        circlePosition = e.pageX - svgLeft;\n      } else {\n        circlePosition = e.touches[0].pageX - svgLeft;\n      }\n    } catch {\n      // In the event we cannot get a pageX value, stay still instead\n      const { convertRelativeCirclePositionToValue } = this.props;\n      const factor = convertRelativeCirclePositionToValue(this.state.localValue) / this.state.localValue;\n      return this.state.localValue / factor;\n    }\n\n    if (circlePosition < lineStart) {\n      circlePosition = lineStart;\n    } else if (circlePosition > lineEnd) {\n      circlePosition = lineEnd;\n    }\n\n    return (circlePosition - lineStart) / this.lineLength;\n  };\n\n  onInputChange = (e) => {\n    const { getLocalValue, property, onStyleChange, onSliderChange, max, inputFieldType, min } = this.props;\n    if (inputFieldType === 'number' && (e.target.value || e.target.value === 0)) {\n      if (e.target.value > max) {\n        e.target.value = max;\n      }\n      let value = e.target.value;\n      if (e.target.value < min) {\n        value = min;\n      }\n      const localValue = getLocalValue ? getLocalValue(value) : value;\n      onSliderChange(property, localValue);\n      onStyleChange(property, localValue);\n      this.setState({\n        localValue,\n      });\n    }\n  };\n\n  onInputKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      this.inputRef.current.blur();\n    }\n  };\n\n  onInputBlur = (isEditingInputField) => {\n    const { min, getLocalValue } = this.props;\n    if ((this.inputRef.current.value !== 0 && !this.inputRef.current.value) || this.inputRef.current.value < min) {\n      this.inputRef.current.value = min;\n      const localValue = getLocalValue ? getLocalValue(min) : min;\n      this.setState({ localValue });\n    }\n    this.setState({ isEditingInputField });\n  };\n\n  onInputFocus = (isEditingInputField) => {\n    this.setState({ isEditingInputField });\n  };\n\n  getInputElement = (label) => {\n    const { inputFieldType, min, max, step, getDisplayValue } = this.props;\n    const displayValue = getDisplayValue(this.state.localValue);\n    if (this.state.isEditingInputField && inputFieldType === 'number') {\n      return (\n        <div className=\"slider-input-wrapper\">\n          <input\n            ref={this.inputRef}\n            autoFocus\n            defaultValue={parseFloat(displayValue)}\n            type={inputFieldType}\n            onChange={this.onInputChange}\n            onKeyDown={this.onInputKeyDown}\n            className=\"slider-input-field is-editing\"\n            onBlur={() => this.onInputBlur(false)}\n            // The prop min={} can not be used here, otherwise its impossible to delete everything completely inside input box, which was complained by PM.\n            max={max}\n            min={min}\n            step={step}\n          />\n        </div>\n      );\n    }\n\n    return (\n      <input\n        readOnly\n        type=\"text\"\n        className=\"slider-input-field\"\n        value={getDisplayValue(this.state.localValue)}\n        aria-label={`${label} ${getDisplayValue(this.state.localValue)}`}\n        onFocus={this.onInputFocus}\n      />\n    );\n  };\n\n  renderSlider = () => {\n    const { dataElement, displayProperty, getCirclePosition, t, withInputField, getDisplayValue } = this.props;\n    const circleCenter = getCirclePosition(this.lineLength, this.state.localValue);\n\n    return (\n      /* eslint-disable custom/no-hex-colors */\n      <div className=\"slider\" data-element={dataElement}>\n        {!this.props.shouldHideSliderTitle && <div className=\"slider-property\" onMouseDown={(e) => e.preventDefault()}>\n          {t(`option.slider.${displayProperty}`)}\n        </div>}\n        <div className=\"slider-element-container\">\n          <svg\n            data-element={dataElement}\n            onMouseDown={this.onMouseDown}\n            onTouchStart={this.onTouchStart}\n            onTouchEnd={this.onTouchEnd}\n            ref={this.sliderSvg}\n          >\n            <line\n              x1={getCircleRadius(this.props.isMobile, this.props.customCircleRadius)}\n              y1=\"50%\"\n              x2={circleCenter}\n              y2=\"50%\"\n              strokeWidth={`${this.props.customLineStrokeWidth || 2}`}\n              stroke=\"#00a5e4\"\n              strokeLinecap=\"round\"\n            />\n            <line\n              x1={circleCenter}\n              y1=\"50%\"\n              x2={this.lineLength + getCircleRadius(this.props.isMobile, this.props.customCircleRadius)}\n              y2=\"50%\"\n              strokeWidth={`${this.props.customLineStrokeWidth || 2}`}\n              stroke=\"#e0e0e0\"\n              strokeLinecap=\"round\"\n            />\n            <circle cx={circleCenter} cy=\"50%\" r={getCircleRadius(this.props.isMobile, this.props.customCircleRadius)} fill=\"#00a5e4\" />\n          </svg>\n          {!this.props.shouldHideSliderValue &&\n            (withInputField ? (\n              this.getInputElement(t(`option.slider.${displayProperty}`))\n            ) : (\n              <div className=\"slider-value\">{getDisplayValue(this.state.localValue)}</div>\n            ))}\n        </div>\n      </div>\n      /* eslint-enable custom/no-hex-colors */\n    );\n  };\n\n  render() {\n    if (isIE11) {\n      // We use css Grid to place sliders responsively,\n      // since IE11 only supports the old Grid, we use css Flexbox\n      return <div className=\"slider\">{this.renderSlider()}</div>;\n    }\n\n    return this.renderSlider();\n  }\n}\n\nconst ConnectedSlider = withTranslation(null, { wait: false })(Slider);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedSlider {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import connectedComponent from './Slider';\n\nexport default connectedComponent;","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport getPageArrayFromString from 'helpers/getPageArrayFromString';\nimport Icon from 'components/Icon';\nimport './PageNumberInput.scss';\n\nconst propTypes = {\n  id: PropTypes.string,\n  selectedPageNumbers: PropTypes.arrayOf(PropTypes.number),\n  pageCount: PropTypes.number,\n  placeholder: PropTypes.string,\n  pageNumberError: PropTypes.string,\n  onBlurHandler: PropTypes.func,\n  onError: PropTypes.func,\n  ariaLabel: PropTypes.string,\n  onSelectedPageNumbersChange: PropTypes.func,\n  customPageLabels: PropTypes.array,\n  enablePageLabels: PropTypes.bool\n};\n\nconst noop = () => { };\n\nfunction PageNumberInput({\n  id,\n  selectedPageNumbers,\n  pageCount,\n  enablePageLabels = false,\n  customPageLabels = null,\n  placeholder,\n  pageNumberError,\n  onSelectedPageNumbersChange,\n  ariaLabel,\n  onError = noop,\n  onBlurHandler = noop,\n}) {\n  // Since we don't have page labels info we just assume page numbers as labels\n  let pageLabels = Array.from({ length: pageCount }, (_, i) => (i + 1).toString());\n  const [pageString, setPageString] = useState('');\n  const [hasError, setHasError] = useState(false);\n\n  useEffect(() => {\n    // Whenever we receive a selectedPageNumbers prop, massage it into the nice format\n    if (selectedPageNumbers) {\n      setPageString(getPageString(selectedPageNumbers));\n    }\n  }, [selectedPageNumbers]);\n\n  useEffect(() => {\n    setHasError(!!pageNumberError);\n  }, [pageNumberError]);\n\n  const onPagesChange = (e) => {\n    const inputValue = e.target.value;\n    const lastChar = inputValue[inputValue.length - 1];\n\n    if (lastChar === ',' || lastChar === '-') {\n      setPageString(inputValue);\n      return;\n    }\n\n    setPageString(inputValue);\n\n    if (enablePageLabels && customPageLabels) {\n      pageLabels = customPageLabels;\n    }\n\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pageNumbersArray = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels, pageCount, onError);\n\n    // Send info back to parent component\n    onSelectedPageNumbersChange && onSelectedPageNumbersChange(pageNumbersArray);\n  };\n\n  const getPageString = (selectedPageArray) => {\n    let pagesToPrint = '';\n    const sortedPages = selectedPageArray.sort((a, b) => a - b);\n    let prevIndex = null;\n\n    for (let i = 0; sortedPages.length > i; i++) {\n      if (sortedPages[i + 1] === sortedPages[i] + 1) {\n        prevIndex = prevIndex !== null ? prevIndex : sortedPages[i];\n      } else if (prevIndex !== null) {\n        pagesToPrint = `${pagesToPrint}${prevIndex}-${sortedPages[i]}, `;\n        prevIndex = null;\n      } else {\n        pagesToPrint = `${pagesToPrint}${sortedPages[i]}, `;\n      }\n    }\n\n    return pagesToPrint.slice(0, -2);\n  };\n\n  const onBlur = (e) => {\n    if (enablePageLabels && customPageLabels) {\n      pageLabels = customPageLabels;\n    }\n\n    const selectedPagesString = e.target.value.replace(/ /g, '');\n    const pageNumbersArray = !selectedPagesString ? [] : getPageArrayFromString(selectedPagesString, pageLabels, pageCount, onError);\n    const pageNumbersString = getPageString(pageNumbersArray);\n    setPageString(pageNumbersString);\n\n    // Send info back to parent component\n    onBlurHandler && onBlurHandler(pageNumbersArray);\n  };\n\n  return (\n    <div className='PageNumberInput'>\n      <div className='input-wrapper'>\n        <input\n          className={classNames({\n            'page-number-input': true,\n            'page-number-input--error': hasError\n          })}\n          id={id}\n          type='text'\n          onChange={onPagesChange}\n          onBlur={onBlur}\n          aria-label={ariaLabel}\n          value={pageString}\n          placeholder={placeholder}\n          aria-describedby={hasError ? 'PageNumberInputError' : undefined}\n        />\n        {hasError && <Icon glyph=\"icon-alert\" />}\n      </div>\n      {hasError && (\n        <div id=\"PageNumberInputError\" className=\"page-number-error\">\n          <p aria-live=\"assertive\" className=\"no-margin\">{pageNumberError}</p>\n        </div>)}\n    </div>\n  );\n}\n\nPageNumberInput.propTypes = propTypes;\n\nexport default PageNumberInput;\n","import PageNumberInput from './PageNumberInput';\n\nexport default PageNumberInput;","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  defineBuiltIns(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n","/**\n * Searches the full document for the texts matching searchValue.\n * @method UI.searchTextFull\n * @param {string} searchValue The text value to look for.\n * @param {object} [options] Search options.\n * @param {boolean} [options.caseSensitive=false] Search with matching cases.\n * @param {boolean} [options.wholeWord=false] Search whole words only.\n * @param {boolean} [options.wildcard=false] Search a string with a wildcard *. For example, *viewer.\n * @param {boolean} [options.regex=false] Search for a regex string. For example, www(.*)com.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.searchTextFull('test', {\n        wholeWord: true\n      });\n    });\n  });\n */\n\nimport actions from 'actions';\nimport core from 'core';\nimport { getSearchListeners } from 'helpers/search';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport selectors from 'selectors';\n\nconst onResultThrottleTimeout = 100;\n\nlet isStillProcessingResults = false;\n\nfunction buildSearchModeFlag(options = {}) {\n  const SearchMode = core.getSearchMode();\n  const searchMode = [SearchMode.PAGE_STOP, SearchMode.HIGHLIGHT];\n\n  if (options.caseSensitive) {\n    searchMode.push(SearchMode.CASE_SENSITIVE);\n  }\n  if (options.wholeWord) {\n    searchMode.push(SearchMode.WHOLE_WORD);\n  }\n  if (options.wildcard) {\n    searchMode.push(SearchMode.WILD_CARD);\n  }\n  if (options.regex) {\n    searchMode.push(SearchMode.REGEX);\n  }\n\n  searchMode.push(SearchMode.AMBIENT_STRING);\n\n  return searchMode;\n}\n\nexport default (store) => (searchValue, options, isUserTriggered = true) => {\n  const dispatch = store?.dispatch;\n  // Store is optional. Default activeDocumentViewerKey is 1\n  const activeDocumentViewerKey = store ? selectors.getActiveDocumentViewerKey(store.getState()) : 1;\n  if (dispatch) {\n    // dispatch is only set when doing search through API (instance.searchText())\n    // When triggering search through UI, then redux updates are already handled inside component\n    isUserTriggered && dispatch(actions.openElement('searchPanel'));\n    dispatch(actions.searchTextFull(searchValue, options));\n  }\n\n  const searchMode = buildSearchModeFlag(options);\n  let doneCallback = () => { };\n\n  let hasActiveResultBeenSet = false;\n  let throttleResults = [];\n  let resultTimeout;\n\n  function onResult(result) {\n    throttleResults.push(result);\n    if (!resultTimeout) {\n      if (!isStillProcessingResults) {\n        isStillProcessingResults = true;\n      }\n      const activeDocumentViewer = core.getDocumentViewer(activeDocumentViewerKey);\n\n      resultTimeout = setTimeout(() => {\n        activeDocumentViewer.displayAdditionalSearchResults(throttleResults);\n        throttleResults = [];\n        resultTimeout = null;\n        doneCallback();\n      }, onResultThrottleTimeout);\n    }\n\n    if (!hasActiveResultBeenSet && !isOfficeEditorMode()) {\n      // when full search is done, we make first found result to be the active result\n      activeDocumentViewer.setActiveSearchResult(result);\n      hasActiveResultBeenSet = true;\n    }\n  }\n\n  function searchInProgressCallback(isSearching) {\n    // execute search listeners when search is complete, thus hooking functionality search in progress event.\n    if (isSearching === false) {\n      doneCallback = () => {\n        const activeDocumentViewer = core.getDocumentViewer(activeDocumentViewerKey);\n        const results = activeDocumentViewer.getPageSearchResults();\n        const searchOptions = {\n          // default values\n          caseSensitive: false,\n          wholeWord: false,\n          wildcard: false,\n          regex: false,\n          searchUp: false,\n          ambientString: true,\n          // override values with those user gave\n          ...options,\n        };\n        const nextResultIndex = store?.getState().search?.nextResultIndex;\n\n        const result = results[nextResultIndex];\n        if (result) {\n          // when full search is done, we make first found result to be the active result\n          activeDocumentViewer.setActiveSearchResult(result);\n        }\n        const searchListeners = getSearchListeners() || [];\n        searchListeners.forEach((listener) => {\n          try {\n            listener(searchValue, searchOptions, results);\n          } catch (e) {\n            console.error(e);\n          }\n        });\n      };\n      isStillProcessingResults = false;\n\n      if (!resultTimeout) {\n        doneCallback();\n      }\n      activeDocumentViewer.removeEventListener('searchInProgress', searchInProgressCallback);\n    }\n  }\n\n  function onDocumentEnd() { }\n\n  function handleSearchError(error) {\n    dispatch(actions.setProcessingSearchResults(false));\n    console.error(error);\n  }\n  const textSearchInitOptions = {\n    'fullSearch': true,\n    onResult,\n    onDocumentEnd,\n    'onError': handleSearchError,\n  };\n\n  const activeDocumentViewer = core.getDocumentViewer(activeDocumentViewerKey);\n\n  activeDocumentViewer.clearSearchResults();\n  activeDocumentViewer.textSearchInit(searchValue, searchMode, textSearchInitOptions);\n  activeDocumentViewer.addEventListener('searchInProgress', searchInProgressCallback);\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport './Divider.scss';\n\nconst Divider = ({ headerDirection }) => {\n  const className = classNames('Divider', `${headerDirection || 'column'}`);\n\n  return (\n    <div className={className} />\n  );\n};\n\nexport default Divider;","import Divider from './Divider';\n\nexport default Divider;","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { useEffect, useRef } from 'react';\nexport function useCurrentRef(toRef) {\n  const toRefRef = useRef(toRef);\n  useEffect(() => {\n    toRefRef.current = toRef;\n  });\n  return toRefRef;\n}","// If we have a shadowroot then we are in webcomponent and the active element will be further down\nexport const getDOMActiveElement = () => {\n  let activeElement = document.activeElement;\n  if (activeElement.shadowRoot) {\n    activeElement = activeElement.shadowRoot.activeElement;\n  }\n  return activeElement;\n};","import { useCallback, useEffect, useRef } from 'react';\nimport { useCurrentRef } from 'hooks/useCurrentRef';\nimport { findFocusableIndex } from 'helpers/accessibility';\nimport { getDOMActiveElement } from 'helpers/webComponent';\n\nconst focusableElementDomString = [\n  'a[href]',\n  'area[href]',\n  'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n  'select:not([disabled]):not([aria-hidden])',\n  'textarea:not([disabled]):not([aria-hidden])',\n  'button:not([disabled]):not([aria-hidden])',\n  'iframe',\n  'object',\n  'embed',\n  '[contenteditable]',\n  '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n\n/**\n * @ignore\n * A hook for trapping focus within an element. Returns a ref which can be given\n * to any element to trap focus within that element when `locked` is true.\n * @param locked When true, focus will be locked within the element you passed\n * the returned ref to.\n * @param options Options to control the focus trap.\n */\nexport default function useFocusTrap(locked = false, options = {}) {\n  const focusLastOnUnlock = options.focusLastOnUnlock;\n  const focusRef = useRef(null);\n  // Get the focusable elements. Assumes that focusRef exists. DON'T CALL if\n  // you haven't asserted existance of focusRef.current.\n  const getFocusableElements = useCallback(() => {\n    return focusRef.current.querySelectorAll(focusableElementDomString);\n  }, []);\n\n  const isElementVisible = (element) => {\n    if (!element) {\n      return false;\n    }\n    // Check if the element or any of its parents has visibility:hidden or display:none\n    while (element) {\n      const style = window.getComputedStyle(element);\n      if (style.visibility === 'hidden' || style.display === 'none') {\n        return false;\n      }\n      element = element.parentElement;\n    }\n    return true;\n  };\n\n  const getLastVisibleIndex = (elementsArray) => {\n    for (let i = elementsArray.length - 1; i >= 0; i--) {\n      const element = elementsArray[i];\n\n      if (isElementVisible(element)) {\n        return i;\n      }\n    }\n    return -1;\n  };\n\n  // Cycles tabs within the lock zone when enabled, or prevents default\n  // if there are no elements within the lock (rare edge case).\n  const lockFocus = useCallback((event) => {\n    // Return if not locked, other key pressed, or no ref.\n    if (!locked || (event && event.key !== 'Tab') || !focusRef.current) {\n      return;\n    }\n    const focusableElements = getFocusableElements();\n\n    // If no focusable elements, simply prevent tab default.\n    if (!focusableElements.length) {\n      return event?.preventDefault();\n    }\n\n    const activeElement = getDOMActiveElement();\n    const focusedItemIndex = findFocusableIndex(focusableElements, activeElement);\n\n    // If focused inside and initial call (no event), leave focused element.\n    if (focusedItemIndex !== -1 && !event) {\n      return;\n    }\n\n    const lastVisibleElementIndex = getLastVisibleIndex(focusableElements);\n    // If focused outside, or tabbing past last element, cycle to beginning.\n    if (focusedItemIndex === -1 || (!event?.shiftKey && focusedItemIndex === lastVisibleElementIndex)) {\n      focusableElements[0].focus();\n      return event?.preventDefault();\n    }\n    // If tabbing backwards and focusing first element, cycle to end.\n    if (event?.shiftKey && focusedItemIndex === 0) {\n      focusableElements[lastVisibleElementIndex].focus();\n      return event?.preventDefault();\n    }\n  }, [getFocusableElements, locked]);\n\n  const getTarget = (e) => {\n    let target = e.target;\n    if (target.shadowRoot) {\n      target = e.composedPath()[0];\n    }\n    return target;\n  };\n\n  // Ensure that user can not focus outside of lock. If an attempt is made\n  // and focusable elements exist inside, will focus first element inside.\n  const checkFocus = useCallback((event) => {\n    // Return if not locked or no focus ref.\n    if (!locked || !focusRef.current) {\n      return;\n    }\n    // Blur focus target if no focusable elements.\n    const focusableElements = getFocusableElements();\n    const target = getTarget(event);\n    if (!focusableElements.length) {\n      return target?.blur();\n    }\n    // Focus initial element if focused outside.\n    const focusedItemIndex = findFocusableIndex(focusableElements, target);\n    if (focusedItemIndex === -1) {\n      return focusableElements[0].focus();\n    }\n  }, [getFocusableElements, locked]);\n\n  // Add document listeners for lock focus and check focus\n  useEffect(() => {\n    if (typeof window === 'undefined') {\n      return;\n    }\n    document.addEventListener('keydown', lockFocus);\n    document.addEventListener('focusin', checkFocus);\n    return () => {\n      document.removeEventListener('keydown', lockFocus);\n      document.removeEventListener('focusin', checkFocus);\n    };\n  }, [checkFocus, lockFocus]);\n\n  // Keep the ref to focusLastOnUnlock fresh, prevents useEffect refresh.\n  const focusLastOnUnlockRef = useCurrentRef(focusLastOnUnlock);\n\n  // When locked is changed, will maybe store last element focused prior\n  // to lock being enabled, and will call lockFocus to focus first element\n  // if it exists. Returns when locked is disabled, and will focus prior\n  // element if stored (return focus to previous element).\n  useEffect(() => {\n    if (typeof window === 'undefined') {\n      return;\n    }\n\n    let lastFocusedElement;\n    if (locked) {\n      const activeElement = getDOMActiveElement();\n      if (focusLastOnUnlockRef.current && !focusRef.current?.contains(activeElement)) {\n        lastFocusedElement = activeElement;\n        lockFocus();\n        return () => lastFocusedElement.focus();\n      }\n      lockFocus();\n    }\n  }, [focusLastOnUnlockRef, lockFocus, locked]);\n  return focusRef;\n}\n","import useFocusTrap from './useFocusTrap';\n\nexport default useFocusTrap;","import { cloneElement } from 'react';\nimport useFocusTrap from '../../hooks/useFocusTrap';\n\nconst FocusTrap = ({ locked, focusLastOnUnlock, children }) => {\n  const focusRef = useFocusTrap(locked, { focusLastOnUnlock });\n  return cloneElement(children, { ref: focusRef });\n};\n\nexport default FocusTrap;","import FocusTrap from './FocusTrap';\n\nexport default FocusTrap;","import React, { useState, useEffect } from 'react';\nimport core from 'core';\nimport FilePicker from 'components/FilePicker';\n\nconst FilePickerPanel = ({ onFileProcessed, shouldShowIcon }) => {\n  const [errorMessage, setErrorMessage] = useState('');\n  const [acceptFormats, setAcceptFormats] = useState('');\n\n  useEffect(() => {\n    setAcceptFormats(core.getAllowedFileExtensions());\n  }, []);\n\n  const onChange = (files) => {\n    onFileProcessed(files[0]);\n  };\n\n  const onDrop = async (files) => {\n    let processedFile = files[0];\n\n    if (files.length > 1) {\n      processedFile = await mergeDocuments(files);\n    }\n\n    onFileProcessed(processedFile);\n  };\n\n  // recursive function with promise for merging files\n  // could maybe live in a helper file\n  async function mergeDocuments(sourceArray, nextCount = 1, document = null) {\n    // eslint-disable-next-line no-async-promise-executor\n    return new Promise(async (resolve) => {\n      if (!document) {\n        document = await core.createDocument(sourceArray[0]);\n      }\n      const newDocument = await core.createDocument(sourceArray[nextCount]);\n      const newDocumentPageCount = newDocument.getPageCount();\n      const pages = Array.from({ length: newDocumentPageCount }, (v, k) => k + 1);\n      const pageIndexToInsert = document.getPageCount() + 1;\n\n      document.insertPages(newDocument, pages, pageIndexToInsert).then(() => {\n        resolve({\n          next: sourceArray.length - 1 > nextCount,\n          document,\n        });\n      });\n    }).then((response) => {\n      return response.next ?\n        mergeDocuments(sourceArray, nextCount + 1, response.document) :\n        response.document;\n    }).catch((error) => {\n      setErrorMessage(error);\n    });\n  }\n\n  return (\n    <FilePicker\n      onChange={onChange}\n      onDrop={onDrop}\n      shouldShowIcon={shouldShowIcon}\n      acceptFormats={acceptFormats}\n      allowMultiple={false}\n      errorMessage={errorMessage}\n    />\n  );\n};\n\nexport default FilePickerPanel;\n","import FilePickerPanel from './FilePickerPanel';\n\nexport default FilePickerPanel;","import isUndefined from 'lodash/isUndefined';\n\nexport default (style, richTextStyle) => {\n  let newTextDecoration = '';\n\n  const currentTextDecoration = richTextStyle['text-decoration'];\n\n  const addUnderLine = style['underline'];\n  const removeUnderLine = currentTextDecoration !== 'none' && (!isUndefined(style['underline']) && !style['underline']);\n\n  const addLineThrough = style['line-through'];\n  const removeLineThrough = currentTextDecoration !== 'none' && (!isUndefined(style['line-through']) && !style['line-through']);\n\n  if (addUnderLine) {\n    const hasUnderLine = currentTextDecoration?.indexOf('underline') > -1;\n    newTextDecoration = hasUnderLine ? currentTextDecoration : `${currentTextDecoration || ''} underline`.trim();\n  } else if (removeUnderLine) {\n    newTextDecoration = currentTextDecoration.replace(/underline|word/g, '').trim();\n  }\n\n  if (addLineThrough) {\n    const hasLineThrough = currentTextDecoration?.indexOf('line-through') > -1;\n    newTextDecoration = hasLineThrough ? currentTextDecoration : `${currentTextDecoration || ''} line-through`.trim();\n  } else if (removeLineThrough) {\n    newTextDecoration = currentTextDecoration.replace(/line-through/g, '').trim();\n  }\n\n  return newTextDecoration;\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Header.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = toString(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return call(nativeSplit, string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = call(regexpExec, separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          push(output, stringSlice(string, lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !exec(separatorCopy, '')) push(output, '');\n      } else push(output, stringSlice(string, lastLastIndex));\n      return output.length > lim ? arraySlice(output, 0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n      if (res.done) return res.value;\n\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","import core from 'core';\n\nexport default () => {\n  const toolNames = [];\n  const toolModeMap = core.getToolModeMap();\n\n  Object.keys(toolModeMap).forEach((toolMode) => {\n    const tool = toolModeMap[toolMode];\n    const isAnnotationTool = tool instanceof window.Core.Tools.GenericAnnotationCreateTool || tool instanceof window.Core.Tools.TextAnnotationCreateTool || tool.defaults;\n\n    if (isAnnotationTool) {\n      toolNames.push(tool.name);\n    }\n  });\n\n  return toolNames;\n};\n","import core from 'core';\n\n// helper function to get all the link annotations that are grouped with the passed in annotation\nexport default (annotation) => {\n  const groupedLinks = [];\n  const groupedAnnotations = core.getAnnotationManager().getGroupAnnotations(annotation);\n  groupedAnnotations.forEach((annot) => {\n    const groupedLinksOfAnnot = annot.getGroupedChildren().filter((childrenAnnotation) => childrenAnnotation instanceof window.Core.Annotations.Link);\n    groupedLinks.push(...groupedLinksOfAnnot);\n  });\n\n  return groupedLinks;\n};\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","const updateChildrenDisabledState = (parentLayer) => {\n  const newParentLayer = { ...parentLayer };\n  newParentLayer.children && newParentLayer.children.forEach((childLayer, i) => {\n    let newChildLayer = { ...childLayer };\n    if (!newChildLayer.locked) {\n      newChildLayer.disabled = !newParentLayer.visible;\n      newChildLayer = updateChildrenDisabledState(newChildLayer);\n    }\n    newParentLayer.children[i] = newChildLayer;\n  });\n  return newParentLayer;\n};\n\nconst updateChildrenVisibilityState = (parentLayer) => {\n  const newParentLayer = { ...parentLayer };\n  newParentLayer.children && newParentLayer.children.forEach((childLayer, i) => {\n    let newChildLayer = { ...childLayer };\n    if (newParentLayer.visible) {\n      newChildLayer.visible = !!newChildLayer.prevVisibleState;\n    } else {\n      newChildLayer.visible = false;\n    }\n    newChildLayer = updateChildrenVisibilityState(newChildLayer);\n    newParentLayer.children[i] = newChildLayer;\n  });\n  return newParentLayer;\n};\n\nexport function updateLayerVisibililty(layerToUpdate, newVisibililtyState) {\n  if (layerToUpdate.locked || layerToUpdate.disabled) {\n    return layerToUpdate;\n  }\n  let newLayer = { ...layerToUpdate };\n  newLayer.visible = newVisibililtyState;\n  newLayer.prevVisibleState = newLayer.visible;\n  if (newLayer.children && newLayer.children.length > 0) {\n    newLayer = updateChildrenVisibilityState(newLayer);\n    newLayer = updateChildrenDisabledState(newLayer);\n  }\n  return newLayer;\n}","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport { useID } from '../../hooks/useID';\nexport var Label = function (_a) {\n    var label = _a.label, optionalText = _a.optionalText, children = _a.children, className = _a.className, htmlFor = _a.htmlFor, props = __rest(_a, [\"label\", \"optionalText\", \"children\", \"className\", \"htmlFor\"]);\n    var childrenId = children === null || children === void 0 ? void 0 : children.props.id;\n    var id = useID(childrenId);\n    var labelClass = classnames('ui__base ui__label', { 'ui__label--disabled': children === null || children === void 0 ? void 0 : children.props.disabled, 'ui__label--attached': children }, className);\n    return (React.createElement(React.Fragment, null,\n        React.createElement(\"label\", __assign({}, props, { className: labelClass, htmlFor: htmlFor !== null && htmlFor !== void 0 ? htmlFor : id }),\n            label,\n            optionalText ? React.createElement(\"span\", { className: \"ui__label__optional\" }, optionalText) : undefined),\n        children ? cloneElement(children, { id: id }) : undefined));\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport Tooltip from 'components/Tooltip';\nimport Choice from 'components/Choice';\nimport { useTranslation } from 'react-i18next';\nimport { updateLayerVisibililty } from './updateLayerVisibililty';\nimport { Label } from '@pdftron/webviewer-react-toolkit';\nimport DataElementWrapper from '../DataElementWrapper';\nimport './Layer.scss';\n\nconst propTypes = {\n  layer: PropTypes.object,\n  layerUpdated: PropTypes.func,\n};\nfunction Layer(props) {\n  const { layer, layerUpdated } = props;\n  const [isExpanded, setExpanded] = useState(false);\n  const [t] = useTranslation();\n\n  const onChange = (isVisible) => {\n    const newLayer = updateLayerVisibililty(layer, isVisible);\n    if (layerUpdated) {\n      layerUpdated(newLayer);\n    }\n  };\n\n  const toggleExpanded = () => {\n    setExpanded(!isExpanded);\n  };\n\n  if (!layer) {\n    return null;\n  }\n  const hasSubLayers = layer && layer.children && layer.children.length > 0;\n\n  let tooltipContent = '';\n  if (layer.locked) {\n    tooltipContent = t('message.lockedLayer');\n  } else if (layer.disabled) {\n    tooltipContent = t('message.layerVisibililtyNoChange');\n  }\n\n  return (\n    <DataElementWrapper className=\"Layer\" dataElement={`layer-${layer.id}-${layer.name}`}>\n      <div className=\"parent-layer\">\n        {hasSubLayers ? (\n          <div className=\"arrow\" onClick={toggleExpanded}>\n            { isExpanded ? <Icon glyph=\"ic_chevron_down_black_24px\" /> : <Icon glyph=\"ic_chevron_right_black_24px\" />}\n          </div>\n        ) : (\n          // create dummy icon to make aligning easier\n          <div> <Icon glyph=\"\" /> </div>\n        )}\n        <Tooltip content={tooltipContent} hideOnClick={false} forcePosition=\"bottomLeft\">\n          {/* this div is mainly to group the choice and lock icon so that tooltip will appear properly  over checkbox */}\n          {\n            !layer.isLabel ? (\n              <div className=\"content-container\">\n                <Choice\n                  id={`${layer.id}`}\n                  label={layer.name}\n                  aria-label={layer.name}\n                  onChange={() => onChange(!layer.visible)}\n                  checked={layer.visible}\n                  disabled={layer.locked || layer.disabled}\n                  center\n                />\n                { layer.locked && <Icon className=\"lock-icon\" glyph=\"icon-lock\" />}\n              </div>\n            ) : (\n              <div className=\"content-container\">\n                <Label label={layer.name}></Label>\n              </div>\n            )\n          }\n        </Tooltip>\n      </div>\n      {hasSubLayers && isExpanded && (\n        <div className=\"sub-layers\">\n          {layer.children.map((subLayer, i) => (\n            <Layer\n              key={subLayer.id}\n              layer={subLayer}\n              parentLayer={layer}\n              layerUpdated={(modifiedSubLayer) => {\n                // new references for redux state\n                const children = [...layer.children];\n                children[i] = modifiedSubLayer;\n                const newLayer = { ...layer };\n                newLayer.children = children;\n                layerUpdated(newLayer);\n              }}\n            />\n          ))}\n        </div>\n      )}\n    </DataElementWrapper>\n  );\n}\nLayer.propTypes = propTypes;\nexport default Layer;\n","import Layer from './Layer';\n\nexport default Layer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Layer from 'components/Layer';\n\nimport './LayersPanel.scss';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Icon from 'components/Icon';\nimport { useTranslation } from 'react-i18next';\nimport { panelData, panelNames } from 'constants/panel';\n\nconst propTypes = {\n  layers: PropTypes.arrayOf(PropTypes.object),\n  setLayers: PropTypes.func,\n};\n\nfunction LayersPanel(props) {\n  const { layers = [], setLayers } = props;\n  const { t } = useTranslation();\n\n  function onLayerUpdated(updatedLayer, index) {\n    // new references for redux state\n    const newLayers = [...layers];\n    newLayers[index] = updatedLayer;\n    if (setLayers) {\n      setLayers(newLayers);\n    }\n  }\n\n  const emptyPanelState = (\n    <div className=\"empty-panel-container\">\n      <Icon className=\"empty-icon\" glyph={panelData[panelNames.LAYERS].icon}/>\n      <div className=\"empty-message\">\n        {t('message.noLayers')}\n      </div>\n    </div>\n  );\n\n  return (\n    <DataElementWrapper className=\"Panel LayersPanel\" dataElement=\"layersPanel\">\n      {!layers?.length ? emptyPanelState : layers.map((layer, i) => (\n        <Layer\n          key={layer.id}\n          layer={layer}\n          layerUpdated={(updatedLayer) => onLayerUpdated(updatedLayer, i)}\n        />\n      ))}\n    </DataElementWrapper>\n  );\n}\n\nLayersPanel.propTypes = propTypes;\n\nexport default LayersPanel;\n","import core from 'core';\n\nexport async function toggleAnnotationsVisibility(layers) {\n  const layerMap = getLayerMapping(layers);\n  const pdfNetAnnotations = await getPDFNetAnnotations(await core.getDocument().getPDFDoc());\n  pdfNetAnnotations.forEach((pdfNetAnnotation) => {\n    toggleAnnotationVisibility(pdfNetAnnotation, layerMap);\n  });\n}\n\n/**\n * @ignore\n * Toggles the WebViewer annotation visibility based on its attached Optional Content (OC entry).\n * The OC entry is structured either as an OCG or OCMD.\n * @param {Core.PDFNet.Annot} pdfNetAnnotation The PDFNet annotation.\n * @param {object} layerMap An object mapping layer IDs to visibility properties and potential child nodes.\n */\nasync function toggleAnnotationVisibility(pdfNetAnnotation, layerMap) {\n  const optionalContent = await pdfNetAnnotation.getOptionalContent();\n  if (!optionalContent) {\n    return;\n  }\n\n  const isOCGAnnotation = !!layerMap[optionalContent.id];\n  if (isOCGAnnotation) {\n    await handleOCGAnnotations(pdfNetAnnotation, layerMap, optionalContent);\n    return;\n  }\n\n  await handleOCMDAnnotations(pdfNetAnnotation, layerMap, optionalContent);\n}\n\n/**\n * @ignore\n * Finds the matching WebViewer annotation and then updates its visibility based on the provided OCG visibility state.\n * @param {Core.PDFNet.Annot} pdfNetAnnotation The PDFNet annotation containing the OC entry.\n * @param {object} layerMap An object mapping layer IDs to visibility properties and potential child nodes.\n * @param {Core.PDFNet.Obj} optionalContent Reference to optional content object associated with an annotation. In this context it is an OCG.\n */\nasync function handleOCGAnnotations(pdfNetAnnotation, layerMap, optionalContent) {\n  const annotationManager = core.getAnnotationManager();\n  const annotation = await findMatchingWebViewerAnnotation(pdfNetAnnotation, annotationManager);\n  if (annotation) {\n    annotation.Hidden = !layerMap[optionalContent.id].visible;\n    return;\n  }\n\n  await handleAnnotationVisibilityEdgeCase(pdfNetAnnotation, layerMap[optionalContent.id]);\n}\n\n/**\n * @ignore\n * Finds the matching WebViewer annotation and then updates its visibility based on the provided OCMD visibility state.\n * @param {Core.PDFNet.Annot} pdfNetAnnotation The PDFNet annotation containing the OC entry.\n * @param {object} layerMap An object mapping layer IDs to visibility properties and potential child nodes.\n * @param {Core.PDFNet.Obj} optionalContent Reference to optional content object associated with an annotation. In this context it is an OCMD.\n */\nasync function handleOCMDAnnotations(pdfNetAnnotation, layerMap, optionalContent) {\n  const ocmdLayerId = await getOCMDLayerId(optionalContent);\n  const annotationManager = core.getAnnotationManager();\n  const annotation = await findMatchingWebViewerAnnotation(pdfNetAnnotation, annotationManager);\n  if (annotation) {\n    annotation.Hidden = !layerMap[ocmdLayerId].visible;\n    return;\n  }\n\n  await handleAnnotationVisibilityEdgeCase(pdfNetAnnotation, layerMap[ocmdLayerId]);\n}\n\n/**\n * @ignore\n * There is an edge case where PDFNet annotations do not have a matching WebViewer annotation ID.\n * This function handles the edge case by iterating through WebViewer annotations and comparing its type and position to the PDFNet annotation.\n * @param {Core.PDFNet.Annot} pdfNetAnnotation The PDFNet annotation containing the OC entry.\n * @param {Core.Document.LayerContext} layer Object representing the layer attached to the PDFNet annotation.\n */\nasync function handleAnnotationVisibilityEdgeCase(pdfNetAnnotation, layer) {\n  const annotationManager = core.getAnnotationManager();\n  const { pageNum, annotationViewerCoordinates, annotationType } = await getAnnotationDetails(pdfNetAnnotation);\n  const annotationsOnPage = await getAnnotationsOnPage(annotationManager, pageNum);\n  annotationsOnPage.forEach((annotation) => {\n    if (compareWebviewerPDFNetAnnotation(annotation, annotationType, annotationViewerCoordinates)) {\n      annotation.Hidden = !layer.visible;\n    }\n  });\n}\n\n/**\n * @ignore\n * Finds the corresponding WebViewer annotation from a given PDFNet annotation.\n * @param {Core.PDFNet.Annot} pdfNetAnnotation The PDFNet annotation.\n * @param {Core.AnnotationManager} annotationManager An instance of annotationManager.\n * @returns {Core.Annotations.Annotation} Returns the WebViewer annotation matching the provided PDFNet annotation. Null otherwise.\n */\nasync function findMatchingWebViewerAnnotation(pdfNetAnnotation, annotationManager) {\n  const annotSDF = await pdfNetAnnotation.getSDFObj();\n  const isNMKeyValid = await annotSDF.findObj('NM');\n  if (isNMKeyValid) {\n    const NMInfoDict = await annotSDF.get('NM');\n    const NMInfoObject = await NMInfoDict.value();\n    const idString = await NMInfoObject.getAsPDFText();\n    return annotationManager.getAnnotationById(idString);\n  }\n\n  return null;\n}\n\n/**\n * @ignore\n * Determines if there is a WebViewer annotation that matches a PDFNet annotation.\n * This method compares annotation types along with position (in viewer coordinates). If both are equal\n * we can assume the annotations match.\n * @param {Core.Annotations.Annotation} annotation The WebViewer annotation.\n * @param {string} pdfNetAnnotationType The PDFNet annotation type (rectangle, ellipse, etc).\n * @param {object} pdfNetAnnotationViewerCoords The position of PDFNet annotation in viewer coordinate space.\n * @returns {boolean} Returns true if a match was found. False otherwise.\n */\nfunction compareWebviewerPDFNetAnnotation(annotation, pdfNetAnnotationType, pdfNetAnnotationViewerCoords) {\n  const rectFromPDFNetAnnotation = createRectFromPDFNetAnnotation(pdfNetAnnotationViewerCoords);\n  const positionMatched = annotation.getRect().equalTo(rectFromPDFNetAnnotation);\n  const typeMatched = pdfNetAnnotationType.toLowerCase() === annotation.elementName;\n\n  return positionMatched && typeMatched;\n}\n\n/**\n * @ignore\n * Gets the layer id associated with the provided OCMD (Optional Content Membership Dictionary).\n * NOTE: This implementation assumes only one layer is associated with the OCMD. The PDF spec allows multiple layers (OCGs) to be attached.\n * @param {Core.PDFNet.Obj} optionalContent Reference to optional content object associated with an annotation. In this context it is an OCMD.\n * @returns {string} Returns the layer id associated with the given OCMD.\n */\nasync function getOCMDLayerId(optionalContent) {\n  const optionalContentDictIterator = await optionalContent.getDictIterator();\n  const optionalContentGroup = await optionalContentDictIterator.value();\n  return optionalContentGroup.id;\n}\n\n/**\n * @ignore\n * Returns all PDFNet annotations from a PDFNet document.\n * @param {Core.PDFNet.PDFDoc} pdfDoc The active PDFNet document.\n * @returns {Core.PDFNet.Annot[]}\n */\nasync function getPDFNetAnnotations(pdfDoc) {\n  const pdfNetAnnotations = [];\n  const itr = await pdfDoc.getPageIterator();\n  for (itr; (await itr.hasNext()); (await itr.next())) {\n    const page = await itr.current();\n    const numAnnots = await page.getNumAnnots();\n    for (let i = 0; i < numAnnots; ++i) {\n      const annot = await page.getAnnot(i);\n      if (!(await annot.isValid())) {\n        continue;\n      }\n      pdfNetAnnotations.push(annot);\n    }\n  }\n\n  return pdfNetAnnotations;\n}\n\n/**\n * @ignore\n * Gets PDFNet annotation type, page number, and converted rect in viewer coordinate space.\n * @param {number} pageNum The page number where the PDFNet annotation exists.\n * @param {Core.Math.Rect} pdfNetRect The bounding box of a PDFNet annotation.\n * @returns {object} Returns an object containing PDFNet annotation type, page number,\n * and Math.Rect of annotation position in viewer coordinate space.\n */\nasync function getAnnotationDetails(pdfNetAnnotation) {\n  const annotSDF = await pdfNetAnnotation.getSDFObj();\n  const subType = await annotSDF.get('Subtype');\n  const subTypeObject = await subType.value();\n  const annotationType = await subTypeObject.getName();\n\n  const page = await pdfNetAnnotation.getPage();\n  const pageNum = await page.getIndex();\n\n  const annotationViewerCoordinates = await getViewerCoordinates(pageNum, await pdfNetAnnotation.getRect());\n\n  return { annotationType, annotationViewerCoordinates, pageNum };\n}\n\n/**\n * @ignore\n * Gets the top-left and bottom-right position of a PDFNet annotation in viewer coordinates.\n * We need to convert the PDFNet rect to viewer coordinates so we can compare against WebViewer annotation rect.\n * @param {number} pageNum The page number where the PDFNet annotation exists.\n * @param {Core.Math.Rect} pdfNetRect The bounding box of a PDFNet annotation.\n */\nasync function getViewerCoordinates(pageNum, pdfNetRect) {\n  const x1y1 = await core.getDocument().getViewerCoordinates(pageNum, pdfNetRect.x1, pdfNetRect.y1);\n  const x2y2 = await core.getDocument().getViewerCoordinates(pageNum, pdfNetRect.x2, pdfNetRect.y2);\n  return { x1y1, x2y2 };\n}\n\n/**\n * @ignore\n * Helper function that creates a Core.Math.Rect from the viewer coordinates of the PDFNet annotation.\n * @param {object} viewerCoords A reference to the exposed Core APIs available on WebViewer UI.\n * @returns {Core.Math.Rect} Returns the rect of a PDFNet annotation position, in viewer coordinates.\n */\nfunction createRectFromPDFNetAnnotation(viewerCoords) {\n  return new window.Core.Math.Rect(\n    Math.min(viewerCoords.x1y1.x, viewerCoords.x2y2.x),\n    Math.min(viewerCoords.x1y1.y, viewerCoords.x2y2.y),\n    Math.max(viewerCoords.x1y1.x, viewerCoords.x2y2.x),\n    Math.max(viewerCoords.x1y1.y, viewerCoords.x2y2.y)\n  );\n}\n\nfunction getLayerMapping(layers) {\n  const layersMap = {};\n\n  layers.forEach((layer) => {\n    layersMap[layer.obj] = layer;\n  });\n\n  return layersMap;\n}\n\nfunction getAnnotationsOnPage(annotationManager, pageNum) {\n  return annotationManager.getAnnotationsList().filter((annot) => annot.PageNumber === pageNum);\n}","import React, { useEffect } from 'react';\nimport LayersPanel from './LayersPanel';\n\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport { toggleAnnotationsVisibility } from './helper';\n\nfunction LayersPanelRedux(props) {\n  const dispatch = useDispatch();\n\n  const [\n    layers,\n  ] = useSelector((state) => [\n    selectors.getLayers(state),\n  ]);\n\n  function setLayers(updatedLayers) {\n    dispatch(actions.setLayers(updatedLayers));\n  }\n\n  useEffect(() => {\n    const documentViewer = core.getDocumentViewer();\n    const doc = core.getDocument();\n    if (doc) {\n      doc.setLayersArray(layers);\n      if (core.isFullPDFEnabled()) {\n        toggleAnnotationsVisibility(layers).then(() => {\n          documentViewer.refreshAll();\n          documentViewer.updateView();\n        });\n      } else {\n        documentViewer.refreshAll();\n        documentViewer.updateView();\n      }\n    }\n  }, [layers]);\n\n  const reduxProps = {\n    layers,\n    setLayers\n  };\n\n  return <LayersPanel {...props}{...reduxProps} />;\n}\n\nexport default LayersPanelRedux;","import LayersPanelRedux from './LayersPanelRedux';\n\nexport default LayersPanelRedux;\n","import useOnFreeTextEdit from './useOnFreeTextEdit';\n\nexport default useOnFreeTextEdit;","import { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnFreeTextEdit(saveEditorInstance) {\n  const dispatch = useDispatch();\n\n  const [annotation, setAnnotation] = useState(null);\n  const [editor, setEditor] = useState(null);\n\n  useEffect(() => {\n    const handleEditorFocus = (editor, annotation) => {\n      // Use setTimeout to make sure Free Text annotations have time to resize before opening popup\n      setTimeout(() => {\n        if (\n          annotation instanceof window.Core.Annotations.FreeTextAnnotation &&\n          !annotation.getContentEditAnnotationId() &&\n          annotation.ToolName !== window.Core.Tools.ToolNames.ADD_PARAGRAPH\n        ) {\n          setAnnotation(annotation);\n          setEditor(editor);\n          if (saveEditorInstance) {\n            saveEditorInstance([editor, annotation]);\n          }\n          dispatch(actions.openElements(DataElements.RICH_TEXT_POPUP));\n        }\n      }, 0);\n    };\n\n    core.addEventListener('editorFocus', handleEditorFocus);\n    return () => {\n      core.removeEventListener('editorFocus', handleEditorFocus);\n    };\n  }, [dispatch]);\n\n  return { editor, annotation };\n}","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './LabelTextEditor.scss';\n\nconst LabelTextEditor = ({ onPropertyChange, properties, placeholderText }) => {\n  const overlayText = properties.OverlayText || '';\n  const [curOverlayText, setCurOverlayText] = useState(overlayText);\n  const setOverlayText = (e) => {\n    setCurOverlayText(e.target.value);\n    onPropertyChange('OverlayText', e.target.value);\n  };\n\n  const onKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      e.target?.blur();\n    }\n  };\n\n  useEffect(() => {\n    setCurOverlayText(overlayText);\n  }, [overlayText]);\n\n  const [t] = useTranslation();\n\n  return (\n    <>\n      <input\n        className=\"overlay-text-input\"\n        value={curOverlayText}\n        onChange={setOverlayText}\n        onKeyDown={onKeyDown}\n        placeholder={placeholderText || t('option.stylePopup.labelTextPlaceholder')}\n      />\n    </>\n  );\n};\n\nexport default LabelTextEditor;\n","import LabelTextEditor from './LabelTextEditor';\n\nexport default LabelTextEditor;","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (String(name).slice(0, 7) === 'Symbol(') {\n    name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    defineProperty(value, 'name', { value: name, configurable: true });\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  if (options && hasOwn(options, 'constructor') && options.constructor) {\n    if (DESCRIPTORS) try {\n      defineProperty(value, 'prototype', { writable: false });\n    } catch (error) { /* empty */ }\n  } else value.prototype = undefined;\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\n/* eslint-disable es-x/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n} : [].forEach;\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    defineBuiltIn(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: false };\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n","var call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","var baseGet = require('./_baseGet'),\n    baseSet = require('./_baseSet'),\n    castPath = require('./_castPath');\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = basePickBy;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es-x/no-symbol -- safe\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar Function = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar userAgent = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n  return MSIE ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n    return scheduler(boundArgs ? function () {\n      apply(fn, this, args);\n    } : fn, timeout);\n  } : scheduler;\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\nmodule.exports = {\n  // `setTimeout` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n  setTimeout: wrap(global.setTimeout),\n  // `setInterval` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n  setInterval: wrap(global.setInterval)\n};\n","import core from 'core';\nimport getRootNode from 'helpers/getRootNode';\n\nexport default (activeDocumentViewerKey = 1) => {\n  // The copyText function should works for 2 cases:\n  // 1. User copies from the side panel (window.getSelection())\n  // 2. User copies text from the document (core.getSelectedText())\n  // We manually to clear the value of #copy-textarea, and this will reset window.getSelection().toString() to \"\"\n  getRootNode().querySelector('#copy-textarea').value = '';\n  if (window.getSelection()?.toString()) {\n    // if we are selecting some text in the UI (i.e. text in note panel) just let it do the normal behaviour\n    return;\n  }\n\n  if (window.clipboardData) {\n    // this is for IE\n    window.clipboardData.setData('Text', core.getSelectedText(activeDocumentViewerKey));\n  } else if (navigator?.clipboard?.writeText) {\n    navigator.clipboard.writeText(core.getSelectedText(activeDocumentViewerKey));\n  } else {\n    const textarea = getRootNode().querySelector('#copy-textarea');\n    textarea.value = core.getSelectedText(activeDocumentViewerKey);\n    textarea.select();\n    textarea.setSelectionRange(0, 99999); // this is necessary for iOS\n    textarea.focus();\n    try {\n      document.execCommand('copy');\n      textarea.blur();\n    } catch (e) {\n      console.error(`Copy is not supported by browser. ${e}`);\n    }\n  }\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar n$ParseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / n$ParseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { n$ParseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = n$ParseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : n$ParseFloat;\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ColorPalette.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import React, { useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport Icon from 'components/Icon';\r\nimport { useTranslation } from 'react-i18next';\r\nimport useFocusHandler from 'hooks/useFocusHandler';\r\n\r\nimport './ColorPalettePicker.scss';\r\nimport '../ColorPalette/ColorPalette.scss';\r\n\r\nconst ColorPalettePicker = ({\r\n  color,\r\n  customColors = [],\r\n  getHexColor,\r\n  openColorPicker,\r\n  handleColorOnClick,\r\n  openDeleteModal,\r\n  colorToBeDeleted,\r\n  setColorToBeDeleted,\r\n  enableEdit,\r\n  disableTitle = false,\r\n  colorsAreHex = false,\r\n}) => {\r\n  const [t] = useTranslation();\r\n\r\n  useEffect(() => {\r\n    const isNotInCustomColors = !customColors.includes(colorsAreHex ? color : getHexColor(color));\r\n    if (isNotInCustomColors) {\r\n      setColorToBeDeleted('');\r\n    } else {\r\n      setColorToBeDeleted(colorsAreHex ? color : getHexColor(color));\r\n    }\r\n  }, [color]);\r\n\r\n  const handleAddColor = useFocusHandler(() => {\r\n    if (openColorPicker) {\r\n      openColorPicker(true);\r\n    }\r\n  });\r\n\r\n  return (\r\n    <div className=\"color-picker-container\">\r\n      <div className=\"colorPicker\">\r\n        {!disableTitle && <div className=\"colorPickerController\">\r\n          <span>{t('annotation.custom')}</span>\r\n        </div>}\r\n        <div className=\"colorPickerColors ColorPalette\">\r\n          {customColors.map((bg) => (\r\n            <button\r\n              key={bg}\r\n              title={t('option.colorPalettePicker.selectColor')}\r\n              className=\"cell-container\"\r\n              onClick={() => handleColorOnClick(bg)}\r\n              aria-label={`${t('option.colorPalette.colorLabel')} ${bg?.toUpperCase?.()}`}\r\n            >\r\n              <div\r\n                className={classNames({\r\n                  'cell-outer': true,\r\n                  active: colorsAreHex ? color?.toLowerCase() === bg.toLowerCase() :\r\n                    color?.toHexString?.()?.toLowerCase() === bg.toLowerCase(),\r\n                })}\r\n              >\r\n                <div\r\n                  className={classNames({\r\n                    cell: true,\r\n                    border: true,\r\n                  })}\r\n                  style={{ backgroundColor: bg }}\r\n                >\r\n                  {bg === 'transparency' && undefined}\r\n                </div>\r\n              </div>\r\n            </button>\r\n          ),\r\n          )}\r\n          {enableEdit && (\r\n            <button\r\n              className=\"cell-container cell-tool\"\r\n              title={t('option.colorPalettePicker.addColor')}\r\n              onClick={handleAddColor}\r\n            >\r\n              <div className=\"cell-outer\">\r\n                <div className=\"cellIcon\" id=\"addCustomColor\">\r\n                  <Icon glyph=\"icon-header-zoom-in-line\" />\r\n                </div>\r\n              </div>\r\n            </button>\r\n          )}\r\n          {enableEdit && customColors.length > 0 && (\r\n            <button\r\n              className=\"cell-container cell-tool\"\r\n              id=\"removeCustomColor\"\r\n              disabled={!colorToBeDeleted}\r\n              onClick={openDeleteModal}\r\n              title={t('warning.colorPalettePicker.deleteTitle')}\r\n            >\r\n              <div className=\"cell-outer\">\r\n                <div className=\"cellIcon\">\r\n                  <Icon glyph=\"icon-delete-line\" />\r\n                </div>\r\n              </div>\r\n            </button>\r\n          )}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default ColorPalettePicker;\r\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SignatureStylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./StatefulButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\n\nvar _shims = require(\"./shims\");\n\nvar _domFns = require(\"./domFns\");\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n  // If no bounds, short-circuit and move on\n  if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n  var bounds = draggable.props.bounds;\n  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n  var node = findDOMNode(draggable);\n\n  if (typeof bounds === 'string') {\n    var ownerDocument = node.ownerDocument;\n    var ownerWindow = ownerDocument.defaultView;\n    var boundNode;\n\n    if (bounds === 'parent') {\n      boundNode = node.parentNode;\n    } else {\n      boundNode = ownerDocument.querySelector(bounds);\n    }\n\n    if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n      throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n    }\n\n    var boundNodeEl\n    /*: HTMLElement*/\n    = boundNode; // for Flow, can't seem to refine correctly\n\n    var nodeStyle = ownerWindow.getComputedStyle(node);\n    var boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n    bounds = {\n      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n    };\n  } // Keep x and y below right and bottom limits...\n\n\n  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n  return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n  var x = Math.round(pendingX / grid[0]) * grid[0];\n  var y = Math.round(pendingY / grid[1]) * grid[1];\n  return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n  var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n  var node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n  var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by <DraggableCore>'s events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n  var state = draggable.state;\n  var isStart = !(0, _shims.isNum)(state.lastX);\n  var node = findDOMNode(draggable);\n\n  if (isStart) {\n    // If this is our first move, use the x and y as last coords.\n    return {\n      node: node,\n      deltaX: 0,\n      deltaY: 0,\n      lastX: x,\n      lastY: y,\n      x: x,\n      y: y\n    };\n  } else {\n    // Otherwise calculate proper values.\n    return {\n      node: node,\n      deltaX: x - state.lastX,\n      deltaY: y - state.lastY,\n      lastX: state.lastX,\n      lastY: state.lastY,\n      x: x,\n      y: y\n    };\n  }\n} // Create an data exposed by <Draggable>'s events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n  var scale = draggable.props.scale;\n  return {\n    node: coreData.node,\n    x: draggable.state.x + coreData.deltaX / scale,\n    y: draggable.state.y + coreData.deltaY / scale,\n    deltaX: coreData.deltaX / scale,\n    deltaY: coreData.deltaY / scale,\n    lastX: draggable.state.x,\n    lastY: draggable.state.y\n  };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n  return {\n    left: bounds.left,\n    top: bounds.top,\n    right: bounds.right,\n    bottom: bounds.bottom\n  };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n  var node = draggable.findDOMNode();\n\n  if (!node) {\n    throw new Error('<DraggableCore>: Unmounted during event!');\n  } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n  return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log() {\n  var _console;\n\n  if (undefined) (_console = console).log.apply(_console, arguments);\n}","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Panel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n  if (!DESCRIPTORS) return global[name];\n  var descriptor = getOwnPropertyDescriptor(global, name);\n  return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = replace(it, plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = replace(result, percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replacements[match];\n};\n\nvar serialize = function (it) {\n  return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n  this.entries = [];\n  this.url = null;\n\n  if (init !== undefined) {\n    if (isObject(init)) this.parseObject(init);\n    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n  }\n};\n\nURLSearchParamsState.prototype = {\n  type: URL_SEARCH_PARAMS,\n  bindURL: function (url) {\n    this.url = url;\n    this.update();\n  },\n  parseObject: function (object) {\n    var iteratorMethod = getIteratorMethod(object);\n    var iterator, next, step, entryIterator, entryNext, first, second;\n\n    if (iteratorMethod) {\n      iterator = getIterator(object, iteratorMethod);\n      next = iterator.next;\n      while (!(step = call(next, iterator)).done) {\n        entryIterator = getIterator(anObject(step.value));\n        entryNext = entryIterator.next;\n        if (\n          (first = call(entryNext, entryIterator)).done ||\n          (second = call(entryNext, entryIterator)).done ||\n          !call(entryNext, entryIterator).done\n        ) throw TypeError('Expected sequence with length 2');\n        push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(this.entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\n      var attributes = split(query, '&');\n      var index = 0;\n      var attribute, entry;\n      while (index < attributes.length) {\n        attribute = attributes[index++];\n        if (attribute.length) {\n          entry = split(attribute, '=');\n          push(this.entries, {\n            key: deserialize(shift(entry)),\n            value: deserialize(join(entry, '='))\n          });\n        }\n      }\n    }\n  },\n  serialize: function () {\n    var entries = this.entries;\n    var result = [];\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      push(result, serialize(entry.key) + '=' + serialize(entry.value));\n    } return join(result, '&');\n  },\n  update: function () {\n    this.entries.length = 0;\n    this.parseQuery(this.url.query);\n  },\n  updateURL: function () {\n    if (this.url) this.url.update();\n  }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsPrototype);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) splice(entries, index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) push(result, entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var found = false;\n    var key = $toString(name);\n    var val = $toString(value);\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) splice(entries, index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) push(entries, { key: key, value: val });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    arraySort(state.entries, function (a, b) {\n      return a.key > b.key ? 1 : -1;\n    });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n  var headersHas = uncurryThis(HeadersPrototype.has);\n  var headersSet = uncurryThis(HeadersPrototype.set);\n\n  var wrapRequestOptions = function (init) {\n    if (isObject(init)) {\n      var body = init.body;\n      var headers;\n      if (classof(body) === URL_SEARCH_PARAMS) {\n        headers = init.headers ? new Headers(init.headers) : new Headers();\n        if (!headersHas(headers, 'content-type')) {\n          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n        return create(init, {\n          body: createPropertyDescriptor(0, $toString(body)),\n          headers: createPropertyDescriptor(0, headers)\n        });\n      }\n    } return init;\n  };\n\n  if (isCallable(nativeFetch)) {\n    $({ global: true, enumerable: true, noTargetGet: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(NativeRequest)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, constructor: true, noTargetGet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SnippingToolPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FormFieldIndicator.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// eslint-disable-next-line es-x/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar RangeError = global.RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n","var global = require('../internals/global');\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw RangeError('Wrong offset');\n  return offset;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var readableHwm = options.readableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    pna.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', src._readableState.awaitDrain);\n        src._readableState.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, unpipeInfo);\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        pna.nextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    pna.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._readableState.highWaterMark;\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    pna.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n      pna.nextTick(emitErrorNT, this, err);\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      pna.nextTick(emitErrorNT, _this, err);\n      if (_this._writableState) {\n        _this._writableState.errorEmitted = true;\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n\n  return this;\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return this.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n\n  cb(er);\n\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function') {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this2 = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this2.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Flyout.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./FloatingHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../../node_modules/sass-loader/dist/cjs.js!./ZoomText.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","export default (linkAnnotation) => {\n  if (!linkAnnotation) {\n    return;\n  }\n  if (linkAnnotation.actions.U?.[0] instanceof window.Core.Actions.URI) {\n    return linkAnnotation.actions.U?.[0]?.uri;\n  }\n  if (linkAnnotation.actions.U?.[0] instanceof window.Core.Actions.GoTo) {\n    // TODO Need translation for this in the actual component that uses this helper\n    return `Page ${linkAnnotation.actions.U?.[0]?.dest.page}`;\n  }\n};","/**\n * Contains string enums for all layouts for WebViewer. They are used to dictate how pages are placed within the viewer.\n * @name UI.LayoutMode\n * @property {string} Single Only the current page will be visible.\n * @property {string} Continuous All pages are visible in one column.\n * @property {string} Facing Up to two pages will be visible.\n * @property {string} FacingContinuous All pages visible in two columns.\n * @property {string} FacingCover All pages visible in two columns, with an even numbered page rendered first. (i.e. The first page of the document is rendered by itself on the right side of the viewer to simulate a book cover.)\n * @property {string} FacingCoverContinuous All pages visible, with an even numbered page rendered first. (i.e. The first page of the document is rendered by itself on the right side of the viewer to simulate a book cover.)\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const LayoutMode = instance.UI.LayoutMode;\n    instance.UI.setLayoutMode(LayoutMode.Single);\n  });\n */\n\nexport default {\n  Single: 'Single',\n  Continuous: 'Continuous',\n  Facing: 'Facing',\n  FacingContinuous: 'FacingContinuous',\n  FacingCover: 'CoverFacing',\n  FacingCoverContinuous: 'Cover',\n};","'use strict'\n\nconst DEFAULT_RAW = {\n  after: '\\n',\n  beforeClose: '\\n',\n  beforeComment: '\\n',\n  beforeDecl: '\\n',\n  beforeOpen: ' ',\n  beforeRule: '\\n',\n  colon: ': ',\n  commentLeft: ' ',\n  commentRight: ' ',\n  emptyBody: '',\n  indent: '    ',\n  semicolon: false\n}\n\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n  constructor(builder) {\n    this.builder = builder\n  }\n\n  atrule(node, semicolon) {\n    let name = '@' + node.name\n    let params = node.params ? this.rawValue(node, 'params') : ''\n\n    if (typeof node.raws.afterName !== 'undefined') {\n      name += node.raws.afterName\n    } else if (params) {\n      name += ' '\n    }\n\n    if (node.nodes) {\n      this.block(node, name + params)\n    } else {\n      let end = (node.raws.between || '') + (semicolon ? ';' : '')\n      this.builder(name + params + end, node)\n    }\n  }\n\n  beforeAfter(node, detect) {\n    let value\n    if (node.type === 'decl') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (node.type === 'comment') {\n      value = this.raw(node, null, 'beforeComment')\n    } else if (detect === 'before') {\n      value = this.raw(node, null, 'beforeRule')\n    } else {\n      value = this.raw(node, null, 'beforeClose')\n    }\n\n    let buf = node.parent\n    let depth = 0\n    while (buf && buf.type !== 'root') {\n      depth += 1\n      buf = buf.parent\n    }\n\n    if (value.includes('\\n')) {\n      let indent = this.raw(node, null, 'indent')\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent\n      }\n    }\n\n    return value\n  }\n\n  block(node, start) {\n    let between = this.raw(node, 'between', 'beforeOpen')\n    this.builder(start + between + '{', node, 'start')\n\n    let after\n    if (node.nodes && node.nodes.length) {\n      this.body(node)\n      after = this.raw(node, 'after')\n    } else {\n      after = this.raw(node, 'after', 'emptyBody')\n    }\n\n    if (after) this.builder(after)\n    this.builder('}', node, 'end')\n  }\n\n  body(node) {\n    let last = node.nodes.length - 1\n    while (last > 0) {\n      if (node.nodes[last].type !== 'comment') break\n      last -= 1\n    }\n\n    let semicolon = this.raw(node, 'semicolon')\n    for (let i = 0; i < node.nodes.length; i++) {\n      let child = node.nodes[i]\n      let before = this.raw(child, 'before')\n      if (before) this.builder(before)\n      this.stringify(child, last !== i || semicolon)\n    }\n  }\n\n  comment(node) {\n    let left = this.raw(node, 'left', 'commentLeft')\n    let right = this.raw(node, 'right', 'commentRight')\n    this.builder('/*' + left + node.text + right + '*/', node)\n  }\n\n  decl(node, semicolon) {\n    let between = this.raw(node, 'between', 'colon')\n    let string = node.prop + between + this.rawValue(node, 'value')\n\n    if (node.important) {\n      string += node.raws.important || ' !important'\n    }\n\n    if (semicolon) string += ';'\n    this.builder(string, node)\n  }\n\n  document(node) {\n    this.body(node)\n  }\n\n  raw(node, own, detect) {\n    let value\n    if (!detect) detect = own\n\n    // Already had\n    if (own) {\n      value = node.raws[own]\n      if (typeof value !== 'undefined') return value\n    }\n\n    let parent = node.parent\n\n    if (detect === 'before') {\n      // Hack for first rule in CSS\n      if (!parent || (parent.type === 'root' && parent.first === node)) {\n        return ''\n      }\n\n      // `root` nodes in `document` should use only their own raws\n      if (parent && parent.type === 'document') {\n        return ''\n      }\n    }\n\n    // Floating child without parent\n    if (!parent) return DEFAULT_RAW[detect]\n\n    // Detect style by other nodes\n    let root = node.root()\n    if (!root.rawCache) root.rawCache = {}\n    if (typeof root.rawCache[detect] !== 'undefined') {\n      return root.rawCache[detect]\n    }\n\n    if (detect === 'before' || detect === 'after') {\n      return this.beforeAfter(node, detect)\n    } else {\n      let method = 'raw' + capitalize(detect)\n      if (this[method]) {\n        value = this[method](root, node)\n      } else {\n        root.walk(i => {\n          value = i.raws[own]\n          if (typeof value !== 'undefined') return false\n        })\n      }\n    }\n\n    if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n    root.rawCache[detect] = value\n    return value\n  }\n\n  rawBeforeClose(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length > 0) {\n        if (typeof i.raws.after !== 'undefined') {\n          value = i.raws.after\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawBeforeComment(root, node) {\n    let value\n    root.walkComments(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeDecl(root, node) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeRule')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeOpen(root) {\n    let value\n    root.walk(i => {\n      if (i.type !== 'decl') {\n        value = i.raws.between\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawBeforeRule(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && (i.parent !== root || root.first !== i)) {\n        if (typeof i.raws.before !== 'undefined') {\n          value = i.raws.before\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawColon(root) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.between !== 'undefined') {\n        value = i.raws.between.replace(/[^\\s:]/g, '')\n        return false\n      }\n    })\n    return value\n  }\n\n  rawEmptyBody(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length === 0) {\n        value = i.raws.after\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawIndent(root) {\n    if (root.raws.indent) return root.raws.indent\n    let value\n    root.walk(i => {\n      let p = i.parent\n      if (p && p !== root && p.parent && p.parent === root) {\n        if (typeof i.raws.before !== 'undefined') {\n          let parts = i.raws.before.split('\\n')\n          value = parts[parts.length - 1]\n          value = value.replace(/\\S/g, '')\n          return false\n        }\n      }\n    })\n    return value\n  }\n\n  rawSemicolon(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n        value = i.raws.semicolon\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawValue(node, prop) {\n    let value = node[prop]\n    let raw = node.raws[prop]\n    if (raw && raw.value === value) {\n      return raw.raw\n    }\n\n    return value\n  }\n\n  root(node) {\n    this.body(node)\n    if (node.raws.after) this.builder(node.raws.after)\n  }\n\n  rule(node) {\n    this.block(node, this.rawValue(node, 'selector'))\n    if (node.raws.ownSemicolon) {\n      this.builder(node.raws.ownSemicolon, node, 'end')\n    }\n  }\n\n  stringify(node, semicolon) {\n    /* c8 ignore start */\n    if (!this[node.type]) {\n      throw new Error(\n        'Unknown AST node type ' +\n          node.type +\n          '. ' +\n          'Maybe you need to change PostCSS stringifier.'\n      )\n    }\n    /* c8 ignore stop */\n    this[node.type](node, semicolon)\n  }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet Container = require('./container')\nlet Document = require('./document')\nlet warnOnce = require('./warn-once')\nlet Result = require('./result')\nlet parse = require('./parse')\nlet Root = require('./root')\n\nconst TYPE_TO_CLASS_NAME = {\n  atrule: 'AtRule',\n  comment: 'Comment',\n  decl: 'Declaration',\n  document: 'Document',\n  root: 'Root',\n  rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n  AtRule: true,\n  AtRuleExit: true,\n  Comment: true,\n  CommentExit: true,\n  Declaration: true,\n  DeclarationExit: true,\n  Document: true,\n  DocumentExit: true,\n  Once: true,\n  OnceExit: true,\n  postcssPlugin: true,\n  prepare: true,\n  Root: true,\n  RootExit: true,\n  Rule: true,\n  RuleExit: true\n}\n\nconst NOT_VISITORS = {\n  Once: true,\n  postcssPlugin: true,\n  prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n  return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n  let key = false\n  let type = TYPE_TO_CLASS_NAME[node.type]\n  if (node.type === 'decl') {\n    key = node.prop.toLowerCase()\n  } else if (node.type === 'atrule') {\n    key = node.name.toLowerCase()\n  }\n\n  if (key && node.append) {\n    return [\n      type,\n      type + '-' + key,\n      CHILDREN,\n      type + 'Exit',\n      type + 'Exit-' + key\n    ]\n  } else if (key) {\n    return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n  } else if (node.append) {\n    return [type, CHILDREN, type + 'Exit']\n  } else {\n    return [type, type + 'Exit']\n  }\n}\n\nfunction toStack(node) {\n  let events\n  if (node.type === 'document') {\n    events = ['Document', CHILDREN, 'DocumentExit']\n  } else if (node.type === 'root') {\n    events = ['Root', CHILDREN, 'RootExit']\n  } else {\n    events = getEvents(node)\n  }\n\n  return {\n    eventIndex: 0,\n    events,\n    iterator: 0,\n    node,\n    visitorIndex: 0,\n    visitors: []\n  }\n}\n\nfunction cleanMarks(node) {\n  node[isClean] = false\n  if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n  return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n  constructor(processor, css, opts) {\n    this.stringified = false\n    this.processed = false\n\n    let root\n    if (\n      typeof css === 'object' &&\n      css !== null &&\n      (css.type === 'root' || css.type === 'document')\n    ) {\n      root = cleanMarks(css)\n    } else if (css instanceof LazyResult || css instanceof Result) {\n      root = cleanMarks(css.root)\n      if (css.map) {\n        if (typeof opts.map === 'undefined') opts.map = {}\n        if (!opts.map.inline) opts.map.inline = false\n        opts.map.prev = css.map\n      }\n    } else {\n      let parser = parse\n      if (opts.syntax) parser = opts.syntax.parse\n      if (opts.parser) parser = opts.parser\n      if (parser.parse) parser = parser.parse\n\n      try {\n        root = parser(css, opts)\n      } catch (error) {\n        this.processed = true\n        this.error = error\n      }\n\n      if (root && !root[my]) {\n        /* c8 ignore next 2 */\n        Container.rebuild(root)\n      }\n    }\n\n    this.result = new Result(processor, root, opts)\n    this.helpers = { ...postcss, postcss, result: this.result }\n    this.plugins = this.processor.plugins.map(plugin => {\n      if (typeof plugin === 'object' && plugin.prepare) {\n        return { ...plugin, ...plugin.prepare(this.result) }\n      } else {\n        return plugin\n      }\n    })\n  }\n\n  async() {\n    if (this.error) return Promise.reject(this.error)\n    if (this.processed) return Promise.resolve(this.result)\n    if (!this.processing) {\n      this.processing = this.runAsync()\n    }\n    return this.processing\n  }\n\n  catch(onRejected) {\n    return this.async().catch(onRejected)\n  }\n\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally)\n  }\n\n  getAsyncError() {\n    throw new Error('Use process(css).then(cb) to work with async plugins')\n  }\n\n  handleError(error, node) {\n    let plugin = this.result.lastPlugin\n    try {\n      if (node) node.addToError(error)\n      this.error = error\n      if (error.name === 'CssSyntaxError' && !error.plugin) {\n        error.plugin = plugin.postcssPlugin\n        error.setMessage()\n      } else if (plugin.postcssVersion) {\n        if (process.env.NODE_ENV !== 'production') {\n          let pluginName = plugin.postcssPlugin\n          let pluginVer = plugin.postcssVersion\n          let runtimeVer = this.result.processor.version\n          let a = pluginVer.split('.')\n          let b = runtimeVer.split('.')\n\n          if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n            // eslint-disable-next-line no-console\n            console.error(\n              'Unknown error from PostCSS plugin. Your current PostCSS ' +\n                'version is ' +\n                runtimeVer +\n                ', but ' +\n                pluginName +\n                ' uses ' +\n                pluginVer +\n                '. Perhaps this is the source of the error below.'\n            )\n          }\n        }\n      }\n    } catch (err) {\n      /* c8 ignore next 3 */\n      // eslint-disable-next-line no-console\n      if (console && console.error) console.error(err)\n    }\n    return error\n  }\n\n  prepareVisitors() {\n    this.listeners = {}\n    let add = (plugin, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = []\n      this.listeners[type].push([plugin, cb])\n    }\n    for (let plugin of this.plugins) {\n      if (typeof plugin === 'object') {\n        for (let event in plugin) {\n          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n                `Try to update PostCSS (${this.processor.version} now).`\n            )\n          }\n          if (!NOT_VISITORS[event]) {\n            if (typeof plugin[event] === 'object') {\n              for (let filter in plugin[event]) {\n                if (filter === '*') {\n                  add(plugin, event, plugin[event][filter])\n                } else {\n                  add(\n                    plugin,\n                    event + '-' + filter.toLowerCase(),\n                    plugin[event][filter]\n                  )\n                }\n              }\n            } else if (typeof plugin[event] === 'function') {\n              add(plugin, event, plugin[event])\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0\n  }\n\n  async runAsync() {\n    this.plugin = 0\n    for (let i = 0; i < this.plugins.length; i++) {\n      let plugin = this.plugins[i]\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        try {\n          await promise\n        } catch (error) {\n          throw this.handleError(error)\n        }\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        let stack = [toStack(root)]\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack)\n          if (isPromise(promise)) {\n            try {\n              await promise\n            } catch (e) {\n              let node = stack[stack.length - 1].node\n              throw this.handleError(e, node)\n            }\n          }\n        }\n      }\n\n      if (this.listeners.OnceExit) {\n        for (let [plugin, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin\n          try {\n            if (root.type === 'document') {\n              let roots = root.nodes.map(subRoot =>\n                visitor(subRoot, this.helpers)\n              )\n\n              await Promise.all(roots)\n            } else {\n              await visitor(root, this.helpers)\n            }\n          } catch (e) {\n            throw this.handleError(e)\n          }\n        }\n      }\n    }\n\n    this.processed = true\n    return this.stringify()\n  }\n\n  runOnRoot(plugin) {\n    this.result.lastPlugin = plugin\n    try {\n      if (typeof plugin === 'object' && plugin.Once) {\n        if (this.result.root.type === 'document') {\n          let roots = this.result.root.nodes.map(root =>\n            plugin.Once(root, this.helpers)\n          )\n\n          if (isPromise(roots[0])) {\n            return Promise.all(roots)\n          }\n\n          return roots\n        }\n\n        return plugin.Once(this.result.root, this.helpers)\n      } else if (typeof plugin === 'function') {\n        return plugin(this.result.root, this.result)\n      }\n    } catch (error) {\n      throw this.handleError(error)\n    }\n  }\n\n  stringify() {\n    if (this.error) throw this.error\n    if (this.stringified) return this.result\n    this.stringified = true\n\n    this.sync()\n\n    let opts = this.result.opts\n    let str = stringify\n    if (opts.syntax) str = opts.syntax.stringify\n    if (opts.stringifier) str = opts.stringifier\n    if (str.stringify) str = str.stringify\n\n    let map = new MapGenerator(str, this.result.root, this.result.opts)\n    let data = map.generate()\n    this.result.css = data[0]\n    this.result.map = data[1]\n\n    return this.result\n  }\n\n  sync() {\n    if (this.error) throw this.error\n    if (this.processed) return this.result\n    this.processed = true\n\n    if (this.processing) {\n      throw this.getAsyncError()\n    }\n\n    for (let plugin of this.plugins) {\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        this.walkSync(root)\n      }\n      if (this.listeners.OnceExit) {\n        if (root.type === 'document') {\n          for (let subRoot of root.nodes) {\n            this.visitSync(this.listeners.OnceExit, subRoot)\n          }\n        } else {\n          this.visitSync(this.listeners.OnceExit, root)\n        }\n      }\n    }\n\n    return this.result\n  }\n\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!('from' in this.opts)) {\n        warnOnce(\n          'Without `from` option PostCSS could generate wrong source map ' +\n            'and will not find Browserslist config. Set it to CSS file path ' +\n            'or to `undefined` to prevent this warning.'\n        )\n      }\n    }\n    return this.async().then(onFulfilled, onRejected)\n  }\n\n  toString() {\n    return this.css\n  }\n\n  visitSync(visitors, node) {\n    for (let [plugin, visitor] of visitors) {\n      this.result.lastPlugin = plugin\n      let promise\n      try {\n        promise = visitor(node, this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node.proxyOf)\n      }\n      if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n        return true\n      }\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n  }\n\n  visitTick(stack) {\n    let visit = stack[stack.length - 1]\n    let { node, visitors } = visit\n\n    if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n      stack.pop()\n      return\n    }\n\n    if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n      let [plugin, visitor] = visitors[visit.visitorIndex]\n      visit.visitorIndex += 1\n      if (visit.visitorIndex === visitors.length) {\n        visit.visitors = []\n        visit.visitorIndex = 0\n      }\n      this.result.lastPlugin = plugin\n      try {\n        return visitor(node.toProxy(), this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node)\n      }\n    }\n\n    if (visit.iterator !== 0) {\n      let iterator = visit.iterator\n      let child\n      while ((child = node.nodes[node.indexes[iterator]])) {\n        node.indexes[iterator] += 1\n        if (!child[isClean]) {\n          child[isClean] = true\n          stack.push(toStack(child))\n          return\n        }\n      }\n      visit.iterator = 0\n      delete node.indexes[iterator]\n    }\n\n    let events = visit.events\n    while (visit.eventIndex < events.length) {\n      let event = events[visit.eventIndex]\n      visit.eventIndex += 1\n      if (event === CHILDREN) {\n        if (node.nodes && node.nodes.length) {\n          node[isClean] = true\n          visit.iterator = node.getIterator()\n        }\n        return\n      } else if (this.listeners[event]) {\n        visit.visitors = this.listeners[event]\n        return\n      }\n    }\n    stack.pop()\n  }\n\n  walkSync(node) {\n    node[isClean] = true\n    let events = getEvents(node)\n    for (let event of events) {\n      if (event === CHILDREN) {\n        if (node.nodes) {\n          node.each(child => {\n            if (!child[isClean]) this.walkSync(child)\n          })\n        }\n      } else {\n        let visitors = this.listeners[event]\n        if (visitors) {\n          if (this.visitSync(visitors, node.toProxy())) return\n        }\n      }\n    }\n  }\n\n  warnings() {\n    return this.sync().warnings()\n  }\n\n  get content() {\n    return this.stringify().content\n  }\n\n  get css() {\n    return this.stringify().css\n  }\n\n  get map() {\n    return this.stringify().map\n  }\n\n  get messages() {\n    return this.sync().messages\n  }\n\n  get opts() {\n    return this.result.opts\n  }\n\n  get processor() {\n    return this.result.processor\n  }\n\n  get root() {\n    return this.sync().root\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'LazyResult'\n  }\n}\n\nLazyResult.registerPostcss = dependant => {\n  postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { dirname, relative, resolve, sep } = require('path')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n  constructor(stringify, root, opts, cssString) {\n    this.stringify = stringify\n    this.mapOpts = opts.map || {}\n    this.root = root\n    this.opts = opts\n    this.css = cssString\n    this.originalCSS = cssString\n    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n    this.memoizedFileURLs = new Map()\n    this.memoizedPaths = new Map()\n    this.memoizedURLs = new Map()\n  }\n\n  addAnnotation() {\n    let content\n\n    if (this.isInline()) {\n      content =\n        'data:application/json;base64,' + this.toBase64(this.map.toString())\n    } else if (typeof this.mapOpts.annotation === 'string') {\n      content = this.mapOpts.annotation\n    } else if (typeof this.mapOpts.annotation === 'function') {\n      content = this.mapOpts.annotation(this.opts.to, this.root)\n    } else {\n      content = this.outputFile() + '.map'\n    }\n    let eol = '\\n'\n    if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n    this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n  }\n\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file))\n      let root = prev.root || dirname(prev.file)\n      let map\n\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer(prev.text)\n        if (map.sourcesContent) {\n          map.sourcesContent = null\n        }\n      } else {\n        map = prev.consumer()\n      }\n\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n    }\n  }\n\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return\n\n    if (this.root) {\n      let node\n      for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n        node = this.root.nodes[i]\n        if (node.type !== 'comment') continue\n        if (node.text.indexOf('# sourceMappingURL=') === 0) {\n          this.root.removeChild(i)\n        }\n      }\n    } else if (this.css) {\n      this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n    }\n  }\n\n  generate() {\n    this.clearAnnotation()\n    if (pathAvailable && sourceMapAvailable && this.isMap()) {\n      return this.generateMap()\n    } else {\n      let result = ''\n      this.stringify(this.root, i => {\n        result += i\n      })\n      return [result]\n    }\n  }\n\n  generateMap() {\n    if (this.root) {\n      this.generateString()\n    } else if (this.previous().length === 1) {\n      let prev = this.previous()[0].consumer()\n      prev.file = this.outputFile()\n      this.map = SourceMapGenerator.fromSourceMap(prev, {\n        ignoreInvalidMapping: true\n      })\n    } else {\n      this.map = new SourceMapGenerator({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      })\n      this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from\n          ? this.toUrl(this.path(this.opts.from))\n          : '<no source>'\n      })\n    }\n\n    if (this.isSourcesContent()) this.setSourcesContent()\n    if (this.root && this.previous().length > 0) this.applyPrevMaps()\n    if (this.isAnnotation()) this.addAnnotation()\n\n    if (this.isInline()) {\n      return [this.css]\n    } else {\n      return [this.css, this.map]\n    }\n  }\n\n  generateString() {\n    this.css = ''\n    this.map = new SourceMapGenerator({\n      file: this.outputFile(),\n      ignoreInvalidMapping: true\n    })\n\n    let line = 1\n    let column = 1\n\n    let noSource = '<no source>'\n    let mapping = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: ''\n    }\n\n    let lines, last\n    this.stringify(this.root, (str, node, type) => {\n      this.css += str\n\n      if (node && type !== 'end') {\n        mapping.generated.line = line\n        mapping.generated.column = column - 1\n        if (node.source && node.source.start) {\n          mapping.source = this.sourcePath(node)\n          mapping.original.line = node.source.start.line\n          mapping.original.column = node.source.start.column - 1\n          this.map.addMapping(mapping)\n        } else {\n          mapping.source = noSource\n          mapping.original.line = 1\n          mapping.original.column = 0\n          this.map.addMapping(mapping)\n        }\n      }\n\n      lines = str.match(/\\n/g)\n      if (lines) {\n        line += lines.length\n        last = str.lastIndexOf('\\n')\n        column = str.length - last\n      } else {\n        column += str.length\n      }\n\n      if (node && type !== 'start') {\n        let p = node.parent || { raws: {} }\n        let childless =\n          node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n        if (!childless || node !== p.last || p.raws.semicolon) {\n          if (node.source && node.source.end) {\n            mapping.source = this.sourcePath(node)\n            mapping.original.line = node.source.end.line\n            mapping.original.column = node.source.end.column - 1\n            mapping.generated.line = line\n            mapping.generated.column = column - 2\n            this.map.addMapping(mapping)\n          } else {\n            mapping.source = noSource\n            mapping.original.line = 1\n            mapping.original.column = 0\n            mapping.generated.line = line\n            mapping.generated.column = column - 1\n            this.map.addMapping(mapping)\n          }\n        }\n      }\n    })\n  }\n\n  isAnnotation() {\n    if (this.isInline()) {\n      return true\n    }\n    if (typeof this.mapOpts.annotation !== 'undefined') {\n      return this.mapOpts.annotation\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.annotation)\n    }\n    return true\n  }\n\n  isInline() {\n    if (typeof this.mapOpts.inline !== 'undefined') {\n      return this.mapOpts.inline\n    }\n\n    let annotation = this.mapOpts.annotation\n    if (typeof annotation !== 'undefined' && annotation !== true) {\n      return false\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(i => i.inline)\n    }\n    return true\n  }\n\n  isMap() {\n    if (typeof this.opts.map !== 'undefined') {\n      return !!this.opts.map\n    }\n    return this.previous().length > 0\n  }\n\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n      return this.mapOpts.sourcesContent\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.withContent())\n    }\n    return true\n  }\n\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to)\n    } else if (this.opts.from) {\n      return this.path(this.opts.from)\n    } else {\n      return 'to.css'\n    }\n  }\n\n  path(file) {\n    if (this.mapOpts.absolute) return file\n    if (file.charCodeAt(0) === 60 /* `<` */) return file\n    if (/^\\w+:\\/\\//.test(file)) return file\n    let cached = this.memoizedPaths.get(file)\n    if (cached) return cached\n\n    let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n    if (typeof this.mapOpts.annotation === 'string') {\n      from = dirname(resolve(from, this.mapOpts.annotation))\n    }\n\n    let path = relative(from, file)\n    this.memoizedPaths.set(file, path)\n\n    return path\n  }\n\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = []\n      if (this.root) {\n        this.root.walk(node => {\n          if (node.source && node.source.input.map) {\n            let map = node.source.input.map\n            if (!this.previousMaps.includes(map)) {\n              this.previousMaps.push(map)\n            }\n          }\n        })\n      } else {\n        let input = new Input(this.originalCSS, this.opts)\n        if (input.map) this.previousMaps.push(input.map)\n      }\n    }\n\n    return this.previousMaps\n  }\n\n  setSourcesContent() {\n    let already = {}\n    if (this.root) {\n      this.root.walk(node => {\n        if (node.source) {\n          let from = node.source.input.from\n          if (from && !already[from]) {\n            already[from] = true\n            let fromUrl = this.usesFileUrls\n              ? this.toFileUrl(from)\n              : this.toUrl(this.path(from))\n            this.map.setSourceContent(fromUrl, node.source.input.css)\n          }\n        }\n      })\n    } else if (this.css) {\n      let from = this.opts.from\n        ? this.toUrl(this.path(this.opts.from))\n        : '<no source>'\n      this.map.setSourceContent(from, this.css)\n    }\n  }\n\n  sourcePath(node) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from)\n    } else if (this.usesFileUrls) {\n      return this.toFileUrl(node.source.input.from)\n    } else {\n      return this.toUrl(this.path(node.source.input.from))\n    }\n  }\n\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString('base64')\n    } else {\n      return window.btoa(unescape(encodeURIComponent(str)))\n    }\n  }\n\n  toFileUrl(path) {\n    let cached = this.memoizedFileURLs.get(path)\n    if (cached) return cached\n\n    if (pathToFileURL) {\n      let fileURL = pathToFileURL(path).toString()\n      this.memoizedFileURLs.set(path, fileURL)\n\n      return fileURL\n    } else {\n      throw new Error(\n        '`map.absolute` option is not available in this PostCSS build'\n      )\n    }\n  }\n\n  toUrl(path) {\n    let cached = this.memoizedURLs.get(path)\n    if (cached) return cached\n\n    if (sep === '\\\\') {\n      path = path.replace(/\\\\/g, '/')\n    }\n\n    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n    this.memoizedURLs.set(path, url)\n\n    return url\n  }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\n\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, 'base64').toString()\n  } else {\n    /* c8 ignore next 2 */\n    return window.atob(str)\n  }\n}\n\nclass PreviousMap {\n  constructor(css, opts) {\n    if (opts.map === false) return\n    this.loadAnnotation(css)\n    this.inline = this.startWith(this.annotation, 'data:')\n\n    let prev = opts.map ? opts.map.prev : undefined\n    let text = this.loadMap(opts.from, prev)\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from\n    }\n    if (this.mapFile) this.root = dirname(this.mapFile)\n    if (text) this.text = text\n  }\n\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer(this.text)\n    }\n    return this.consumerCache\n  }\n\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n    let baseUri = /^data:application\\/json;base64,/\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/\n    let uri = /^data:application\\/json,/\n\n    if (charsetUri.test(text) || uri.test(text)) {\n      return decodeURIComponent(text.substr(RegExp.lastMatch.length))\n    }\n\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64(text.substr(RegExp.lastMatch.length))\n    }\n\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n    throw new Error('Unsupported source map encoding ' + encoding)\n  }\n\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n  }\n\n  isMap(map) {\n    if (typeof map !== 'object') return false\n    return (\n      typeof map.mappings === 'string' ||\n      typeof map._mappings === 'string' ||\n      Array.isArray(map.sections)\n    )\n  }\n\n  loadAnnotation(css) {\n    let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm)\n    if (!comments) return\n\n    // sourceMappingURLs from comments, strings, etc.\n    let start = css.lastIndexOf(comments.pop())\n    let end = css.indexOf('*/', start)\n\n    if (start > -1 && end > -1) {\n      // Locate the last sourceMappingURL to avoid pickin\n      this.annotation = this.getAnnotationURL(css.substring(start, end))\n    }\n  }\n\n  loadFile(path) {\n    this.root = dirname(path)\n    if (existsSync(path)) {\n      this.mapFile = path\n      return readFileSync(path, 'utf-8').toString().trim()\n    }\n  }\n\n  loadMap(file, prev) {\n    if (prev === false) return false\n\n    if (prev) {\n      if (typeof prev === 'string') {\n        return prev\n      } else if (typeof prev === 'function') {\n        let prevPath = prev(file)\n        if (prevPath) {\n          let map = this.loadFile(prevPath)\n          if (!map) {\n            throw new Error(\n              'Unable to load previous source map: ' + prevPath.toString()\n            )\n          }\n          return map\n        }\n      } else if (prev instanceof SourceMapConsumer) {\n        return SourceMapGenerator.fromSourceMap(prev).toString()\n      } else if (prev instanceof SourceMapGenerator) {\n        return prev.toString()\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev)\n      } else {\n        throw new Error(\n          'Unsupported previous source map format: ' + prev.toString()\n        )\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation)\n    } else if (this.annotation) {\n      let map = this.annotation\n      if (file) map = join(dirname(file), map)\n      return this.loadFile(map)\n    }\n  }\n\n  startWith(string, start) {\n    if (!string) return false\n    return string.substr(0, start.length) === start\n  }\n\n  withContent() {\n    return !!(\n      this.consumer().sourcesContent &&\n      this.consumer().sourcesContent.length > 0\n    )\n  }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n  if (printed[message]) return\n  printed[message] = true\n\n  if (typeof console !== 'undefined' && console.warn) {\n    console.warn(message)\n  }\n}\n","'use strict'\n\nclass Warning {\n  constructor(text, opts = {}) {\n    this.type = 'warning'\n    this.text = text\n\n    if (opts.node && opts.node.source) {\n      let range = opts.node.rangeBy(opts)\n      this.line = range.start.line\n      this.column = range.start.column\n      this.endLine = range.end.line\n      this.endColumn = range.end.column\n    }\n\n    for (let opt in opts) this[opt] = opts[opt]\n  }\n\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        index: this.index,\n        plugin: this.plugin,\n        word: this.word\n      }).message\n    }\n\n    if (this.plugin) {\n      return this.plugin + ': ' + this.text\n    }\n\n    return this.text\n  }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet list = {\n  comma(string) {\n    return list.split(string, [','], true)\n  },\n\n  space(string) {\n    let spaces = [' ', '\\n', '\\t']\n    return list.split(string, spaces)\n  },\n\n  split(string, separators, last) {\n    let array = []\n    let current = ''\n    let split = false\n\n    let func = 0\n    let inQuote = false\n    let prevQuote = ''\n    let escape = false\n\n    for (let letter of string) {\n      if (escape) {\n        escape = false\n      } else if (letter === '\\\\') {\n        escape = true\n      } else if (inQuote) {\n        if (letter === prevQuote) {\n          inQuote = false\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        inQuote = true\n        prevQuote = letter\n      } else if (letter === '(') {\n        func += 1\n      } else if (letter === ')') {\n        if (func > 0) func -= 1\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true\n      }\n\n      if (split) {\n        if (current !== '') array.push(current.trim())\n        current = ''\n        split = false\n      } else {\n        current += letter\n      }\n    }\n\n    if (last || current !== '') array.push(current.trim())\n    return array\n  }\n}\n\nmodule.exports = list\nlist.default = list\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport type { Task } from './types.js'\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n//     var channel = new MessageChannel();\n//     channel.port1.onmessage = callback;\n//     return function requestCall() {\n//         channel.port2.postMessage(0);\n//     };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n//     return function requestCall() {\n//         setImmediate(callback);\n//     };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","import type { Task } from './types.js'\nimport { RawTask } from './RawTask.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","const SELECTION_BACKGROUND = '#50A5F5FE';\nlet range;\nlet docViewer;\nlet inputElement;\n\n/**\n * @ignore\n * Helper function to keep the highlight of the selected text in the text edit box before the elemnt focus is changed.\n */\nexport function keepTextEditSelectionOnInputFocus(core) {\n  inputElement = document.activeElement;\n  docViewer = core.getDocumentViewer();\n  // When the input is still in focus but we changed page, we need to un-focus the input.\n  docViewer.addEventListener('pageNumberUpdated', handlePageChange, { once: true });\n  // When we click anywhere other than the input field itself, it should unfocus.\n  document.addEventListener('mousedown', handleClick);\n\n  const selection = window.getSelection();\n  if (selection.rangeCount === 0) {\n    return;\n  }\n\n  const currentRange = selection.getRangeAt(0);\n  const isFocusOutsideTextBox = currentRange.startContainer.nodeName === 'DIV';\n  // Component re-renders when we focus into the input field because it is a dropdown/input combo.\n  // In that case the focus is already shifted out from text edit box and this function is executed again\n  // due to re-render. The selection will no longer include the text nodes we initially selected\n  // in the text edit box.\n  if (isFocusOutsideTextBox) {\n    return;\n  }\n\n  // When we have nothing selected, simply return\n  const isEmptySelection = currentRange.startContainer === currentRange.endContainer && currentRange.startOffset === currentRange.endOffset;\n  if (isEmptySelection) {\n    return;\n  }\n\n  // When the color / font style of the selected text was changed at least once before changing\n  // the font size with input field, the selection we get from `getSelection` would have been modified\n  // by worker API. In this case, we need to reinitialize the range so that the range object returns to its initial state.\n  const isRangeModifiedByWorkerAPI = currentRange.startContainer.nodeName === 'SPAN';\n  if (isRangeModifiedByWorkerAPI) {\n    range = reinitializeRange(currentRange);\n  } else {\n    range = currentRange;\n  }\n\n  toggleSelectionHighlight(range.startContainer, range.endContainer);\n}\n\n/**\n * @ignore\n * Helper function to restore the text edit box selection\n */\nexport function restoreSelection() {\n  if (!range) {\n    return;\n  }\n  const selection = window.getSelection();\n  selection.removeAllRanges();\n  selection.addRange(range);\n  range = null;\n  docViewer.removeEventListener('pageNumberUpdated', handlePageChange);\n  document.removeEventListener('mousedown', handleClick);\n}\n\n/**\n * @ignore\n * Toggles the background color of the selected elements recursively.\n * @param {Text} startTextNode\n * @param {Text} endTextNode\n */\nfunction toggleSelectionHighlight(startTextNode, endTextNode) {\n  const startElement = startTextNode.parentElement;\n  const selectionEnd = !startElement.nextElementSibling && startElement.parentElement.nextElementSibling === endTextNode;\n  if (selectionEnd) {\n    return;\n  }\n  startElement.style.background = SELECTION_BACKGROUND;\n  const highlighNextCharacterSameLine = startElement.nextElementSibling?.tagName === 'SPAN' && startTextNode !== endTextNode;\n  const highlighNextCharacterNextLine = startElement.nextElementSibling === null && startElement.parentElement.nextElementSibling;\n  if (highlighNextCharacterSameLine) {\n    // When the next character in selection is in the same line of current character, we simply pass that in\n    toggleSelectionHighlight(startElement.nextElementSibling.firstChild, endTextNode);\n  } else if (highlighNextCharacterNextLine) {\n    // when the next character in selection is in the next line, we need to go into the next line and continue our recursion\n    toggleSelectionHighlight(startElement.parentElement.nextElementSibling.firstElementChild.firstChild, endTextNode);\n  }\n}\n\nfunction reinitializeRange(workerAPIEditedRange) {\n  const selection = window.getSelection();\n  selection.removeAllRanges();\n  const startNode = workerAPIEditedRange.startContainer.firstChild;\n  const endNode = workerAPIEditedRange.endContainer.previousSibling.firstChild;\n  workerAPIEditedRange.setStart(startNode, 0);\n  workerAPIEditedRange.setEnd(endNode, 1);\n  return workerAPIEditedRange;\n}\n\nfunction handlePageChange() {\n  if (document.activeElement?.tagName === 'INPUT') {\n    document.activeElement.blur();\n  }\n  docViewer.removeEventListener('pageNumberUpdated', handlePageChange);\n  document.removeEventListener('mousedown', handleClick);\n}\n\nfunction handleClick(e) {\n  const isClickingFontSizeInput = e.target === inputElement;\n  if (!isClickingFontSizeInput) {\n    document.activeElement.blur();\n    document.removeEventListener('mousedown', handleClick);\n  }\n}","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport core from 'core';\nimport Icon from 'components/Icon';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport { useTranslation } from 'react-i18next';\nimport { restoreSelection, keepTextEditSelectionOnInputFocus } from './pdfEditHelper';\nimport getRootNode from 'helpers/getRootNode';\n\nimport './FontSizeDropdown.scss';\nimport debounce from 'lodash/debounce';\n\nexport const DEBOUNCE_TIME = 750;\n\nconst propTypes = {\n  fontSize: PropTypes.number,\n  fontUnit: PropTypes.string, // Ex: 'pt'\n  onFontSizeChange: PropTypes.func.isRequired,\n  maxFontSize: PropTypes.number,\n  initialFontValue: PropTypes.number,\n  initialMaxFontValue: PropTypes.number,\n  incrementMap: PropTypes.object,\n  onError: PropTypes.func, // Calls this with current error message string whenever it changes\n  applyOnlyOnBlur: PropTypes.bool, // If true, apply the font size change only when the element loses focus\n  disabled: PropTypes.bool,\n  displayEmpty: PropTypes.bool, // Display empty box\n};\n\nconst MIN_FONT_SIZE = 1;\n// Default maxFontSize\nconst RENDER_ROWS_UPPER_LIMIT = 512;\n// Default increment map\nconst BREAKS_AND_INCREMENT = {\n  0: 1,\n  20: 2,\n  48: 4,\n};\n\nconst FontSizeDropdown = ({\n  onFontSizeChange,\n  fontSize = 12,\n  fontUnit = 'pt',\n  maxFontSize = RENDER_ROWS_UPPER_LIMIT,\n  initialFontValue = MIN_FONT_SIZE,\n  initialMaxFontValue = maxFontSize,\n  incrementMap = BREAKS_AND_INCREMENT,\n  onError = undefined,\n  applyOnlyOnBlur = false,\n  disabled = false,\n  displayEmpty = false,\n}) => {\n  const { t } = useTranslation();\n  const inputRef = useRef();\n  const iconButtonRef = useRef();\n  const dropdownDivRef = useRef();\n  const dropdownContainerRef = useRef();\n  const [sizes, setSizes] = useState([]);\n  const [error, setError] = useState(false);\n  const [shouldBeEmpty, setShouldBeEmpty] = useState(displayEmpty);\n  const [initialFontSize, setInitialFontSize] = useState(null);\n\n  const onClickOutside = useCallback(() => {\n    setOpen(false);\n  }, []);\n  useOnClickOutside(dropdownContainerRef, onClickOutside);\n\n  const [currSize, setCurrSize] = useState(fontSize <= maxFontSize ? fontSize : 1);\n  const setValue = (val) => {\n    setShouldBeEmpty(false);\n    setCurrSize(val);\n  };\n\n  const isValidNum = (num, arr = []) => num && arr.indexOf(num) === -1 && num <= maxFontSize && num >= MIN_FONT_SIZE;\n  useEffect(() => {\n    // update the font size indicator in Text Editing Panel\n    if (core.getContentEditManager().isInContentEditMode()) {\n      setCurrSize(fontSize <= maxFontSize ? fontSize : 1);\n    }\n    inputRef.current.value = focused ? fontSize : `${fontSize}pt`;\n  }, [fontSize]);\n  useEffect(() => {\n    incrementMap[maxFontSize] = 12;\n    const getNewNumbers = (curr) => {\n      const startArr = [initialFontValue];\n      for (let i = 1; i <= RENDER_ROWS_UPPER_LIMIT; i++) {\n        const higherIncrement = getIncrement(startArr[startArr.length - 1]);\n        const higher = (startArr[startArr.length - 1]) + higherIncrement;\n        if (higher > initialMaxFontValue) {\n          break;\n        }\n        isValidNum(higher, startArr) && startArr.push(higher);\n      }\n      if (!startArr.includes(curr)) {\n        startArr.push(curr);\n        startArr.sort((a, b) => a - b);\n      }\n      return startArr;\n    };\n    const getIncrement = (num) => {\n      let greaterThanLast = false;\n      let last;\n      const keys = Object.keys(incrementMap).map((i) => parseFloat(i)).sort((a, b) => a - b);\n      for (const i of keys) {\n        if (num < i && greaterThanLast) {\n          return incrementMap[last];\n        }\n        if (i === keys[keys.length - 1]) {\n          return incrementMap[i];\n        }\n        if (num >= i) {\n          greaterThanLast = true;\n          last = i;\n        }\n      }\n    };\n    setSizes(getNewNumbers(Math.floor(currSize)));\n  }, []);\n\n  const sizeChange = async (inputElement) => {\n    let newSize = inputElement.value;\n    const { activeElement } = getRootNode();\n    if (typeof newSize === 'string' && activeElement === inputElement) {\n      // we are flooring to integers here following Adobe's font size behaviour\n      newSize = Math.floor(parseFloat(newSize));\n      inputElement.value = newSize;\n    }\n    if (currSize !== newSize) {\n      if (typeof newSize !== 'number' || isNaN(newSize)) {\n        return;\n      }\n      if (!inputElement.checkValidity()) {\n        if (isValidNum(newSize)) {\n          inputElement.validFontSize = newSize;\n        }\n        if (onError) {\n          onError(`${t('option.stylePopup.invalidFontSize')}: ${MIN_FONT_SIZE} - ${maxFontSize}`);\n          setError(true);\n        }\n        return;\n      }\n      setCurrSize(newSize);\n      !applyOnlyOnBlur && onFontSizeChange(`${newSize}${fontUnit}`);\n    } else if (currSize !== inputElement.value) {\n      // update the input if it has decimal but floored to the same value as currSize.\n      setCurrSize(newSize);\n    }\n    setError(false);\n    onError && onError('');\n  };\n  const debouncedSizeChange = debounce(sizeChange, DEBOUNCE_TIME);\n  // This prevents the debounce function from being re-created after re-rendering\n  const cachedDebouncedSizeChange = useCallback((value) => debouncedSizeChange(value), []);\n  useEffect(() => {\n    if (applyOnlyOnBlur) {\n      sizeChange(inputRef.current);\n    } else {\n      cachedDebouncedSizeChange(inputRef.current);\n    }\n    return () => debouncedSizeChange.cancel();\n  }, [currSize]);\n  const [focused, setFocused] = useState(false);\n  const focus = (e) => {\n    if (applyOnlyOnBlur) {\n      const annot = core.getAnnotationManager().getSelectedAnnotations()[0];\n      const id = annot?.getCustomData?.('contentEditBoxId');\n      const editor = core.getContentEditManager().getContentBoxById(id)?.editor;\n      editor && keepTextEditSelectionOnInputFocus(core);\n      setInitialFontSize(e.target.value);\n    }\n    setFocused(true);\n  };\n  const blur = (e) => {\n    applyOnlyOnBlur && restoreSelection();\n    if (!e.target.checkValidity() || !currSize) {\n      setCurrSize(e.target.validFontSize || MIN_FONT_SIZE);\n    }\n    setFocused(false);\n    onError && onError(null);\n    onError && setError(false);\n    // Only call worker update when the font size is changed\n    const fontSizeChanged = e.target.value !== initialFontSize && e.target.value > MIN_FONT_SIZE && e.target.value < maxFontSize;\n    (applyOnlyOnBlur && fontSizeChanged) && onFontSizeChange(`${currSize}${fontUnit}`);\n  };\n\n  const [isOpen, setOpen] = useState(false);\n  useEffect(() => {\n    if (isOpen) {\n      const children = dropdownDivRef.current.childNodes;\n      const itemHeight = children[0].getBoundingClientRect().height;\n      const divHeight = dropdownDivRef.current.getBoundingClientRect().height;\n      let itemDistance = 0;\n      for (const node of children) {\n        if (node.innerText === `${Math.floor(fontSize)}pt`) {\n          break;\n        }\n        itemDistance++;\n      }\n      dropdownDivRef.current.scrollTop = itemHeight * itemDistance - divHeight / 2;\n      if (shouldBeEmpty) {\n        dropdownDivRef.current.scrollTop = 0;\n      }\n    }\n  }, [isOpen, shouldBeEmpty]);\n  const onClickDropdownItem = useCallback(\n    (e, key) => {\n      e.stopPropagation();\n      setOpen(false);\n      setFocused(false);\n      setCurrSize(key);\n      onFontSizeChange(`${key}${fontUnit}`);\n      iconButtonRef?.current.focus();\n    }, [fontUnit, onFontSizeChange]\n  );\n\n  const dropdownItems = useMemo(\n    () => sizes.map((key) => {\n      const active = displayEmpty ? false : key === Math.floor(currSize);\n      return (\n        <DataElementWrapper\n          key={key}\n          type=\"button\"\n          dataElement={`dropdown-item-${key}`}\n          className={classNames('Dropdown__item', { active })}\n          onClick={(e) => onClickDropdownItem(e, key)}\n          tabIndex={isOpen ? undefined : -1}\n        >\n          {key + fontUnit}\n        </DataElementWrapper>);\n    }),\n    [currSize, isOpen, onClickDropdownItem, fontUnit, sizes]\n  );\n\n  const onOpenDropdown = (e) => {\n    e.preventDefault();\n    if (!disabled) {\n      setOpen(!isOpen);\n    }\n  };\n\n  const isDisabled = disabled === true ? 'disabledText' : null;\n  const className = error ? 'error' : isDisabled;\n\n  let value = focused ? currSize : `${currSize}pt`;\n  if (shouldBeEmpty) {\n    value = '';\n  }\n  return (\n    <div className={classNames('FontSizeDropdown', { disabled })}>\n      <input\n        min={MIN_FONT_SIZE}\n        max={maxFontSize}\n        value={value}\n        onChange={(e) => setValue(e.target.value)}\n        type={focused ? 'number' : 'string'}\n        onFocus={focus}\n        onBlur={blur}\n        onSelectCapture={focus}\n        ref={inputRef}\n        disabled={disabled}\n        className={className}\n      />\n      <div ref={dropdownContainerRef}>\n        <div\n          className={classNames('icon-button')}\n          onClick={onOpenDropdown}\n          onTouchEnd={onOpenDropdown}\n          ref={iconButtonRef}\n        >\n          <Icon className={classNames({\n            'arrow': true,\n            [isDisabled]: true\n          })}\n          glyph={`icon-chevron-${isOpen ? 'up' : 'down'}`}\n          />\n        </div>\n        <div\n          className={classNames('Dropdown__items', { 'hidden': !isOpen })}\n          role=\"listbox\"\n          ref={dropdownDivRef}\n          aria-expanded={isOpen}\n        >\n          {dropdownItems}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nFontSizeDropdown.propTypes = propTypes;\n\nexport default FontSizeDropdown;\n","import FontSizeDropdown from './FontSizeDropdown';\n\nexport default FontSizeDropdown;","import useOnRedactionAnnotationChanged from './useOnRedactionAnnotationChanged';\n\nexport default useOnRedactionAnnotationChanged;","import { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport useMedia from 'hooks/useMedia';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport core from 'core';\n\nexport default function useOnRedactionAnnotationChanged() {\n  const [redactionAnnotationsList, setRedactionAnnotationsList] = useState([]);\n  const dispatch = useDispatch();\n  const isMobile = useMedia(\n    // Media queries\n    ['(max-width: 640px)'],\n    [true],\n    // Default value\n    false,\n  );\n\n  const [\n    isNotesPanelOpen,\n    isSearchPanelOpen,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'notesPanel'),\n      selectors.isElementOpen(state, 'searchPanel'),\n    ]\n  );\n\n  useEffect(() => {\n    const setRedactionAnnotations = () => {\n      const redactionAnnotations = core.getAnnotationsList().filter((annotation) => annotation instanceof window.Core.Annotations.RedactionAnnotation);\n      const mediaAnnotationTypes = [\n        redactionTypeMap['FULL_VIDEO_FRAME'],\n        redactionTypeMap['FULL_VIDEO_FRAME_AND_AUDIO'],\n        redactionTypeMap['AUDIO_REDACTION'],\n      ];\n      setRedactionAnnotationsList(redactionAnnotations);\n\n      const nonMediaRedactionAnnotations = redactionAnnotations.filter((annotation) => !mediaAnnotationTypes.includes(annotation.redactionType));\n\n      if (nonMediaRedactionAnnotations.length > 0 && !isMobile) {\n        // Initially the state will be undefined, so we cast to boolean and negate it\n        const isNotesPanelClosed = !isNotesPanelOpen;\n        const isSearchPanelClosed = !isSearchPanelOpen;\n\n        if (isNotesPanelClosed && isSearchPanelClosed) {\n          dispatch(actions.openElement('redactionPanel'));\n        }\n      }\n    };\n\n    const onDocumentLoaded = () => {\n      setRedactionAnnotationsList([]);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('annotationChanged', setRedactionAnnotations);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('annotationChanged', setRedactionAnnotations);\n    };\n  }, [isNotesPanelOpen, isSearchPanelOpen]);\n\n  return { redactionAnnotationsList };\n}","import React, { useState } from 'react';\nimport core from 'core';\n\nimport './OfficeEditorCreateTablePopup.scss';\n\nconst OfficeEditorCreateTablePopup = ({ onClose }) => {\n  const [rowIndex, setRowIndex] = useState(-1);\n  const [columnIndex, setColumnIndex] = useState(-1);\n\n  const onMouseLeaveTable = () => {\n    setRowIndex(-1);\n    setColumnIndex(-1);\n  };\n\n  const onMouseEnterCell = (i, j) => {\n    setRowIndex(i);\n    setColumnIndex(j);\n  };\n\n  const onClickCell = async (i, j) => {\n    await core.getOfficeEditor().insertTableAtCursor(i + 1, j + 1, 100, 'percent');\n    onClose?.();\n  };\n\n  return (\n    <div className='office-editor-create-table'>\n      <table>\n        <tbody onMouseLeave={onMouseLeaveTable}>\n          {[...Array(10)].map((value, i) => (\n            <tr key={`row-${i}`}>\n              {[...Array(10)].map((value, j) => (\n                <td\n                  key={`cell-${i}-${j}`}\n                  className={(i <= rowIndex && j <= columnIndex) ? 'selected-cell' : ''}\n                  onMouseEnter={() => onMouseEnterCell(i, j)}\n                  onClick={() => onClickCell(i, j)}\n                >\n                </td>\n              ))}\n            </tr>\n          ))}\n        </tbody>\n      </table>\n      <div className=\"create-table-rows-columns\">{columnIndex + 1} x {rowIndex + 1}</div>\n    </div>\n  );\n};\n\nexport default OfficeEditorCreateTablePopup;\n","import OfficeEditorCreateTablePopup from './OfficeEditorCreateTablePopup';\n\nexport default OfficeEditorCreateTablePopup;\n","import React, { useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\nimport { isMobile } from 'helpers/device';\n\nimport './FilePicker.scss';\n\nconst FilePicker = ({\n  onChange = () => { },\n  onDrop = () => { },\n  shouldShowIcon = false,\n  acceptFormats,\n  allowMultiple = false,\n  errorMessage = ''\n}) => {\n  const [t] = useTranslation();\n  const [isDragging, setIsDragging] = useState(false);\n  const fileInputRef = useRef(null);\n\n  const onClick = () => {\n    fileInputRef?.current?.click();\n  };\n\n  const onKeyDown = (event) => {\n    if (event.key === 'Enter') {\n      onClick();\n    }\n  };\n\n  const handleChange = (e) => {\n    const files = e.target.files;\n    files.length > 0 && onChange(Array.from(files));\n  };\n\n  const handleDragEnter = (e) => {\n    e.preventDefault();\n    setIsDragging(true);\n  };\n\n  const handleDragOver = (e) => {\n    e.preventDefault();\n  };\n\n  const handleDragLeave = (e) => {\n    e.preventDefault();\n\n    if (!e.target.parentNode.contains(e.relatedTarget)) {\n      setIsDragging(false);\n    }\n  };\n\n  const handleDragExit = (e) => {\n    e.preventDefault();\n    setIsDragging(false);\n  };\n\n  const handleFileDrop = async (e) => {\n    e.preventDefault();\n    setIsDragging(false);\n    const { files } = e.dataTransfer;\n    files.length > 0 && onDrop(Array.from(files));\n  };\n\n  const renderPrompt = () => {\n    if (isMobile()) {\n      return (\n        <div className=\"file-picker-separator\">\n          {t('filePicker.selectFile')}\n        </div>\n      );\n    }\n    return (\n      <>\n        <div>\n          {t('filePicker.dragAndDrop')}\n        </div>\n        <div className=\"file-picker-separator\">\n          {t('filePicker.or')}\n        </div>\n      </>\n    );\n  };\n\n  return (\n    <div className=\"file-picker-component\">\n      <div\n        className={classNames('file-picker-container', { dragging: isDragging })}\n        onDragEnter={handleDragEnter}\n        onDragLeave={handleDragLeave}\n        onDragOver={handleDragOver}\n        onDrop={handleFileDrop}\n        onDragExit={handleDragExit}\n      >\n        <div className=\"file-picker-body\">\n          {shouldShowIcon && <Icon glyph=\"icon-open-folder\" />}\n          {renderPrompt()}\n          <div\n            className=\"md-row modal-btn-file\"\n            tabIndex=\"0\"\n            onKeyDown={onKeyDown}\n            onClick={onClick}\n          >{t('action.browse')}\n            <input\n              ref={fileInputRef}\n              multiple={allowMultiple}\n              style={{ display: 'none' }}\n              type=\"file\"\n              accept={acceptFormats}\n              onChange={(event) => {\n                handleChange(event);\n                event.target.value = null;\n              }}\n            />\n          </div>\n        </div>\n        {errorMessage && (\n          <div className=\"file-picker-error\">{errorMessage}</div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default FilePicker;\n","import FilePicker from './FilePicker';\n\nexport default FilePicker;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport Button from 'components/Button';\nimport '../ModularComponents/StatefulButton/StatefulButton.scss';\n\nimport selectors from 'selectors';\n\nclass StatefulButton extends React.PureComponent {\n  static propTypes = {\n    dispatch: PropTypes.func,\n    initialState: PropTypes.string.isRequired,\n    mount: PropTypes.func.isRequired,\n    unmount: PropTypes.func,\n    didUpdate: PropTypes.func,\n    states: PropTypes.shape({\n      activeState: PropTypes.shape({\n        img: PropTypes.string,\n        label: PropTypes.string,\n        onClick: PropTypes.func.isRequired,\n        title: PropTypes.string.isRequired,\n        getContent: PropTypes.func.isRequired,\n      }),\n      AnotherState: PropTypes.shape({\n        img: PropTypes.string,\n        label: PropTypes.string,\n        onClick: PropTypes.func.isRequired,\n        title: PropTypes.string.isRequired,\n        getContent: PropTypes.func.isRequired,\n      }),\n    }),\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      activeState: this.props.initialState,\n    };\n  }\n\n  componentDidMount() {\n    const { mount } = this.props;\n    if (mount) {\n      mount(this.update);\n    }\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    const { didUpdate, states } = this.props;\n    if (didUpdate) {\n      didUpdate(\n        prevProps,\n        this.props,\n        states[prevState.activeState],\n        states[this.state.activeState],\n        this.update,\n      );\n    }\n  }\n\n  componentWillUnmount() {\n    const { unmount } = this.props;\n    if (unmount) {\n      unmount();\n    }\n  }\n\n  update = (newState) => {\n    if (newState) {\n      this.setState({\n        activeState: newState,\n      });\n    } else {\n      this.forceUpdate();\n    }\n  };\n\n  onClick = () => {\n    const { activeState } = this.state;\n    const { states, dispatch } = this.props;\n\n    this.props.states[activeState].onClick(\n      this.update,\n      states[activeState],\n      dispatch,\n    );\n  };\n\n  render() {\n    const { activeState } = this.state;\n    const { states } = this.props;\n    const { title, img, getContent, isActive } = states[activeState];\n    const content = getContent ? getContent(states[activeState]) : '';\n    const className = [\n      'StatefulButton',\n      states[activeState].className ? states[activeState].className : '',\n    ]\n      .join(' ')\n      .trim();\n\n    return (\n      <Button\n        {...this.props}\n        className={className}\n        isActive={isActive && isActive(this.props)}\n        img={img}\n        label={content}\n        onClick={this.onClick}\n        title={title}\n      />\n    );\n  }\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n  isOpen: selectors.isElementOpen(state, ownProps.dataElement),\n  openElements: selectors.getOpenElements(state),\n});\n\nexport default connect(mapStateToProps)(StatefulButton);\n","import StatefulButton from './StatefulButton';\n\nexport default StatefulButton;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    basePickBy = require('./_basePickBy'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n  if (object == null) {\n    return {};\n  }\n  var props = arrayMap(getAllKeysIn(object), function(prop) {\n    return [prop];\n  });\n  predicate = baseIteratee(predicate);\n  return basePickBy(object, props, function(value, path) {\n    return predicate(value, path[0]);\n  });\n}\n\nmodule.exports = pickBy;\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","var reactEvents = [\"onAbort\", \"onAnimationCancel\", \"onAnimationEnd\", \"onAnimationIteration\", \"onAuxClick\", \"onBlur\",\n    \"onChange\", \"onClick\", \"onClose\", \"onContextMenu\", \"onDoubleClick\", \"onError\", \"onFocus\", \"onGotPointerCapture\",\n    \"onInput\", \"onKeyDown\", \"onKeyPress\", \"onKeyUp\", \"onLoad\", \"onLoadEnd\", \"onLoadStart\", \"onLostPointerCapture\",\n    \"onMouseDown\", \"onMouseMove\", \"onMouseOut\", \"onMouseOver\", \"onMouseUp\", \"onPointerCancel\", \"onPointerDown\",\n    \"onPointerEnter\", \"onPointerLeave\", \"onPointerMove\", \"onPointerOut\", \"onPointerOver\", \"onPointerUp\", \"onReset\",\n    \"onResize\", \"onScroll\", \"onSelect\", \"onSelectionChange\", \"onSelectStart\", \"onSubmit\", \"onTouchCancel\",\n    \"onTouchMove\", \"onTouchStart\", \"onTouchEnd\",\"onTransitionCancel\", \"onTransitionEnd\", \"onDrag\", \"onDragEnd\",\n    \"onDragEnter\", \"onDragExit\", \"onDragLeave\", \"onDragOver\", \"onDragStart\", \"onDrop\", \"onFocusOut\"];\n\nvar divergentNativeEvents = {\n    onDoubleClick: 'dblclick'\n};\n\nvar mimickedReactEvents = {\n    onInput: 'onChange',\n    onFocusOut: 'onBlur',\n    onSelectionChange: 'onSelect'\n};\n\nmodule.exports = function retargetEvents(shadowRoot) {\n    var removeEventListeners = [];\n\n    reactEvents.forEach(function (reactEventName) {\n\n        var nativeEventName = getNativeEventName(reactEventName);\n\n        function retargetEvent(event) {\n\n            var path = event.path || (event.composedPath && event.composedPath()) || composedPath(event.target);\n\n            for (var i = 0; i < path.length; i++) {\n\n                var el = path[i];\n                var props = null;\n                var reactComponent = findReactComponent(el);\n                var eventHandlers = findReactEventHandlers(el);\n\n                if (!eventHandlers) {\n                    props = findReactProps(reactComponent);\n                } else {\n                    props = eventHandlers;\n                }\n\n                if (reactComponent && props) {\n                    dispatchEvent(event, reactEventName, props);\n                }\n\n                if (reactComponent && props && mimickedReactEvents[reactEventName]) {\n                    dispatchEvent(event, mimickedReactEvents[reactEventName], props);\n                }\n\n                if (event.cancelBubble) {\n                    break;\n                }\n\n                if (el === shadowRoot) {\n                    break;\n                }\n            }\n        }\n\n        shadowRoot.addEventListener(nativeEventName, retargetEvent, false);\n\n        removeEventListeners.push(function () { shadowRoot.removeEventListener(nativeEventName, retargetEvent, false); })\n    });\n\n    return function () {\n\n      removeEventListeners.forEach(function (removeEventListener) {\n\n        removeEventListener();\n      });\n    };\n};\n\nfunction findReactEventHandlers(item) {\n    return findReactProperty(item, '__reactEventHandlers');\n}\n\nfunction findReactComponent(item) {\n    return findReactProperty(item, '_reactInternal');\n}\n\nfunction findReactProperty(item, propertyPrefix) {\n    for (var key in item) {\n        if (item.hasOwnProperty(key) && key.indexOf(propertyPrefix) !== -1) {\n            return item[key];\n        }\n    }\n}\n\nfunction findReactProps(component) {\n    if (!component) return undefined;\n    if (component.memoizedProps) return component.memoizedProps; // React 16 Fiber\n    if (component._currentElement && component._currentElement.props) return component._currentElement.props; // React <=15\n\n}\n\nfunction dispatchEvent(event, eventType, componentProps) {\n    event.persist = function() {\n        event.isPersistent = function(){ return true};\n    };\n\n    if (componentProps[eventType]) {\n        componentProps[eventType](event);\n    }\n}\n\nfunction getNativeEventName(reactEventName) {\n    if (divergentNativeEvents[reactEventName]) {\n        return divergentNativeEvents[reactEventName];\n    }\n    return reactEventName.replace(/^on/, '').toLowerCase();\n}\n\nfunction composedPath(el) {\n  var path = [];\n  while (el) {\n    path.push(el);\n    if (el.tagName === 'HTML') {\n      path.push(document);\n      path.push(window);\n      return path;\n    }\n    el = el.parentElement;\n  }\n}\n","if (process.env.NODE_ENV !== 'production') {\n  var hot = require('./index').hot;\n  if (module.hot) {\n    var cache = require.cache;\n\n    if (!module.parents || module.parents.length === 0) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n    // access parent\n    var parent = cache[module.parents[0]];\n    if (!parent) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n\n    // remove self from a cache\n    delete cache[module.id];\n\n    // setup hot for caller\n    exports.hot = hot(parent);\n  } else {\n    fallbackHot();\n  }\n} else {\n  // prod mode\n  fallbackHot();\n}\n\nfunction fallbackHot() {\n  exports.hot = function (a) {\n    return a;\n  };\n}\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet LazyResult = require('./lazy-result')\nlet Container = require('./container')\nlet Processor = require('./processor')\nlet stringify = require('./stringify')\nlet fromJSON = require('./fromJSON')\nlet Document = require('./document')\nlet Warning = require('./warning')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Result = require('./result.js')\nlet Input = require('./input')\nlet parse = require('./parse')\nlet list = require('./list')\nlet Rule = require('./rule')\nlet Root = require('./root')\nlet Node = require('./node')\n\nfunction postcss(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0]\n  }\n  return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n  let warningPrinted = false\n  function creator(...args) {\n    // eslint-disable-next-line no-console\n    if (console && console.warn && !warningPrinted) {\n      warningPrinted = true\n      // eslint-disable-next-line no-console\n      console.warn(\n        name +\n          ': postcss.plugin was deprecated. Migration guide:\\n' +\n          'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n      )\n      if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n        /* c8 ignore next 7 */\n        // eslint-disable-next-line no-console\n        console.warn(\n          name +\n            ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n            'https://www.w3ctech.com/topic/2226'\n        )\n      }\n    }\n    let transformer = initializer(...args)\n    transformer.postcssPlugin = name\n    transformer.postcssVersion = new Processor().version\n    return transformer\n  }\n\n  let cache\n  Object.defineProperty(creator, 'postcss', {\n    get() {\n      if (!cache) cache = creator()\n      return cache\n    }\n  })\n\n  creator.process = function (css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts)\n  }\n\n  return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\n\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch;\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch;\n  }\n}\n\nvar XmlHttpRequestApi;\n\nif (hasXMLHttpRequest) {\n  if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n    XmlHttpRequestApi = global.XMLHttpRequest;\n  } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n    XmlHttpRequestApi = window.XMLHttpRequest;\n  }\n}\n\nvar ActiveXObjectApi;\n\nif (typeof ActiveXObject === 'function') {\n  if (typeof global !== 'undefined' && global.ActiveXObject) {\n    ActiveXObjectApi = global.ActiveXObject;\n  } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n    ActiveXObjectApi = window.ActiveXObject;\n  }\n}\n\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\n\nvar addQueryString = function addQueryString(url, params) {\n  if (params && _typeof(params) === 'object') {\n    var queryString = '';\n\n    for (var paramName in params) {\n      queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n    }\n\n    if (!queryString) return url;\n    url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n  }\n\n  return url;\n};\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n  if (payload) headers['Content-Type'] = 'application/json';\n  fetchApi(url, defaults({\n    method: payload ? 'POST' : 'GET',\n    body: payload ? options.stringify(payload) : undefined,\n    headers: headers\n  }, typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions)).then(function (response) {\n    if (!response.ok) return callback(response.statusText || 'Error', {\n      status: response.status\n    });\n    response.text().then(function (data) {\n      callback(null, {\n        status: response.status,\n        data: data\n      });\n    }).catch(callback);\n  }).catch(callback);\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n  if (payload && _typeof(payload) === 'object') {\n    payload = addQueryString('', payload).slice(1);\n  }\n\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  try {\n    var x;\n\n    if (XmlHttpRequestApi) {\n      x = new XmlHttpRequestApi();\n    } else {\n      x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n    }\n\n    x.open(payload ? 'POST' : 'GET', url, 1);\n\n    if (!options.crossDomain) {\n      x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n\n    x.withCredentials = !!options.withCredentials;\n\n    if (payload) {\n      x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n\n    if (x.overrideMimeType) {\n      x.overrideMimeType('application/json');\n    }\n\n    var h = options.customHeaders;\n    h = typeof h === 'function' ? h() : h;\n\n    if (h) {\n      for (var i in h) {\n        x.setRequestHeader(i, h[i]);\n      }\n    }\n\n    x.onreadystatechange = function () {\n      x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n        status: x.status,\n        data: x.responseText\n      });\n    };\n\n    x.send(payload);\n  } catch (e) {\n    console && console.log(e);\n  }\n};\n\nvar request = function request(options, url, payload, callback) {\n  if (typeof payload === 'function') {\n    callback = payload;\n    payload = undefined;\n  }\n\n  callback = callback || function () {};\n\n  if (fetchApi) {\n    return requestWithFetch(options, url, payload, callback);\n  }\n\n  if (hasXMLHttpRequest || typeof ActiveXObject === 'function') {\n    return requestWithXmlHttpRequest(options, url, payload, callback);\n  }\n};\n\nexport default request;","import { createContext } from 'react';\n/**\n * Create the React Context\n */\n\nexport var DndContext = createContext({\n  dragDropManager: undefined\n});","export * from './asap.js'\nexport * from './types.js'\nexport * from './AsapQueue.js'\nexport * from './TaskFactory.js'\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Dropdown from 'components/Dropdown';\n\nconst DimensionsInput = ({\n  yOffset,\n  height,\n  xOffset,\n  width,\n  unit,\n  autoTrim,\n  supportedUnits,\n  autoTrimOptions,\n  onDimensionChange,\n  onUnitChange,\n  autoTrimActive,\n  setAutoTrimActive,\n  onAutoTrimChange,\n}) => {\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"crop-dimensions\">\n      <div className=\"crop-dimensions-input-container\">\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">W</span>\n          <input\n            name=\"width\"\n            data-testid=\"width-input\"\n            type=\"number\"\n            min=\"0\"\n            className=\"dimension-input-field\"\n            onChange={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            onKeyUp={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            value={width}\n          />\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">H</span>\n          <input\n            name=\"height\"\n            data-testid=\"height-input\"\n            type=\"number\"\n            min=\"0\"\n            className=\"dimension-input-field\"\n            onChange={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            onKeyUp={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            value={height}\n          />\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">X</span>\n          <input\n            name=\"xOffset\"\n            data-testid=\"xOffset-input\"\n            type=\"number\"\n            min=\"0\"\n            className=\"dimension-input-field\"\n            onChange={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            onKeyUp={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            value={xOffset}\n          />\n        </label>\n        <label className=\"crop-dimensions-input\">\n          <span className=\"dimensions-settings-title\">Y</span>\n          <input\n            name=\"yOffset\"\n            data-testid=\"yOffset-input\"\n            type=\"number\"\n            min=\"0\"\n            className=\"dimension-input-field\"\n            onChange={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            onKeyUp={(e) => {\n              onDimensionChange(e.target.value, e.target.name);\n              setAutoTrimActive(false);\n            }}\n            value={yOffset}\n          />\n        </label>\n      </div>\n      <div className=\"crop-dimensions-settings\">\n        <div className=\"dimensions-settings-title-container\">\n          <label htmlFor='document-crop-unit-dropdown' className=\"dimensions-settings-title\">{t('cropPopUp.dimensionInput.unitOfMeasurement')}</label>\n        </div>\n        <Dropdown\n          id='document-crop-unit-dropdown'\n          className='document-crop-dropdown'\n          ariaLabel={t('cropPopUp.dimensionInput.unitOfMeasurement')}\n          items={Object.keys(supportedUnits)}\n          currentSelectionKey={unit}\n          onClickItem={onUnitChange}\n        />\n      </div>\n      <div className=\"crop-dimensions-settings\">\n        <div className=\"dimensions-settings-title-container\">\n          <label htmlFor='document-crop-auto-trim-dropdown' className=\"dimensions-settings-title\">{t('cropPopUp.dimensionInput.autoTrim')}</label>\n        </div>\n        <Dropdown\n          id='document-crop-auto-trim-dropdown'\n          className='document-crop-dropdown'\n          ariaLabel={t('cropPopUp.dimensionInput.autoTrim')}\n          items={autoTrimOptions}\n          currentSelectionKey={autoTrim && autoTrimActive ? autoTrim : autoTrimOptions[0]}\n          onClickItem={onAutoTrimChange}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default DimensionsInput;\n","import Choice from '../Choice';\nimport PageNumberInput from 'components/PageReplacementModal/PageNumberInput';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst PagesToCropOptions = ({\n  cropMode,\n  onCropModeChange,\n  loadedDocumentPageCount,\n  selectedPages,\n  handlePageNumbersChanged,\n  handlePageNumberError,\n  pageNumberError,\n}) => {\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <Choice\n        label={t('cropPopUp.allPages')}\n        name=\"All\"\n        data-element=\"allPagesCropRadioButton\"\n        onChange={() => onCropModeChange('ALL_PAGES')}\n        checked={cropMode === 'ALL_PAGES'}\n        radio\n      />\n      <Choice\n        label={t('cropPopUp.singlePage')}\n        name=\"SINGLE_PAGE\"\n        data-element=\"singlePageCropRadioButton\"\n        onChange={() => onCropModeChange('SINGLE_PAGE')}\n        checked={cropMode === 'SINGLE_PAGE'}\n        radio\n      />\n      <div className='multi-page-crop-wrapper'>\n        <Choice\n          label={t('cropPopUp.multiPage')}\n          name=\"MULTI_PAGE\"\n          data-element=\"multiPageCropRadioButton\"\n          onChange={() => onCropModeChange('MULTI_PAGE')}\n          checked={cropMode === 'MULTI_PAGE'}\n          radio\n        />\n        {cropMode === 'MULTI_PAGE' && (\n          <span className='multi-page-crop-example'>\n          - {t('option.thumbnailPanel.multiSelectPagesExample')}\n          </span>\n        )}\n      </div>\n      {cropMode === 'MULTI_PAGE' && (\n        <>\n          <div className=\"document-crop-page-input-container\">\n            <PageNumberInput\n              data-element=\"multiPageCropPageNumberInput\"\n              selectedPageNumbers={selectedPages}\n              pageCount={loadedDocumentPageCount}\n              onSelectedPageNumbersChange={handlePageNumbersChanged}\n              onBlurHandler={handlePageNumbersChanged}\n              onError={handlePageNumberError}\n              pageNumberError={pageNumberError}\n            />\n          </div>\n          <div className=\"section extra-space-section\" />\n        </>\n      )}\n    </>\n  );\n};\n\nexport default PagesToCropOptions;\n\nPagesToCropOptions.propTypes = {\n  cropMode: PropTypes.string.isRequired,\n  onCropModeChange: PropTypes.func.isRequired,\n  loadedDocumentPageCount: PropTypes.number,\n  selectedPages: PropTypes.array,\n  handlePageNumbersChanged: PropTypes.func.isRequired,\n  handlePageNumberError: PropTypes.func.isRequired,\n  pageNumberError: PropTypes.string,\n};\n","import React from 'react';\nimport DataElements from 'constants/dataElement';\nimport './DocumentCropPopup.scss';\nimport DimensionsInput from './DimensionsInput';\nimport Button from 'components/Button';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport PagesToCropOptions from './PagesToCropOptions';\nimport CollapsibleSection from '../CollapsibleSection';\nimport classNames from 'classnames';\n\nconst DocumentCropPopupMobile = ({\n  className,\n  cropMode,\n  onCropModeChange,\n  loadedDocumentPageCount,\n  selectedPages,\n  handlePageNumbersChanged,\n  handlePageNumberError,\n  pageNumberError,\n  handleButtonPressed,\n  isCropping,\n  yOffset,\n  height,\n  xOffset,\n  width,\n  unit,\n  autoTrim,\n  supportedUnits,\n  onDimensionChange,\n  onUnitChange,\n  autoTrimActive,\n  setAutoTrimActive,\n  onAutoTrimChange,\n  autoTrimDimensions,\n  isCropDimensionsContainerActive,\n  cropAnnotation,\n  toggleCropDimensions,\n}) => {\n  const { t } = useTranslation();\n\n  return (\n    <div className={className} data-element={DataElements.DOCUMENT_CROP_POPUP}>\n      <div className=\"document-crop-mobile-section\">\n        <div className=\"document-crop-mobile-container\">\n          <CollapsibleSection\n            header={t('cropPopUp.title')}\n            isInitiallyExpanded={false}>\n            <div className=\"document-crop-section\">\n              <PagesToCropOptions\n                cropMode={cropMode}\n                onCropModeChange={onCropModeChange}\n                loadedDocumentPageCount={loadedDocumentPageCount}\n                selectedPages={selectedPages}\n                handlePageNumbersChanged={handlePageNumbersChanged}\n                handlePageNumberError={handlePageNumberError}\n                pageNumberError={pageNumberError}\n              />\n            </div>\n          </CollapsibleSection>\n          <CollapsibleSection\n            className={classNames({\n              'crop-inactive': !cropAnnotation,\n            })}\n            headingLevel={2}\n            header={t('cropPopUp.cropDimensions')}\n            isInitiallyExpanded={false}\n            isExpanded={Boolean(isCropDimensionsContainerActive && cropAnnotation)}\n            toggleHandler={toggleCropDimensions}>\n            <div className=\"document-crop-section\">\n              <DimensionsInput\n                yOffset={yOffset}\n                height={height}\n                xOffset={xOffset}\n                width={width}\n                unit={unit}\n                autoTrim={autoTrim}\n                supportedUnits={supportedUnits}\n                autoTrimOptions={[t('cropPopUp.dimensionInput.autoTrimCustom'), ...Object.keys(autoTrimDimensions)]}\n                onDimensionChange={onDimensionChange}\n                onUnitChange={onUnitChange}\n                autoTrimActive={autoTrimActive}\n                setAutoTrimActive={setAutoTrimActive}\n                onAutoTrimChange={onAutoTrimChange}\n              />\n            </div>\n          </CollapsibleSection>\n          <div className=\"buttons\">\n            <Button\n              className=\"cancel-button\"\n              dataElement=\"cropCancelButton\"\n              onClick={() => handleButtonPressed('cancel')}\n              label={t('action.cancel')}\n            />\n            <Button\n              className=\"save-button\"\n              dataElement=\"cropApplyButton\"\n              onClick={() => handleButtonPressed('apply')}\n              disabled={!isCropping || pageNumberError}\n              label={t('action.apply')}\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default DocumentCropPopupMobile;\n\nDocumentCropPopupMobile.propTypes = {\n  cropAnnotation: PropTypes.object,\n  isCropping: PropTypes.bool,\n  pageNumberError: PropTypes.string,\n  yOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  xOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  unit: PropTypes.string,\n  autoTrim: PropTypes.string,\n  supportedUnits: PropTypes.object,\n  autoTrimDimensions: PropTypes.object,\n  onDimensionChange: PropTypes.func,\n  onUnitChange: PropTypes.func,\n  autoTrimActive: PropTypes.bool,\n  setAutoTrimActive: PropTypes.func,\n  onAutoTrimChange: PropTypes.func,\n  handleButtonPressed: PropTypes.func,\n  className: PropTypes.string,\n  cropMode: PropTypes.string,\n  onCropModeChange: PropTypes.func,\n  loadedDocumentPageCount: PropTypes.number,\n  selectedPages: PropTypes.array,\n  handlePageNumbersChanged: PropTypes.func,\n  handlePageNumberError: PropTypes.func,\n  toggleCropDimensions: PropTypes.func,\n  isCropDimensionsContainerActive: PropTypes.bool,\n};","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport DimensionsInput from './DimensionsInput';\nimport core from 'core';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\nimport DataElements from 'constants/dataElement';\nimport Button from 'components/Button';\nimport DocumentCropPopupMobile from './DocumentCropPopupMobile';\nimport PagesToCropOptions from './PagesToCropOptions';\nimport CollapsibleSection from '../CollapsibleSection';\n\nimport './DocumentCropPopup.scss';\n\nconst DocumentCropPopup = ({\n  cropAnnotation,\n  cropMode,\n  onCropModeChange,\n  closeDocumentCropPopup,\n  applyCrop,\n  isCropping,\n  getPageHeight,\n  getPageWidth,\n  isPageRotated,\n  redrawCropAnnotations,\n  isInDesktopOnlyMode,\n  isMobile,\n  getPageCount,\n  getCurrentPage,\n  selectedPages,\n  onSelectedPagesChange,\n  shouldShowApplyCropWarning,\n  presetCropDimensions,\n}) => {\n  const { t } = useTranslation();\n\n  const className = classNames({\n    Popup: true,\n    DocumentCropPopup: true,\n    mobile: isMobile,\n  });\n\n  const loadedDocumentPageCount = getPageCount();\n\n  const handlePageNumbersChanged = (pageNumbers) => {\n    if (pageNumbers.length > 0) {\n      setPageNumberError(null);\n    }\n    onSelectedPagesChange(pageNumbers);\n  };\n\n  const handlePageNumberError = (pageNumber) => {\n    if (pageNumber) {\n      setPageNumberError(`${t('message.errorPageNumber')} ${loadedDocumentPageCount}`);\n    }\n  };\n\n  const cropNames = {\n    'ALL_PAGES': t('cropPopUp.allPages'),\n    'SINGLE_PAGE': t('cropPopUp.singlePage'),\n    'MULTI_PAGE': t('cropPopUp.multiPage'),\n  };\n\n  const supportedUnits = {\n    'Inches (in)': '\"',\n    'Centimeters (cm)': 'cm',\n    'Millimeters (mm)': 'mm',\n  };\n\n  const unitConversions = {\n    '\"': 1,\n    'cm': 2.54,\n    'mm': 25.4,\n    'pt': 72,\n  };\n\n  // set default to whichever unit is listed first in unitConversions\n  const [unit, setUnit] = useState(Object.getOwnPropertyNames(supportedUnits)[0]);\n\n  const [autoTrimActive, setAutoTrimActive] = useState(false);\n\n  // dimensions used to place auto trim crop annotations.\n  // default values are using inches\n  const autoTrimDimensions = presetCropDimensions;\n\n  const [autoTrim, setAutoTrim] = useState(null);\n\n  const [isCropDimensionsContainerActive, setCropDimensionsContainerActive] = useState(false);\n\n  const convertUnitsToPt = (val) => {\n    const unitToConvertTo = unitConversions[supportedUnits[unit]];\n    const pt = unitConversions['pt'];\n    return (val / unitToConvertTo) * pt;\n  };\n\n  const convertPtToUnits = (val, unitToConvertTo) => {\n    val /= unitConversions['pt'];\n    return val * unitConversions[supportedUnits[unitToConvertTo]];\n  };\n\n  const truncateInput = (input) => {\n    const INPUT_MAX_LENGTH = 5;\n    if (input) {\n      input = input.toString();\n\n      // if there is a decimal, allow an additional char to keep amount of other chars at INPUT_MAX_LENGTH\n      let specialChars = 0;\n      if (input.includes('.')) {\n        specialChars++;\n      }\n      if (input.length > INPUT_MAX_LENGTH + specialChars) {\n        input = input.slice(0, INPUT_MAX_LENGTH + specialChars);\n      }\n    }\n    return input;\n  };\n\n  const validateInput = (input, dimension) => {\n    if (input < 0) {\n      return 0;\n    }\n\n    const pageNumber = cropAnnotation ? cropAnnotation.getPageNumber() : getCurrentPage();\n\n    if (dimension) {\n      switch (dimension) {\n        case 'xOffset':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getWidth(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getWidth(), unit));\n          }\n          break;\n        case 'width':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getX(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getX(), unit));\n          }\n          break;\n        case 'yOffset':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getHeight(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getHeight(), unit));\n          }\n          break;\n        case 'height':\n          if (isPageRotated(pageNumber)) {\n            input = Math.min(input, convertPtToUnits(getPageWidth(pageNumber) - cropAnnotation.getY(), unit));\n          } else {\n            input = Math.min(input, convertPtToUnits(getPageHeight(pageNumber) - cropAnnotation.getY(), unit));\n          }\n          break;\n      }\n    }\n\n    input = Math.max(Number(input), 0);\n\n    return input;\n  };\n\n  const [yOffset, setYOffset] = useState();\n  const [height, setHeight] = useState();\n  const [xOffset, setXOffset] = useState();\n  const [width, setWidth] = useState();\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      // when user changes the input units or adjusts the crop annotation using the mouse, the input fields need to be updated\n      onUnitChange(unit);\n      const onCropAnnotationChanged = () => {\n        setYOffset(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getY(), unit))));\n        setHeight(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit))));\n        setXOffset(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getX(), unit))));\n        setWidth(Math.max(0, truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit))));\n\n        setAutoTrimActive(false);\n      };\n      core.addEventListener('annotationChanged', onCropAnnotationChanged);\n      return () => {\n        core.removeEventListener('annotationChanged', onCropAnnotationChanged);\n      };\n    }\n  }, [unit, cropAnnotation]);\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      redrawCropAnnotations(cropAnnotation.getRect());\n    }\n  }, [autoTrimActive]);\n\n  useEffect(() => {\n    if (cropAnnotation) {\n      const onPagesUpdated = () => {\n        setYOffset(truncateInput(convertPtToUnits(cropAnnotation.getY(), unit)));\n        setHeight(truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit)));\n        setXOffset(truncateInput(convertPtToUnits(cropAnnotation.getX(), unit)));\n        setWidth(truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit)));\n      };\n      core.addEventListener('pagesUpdated', onPagesUpdated);\n\n      return () => {\n        core.removeEventListener('pagesUpdated', onPagesUpdated);\n      };\n    }\n  }, []);\n\n  const onDimensionChange = (input, position) => {\n    if (!input) {\n      input = 0;\n    }\n\n    input = validateInput(input, position);\n\n    switch (position) {\n      case 'yOffset':\n        cropAnnotation.setY(convertUnitsToPt(input));\n        setYOffset(truncateInput(input));\n        break;\n      case 'height':\n        cropAnnotation.setHeight(convertUnitsToPt(input));\n        setHeight(truncateInput(input));\n        break;\n      case 'xOffset':\n        cropAnnotation.setX(convertUnitsToPt(input));\n        setXOffset(truncateInput(input));\n        break;\n      case 'width':\n        cropAnnotation.setWidth(convertUnitsToPt(input));\n        setWidth(truncateInput(input));\n        break;\n    }\n    if (cropAnnotation) {\n      redrawCropAnnotations(cropAnnotation.getRect());\n    }\n  };\n\n  const onUnitChange = (unit) => {\n    setUnit(unit);\n    setYOffset(truncateInput(convertPtToUnits(cropAnnotation.getY(), unit)));\n    setHeight(truncateInput(convertPtToUnits(cropAnnotation.getHeight(), unit)));\n    setXOffset(truncateInput(convertPtToUnits(cropAnnotation.getX(), unit)));\n    setWidth(truncateInput(convertPtToUnits(cropAnnotation.getWidth(), unit)));\n  };\n\n  const onAutoTrimChange = (autoTrim) => {\n    if (autoTrim && autoTrimDimensions.hasOwnProperty(autoTrim)) {\n      setAutoTrim(autoTrim);\n      setAutoTrimActive(true);\n\n      const y = autoTrimDimensions[autoTrim]['yOffset'] * unitConversions[supportedUnits[unit]];\n      const h = Math.max(0, autoTrimDimensions[autoTrim]['height'] * unitConversions[supportedUnits[unit]]);\n      const x = autoTrimDimensions[autoTrim]['xOffset'] * unitConversions[supportedUnits[unit]];\n      const w = Math.max(0, autoTrimDimensions[autoTrim]['width'] * unitConversions[supportedUnits[unit]]);\n\n      cropAnnotation.setY(convertUnitsToPt(y));\n      setYOffset(truncateInput(y));\n      cropAnnotation.setX(convertUnitsToPt(x));\n      setXOffset(truncateInput(x));\n      cropAnnotation.setHeight(convertUnitsToPt(h));\n      setHeight(truncateInput(h));\n      cropAnnotation.setWidth(convertUnitsToPt(w));\n      setWidth(truncateInput(w));\n\n      if (cropAnnotation) {\n        redrawCropAnnotations(cropAnnotation.getRect());\n      }\n    } else {\n      // if no auto-trim is chosen or if auto-trim gets disabled by adjusting the crop dimensions, reset it\n      setAutoTrim(undefined);\n    }\n  };\n\n  const handleButtonPressed = (button) => {\n    switch (button) {\n      case 'apply':\n        shouldShowApplyCropWarning ? openCropConfirmationWarning() : applyCrop();\n        break;\n      case 'cancel':\n        isCropping ? openCropCancellationWarning() : closeDocumentCropPopup();\n        break;\n    }\n  };\n\n  const dispatch = useDispatch();\n\n  const openCropConfirmationWarning = () => {\n    const title = t('cropPopUp.cropModal.applyTitle');\n    const message = t('cropPopUp.cropModal.applyMessage');\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        applyCrop();\n      },\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  const openCropCancellationWarning = () => {\n    const title = t('cropPopUp.cropModal.cancelTitle');\n    const message = t('cropPopUp.cropModal.cancelMessage');\n    const cancellationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        closeDocumentCropPopup();\n      },\n    };\n    dispatch(actions.showWarningMessage(cancellationWarning));\n  };\n\n  const [pageNumberError, setPageNumberError] = useState('');\n\n  if (isMobile && !isInDesktopOnlyMode) {\n    return (\n      <DocumentCropPopupMobile\n        className={className}\n        cropNames={cropNames}\n        cropMode={cropMode}\n        onCropModeChange={onCropModeChange}\n        loadedDocumentPageCount={loadedDocumentPageCount}\n        selectedPages={selectedPages}\n        handlePageNumbersChanged={handlePageNumbersChanged}\n        handlePageNumberError={handlePageNumberError}\n        pageNumberError={pageNumberError}\n        handleButtonPressed={handleButtonPressed}\n        isCropping={isCropping}\n        selectedPageNumbers={selectedPages}\n        pageCount={loadedDocumentPageCount}\n        onSelectedPageNumbersChange={handlePageNumbersChanged}\n        onBlurHandler={handlePageNumbersChanged}\n        onError={handlePageNumberError}\n        yOffset={yOffset}\n        height={height}\n        xOffset={xOffset}\n        width={width}\n        unit={unit}\n        autoTrim={autoTrim}\n        supportedUnits={supportedUnits}\n        autoTrimOptions={[t('cropPopUp.dimensionInput.autoTrimCustom'), ...Object.keys(autoTrimDimensions)]}\n        onDimensionChange={onDimensionChange}\n        onUnitChange={onUnitChange}\n        autoTrimActive={autoTrimActive}\n        setAutoTrimActive={setAutoTrimActive}\n        onAutoTrimChange={onAutoTrimChange}\n        autoTrimDimensions={autoTrimDimensions}\n        isCropDimensionsContainerActive={isCropDimensionsContainerActive}\n        cropAnnotation={cropAnnotation}\n        toggleCropDimensions={(newState) => setCropDimensionsContainerActive(newState)}\n      />\n    );\n  }\n\n  return (\n    <div className={className} data-element={DataElements.DOCUMENT_CROP_POPUP}>\n      <div className=\"document-crop-section\">\n        <h1 className=\"menu-title\">{t('cropPopUp.title')}</h1>\n        <PagesToCropOptions\n          cropMode={cropMode}\n          onCropModeChange={onCropModeChange}\n          loadedDocumentPageCount={loadedDocumentPageCount}\n          selectedPages={selectedPages}\n          handlePageNumbersChanged={handlePageNumbersChanged}\n          handlePageNumberError={handlePageNumberError}\n          pageNumberError={pageNumberError}\n        />\n      </div>\n      <div className={isCropping && cropAnnotation ? 'crop-active' : 'crop-inactive'}>\n        <div className=\"divider\" />\n        <div className=\"document-crop-section\">\n          <CollapsibleSection\n            className={classNames({\n              'crop-inactive': !cropAnnotation,\n            })}\n            header={t('cropPopUp.cropDimensions')}\n            headingLevel={2}\n            isInitiallyExpanded={false}\n            isExpanded={isCropDimensionsContainerActive && !!cropAnnotation}\n            onToggle={(newState) => setCropDimensionsContainerActive(newState)}\n          >\n            <DimensionsInput\n              yOffset={yOffset}\n              height={height}\n              xOffset={xOffset}\n              width={width}\n              unit={unit}\n              autoTrim={autoTrim}\n              supportedUnits={supportedUnits}\n              autoTrimOptions={[t('cropPopUp.dimensionInput.autoTrimCustom'), ...Object.keys(autoTrimDimensions)]}\n              onDimensionChange={onDimensionChange}\n              onUnitChange={onUnitChange}\n              autoTrimActive={autoTrimActive}\n              setAutoTrimActive={setAutoTrimActive}\n              onAutoTrimChange={onAutoTrimChange}\n            />\n          </CollapsibleSection>\n        </div>\n        <div className=\"divider\" />\n      </div>\n      <div className=\"buttons\">\n        <Button\n          className=\"cancel-button\"\n          dataElement=\"cropCancelButton\"\n          onClick={() => handleButtonPressed('cancel')}\n          label={t('action.cancel')}\n        />\n        <Button\n          className=\"save-button\"\n          dataElement=\"cropApplyButton\"\n          onClick={() => handleButtonPressed('apply')}\n          disabled={!isCropping || pageNumberError}\n          label={t('action.apply')}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default DocumentCropPopup;\n","import useOnCropAnnotationChangedOrSelected from './useOnCropAnnotationChangedOrSelected';\n\nexport default useOnCropAnnotationChangedOrSelected;","import { useEffect, useState } from 'react';\nimport core from 'core';\n\nexport default function useOnCropAnnotationChangedOrSelected(openDocumentCropPopup) {\n  const [cropAnnotation, setCropAnnotation] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'add' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setCropAnnotation(annotation);\n        openDocumentCropPopup();\n      }\n      if (action === 'delete' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setCropAnnotation(null);\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'selected' && annotation.ToolName === window.Core.Tools.ToolNames['CROP'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setCropAnnotation(annotation);\n        openDocumentCropPopup();\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n\n  return cropAnnotation;\n}\n","import './mobilePopupWrapper.scss';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst MobilePopupWrapper = ({ children }) => {\n  return (\n    <div\n      className='MobilePopupWrapper'\n      data-element=\"mobile-popup-wrapper\">\n      { children }\n    </div>\n  );\n};\n\nexport default MobilePopupWrapper;\n\nMobilePopupWrapper.propTypes = {\n  children: PropTypes.node.isRequired,\n};\n","import MobilePopupWrapper from './MobilePopupWrapper';\n\nexport default MobilePopupWrapper;","import React, { useEffect, useState, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DocumentCropPopup from './DocumentCropPopup';\nimport './DocumentCropPopup.scss';\nimport Draggable from 'react-draggable';\nimport useOnCropAnnotationChangedOrSelected from '../../hooks/useOnCropAnnotationChangedOrSelected';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport getRootNode from 'helpers/getRootNode';\nimport DataElements from 'constants/dataElement';\nimport MobilePopupWrapper from '../MobilePopupWrapper';\n\nfunction DocumentCropPopupContainer() {\n  const cropCreateTool = core.getTool(window.Core.Tools.ToolNames['CROP']);\n  const [\n    isOpen,\n    isInDesktopOnlyMode,\n    shouldShowApplyCropWarning,\n    presetCropDimensions,\n  ] = useSelector((state) => [\n    selectors.getActiveToolName(state) === window.Core.Tools.ToolNames['CROP'] &&\n    selectors.isElementOpen(state, DataElements.DOCUMENT_CROP_POPUP),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.shouldShowApplyCropWarning(state),\n    selectors.getPresetCropDimensions(state),\n  ]);\n\n  const dispatch = useDispatch();\n  const [isCropping, setIsCropping] = useState(cropCreateTool.getIsCropping());\n\n  const elementsToClose = ['leftPanel', 'searchPanel', 'notesPanel', 'redactionPanel', 'textEditingPanel'];\n\n  const openDocumentCropPopup = () => {\n    dispatch(actions.openElement(DataElements.DOCUMENT_CROP_POPUP));\n    setSelectedPages(cropCreateTool.getPagesToCrop());\n    // eslint-disable-next-line no-undef\n    dispatch(actions.closeElements(elementsToClose));\n    setIsCropping(cropCreateTool.getIsCropping());\n  };\n\n  useEffect(() => {\n    const handleToolModeChange = (newTool, oldTool) => {\n      if (newTool instanceof Core.Tools.CropCreateTool) { // eslint-disable-line no-undef\n        openDocumentCropPopup();\n      } else if (oldTool instanceof Core.Tools.CropCreateTool) { // eslint-disable-line no-undef\n        setIsCropping(cropCreateTool.getIsCropping());\n        reenableHeader();\n      }\n    };\n\n    const handleCropModeChange = (newMode) => {\n      setCropMode(newMode);\n    };\n\n    cropCreateTool.addEventListener('cropModeChanged', handleCropModeChange);\n    core.addEventListener('toolModeUpdated', handleToolModeChange);\n\n    return () => {\n      cropCreateTool.removeEventListener('cropModeChanged', handleCropModeChange);\n      core.removeEventListener('toolModeUpdated', handleToolModeChange);\n    };\n  });\n\n  const disableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = 'none';\n      header.style.opacity = '0.5';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = 'none';\n      toolsHeader.style.opacity = '0.5';\n    }\n  };\n\n  const reenableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = '';\n      header.style.opacity = '1';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = '';\n      toolsHeader.style.opacity = '1';\n    }\n  };\n\n  const cropAnnotation = useOnCropAnnotationChangedOrSelected(openDocumentCropPopup);\n\n  // re-enable other tools and panels while not cropping\n  useEffect(() => {\n    if (!isCropping) {\n      reenableHeader();\n    } else {\n      disableHeader();\n    }\n  }, [isCropping]);\n\n  const [cropMode, setCropMode] = useState(null);\n\n  useEffect(() => {\n    cropCreateTool.setCropMode('ALL_PAGES');\n    setCropMode('ALL_PAGES');\n  }, []);\n\n  const onCropModeChange = (cropName) => {\n    cropCreateTool.setCropMode(cropName);\n    setCropMode(cropName);\n  };\n\n  const [selectedPages, setSelectedPages] = useState(cropCreateTool.getPagesToCrop());\n\n  const onSelectedPagesChange = (pages) => {\n    if (pages.length) {\n      setSelectedPages(pages);\n      cropCreateTool.setPagesToCrop(pages);\n      if (cropCreateTool.getIsCropping()) {\n        if (cropMode === 'MULTI_PAGE') {\n          cropCreateTool.multiSelectAnnotations(pages);\n        }\n      }\n    }\n  };\n\n  const cropPopupRef = useRef();\n  const DEFAULT_POPUP_WIDTH = 250;\n  const DEFAULT_POPUP_HEIGHT = 250;\n  const documentContainerElement = core.getScrollViewElement();\n  const popupWidth = cropPopupRef.current?.getBoundingClientRect().width || DEFAULT_POPUP_WIDTH;\n  const popupHeight = cropPopupRef.current?.getBoundingClientRect().height || DEFAULT_POPUP_HEIGHT;\n  const documentViewer = core.getDocumentViewer(1);\n\n  const docContainer = getRootNode().querySelector('.DocumentContainer');\n  const xOffset = docContainer?.getBoundingClientRect().width || 0;\n\n  const cropPopupOffset = () => {\n    const offset = {\n      x: xOffset - popupWidth - 20,\n      y: documentContainerElement?.offsetTop + 10,\n    };\n    if (cropAnnotation && cropPopupRef?.current) {\n      offset.x = Math.min(offset.x, documentContainerElement.offsetWidth - popupWidth);\n    }\n    return offset;\n  };\n\n  const cropPopupBounds = () => {\n    const bounds = {\n      top: 0,\n      bottom: documentContainerElement.offsetHeight - popupHeight,\n      left: 0 - cropPopupOffset()['x'],\n      right: documentContainerElement.offsetWidth - cropPopupOffset()['x'] - popupWidth,\n    };\n    return bounds;\n  };\n\n  const closeAndReset = () => {\n    cropCreateTool.reset();\n    if (cropMode === 'MULTI_PAGE') {\n      // eslint-disable-next-line no-undef\n      setPagesToCrop([]);\n      cropCreateTool.setPagesToCrop([]);\n    }\n    dispatch(actions.closeElement(DataElements.DOCUMENT_CROP_POPUP));\n    reenableHeader();\n    core.setToolMode(window.Core.Tools.ToolNames.CROP);\n  };\n\n  const closeDocumentCropPopup = useCallback(() => {\n    closeAndReset();\n  }, []);\n\n  // disable/enable the 'apply' button when cropping\n  useEffect(() => {\n    setIsCropping(cropCreateTool.getIsCropping());\n  }, [cropAnnotation]);\n\n  const applyCrop = () => {\n    cropCreateTool.applyCrop();\n    cropCreateTool.reset();\n    reenableHeader();\n  };\n\n  const getPageHeight = useCallback((pageNumber) => {\n    if (isPageRotated(pageNumber)) {\n      return core.getPageWidth(pageNumber);\n    }\n    return core.getPageHeight(pageNumber);\n  }, []);\n\n  const getPageWidth = useCallback((pageNumber) => {\n    if (isPageRotated(pageNumber)) {\n      return core.getPageHeight(pageNumber);\n    }\n    return core.getPageWidth(pageNumber);\n  }, []);\n\n  const isPageRotated = useCallback((pageNumber) => {\n    // eslint-disable-next-line no-undef\n    return documentViewer?.getDocument().getPageRotation(pageNumber) % 180 !== 0;\n  });\n\n  const getPageCount = useCallback(() => {\n    // eslint-disable-next-line no-undef\n    return documentViewer?.getPageCount();\n  });\n\n  const getCurrentPage = useCallback(() => {\n    // eslint-disable-next-line no-undef\n    return documentViewer?.getCurrentPage();\n  });\n\n  const redrawCropAnnotations = useCallback((rect) => {\n    const cropAnnotations = core\n      .getAnnotationManager()\n      .getAnnotationsList()\n      .filter((annot) => {\n        return annot.ToolName === window.Core.Tools.ToolNames['CROP'];\n      });\n    cropAnnotations.forEach((annot) => {\n      annot.setRect(rect);\n      core.getAnnotationManager().drawAnnotationsFromList([annot]);\n    });\n  }, []);\n\n  const props = {\n    cropAnnotation,\n    cropMode,\n    onCropModeChange,\n    closeDocumentCropPopup,\n    applyCrop,\n    isCropping,\n    getPageHeight,\n    getPageWidth,\n    isPageRotated,\n    redrawCropAnnotations,\n    isInDesktopOnlyMode,\n    getPageCount,\n    getCurrentPage,\n    selectedPages,\n    onSelectedPagesChange,\n    shouldShowApplyCropWarning,\n    presetCropDimensions,\n  };\n\n  const isMobile = isMobileSize();\n\n  if (isOpen && core.getDocument()) {\n    if (isMobile && !isInDesktopOnlyMode) {\n      // disable draggable on mobile devices\n      return (\n        <MobilePopupWrapper>\n          <div className=\"DocumentCropPopupContainer\" ref={cropPopupRef}>\n            <DocumentCropPopup {...props} isMobile />\n          </div>\n        </MobilePopupWrapper>\n      );\n    }\n    return (\n      <Draggable\n        cancel={'input, button, .collapsible-menu, .ui__choice__label'}\n        positionOffset={cropPopupOffset()}\n        bounds={cropPopupBounds()}\n      >\n        <div className=\"DocumentCropPopupContainer\" ref={cropPopupRef}>\n          <DocumentCropPopup {...props} />\n        </div>\n      </Draggable>\n    );\n  }\n  return null;\n}\n\nexport default DocumentCropPopupContainer;\n","import DocumentCropPopupContainer from './DocumentCropPopupContainer';\n\nexport default DocumentCropPopupContainer;","import useOnClickPrepareSoundAnnotation from './useOnClickPrepareSoundAnnotation';\n\nexport default useOnClickPrepareSoundAnnotation;","import { useEffect } from 'react';\nimport core from 'core';\n\nexport default function useOnClickPrepareSoundAnnotation() {\n  function onAnnotationSelected(annotations, action) {\n    if (action === 'selected' && annotations[0] instanceof window.Core.Annotations.SoundAnnotation) {\n      const annotationHasAudioPrepared = (annotations[0].audio.blob);\n      if (!annotationHasAudioPrepared) {\n        annotations[0].prepareAudioBlob();\n      }\n    }\n  }\n\n  useEffect(() => {\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n}","import React, { useEffect, useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Button from '../Button';\nimport classNames from 'classnames';\nimport './AudioPlaybackPopup.scss';\nimport { COMMON_COLORS } from 'constants/commonColors';\n\nconst PLAY_AUDIO_SVG = 'ic_play_24px';\nconst PAUSE_AUDIO_SVG = 'ic_pause_24px';\nconst CLOSE_SVG = 'ic_close_black_24px';\n\nfunction AudioPlaybackPopup({\n  autoplay,\n  annotation,\n  handleAudioPlaybackError,\n  handleAudioInitializeError,\n  handleCloseAudioPlaybackPopup\n}) {\n  const [isPlayingAudio, setIsPlayingAudio] = useState(false);\n  const [durationValue, setDurationValue] = useState(0);\n  const [durationString, setDurationString] = useState('00:00');\n  const [currentTimeValue, setCurrentTimeValue] = useState(0);\n  const [currentTimeString, setCurrentTimeString] = useState('00:00');\n\n  const audioElementRef = useRef();\n\n  const { t } = useTranslation();\n\n  useEffect(() => {\n    const audioContext = new AudioContext();\n    audioContext\n      .createMediaElementSource(audioElementRef.current)\n      .connect(audioContext.destination);\n\n    return () => {\n      audioContext.close();\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!annotation || !annotation.audio || !annotation.audio.blob) {\n      handleAudioInitializeError('No audio data found. Cannot play this annotation\\'s audio.');\n      return;\n    }\n\n    audioElementRef.current.src = URL.createObjectURL(annotation.audio.blob);\n\n    if (autoplay) {\n      playAudio();\n    }\n  }, [annotation]);\n\n  async function toggleAudio() {\n    let isPlaying = false;\n\n    if (isPlayingAudio) {\n      await audioElementRef.current.pause();\n    } else {\n      isPlaying = true;\n      await audioElementRef.current.play()\n        .catch((error) => {\n          isPlaying = false;\n          handleAudioPlaybackError(error);\n        });\n    }\n\n    setIsPlayingAudio(isPlaying);\n  }\n\n  async function playAudio() {\n    let isPlaying = true;\n    await audioElementRef.current.play()\n      .catch((error) => {\n        isPlaying = false;\n        handleAudioPlaybackError(error);\n      });\n\n    setIsPlayingAudio(isPlaying);\n  }\n\n  function handleLoadedAudioMetadata(e) {\n    const duration = e.target.duration;\n    const timeStampString = getTimeStampStringFromSeconds(duration);\n    setDurationValue(duration);\n    setDurationString(timeStampString);\n  }\n\n  function handleAudioTimeUpdate(e) {\n    const currentTime = e.target.currentTime;\n    const timeStampString = getTimeStampStringFromSeconds(currentTime);\n    setCurrentTimeValue(currentTime);\n    setCurrentTimeString(timeStampString);\n  }\n\n  function getTimeStampStringFromSeconds(totalSeconds) {\n    const minutes = `${parseInt(`${(totalSeconds / 60) % 60}`, 10)}`.padStart(2, '0');\n    const seconds = `${parseInt(`${totalSeconds % 60}`, 10)}`.padStart(2, '0');\n    return `${minutes}:${seconds}`;\n  }\n\n  function handleOnProgressBarClick(e) {\n    audioElementRef.current.currentTime = e.target.value;\n  }\n\n  function handleAudioFinished() {\n    setIsPlayingAudio(false);\n  }\n\n  return (\n    <div className={classNames({\n      Popup: true,\n      AudioPlaybackPopup: true\n    })}\n    >\n      <div className=\"audio-popup-draggable-header\">\n        <svg width=\"12\" height=\"2\" viewBox=\"0 0 12 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <rect width=\"12\" height=\"2\" rx=\"1\" fill={COMMON_COLORS['gray4']}/>\n        </svg>\n      </div>\n      <div className=\"audio-popup-ui\">\n        <audio\n          data-testid=\"hidden-audio-element\"\n          ref={audioElementRef}\n          style={{ display: 'none' }}\n          onLoadedMetadata={handleLoadedAudioMetadata}\n          onTimeUpdate={handleAudioTimeUpdate}\n          onEnded={handleAudioFinished}\n        />\n\n        <Button\n          onClick={toggleAudio}\n          title={(isPlayingAudio ? t('action.pauseAudio') : t('action.playAudio'))}\n          img={(isPlayingAudio ? PAUSE_AUDIO_SVG : PLAY_AUDIO_SVG)}\n        />\n\n        <span className=\"current-time\">{currentTimeString}</span>\n        <input\n          className=\"audio-playback-progress\"\n          type=\"range\"\n          step=\"any\"\n          max={durationValue}\n          value={currentTimeValue}\n          onChange={handleOnProgressBarClick}\n        />\n        <span className=\"duration\">{durationString}</span>\n\n        <Button\n          title=\"action.close\"\n          img={CLOSE_SVG}\n          onClick={handleCloseAudioPlaybackPopup}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default AudioPlaybackPopup;","import React, { useEffect, useRef } from 'react';\nimport core from 'core';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport Draggable from 'react-draggable';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport useOnClickPrepareSoundAnnotation from 'src/hooks/useOnClickPrepareSoundAnnotation';\nimport DataElementWrapper from '../DataElementWrapper';\nimport AudioPlaybackPopup from './AudioPlaybackPopup';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nfunction AudioPlaybackPopupContainer() {\n  const [isOpen, shouldResetAudioPlaybackPosition, activeSoundAnnotation] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'audioPlaybackPopup'),\n      selectors.shouldResetAudioPlaybackPosition(state),\n      selectors.getActiveSoundAnnotation(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n  const draggableRef = useRef();\n  const isMobile = isMobileSize();\n\n  useOnClickPrepareSoundAnnotation();\n\n  useEffect(() => {\n    resetAudioPlaybackPosition();\n  }, [shouldResetAudioPlaybackPosition]);\n\n  useEffect(() => {\n    function onSoundAnnotationDeleted(annotations, action) {\n      if (action === 'delete') {\n        const shouldClosePopup = annotations.some((annotation) => {\n          return (\n            !activeSoundAnnotation ||\n            (annotation instanceof window.Core.Annotations.SoundAnnotation &&\n              annotation.Id === activeSoundAnnotation.Id)\n          );\n        });\n\n        if (shouldClosePopup) {\n          closeAudioPlaybackPopup();\n        }\n      }\n    }\n\n    core.addEventListener('annotationChanged', onSoundAnnotationDeleted);\n    return () => {\n      core.removeEventListener('annotationChanged', onSoundAnnotationDeleted);\n    };\n  }, [activeSoundAnnotation]);\n\n  function resetAudioPlaybackPosition() {\n    if (shouldResetAudioPlaybackPosition && draggableRef.current) {\n      dispatch(actions.triggerResetAudioPlaybackPosition(false));\n      draggableRef.current.state.x = 0;\n      draggableRef.current.state.y = 0;\n    }\n  }\n\n  function closeAudioPlaybackPopup() {\n    dispatch(actions.closeElement('audioPlaybackPopup'));\n  }\n\n  function handleAudioPlaybackError(error) {\n    if (error.toString().includes('no supported source')) {\n      console.error('Error playing annotation audio. The audio type is not supported in this browser.');\n    } else {\n      console.error('Error playing annotation audio.');\n    }\n  }\n\n  function handleAudioInitializeError(error) {\n    console.error(error);\n    closeAudioPlaybackPopup();\n  }\n\n  const renderAudioPlaybackPopup = () => (\n    <DataElementWrapper\n      data-element=\"audioPlaybackPopup\"\n      className={classNames({\n        Popup: true,\n        AudioPlaybackPopupContainer: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n    >\n      <AudioPlaybackPopup\n        autoplay\n        annotation={activeSoundAnnotation}\n        handleAudioPlaybackError={handleAudioPlaybackError}\n        handleAudioInitializeError={handleAudioInitializeError}\n        handleCloseAudioPlaybackPopup={closeAudioPlaybackPopup}\n      ></AudioPlaybackPopup>\n    </DataElementWrapper>\n  );\n\n  if (!isOpen) {\n    return null;\n  }\n\n  if (isMobile) {\n    return renderAudioPlaybackPopup();\n  }\n\n  return (\n    <Draggable ref={draggableRef} cancel=\".Button, .audio-playback-progress\">\n      {renderAudioPlaybackPopup()}\n    </Draggable>\n  );\n}\n\nexport default AudioPlaybackPopupContainer;","import AudioPlaybackPopupContainer from './AudioPlaybackPopupContainer';\n\nexport default AudioPlaybackPopupContainer;","import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\n\nimport './ProgressModal.scss';\n\nconst ProgressModal = () => {\n  const [isDisabled, isOpen, loadingProgress] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, DataElements.PROGRESS_MODAL),\n      selectors.isElementOpen(state, DataElements.PROGRESS_MODAL),\n      selectors.getLoadingProgress(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const progressCircle = useRef(null);\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(\n        actions.closeElements([\n          DataElements.SIGNATURE_MODAL,\n          DataElements.PRINT_MODAL,\n          DataElements.LOADING_MODAL,\n          DataElements.ERROR_MODAL,\n          DataElements.PASSWORD_MODAL,\n          DataElements.SAVE_MODAL,\n          DataElements.OPEN_FILE_MODAL,\n          DataElements.WARNING_MODAL,\n          DataElements.COLOR_PICKER_MODAL,\n          DataElements.SCALE_MODAL,\n          DataElements.SETTINGS_MODAL,\n          DataElements.CREATE_PORTFOLIO_MODAL,\n          DataElements.CUSTOM_STAMP_MODAL,\n          DataElements.INSERT_PAGE_MODAL,\n          DataElements.PAGE_REPLACEMENT_MODAL,\n          DataElements.PAGE_REDACT_MODAL,\n          DataElements.SIGNATURE_VALIDATION_MODAL,\n          DataElements.FILTER_MODAL,\n          DataElements.LINK_MODAL\n        ]),\n      );\n    }\n  }, [dispatch, isOpen]);\n\n  useEffect(() => {\n    const circle = progressCircle.current;\n\n    if (circle) {\n      const radius = circle.r.baseVal.value;\n      const circumference = radius * 2 * Math.PI;\n      const offset = circumference - loadingProgress * circumference;\n      circle.style.strokeDasharray = `${circumference} ${circumference}`;\n      circle.style.strokeDashoffset = offset;\n    }\n  }, [loadingProgress]);\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        Modal: true,\n        ProgressModal: true,\n        open: isOpen,\n        closed: !isOpen,\n      })}\n      data-element={DataElements.PROGRESS_MODAL}\n    >\n      <div className=\"container\">\n        <svg className=\"progress-ring\" width=\"54\" height=\"54\">\n          <circle\n            className=\"progress-ring__fill\"\n            r=\"25\"\n            cx=\"27\"\n            cy=\"27\"\n          />\n          <circle\n            ref={progressCircle}\n            className=\"progress-ring__circle\"\n            r=\"25\"\n            cx=\"27\"\n            cy=\"27\"\n          />\n        </svg>\n      </div>\n    </div>\n  );\n};\n\nexport default ProgressModal;\n","import ProgressModal from './ProgressModal';\n\nexport default ProgressModal;\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  aTypedArrayConstructor(C);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  nativeDefineProperty(it, key, { get: function () {\n    return getInternalState(this)[key];\n  } });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n      data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n  return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n  flat: function flat(/* depthArg = 1 */) {\n    var depthArg = arguments.length ? arguments[0] : undefined;\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n    return A;\n  }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Choice.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./HeaderItems.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FilePickerHandler.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return un$EndsWith\n      ? un$EndsWith(that, search, end)\n      : slice(that, end - search.length, end) === search;\n  }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: getOwnPropertyNames\n});\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es-x/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state == FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state == PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // strange IE + webpack dev server bug - use .bind(global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length == 1 ? console.error(a) : console.error(a, b);\n  }\n};\n","var Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    if (this.head) this.tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      this.head = entry.next;\n      if (this.tail === entry) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n","module.exports = typeof window == 'object' && typeof Deno != 'object';\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es-x/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n  if (!isObject(it)) return false;\n  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n  return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n  if (typeof ArrayBuffer == 'function') {\n    var buffer = new ArrayBuffer(8);\n    // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n","'use strict';\nvar global = require('../internals/global');\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar TypeError = global.TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')();\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) != '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) != '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = replacer;\n  if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n  if (!isArray(replacer)) replacer = function (key, value) {\n    if (isCallable($replacer)) value = call($replacer, this, key, value);\n    if (!isSymbol(value)) return value;\n  };\n  args[1] = replacer;\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n","var basePickBy = require('./_basePickBy'),\n    hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nmodule.exports = basePick;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","'use strict';\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\n\nvar TypeError = global.TypeError;\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg) : false;\n  var element, elementLen;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        elementLen = lengthOfArrayLike(element);\n        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n      } else {\n        if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setInterval = require('../internals/schedulers-fix').setInterval;\n\n// ie9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTimeout = require('../internals/schedulers-fix').setTimeout;\n\n// ie9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","module.exports = \"<svg viewBox=\\\"0 0 14 14\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12.5008 3.36876V2.90083C12.5008 2.12643 11.8745 1.50252 11.0998 1.50252H10.174L11.0242 2.97472L12.4981 3.36876H12.5008ZM11.0269 2.97472L9.71509 0.700749C9.32909 0.0303243 8.47341 -0.199535 7.80398 0.189037L2.97494 2.97472L6.25729 0.221874L6.2006 0.189037C5.53118 -0.196799 4.6755 0.0330607 4.2895 0.700749L2.97764 2.97472L3.37174 1.50252H2.90206C2.13006 1.50252 1.50113 2.12916 1.50113 2.90083V3.82575L0.699435 4.2882C0.0300095 4.67404 -0.199431 5.53054 0.189268 6.19823L2.97494 11.0253L0.22166 7.74431L0.189268 7.80177C-0.196731 8.4722 0.0327088 9.3287 0.702134 9.71453L2.97764 11.028L1.50383 10.634V11.1019C1.50383 11.8736 2.13006 12.5002 2.90476 12.5002H3.83062L2.98034 11.028V2.97472H11.0323H11.0269ZM2.97494 11.0253L4.2868 13.2993C4.6728 13.9697 5.52848 14.1995 6.1979 13.811L11.0242 11.0253H2.97494ZM13.8126 6.19823C14.1986 5.5278 13.9692 4.67404 13.2998 4.28547L11.0242 2.97198V11.0225L7.7419 13.7754L7.79859 13.8082C8.46801 14.1941 9.32369 13.9669 9.70969 13.2965L11.0215 11.0225L10.6274 12.4947H11.0971C11.8691 12.4947 12.4981 11.8681 12.4981 11.0964V10.1715L12.0581 10.426L13.2971 9.7118C13.9665 9.32596 14.1959 8.46946 13.8099 7.79904L11.0242 2.97198L13.7775 6.25296L13.8099 6.19549L13.8126 6.19823Z\\\" fill=\\\"#0206A8\\\"></path></svg>\"","module.exports = \"<svg enable-background=\\\"new 0 0 512 512\\\" viewBox=\\\"0 0 512 512\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m147.318 43.031c0-23.728-19.305-43.031-43.034-43.031h-61.25c-23.729 0-43.034 19.303-43.034 43.031v8.156h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v20.26h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v20.26h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v20.26h73.58c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-73.58v19.273h53.942c8.287 0 15.005 6.716 15.005 15s-6.718 15-15.005 15h-53.942v108.714l147.318-147.322z\\\"></path><path d=\\\"m468.965 364.376h-300.435l-147.621 147.624 104.797-.069v-54.182c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.163l20.25-.013v-73.788c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.768l20.25-.013v-54.116c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.097l20.249-.013v-73.722c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.702l20.25-.013v-54.051c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v54.031l20.25-.013v-73.656c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v73.636l19.262-.013v-53.985c0-8.284 6.718-15 15.005-15s15.005 6.716 15.005 15v53.966l12.711-.008c23.709-.017 43.002-19.321 43.002-43.032v-61.269c0-23.728-19.305-43.031-43.035-43.031z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>715F3224-4AF6-4D83-A726-4ED332A6C28F@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Status-Icons\\\" transform=\\\"translate(-52.000000, -4.000000)\\\"><g id=\\\"Icon---Valid-signature\\\" transform=\\\"translate(48.000000, 0.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#D52A2A\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"icon-/-operation-/-close\\\" fill=\\\"#FFFFFF\\\"><path d=\\\"M10.8133333,4.18666667 L8,7 L5.18666667,4.18666667 C5.08297506,4.08502857 4.91702494,4.08502857 4.81333333,4.18666667 L4.18666667,4.81333333 C4.08502857,4.91702494 4.08502857,5.08297506 4.18666667,5.18666667 L7,8 L4.18666667,10.8133333 C4.08502857,10.9170249 4.08502857,11.0829751 4.18666667,11.1866667 L4.81333333,11.8133333 C4.91702494,11.9149714 5.08297506,11.9149714 5.18666667,11.8133333 L8,9 L10.8133333,11.8133333 C10.9170249,11.9149714 11.0829751,11.9149714 11.1866667,11.8133333 L11.8133333,11.1866667 C11.9149714,11.0829751 11.9149714,10.9170249 11.8133333,10.8133333 L9,8 L11.8133333,5.18666667 C11.9149714,5.08297506 11.9149714,4.91702494 11.8133333,4.81333333 L11.1866667,4.18666667 C11.0829751,4.08502857 10.9170249,4.08502857 10.8133333,4.18666667 Z\\\" id=\\\"Path\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>0496DA3A-9C54-4BB7-A40B-DB678B321BD5@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Icon---Valid-signature\\\" transform=\\\"translate(-4.000000, -4.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#0F7B0F\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"icon-/-operation-/-checkmark\\\" fill=\\\"#FFFFFF\\\"><polygon id=\\\"Path\\\" points=\\\"6.52333333 9.60388889 4.29277778 7.39166667 3.33333333 8.38166667 6.52333333 11.5716667 13.1111111 4.95944444 12.1516667 4\\\"></polygon></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>931065BD-6AF9-4F89-80B2-27A9395FD293@3x</title><g id=\\\"Icons\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Status-Icons\\\" transform=\\\"translate(-28.000000, -4.000000)\\\"><g id=\\\"Icon---Signature-with-warning\\\" transform=\\\"translate(24.000000, 0.000000)\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#FFFFFF\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"24\\\" height=\\\"24\\\"></rect><g id=\\\"circle-check\\\" transform=\\\"translate(4.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" fill=\\\"#CC7700\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"8\\\"></circle><g id=\\\"warning\\\"><rect id=\\\"Rectangle\\\" fill=\\\"#D8D8D8\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"16\\\" height=\\\"16\\\"></rect><path d=\\\"M7.3,3.5 L8.7,3.5 L8.7,9 L7.3,9 L7.3,3.5 Z M7.3,10.5 L8.7,10.5 L8.7,12.5 L7.3,12.5 L7.3,10.5 Z\\\" id=\\\"Shape\\\" fill=\\\"#FFFFFF\\\" fill-rule=\\\"nonzero\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 21 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.15265 11.4646V14.5C9.15265 15.0523 9.59443 15.5 10.1394 15.5H15.073C15.618 15.5 16.0597 15.0523 16.0597 14.5V9.5C16.0597 8.94772 15.618 8.5 15.073 8.5H12.0779C12.1009 8.3367 12.1128 8.16976 12.1128 8C12.1128 6.067 10.5666 4.5 8.65929 4.5C6.75195 4.5 5.20575 6.067 5.20575 8C5.20575 9.933 6.75195 11.5 8.65929 11.5C8.8268 11.5 8.99152 11.4879 9.15265 11.4646ZM10.6327 14H14.5796V10H10.6327V14Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.75221 3.86222C1.01904 3.57034 0.5 2.8466 0.5 2C0.5 0.895431 1.38354 0 2.47345 0C3.20391 0 3.84167 0.402199 4.18289 1H16.8171C17.1583 0.402199 17.7961 0 18.5265 0C19.6165 0 20.5 0.895431 20.5 2C20.5 2.74028 20.1031 3.38663 19.5133 3.73244V16.2676C20.1031 16.6134 20.5 17.2597 20.5 18C20.5 19.1046 19.6165 20 18.5265 20C17.7961 20 17.1583 19.5978 16.8171 19H4.18289C3.84167 19.5978 3.20391 20 2.47345 20C1.38354 20 0.5 19.1046 0.5 18C0.5 17.1534 1.01904 16.4297 1.75221 16.1378V3.86222ZM4.38473 17.5C4.22972 16.8896 3.79755 16.392 3.2323 16.1532V3.84679C3.79755 3.60796 4.22972 3.11036 4.38473 2.5H16.6153C16.7938 3.2028 17.3397 3.7561 18.0332 3.93699V16.063C17.3397 16.2439 16.7938 16.7972 16.6153 17.5H4.38473Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.75 6.75V17.25H11.25V6.75H8.75ZM7.5 5C7.22386 5 7 5.22386 7 5.5V18.5C7 18.7761 7.22386 19 7.5 19H12.5C12.7761 19 13 18.7761 13 18.5V5.5C13 5.22386 12.7761 5 12.5 5H7.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.75 11.75V17.25H19.25V11.75H16.75ZM15.5 10C15.2239 10 15 10.2239 15 10.5V18.5C15 18.7761 15.2239 19 15.5 19H20.5C20.7761 19 21 18.7761 21 18.5V10.5C21 10.2239 20.7761 10 20.5 10H15.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M23 23H5V21H23V23Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13 4H15V7H20.5C20.7761 7 21 7.22386 21 7.5V12.5C21 12.7761 20.7761 13 20.5 13H15V15H19.5C19.7761 15 20 15.2239 20 15.5V20.5C20 20.7761 19.7761 21 19.5 21H15V24H13V21H8.5C8.22386 21 8 20.7761 8 20.5V15.5C8 15.2239 8.22386 15 8.5 15H13V13H7.5C7.22386 13 7 12.7761 7 12.5V7.5C7 7.22386 7.22386 7 7.5 7H13V4ZM8.75 8.75V11.25H19.25V8.75H8.75ZM9.75 19.25V16.75H18.25V19.25H9.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M7 15H4V13H7V15Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24 15H21V13H24V15Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M15 15H13V13H15V15Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.75 10.3333V17.6667H19.25V10.3333H16.75ZM15.5 8C15.2239 8 15 8.29848 15 8.66667V19.3333C15 19.7015 15.2239 20 15.5 20H20.5C20.7761 20 21 19.7015 21 19.3333V8.66667C21 8.29848 20.7761 8 20.5 8H15.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.75 8.75V19.25H11.25V8.75H8.75ZM7.5 7C7.22386 7 7 7.22386 7 7.5V20.5C7 20.7761 7.22386 21 7.5 21H12.5C12.7761 21 13 20.7761 13 20.5V7.5C13 7.22386 12.7761 7 12.5 7H7.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5 5H7V24H5V5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.5 7C9.22386 7 9 7.22386 9 7.5V12.5C9 12.7761 9.22386 13 9.5 13H22.5C22.7761 13 23 12.7761 23 12.5V7.5C23 7.22386 22.7761 7 22.5 7H9.5ZM10.75 8.75V11.25H21.25V8.75H10.75Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9 15.5C9 15.2239 9.22386 15 9.5 15H17.5C17.7761 15 18 15.2239 18 15.5V20.5C18 20.7761 17.7761 21 17.5 21H9.5C9.22386 21 9 20.7761 9 20.5V15.5ZM10.75 19.25V16.75H16.25V19.25H10.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.25 6L11.25 2.75C11.25 2.33579 11.5858 2 12 2C12.4142 2 12.75 2.33579 12.75 2.75L12.75 6H15.5L12 11L8.5 6H11.25Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M12 13L15.5 18H12.75V21.25C12.75 21.6642 12.4142 22 12 22C11.5858 22 11.25 21.6642 11.25 21.25V18H8.5L12 13Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M3.75 11.25C3.33579 11.25 3 11.5858 3 12C3 12.4142 3.33579 12.75 3.75 12.75L20.25 12.75C20.6642 12.75 21 12.4142 21 12C21 11.5858 20.6642 11.25 20.25 11.25L3.75 11.25Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M21 5H23V24H21V5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.5 7C5.22386 7 5 7.22386 5 7.5V12.5C5 12.7761 5.22386 13 5.5 13H18.5C18.7761 13 19 12.7761 19 12.5V7.5C19 7.22386 18.7761 7 18.5 7H5.5ZM6.75 8.75V11.25H17.25V8.75H6.75Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M10 15.5C10 15.2239 10.2239 15 10.5 15H18.5C18.7761 15 19 15.2239 19 15.5V20.5C19 20.7761 18.7761 21 18.5 21H10.5C10.2239 21 10 20.7761 10 20.5V15.5ZM11.75 19.25V16.75H17.25V19.25H11.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.75 10.75V16.25H19.25V10.75H16.75ZM15.5 9C15.2239 9 15 9.22386 15 9.5V17.5C15 17.7761 15.2239 18 15.5 18H20.5C20.7761 18 21 17.7761 21 17.5V9.5C21 9.22386 20.7761 9 20.5 9H15.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.75 10.75V21.25H11.25V10.75H8.75ZM7.5 9C7.22386 9 7 9.22386 7 9.5V22.5C7 22.7761 7.22386 23 7.5 23H12.5C12.7761 23 13 22.7761 13 22.5V9.5C13 9.22386 12.7761 9 12.5 9H7.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M23 7H5V5H23V7Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:none;} </style><path d=\\\"M3.5,15h-1C2.2239,15,2,14.7313,2,14.4V9.6C2,9.2687,2.2239,9,2.5,9h1C3.7761,9,4,9.2687,4,9.6v4.8 C4,14.7313,3.7761,15,3.5,15z\\\"></path><path d=\\\"M8,18.5H7c-0.2761,0-0.5-0.2646-0.5-0.5909V6.0909C6.5,5.7646,6.7239,5.5,7,5.5h1c0.2761,0,0.5,0.2646,0.5,0.5909v11.8182 C8.5,18.2354,8.2761,18.5,8,18.5z\\\"></path><path d=\\\"M12.5,21h-1c-0.2761,0-0.5-0.2687-0.5-0.6V3.6C11,3.2687,11.2239,3,11.5,3h1C12.7761,3,13,3.2687,13,3.6v16.8 C13,20.7313,12.7761,21,12.5,21z\\\"></path><path d=\\\"M17.5,11h-2V6c0-0.2761,0.2239-0.5,0.5-0.5h1c0.2761,0,0.5,0.2239,0.5,0.5V11z\\\"></path><path d=\\\"M22,11h-2V9.5C20,9.2239,20.2239,9,20.5,9h1C21.7761,9,22,9.2239,22,9.5V11z\\\"></path><g><path d=\\\"M20.4292,19.4717l-4.9009-4.9009c-0.2087-0.2087-0.2087-0.5472,0-0.7559l0.6583-0.6583 c0.2087-0.2087,0.5472-0.2087,0.7559,0l4.9009,4.9009c0.2087,0.2087,0.2087,0.5472,0,0.7559l-0.6583,0.6583 C20.9764,19.6804,20.638,19.6804,20.4292,19.4717z\\\"></path><path d=\\\"M16.9425,19.4717l4.9009-4.9009c0.2087-0.2087,0.2087-0.5472,0-0.7559l-0.6583-0.6583 c-0.2087-0.2087-0.5472-0.2087-0.7559,0l-4.9009,4.9009c-0.2087,0.2087-0.2087,0.5472,0,0.7559l0.6583,0.6583 C16.3953,19.6804,16.7338,19.6804,16.9425,19.4717z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 17 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0274 2H4.57183C3.89961 2 3.34961 2.55 3.34961 3.22222V14.2222L8.29961 11.4111L13.2496 14.2222V3.22222C13.2496 2.55 12.6996 2 12.0274 2ZM12.0274 12.0833L8.29961 9.94444L4.57183 12.0833V3.22222H12.0274V12.0833Z\\\" fill=\\\"#818A92\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 21\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 2.92791V19.0643C7 20.1297 7.81329 20.9961 8.81334 20.9961H14.1867C15.1867 20.9961 16 20.1297 16 19.0643V2.92791C16 1.86246 15.1867 0.996094 14.1867 0.996094L8.81334 0.996094C7.81329 0.996094 7 1.86246 7 2.92791ZM14.1867 2.92791V19.0643C14.1867 19.1161 14.1721 19.1515 14.1721 19.167C14.1721 19.1734 14.174 19.177 14.1794 19.1779L8.85505 19.1888C8.84598 19.1825 8.81334 19.1415 8.81334 19.0643V17.3597L11.24 17.3598C11.3652 17.3598 11.4666 17.258 11.4666 17.1325V15.7689C11.4666 15.6434 11.3652 15.5416 11.24 15.5416L8.81334 15.5415V13.7234L12.1466 13.7234C12.2718 13.7234 12.3733 13.6217 12.3733 13.4962V12.1325C12.3733 12.007 12.2718 11.9052 12.1466 11.9052L8.81334 11.9052V10.087L11.24 10.0871C11.3652 10.0871 11.4666 9.98531 11.4666 9.85979V8.49616C11.4666 8.37064 11.3652 8.26888 11.24 8.26888L8.81334 8.26882V6.45064L12.1466 6.4507C12.2718 6.4507 12.3733 6.34895 12.3733 6.22343V4.85979C12.3733 4.73427 12.2718 4.63252 12.1466 4.63252L8.81334 4.63246V2.92791C8.81425 2.85609 8.83873 2.817 8.8206 2.81427L14.1449 2.80337C14.154 2.80973 14.1867 2.85064 14.1867 2.92791Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 18.0416C1.49324 18.1671 1.39176 18.2689 1.26657 18.2689H0.227122C0.0251827 18.2689 -0.0759488 18.5137 0.0668441 18.6569L2.23964 20.8354C2.32816 20.9242 2.47167 20.9242 2.56019 20.8354L4.73299 18.6569C4.87578 18.5137 4.77465 18.2689 4.57271 18.2689H3.53326C3.40807 18.2689 3.30659 18.1671 3.30659 18.0416L3.30659 16.678C3.30659 16.5525 3.2051 16.4507 3.07992 16.4507H1.71991C1.59473 16.4507 1.49324 16.5525 1.49324 16.678L1.49324 18.0416Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M3.30659 3.9507C3.30659 3.82518 3.40807 3.72343 3.53326 3.72343L4.57271 3.72343C4.77465 3.72343 4.87578 3.47862 4.73298 3.33545L2.56019 1.15686C2.47167 1.06811 2.32816 1.06811 2.23964 1.15686L0.0668439 3.33545C-0.075949 3.47862 0.0251829 3.72343 0.227123 3.72343L1.26657 3.72343C1.39176 3.72343 1.49324 3.82518 1.49324 3.9507L1.49324 5.31434C1.49324 5.43986 1.59472 5.54161 1.71991 5.54161L3.07992 5.54161C3.2051 5.54161 3.30659 5.43986 3.30659 5.31434L3.30659 3.9507Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 12.1325C1.49324 12.007 1.59472 11.9052 1.71991 11.9052H3.07992C3.2051 11.9052 3.30659 12.007 3.30659 12.1325V13.9507C3.30659 14.0762 3.2051 14.178 3.07992 14.178H1.71991C1.59472 14.178 1.49324 14.0762 1.49324 13.9507V12.1325Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M1.49324 7.58707C1.49324 7.46155 1.59472 7.35979 1.71991 7.35979H3.07992C3.2051 7.35979 3.30659 7.46155 3.30659 7.58707V9.40525C3.30659 9.53077 3.2051 9.63252 3.07992 9.63252H1.71991C1.59472 9.63252 1.49324 9.53077 1.49324 9.40525V7.58707Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7.16634 18.6666H15.1663C15.9017 18.6666 16.4997 18.0686 16.4997 17.3333V9.33325C16.4997 8.59792 15.9017 7.99992 15.1663 7.99992H7.16634C6.43101 7.99992 5.83301 8.59792 5.83301 9.33325V17.3333C5.83301 18.0686 6.43101 18.6666 7.16634 18.6666ZM7.16634 9.33325H15.1663L15.1677 17.3333H7.16634V9.33325Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M17.833 5.33325H9.83301V6.66659H17.833V14.6666H19.1663V6.66659C19.1663 5.93125 18.5683 5.33325 17.833 5.33325Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.2014 6.95828V5.27772C16.2014 4.35342 15.4451 3.59717 14.5208 3.59717H9.47917C8.55486 3.59717 7.79861 4.35342 7.79861 5.27772V6.95828H4.4375V8.63883H6.11806V18.7222C6.11806 19.6465 6.87431 20.4027 7.79861 20.4027H16.2014C17.1257 20.4027 17.8819 19.6465 17.8819 18.7222V8.63883H19.5625V6.95828H16.2014ZM9.47917 5.27772H14.5208V6.95828H9.47917V5.27772ZM7.79861 18.7222V8.63883H16.2014V18.7222H7.79861ZM12.8403 10.3194H14.5208V17.0416H12.8403V10.3194ZM9.47917 10.3194H11.1597V17.0416H9.47917V10.3194Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.75 10.2222V17.7778H15.25V10.2222H12.75ZM11.5 8.66667C11.2239 8.66667 11 8.86565 11 9.11111V18.8889C11 19.1343 11.2239 19.3333 11.5 19.3333H16.5C16.7761 19.3333 17 19.1343 17 18.8889V9.11111C17 8.86565 16.7761 8.66667 16.5 8.66667H11.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5 22L5 6L7 6L7 22H5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 22V6L23 6V22H21Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 28 28\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.75 12.75V15.25H18.25V12.75H9.75ZM8.5 11C8.22386 11 8 11.2239 8 11.5V16.5C8 16.7761 8.22386 17 8.5 17H19.5C19.7761 17 20 16.7761 20 16.5V11.5C20 11.2239 19.7761 11 19.5 11H8.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M23 8H5V6H23V8Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M23 22H5V20H23V22Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\"><path d=\\\"M11.1716 2H4C2.8954 2 2 2.8954 2 4V18C2 19.1046 2.8954 20 4 20H8V18H4V4H11V7.5C11 7.7761 11.2239 8 11.5 8H15V10.8432L17 8.8432V7.8284C17 7.298 16.7893 6.7892 16.4142 6.4142L12.5858 2.5858C12.2107 2.2107 11.702 2 11.1716 2Z\\\"></path><path d=\\\"M21.5606 12.0339L20.1464 10.6197C19.8535 10.3268 19.4696 10.1804 19.0857 10.1804C18.7018 10.1804 18.3179 10.3268 18.025 10.6197L10.1803 18.4644V22H13.7158L21.5605 14.1553C22.1465 13.5695 22.1465 12.6198 21.5606 12.0339ZM13.0946 20.5H11.6804V19.0857L16.9919 13.7733L18.4066 15.188L13.0946 20.5ZM19.4673 14.1273L18.0526 12.7125L19.0844 11.6805L19.0859 11.6804L20.5 13.0946L19.4673 14.1273Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#0A93E4\\\"></path><path d=\\\"M7.90288 16.142C8.11772 16.142 8.29228 16.0829 8.42656 15.9647C8.56083 15.8466 8.63066 15.6895 8.63603 15.4934H9.72771C9.72502 15.7888 9.64445 16.0601 9.48601 16.3071C9.32756 16.5515 9.11003 16.7422 8.83342 16.8792C8.55949 17.0134 8.25603 17.0806 7.92302 17.0806C7.29997 17.0806 6.80852 16.8832 6.44865 16.4884C6.08879 16.0909 5.90886 15.5431 5.90886 14.8448V14.7683C5.90886 14.0969 6.08745 13.5612 6.44462 13.161C6.8018 12.7609 7.29191 12.5608 7.91496 12.5608C8.46013 12.5608 8.89653 12.7166 9.22416 13.0281C9.55449 13.3369 9.72233 13.7491 9.72771 14.2648H8.63603C8.63066 14.0392 8.56083 13.8566 8.42656 13.7169C8.29228 13.5746 8.11503 13.5034 7.89482 13.5034C7.62358 13.5034 7.41813 13.6028 7.27849 13.8015C7.14152 13.9976 7.07304 14.3171 7.07304 14.7603V14.8811C7.07304 15.3296 7.14152 15.6519 7.27849 15.8479C7.41545 16.0439 7.62358 16.142 7.90288 16.142Z\\\" fill=\\\"#0A93E4\\\"></path><path d=\\\"M12.5881 17C12.5344 16.8953 12.4955 16.765 12.4713 16.6093C12.1893 16.9235 11.8228 17.0806 11.3716 17.0806C10.9446 17.0806 10.5901 16.957 10.3081 16.71C10.0288 16.4629 9.88916 16.1514 9.88916 15.7754C9.88916 15.3135 10.0597 14.959 10.4008 14.7119C10.7445 14.4648 11.24 14.34 11.8872 14.3373H12.423V14.0875C12.423 13.8861 12.3706 13.725 12.2659 13.6041C12.1638 13.4833 12.0013 13.4229 11.7784 13.4229C11.5824 13.4229 11.428 13.4698 11.3152 13.5638C11.2051 13.6578 11.15 13.7867 11.15 13.9506H9.98584C9.98584 13.6981 10.0637 13.4645 10.2195 13.2496C10.3752 13.0348 10.5955 12.8669 10.8801 12.7461C11.1648 12.6226 11.4844 12.5608 11.8389 12.5608C12.376 12.5608 12.8016 12.6964 13.1158 12.9677C13.4327 13.2362 13.5912 13.6149 13.5912 14.1036V15.9929C13.5939 16.4065 13.6516 16.7194 13.7644 16.9315V17H12.5881ZM11.6254 16.1903C11.7972 16.1903 11.9557 16.1527 12.1007 16.0775C12.2457 15.9996 12.3531 15.8962 12.423 15.7673V15.0181H11.9879C11.4052 15.0181 11.095 15.2195 11.0574 15.6223L11.0533 15.6908C11.0533 15.8358 11.1044 15.9553 11.2064 16.0493C11.3085 16.1433 11.4481 16.1903 11.6254 16.1903Z\\\" fill=\\\"#0A93E4\\\"></path><path d=\\\"M13.9742 14.7885C13.9742 14.109 14.1259 13.5679 14.4294 13.165C14.7356 12.7622 15.1532 12.5608 15.6822 12.5608C16.1065 12.5608 16.457 12.7192 16.7336 13.0361V10.8125H17.9018V17H16.8504L16.794 16.5367C16.504 16.8993 16.1307 17.0806 15.6742 17.0806C15.1612 17.0806 14.749 16.8792 14.4375 16.4763C14.1286 16.0708 13.9742 15.5082 13.9742 14.7885ZM15.1384 14.873C15.1384 15.2812 15.2096 15.5941 15.3519 15.8116C15.4942 16.0292 15.701 16.1379 15.9722 16.1379C16.3321 16.1379 16.5859 15.9862 16.7336 15.6827V13.9626C16.5886 13.6592 16.3375 13.5074 15.9803 13.5074C15.419 13.5074 15.1384 13.9626 15.1384 14.873Z\\\" fill=\\\"#0A93E4\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#2A5AB3\\\"></path><path d=\\\"M5.78801 14.7885C5.78801 14.109 5.93974 13.5679 6.24321 13.165C6.54936 12.7622 6.96696 12.5608 7.49602 12.5608C7.92033 12.5608 8.2708 12.7192 8.54741 13.0361V10.8125H9.71562V17H8.66423L8.60783 16.5367C8.31779 16.8993 7.9445 17.0806 7.48796 17.0806C6.97502 17.0806 6.56279 16.8792 6.25126 16.4763C5.94243 16.0708 5.78801 15.5082 5.78801 14.7885ZM6.95219 14.873C6.95219 15.2812 7.02336 15.5941 7.16569 15.8116C7.30803 16.0292 7.51481 16.1379 7.78605 16.1379C8.14592 16.1379 8.3997 15.9862 8.54741 15.6827V13.9626C8.40239 13.6592 8.15129 13.5074 7.79411 13.5074C7.23283 13.5074 6.95219 13.9626 6.95219 14.873Z\\\" fill=\\\"#2A5AB3\\\"></path><path d=\\\"M10.1067 14.7804C10.1067 14.348 10.1899 13.9626 10.3564 13.6243C10.5229 13.2859 10.762 13.024 11.0735 12.8387C11.3877 12.6534 11.7516 12.5608 12.1652 12.5608C12.7533 12.5608 13.2327 12.7407 13.6033 13.1006C13.9766 13.4604 14.1847 13.9492 14.2277 14.5669L14.2357 14.865C14.2357 15.5337 14.0491 16.0708 13.6758 16.4763C13.3025 16.8792 12.8016 17.0806 12.1732 17.0806C11.5448 17.0806 11.0426 16.8792 10.6666 16.4763C10.2933 16.0735 10.1067 15.5256 10.1067 14.8328V14.7804ZM11.2709 14.865C11.2709 15.2786 11.3488 15.5955 11.5045 15.8157C11.6603 16.0332 11.8832 16.142 12.1732 16.142C12.4552 16.142 12.6754 16.0345 12.8339 15.8197C12.9923 15.6022 13.0715 15.2557 13.0715 14.7804C13.0715 14.3749 12.9923 14.0607 12.8339 13.8378C12.6754 13.6149 12.4525 13.5034 12.1652 13.5034C11.8805 13.5034 11.6603 13.6149 11.5045 13.8378C11.3488 14.058 11.2709 14.4004 11.2709 14.865Z\\\" fill=\\\"#2A5AB3\\\"></path><path d=\\\"M16.4355 16.142C16.6503 16.142 16.8249 16.0829 16.9592 15.9647C17.0935 15.8466 17.1633 15.6895 17.1687 15.4934H18.2603C18.2576 15.7888 18.1771 16.0601 18.0186 16.3071C17.8602 16.5515 17.6427 16.7422 17.366 16.8792C17.0921 17.0134 16.7887 17.0806 16.4556 17.0806C15.8326 17.0806 15.3411 16.8832 14.9813 16.4884C14.6214 16.0909 14.4415 15.5431 14.4415 14.8448V14.7683C14.4415 14.0969 14.6201 13.5612 14.9773 13.161C15.3344 12.7609 15.8245 12.5608 16.4476 12.5608C16.9928 12.5608 17.4292 12.7166 17.7568 13.0281C18.0871 13.3369 18.255 13.7491 18.2603 14.2648H17.1687C17.1633 14.0392 17.0935 13.8566 16.9592 13.7169C16.8249 13.5746 16.6477 13.5034 16.4274 13.5034C16.1562 13.5034 15.9508 13.6028 15.8111 13.8015C15.6742 13.9976 15.6057 14.3171 15.6057 14.7603V14.8811C15.6057 15.3296 15.6742 15.6519 15.8111 15.8479C15.9481 16.0439 16.1562 16.142 16.4355 16.142Z\\\" fill=\\\"#2A5AB3\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#707C8D\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#CC7700\\\"></path><path d=\\\"M6.98039 17H5.81218V12.6414H6.98039V17ZM5.7437 11.5134C5.7437 11.3389 5.80144 11.1952 5.91691 11.0824C6.03508 10.9696 6.19487 10.9132 6.39628 10.9132C6.59501 10.9132 6.75346 10.9696 6.87163 11.0824C6.98979 11.1952 7.04887 11.3389 7.04887 11.5134C7.04887 11.6907 6.98845 11.8357 6.8676 11.9485C6.74943 12.0613 6.59233 12.1177 6.39628 12.1177C6.20024 12.1177 6.04179 12.0613 5.92094 11.9485C5.80278 11.8357 5.7437 11.6907 5.7437 11.5134Z\\\" fill=\\\"#CC7700\\\"></path><path d=\\\"M8.70483 12.6414L8.74109 13.1288C9.04993 12.7501 9.46753 12.5608 9.9939 12.5608C10.5552 12.5608 10.9406 12.7823 11.15 13.2255C11.4562 12.7823 11.8926 12.5608 12.4592 12.5608C12.9319 12.5608 13.2837 12.6991 13.5146 12.9757C13.7456 13.2496 13.8611 13.6632 13.8611 14.2164V17H12.6929V14.2205C12.6929 13.9734 12.6445 13.7935 12.5479 13.6807C12.4512 13.5652 12.2806 13.5074 12.0363 13.5074C11.6871 13.5074 11.4454 13.674 11.3112 14.007L11.3152 17H10.151V14.2245C10.151 13.972 10.1013 13.7894 10.002 13.6766C9.90259 13.5638 9.7334 13.5074 9.49438 13.5074C9.16406 13.5074 8.92505 13.6444 8.77734 13.9183V17H7.61316V12.6414H8.70483Z\\\" fill=\\\"#CC7700\\\"></path><path d=\\\"M14.2602 14.7885C14.2602 14.1198 14.4187 13.5813 14.7356 13.1731C15.0551 12.7649 15.4848 12.5608 16.0246 12.5608C16.5026 12.5608 16.8746 12.7246 17.1405 13.0522L17.1888 12.6414H18.2442V16.855C18.2442 17.2363 18.1569 17.568 17.9824 17.85C17.8105 18.132 17.5675 18.3468 17.2533 18.4945C16.939 18.6422 16.5711 18.7161 16.1495 18.7161C15.8299 18.7161 15.5184 18.6516 15.2149 18.5227C14.9115 18.3965 14.6818 18.2327 14.5261 18.0312L15.0417 17.3223C15.3317 17.6472 15.6835 17.8097 16.0971 17.8097C16.406 17.8097 16.6463 17.7264 16.8182 17.5599C16.9901 17.3961 17.076 17.1625 17.076 16.859V16.6254C16.8075 16.9288 16.4543 17.0806 16.0166 17.0806C15.4929 17.0806 15.0686 16.8765 14.7436 16.4683C14.4213 16.0574 14.2602 15.5135 14.2602 14.8368V14.7885ZM15.4244 14.873C15.4244 15.2678 15.5036 15.578 15.6621 15.8036C15.8205 16.0265 16.038 16.1379 16.3147 16.1379C16.6691 16.1379 16.9229 16.005 17.076 15.7391V13.9062C16.9202 13.6404 16.6691 13.5074 16.3227 13.5074C16.0434 13.5074 15.8232 13.6216 15.6621 13.8499C15.5036 14.0781 15.4244 14.4192 15.4244 14.873Z\\\" fill=\\\"#CC7700\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#BF3535\\\"></path><path d=\\\"M10.5737 14.861C10.5737 15.5323 10.4206 16.0708 10.1144 16.4763C9.81096 16.8792 9.40007 17.0806 8.88176 17.0806C8.44133 17.0806 8.08549 16.9275 7.81425 16.6213V18.6758H6.65007V12.6414H7.72966L7.76994 13.0684C8.05192 12.73 8.41984 12.5608 8.8737 12.5608C9.41081 12.5608 9.82841 12.7595 10.1265 13.157C10.4246 13.5544 10.5737 14.1023 10.5737 14.8005V14.861ZM9.40947 14.7764C9.40947 14.3708 9.33696 14.058 9.19194 13.8378C9.0496 13.6176 8.84147 13.5074 8.56755 13.5074C8.20231 13.5074 7.95122 13.6471 7.81425 13.9264V15.7109C7.95659 15.9983 8.21037 16.142 8.57561 16.142C9.13151 16.142 9.40947 15.6868 9.40947 14.7764Z\\\" fill=\\\"#BF3535\\\"></path><path d=\\\"M10.7875 14.7885C10.7875 14.109 10.9392 13.5679 11.2427 13.165C11.5488 12.7622 11.9664 12.5608 12.4955 12.5608C12.9198 12.5608 13.2703 12.7192 13.5469 13.0361V10.8125H14.7151V17H13.6637L13.6073 16.5367C13.3173 16.8993 12.944 17.0806 12.4874 17.0806C11.9745 17.0806 11.5623 16.8792 11.2507 16.4763C10.9419 16.0708 10.7875 15.5082 10.7875 14.7885ZM11.9517 14.873C11.9517 15.2812 12.0228 15.5941 12.1652 15.8116C12.3075 16.0292 12.5143 16.1379 12.7855 16.1379C13.1454 16.1379 13.3992 15.9862 13.5469 15.6827V13.9626C13.4019 13.6592 13.1508 13.5074 12.7936 13.5074C12.2323 13.5074 11.9517 13.9626 11.9517 14.873Z\\\" fill=\\\"#BF3535\\\"></path><path d=\\\"M15.6057 17V13.4954H14.9571V12.6414H15.6057V12.2708C15.6057 11.782 15.7453 11.4033 16.0246 11.1348C16.3066 10.8635 16.7 10.7279 17.2049 10.7279C17.366 10.7279 17.5634 10.7548 17.7971 10.8085L17.785 11.7108C17.6883 11.6866 17.5701 11.6746 17.4305 11.6746C16.9928 11.6746 16.7739 11.88 16.7739 12.2909V12.6414H17.64V13.4954H16.7739V17H15.6057Z\\\" fill=\\\"#BF3535\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#FF723F\\\"></path><path d=\\\"M10.6582 14.861C10.6582 15.5323 10.5052 16.0708 10.199 16.4763C9.89555 16.8792 9.48466 17.0806 8.96635 17.0806C8.52592 17.0806 8.17009 16.9275 7.89885 16.6213V18.6758H6.73466V12.6414H7.81425L7.85454 13.0684C8.13652 12.73 8.50444 12.5608 8.9583 12.5608C9.49541 12.5608 9.91301 12.7595 10.2111 13.157C10.5092 13.5544 10.6582 14.1023 10.6582 14.8005V14.861ZM9.49406 14.7764C9.49406 14.3708 9.42155 14.058 9.27653 13.8378C9.1342 13.6176 8.92607 13.5074 8.65214 13.5074C8.28691 13.5074 8.03581 13.6471 7.89885 13.9264V15.7109C8.04118 15.9983 8.29497 16.142 8.6602 16.142C9.21611 16.142 9.49406 15.6868 9.49406 14.7764Z\\\" fill=\\\"#FF723F\\\"></path><path d=\\\"M14.9769 14.861C14.9769 15.5323 14.8239 16.0708 14.5177 16.4763C14.2142 16.8792 13.8033 17.0806 13.285 17.0806C12.8446 17.0806 12.4888 16.9275 12.2175 16.6213V18.6758H11.0533V12.6414H12.1329L12.1732 13.0684C12.4552 12.73 12.8231 12.5608 13.277 12.5608C13.8141 12.5608 14.2317 12.7595 14.5298 13.157C14.8279 13.5544 14.9769 14.1023 14.9769 14.8005V14.861ZM13.8127 14.7764C13.8127 14.3708 13.7402 14.058 13.5952 13.8378C13.4529 13.6176 13.2448 13.5074 12.9708 13.5074C12.6056 13.5074 12.3545 13.6471 12.2175 13.9264V15.7109C12.3599 15.9983 12.6136 16.142 12.9789 16.142C13.5348 16.142 13.8127 15.6868 13.8127 14.7764Z\\\" fill=\\\"#FF723F\\\"></path><path d=\\\"M16.7658 11.5698V12.6414H17.5111V13.4954H16.7658V15.6707C16.7658 15.8318 16.7967 15.9473 16.8585 16.0171C16.9202 16.0869 17.0384 16.1218 17.213 16.1218C17.3419 16.1218 17.456 16.1124 17.5554 16.0936V16.9758C17.3271 17.0457 17.0921 17.0806 16.8504 17.0806C16.034 17.0806 15.6178 16.6683 15.6016 15.8439V13.4954H14.9652V12.6414H15.6016V11.5698H16.7658Z\\\" fill=\\\"#FF723F\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.11943 13.9425L9.85258 12.6414H11.0973L9.85661 14.7764L11.1497 17H9.90092L9.12346 15.6304L8.35002 17H7.09721L8.3903 14.7764L7.15361 12.6414H8.40239L9.11943 13.9425Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M12.5559 17H11.3877V10.8125H12.5559V17Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M15.5493 15.7955C15.5493 15.6532 15.4781 15.5417 15.3358 15.4612C15.1961 15.3779 14.9705 15.3041 14.659 15.2396C13.6224 15.0221 13.1041 14.5817 13.1041 13.9183C13.1041 13.5316 13.2639 13.2094 13.5835 12.9515C13.9057 12.691 14.326 12.5608 14.8443 12.5608C15.3975 12.5608 15.8393 12.691 16.1696 12.9515C16.5026 13.212 16.6691 13.5504 16.6691 13.9667H15.505C15.505 13.8002 15.4513 13.6632 15.3438 13.5558C15.2364 13.4457 15.0686 13.3906 14.8403 13.3906C14.6442 13.3906 14.4925 13.4349 14.3851 13.5236C14.2777 13.6122 14.224 13.725 14.224 13.8619C14.224 13.9908 14.2844 14.0956 14.4052 14.1761C14.5288 14.254 14.7356 14.3225 15.0256 14.3816C15.3156 14.438 15.56 14.5024 15.7587 14.575C16.3737 14.8005 16.6812 15.1913 16.6812 15.7472C16.6812 16.1447 16.5107 16.4669 16.1696 16.714C15.8286 16.9584 15.3881 17.0806 14.8483 17.0806C14.4831 17.0806 14.1582 17.0161 13.8735 16.8872C13.5915 16.7556 13.37 16.577 13.2088 16.3514C13.0477 16.1232 12.9671 15.8774 12.9671 15.6143H14.0709C14.0816 15.821 14.1582 15.9795 14.3005 16.0896C14.4428 16.1997 14.6335 16.2548 14.8725 16.2548C15.0954 16.2548 15.2633 16.2131 15.3761 16.1299C15.4915 16.0439 15.5493 15.9325 15.5493 15.7955Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M15.67 1H4C2.8954 1 2 1.8954 2 3V21C2 22.1046 2.8954 23 4 23H20C21.1046 23 22 22.1046 22 21V7.33C22 6.7996 21.7893 6.2851 21.4142 5.91L17.09 1.5858C16.7149 1.2107 16.2004 1 15.67 1ZM3.5 21.5V2.5H15V7.5C15 7.7761 15.2239 8 15.5 8H20.5V21.5H3.5Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M9.11943 13.9425L9.85258 12.6414H11.0973L9.85661 14.7764L11.1497 17H9.90092L9.12346 15.6304L8.35002 17H7.09721L8.3903 14.7764L7.15361 12.6414H8.40239L9.11943 13.9425Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M12.5559 17H11.3877V10.8125H12.5559V17Z\\\" fill=\\\"#0E8857\\\"></path><path d=\\\"M15.5493 15.7955C15.5493 15.6532 15.4781 15.5417 15.3358 15.4612C15.1961 15.3779 14.9705 15.3041 14.659 15.2396C13.6224 15.0221 13.1041 14.5817 13.1041 13.9183C13.1041 13.5316 13.2639 13.2094 13.5835 12.9515C13.9057 12.691 14.326 12.5608 14.8443 12.5608C15.3975 12.5608 15.8393 12.691 16.1696 12.9515C16.5026 13.212 16.6691 13.5504 16.6691 13.9667H15.505C15.505 13.8002 15.4513 13.6632 15.3438 13.5558C15.2364 13.4457 15.0686 13.3906 14.8403 13.3906C14.6442 13.3906 14.4925 13.4349 14.3851 13.5236C14.2777 13.6122 14.224 13.725 14.224 13.8619C14.224 13.9908 14.2844 14.0956 14.4052 14.1761C14.5288 14.254 14.7356 14.3225 15.0256 14.3816C15.3156 14.438 15.56 14.5024 15.7587 14.575C16.3737 14.8005 16.6812 15.1913 16.6812 15.7472C16.6812 16.1447 16.5107 16.4669 16.1696 16.714C15.8286 16.9584 15.3881 17.0806 14.8483 17.0806C14.4831 17.0806 14.1582 17.0161 13.8735 16.8872C13.5915 16.7556 13.37 16.577 13.2088 16.3514C13.0477 16.1232 12.9671 15.8774 12.9671 15.6143H14.0709C14.0816 15.821 14.1582 15.9795 14.3005 16.0896C14.4428 16.1997 14.6335 16.2548 14.8725 16.2548C15.0954 16.2548 15.2633 16.2131 15.3761 16.1299C15.4915 16.0439 15.5493 15.9325 15.5493 15.7955Z\\\" fill=\\\"#0E8857\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"ic-fill-and-sign\\\"><g id=\\\"shape\\\"><path d=\\\"M7.42003 11.1599H13.71V12.9599H7.42003V11.1599Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7.42003 7.56995H13.71V9.36995H7.42003V7.56995Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7.41003 14.7599H9.21003V16.5599H7.41003V14.7599Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21.39 11.8399L20.23 10.6799C19.6506 10.1276 18.7395 10.1276 18.16 10.6799L11 17.7499V21.0499H14.23L21.39 13.9999C21.6515 13.7318 21.8016 13.3744 21.81 12.9999C21.8354 12.572 21.6835 12.1525 21.39 11.8399ZM13.79 19.2399H12.79V18.2399L17 14.0899L18 15.0899L13.79 19.2399ZM19.12 13.9999L18.12 12.9999L19.17 11.9399L20.17 12.9399L19.12 13.9999Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.60003 4.86995H16.43V8.46995H18.23V4.86995C18.2246 3.87811 17.4219 3.07541 16.43 3.06995H5.60003C4.60982 3.07545 3.81001 3.87973 3.81003 4.86995V19.2499C3.80736 19.7264 3.99478 20.1843 4.33076 20.5221C4.66673 20.86 5.12355 21.05 5.60003 21.0499H9.21003V19.2499H5.60003V4.86995Z\\\" fill=\\\"black\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill=\\\"default\\\" d=\\\"M21.5 10H2.5V8H21.5V10Z\\\"></path><path fill=\\\"default\\\" d=\\\"M11.2071 5.70711L7.20711 9.70711L5.79289 8.29289L9.79289 4.29289L11.2071 5.70711Z\\\"></path><path fill=\\\"default\\\" d=\\\"M19.2071 5.70711L15.2071 9.70711L13.7929 8.29289L17.7929 4.29289L19.2071 5.70711Z\\\"></path><path fill=\\\"default\\\" d=\\\"M17.0208 17.107C16.8256 16.9117 16.8256 16.5951 17.0208 16.3999L17.8996 15.5211C18.0948 15.3259 18.4114 15.3259 18.6067 15.5211L23.6357 20.5502C23.8309 20.7454 23.8309 21.062 23.6357 21.2573L22.7569 22.136C22.5617 22.3313 22.2451 22.3313 22.0498 22.136L17.0208 17.107Z\\\"></path><path fill=\\\"default\\\" d=\\\"M21.896 15.6755C22.0913 15.4802 22.4079 15.4802 22.6031 15.6755L23.4819 16.5542C23.6771 16.7495 23.6771 17.0661 23.4819 17.2613L18.5578 22.1854C18.3626 22.3807 18.046 22.3807 17.8507 22.1854L16.972 21.3067C16.7767 21.1114 16.7767 20.7948 16.972 20.5996L21.896 15.6755Z\\\"></path><path fill=\\\"default\\\" d=\\\"M4.5 6H20.5V13H22.5V6C22.5 4.89543 21.6046 4 20.5 4H4.5C3.39543 4 2.5 4.89543 2.5 6V18C2.5 19.1046 3.39543 20 4.5 20H15.5V18H4.5V6Z\\\"></path><path d=\\\"M8.5 12.5C8.5 12.2239 8.72386 12 9 12H10C10.2761 12 10.5 12.2239 10.5 12.5V15.5C10.5 15.7761 10.2761 16 10 16H9C8.72386 16 8.5 15.7761 8.5 15.5V12.5Z\\\"></path><path d=\\\"M14.5 12.5C14.5 12.2239 14.7239 12 15 12H16C16.2761 12 16.5 12.2239 16.5 12.5V15.5C16.5 15.7761 16.2761 16 16 16H15C14.7239 16 14.5 15.7761 14.5 15.5V12.5Z\\\"></path><path d=\\\"M11.5 11.5C11.5 11.2239 11.7239 11 12 11H13C13.2761 11 13.5 11.2239 13.5 11.5V16.5C13.5 16.7761 13.2761 17 13 17H12C11.7239 17 11.5 16.7761 11.5 16.5V11.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill=\\\"default\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 7C3.44772 7 3 7.44772 3 8V16C3 16.5523 3.44772 17 4 17H20C20.5523 17 21 16.5523 21 16V8C21 7.44772 20.5523 7 20 7H4ZM13.8562 8.94727L15.0937 10.1847L13.2375 12.0409L15.0937 13.897L13.8562 15.1345L12.0001 13.2783L10.1439 15.1344L8.90649 13.897L10.7626 12.0409L8.9065 10.1847L10.1439 8.94727L12.0001 10.8034L13.8562 8.94727Z\\\"></path><path d=\\\"M3 4.5C3 3.94772 3.44772 3.5 4 3.5H5V5.25H3V4.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 3.5H9V5.25H7V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 3.5H13V5.25H11V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 3.5H17V5.25H15V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 3.5H20C20.5523 3.5 21 3.94772 21 4.5V5.25H19V3.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 19.5V18.75H5V20.5H4C3.44772 20.5 3 20.0523 3 19.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 18.75H9V20.5H7V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 18.75H13V20.5H11V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 18.75H17V20.5H15V18.75Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 18.75H21V19.5C21 20.0523 20.5523 20.5 20 20.5H19V18.75Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 6H20V8H4V6ZM4 11H20V13H4V11ZM4 16H20V18H4V16Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 7L3 7L3 5L21 5V7Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 11L9 11V9L21 9V11Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 15L9 15V13L21 13V15Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 19L3 19L3 17L21 17V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 15L7 9L3 12L7 15Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 7H3V5H21V7Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 11H9V9H21V11Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 15H9V13H21V15Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 19H3V17H21V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 9L3 15L7 12L3 9Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M17.5575 8.00667V5.37583C17.558 5.17855 17.4059 5.01443 17.2092 5H4.37583C4.16827 5 4 5.16827 4 5.37583V7.97C4.00927 8.1736 4.17223 8.33656 4.37583 8.34583H5.155C5.34905 8.34676 5.5119 8.1998 5.53083 8.00667V6.97083H9.57333V17.5125H8.16167C7.9541 17.5125 7.78583 17.6808 7.78583 17.8883V18.64C7.78583 18.8476 7.9541 19.0158 8.16167 19.0158H13.4233C13.6309 19.0158 13.7992 18.8476 13.7992 18.64V17.8883C13.7992 17.6808 13.6309 17.5125 13.4233 17.5125H12.0117V6.97083H16.0817V7.97C16.0817 8.17757 16.2499 8.34583 16.4575 8.34583H17.2092C17.391 8.32966 17.5365 8.18801 17.5575 8.00667Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 16L17 19V13L21 16Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 17 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.1668 5.33274C15.1668 5.09074 15.0355 4.86807 14.8228 4.75007L8.80817 1.41674C8.6075 1.30607 8.3635 1.30607 8.16283 1.41674L2.1775 4.72341C1.9655 4.84074 1.83417 5.06341 1.8335 5.30541C1.83283 5.54674 1.9635 5.77074 2.1755 5.88874L8.19017 9.24874C8.2915 9.30541 8.40283 9.33341 8.51483 9.33341C8.62683 9.33341 8.73817 9.30541 8.83883 9.24941L14.8242 5.91607C15.0362 5.79807 15.1668 5.57474 15.1668 5.33274ZM8.5155 7.90274L3.8735 5.31007L8.48483 2.76207L13.1275 5.33474L8.5155 7.90274Z\\\" fill=\\\"#818A92\\\"></path><path d=\\\"M14.1768 7.41741L8.50017 10.5707L2.8235 7.41741L2.17617 8.58274L8.17617 11.9161C8.27683 11.9721 8.38883 12.0001 8.50017 12.0001C8.6115 12.0001 8.7235 11.9721 8.8235 11.9161L14.8235 8.58274L14.1768 7.41741Z\\\" fill=\\\"#818A92\\\"></path><path d=\\\"M14.1768 10.0841L8.50017 13.2374L2.8235 10.0841L2.17617 11.2494L8.17617 14.5827C8.27683 14.6387 8.38883 14.6667 8.50017 14.6667C8.6115 14.6667 8.7235 14.6387 8.8235 14.5827L14.8235 11.2494L14.1768 10.0841Z\\\" fill=\\\"#818A92\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"ic-parahraph\\\"><path id=\\\"shape\\\" d=\\\"M9 16H11V20H13V6H15V20H17V6H20V4H9C5.691 4 3 6.691 3 10C3 13.309 5.691 16 9 16ZM9 6H11V14H9C6.794 14 5 12.206 5 10C5 7.794 6.794 6 9 6Z\\\" fill=\\\"black\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16.5575 8.00667V5.37583C16.558 5.17855 16.4059 5.01443 16.2092 5H3.37583C3.16827 5 3 5.16827 3 5.37583V7.97C3.00927 8.1736 3.17223 8.33656 3.37583 8.34583H4.155C4.34905 8.34676 4.5119 8.1998 4.53083 8.00667V6.97083H8.57333V17.5125H7.16167C6.9541 17.5125 6.78583 17.6808 6.78583 17.8883V18.64C6.78583 18.8476 6.9541 19.0158 7.16167 19.0158H12.4233C12.6309 19.0158 12.7992 18.8476 12.7992 18.64V17.8883C12.7992 17.6808 12.6309 17.5125 12.4233 17.5125H11.0117V6.97083H15.0817V7.97C15.0817 8.17757 15.2499 8.34583 15.4575 8.34583H16.2092C16.391 8.32966 16.5365 8.18801 16.5575 8.00667Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 14V11H19V14H17V12L13 15L17 18V16H19C20.1046 16 21 15.1046 21 14Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3H5C3.89543 3 3 3.89543 3 5ZM5 6V19H19V6H5Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19 11L5 11L5 9L19 9V11Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19 16L5 16L5 14L19 14V16Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8 19V6H10V19H8Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14 19V6H16V19H14Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18.33 3H6.67C5.74768 3 5 3.74768 5 4.67V19.67C5 20.5923 5.74768 21.34 6.67 21.34H18.33C19.2523 21.34 20 20.5923 20 19.67V4.67C20 3.74768 19.2523 3 18.33 3ZM6.67 19.67V4.67H18.33V19.67H6.67Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8.33 15H14.66V16.8H8.33V15Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8.34 6.78H16.67V8.58H8.34V6.78Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8.34 10.83H16.67V12.63H8.34V10.83Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><polygon fill=\\\"none\\\" points=\\\"0 0 24 0 24 24 0 24\\\"></polygon><path d=\\\"M16.7375649,4 L21.236068,11.9970061 L16.7348397,19.9994626 L7.5018203,20.0006467 L3,11.9970061 L7.49832909,4.0003479 L16.7375649,4 Z M8.73606798,5.99700608 L7.63018536,7.88746878 L13.4671162,17.9973295 L15.5,17.9970061 L16.5126451,16.2389926 L10.5994314,5.99700608 L8.73606798,5.99700608 Z M6.6434864,9.58428881 L5.23606798,11.9970061 L8.73606798,17.9970061 L11.5579671,17.9970061 L6.6434864,9.58428881 Z M17.5249398,14.5298193 L19,11.9970061 L15.5,5.99700608 L12.5985178,5.99700608 L17.5249398,14.5298193 Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#000000;}</style></defs><title>icon - tool - measurement - area - line</title><path class=\\\"cls-1\\\" d=\\\"M19.14,2H4.86A2.86,2.86,0,0,0,2,4.86V19.14A2.86,2.86,0,0,0,4.86,22H19.14A2.86,2.86,0,0,0,22,19.14V4.86A2.86,2.86,0,0,0,19.14,2ZM4,4h6.22L4,10.22ZM4,18.71V13H4l9-9,0,0h5.71ZM5.54,20,20,5.54v5.69L11.23,20Zm8.52,0L20,14.06V20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M10.22,4H13L4,13V10.22ZM20,5.54V4H18.71L4,18.71V20H5.54ZM14.06,20,20,14.06V11.23L11.23,20Z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M12,2A10,10,0,1,0,22,12,10,10,0,0,0,12,2Zm0,18a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M15.81,5a8.1,8.1,0,0,0-2-.76l-9.59,9.6a8,8,0,0,0,.77,2L15.83,5Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M19,8.11,8.1,19a8.14,8.14,0,0,0,2.28.86l9.44-9.51A8,8,0,0,0,19,8.11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m22 20.7c-4.8 0-9.7 0-14.5 0-.2 0-.3 0-.4-.2-1.7-1.7-3.3-3.3-5-5 0 0-.1-.1-.1-.1l.2-.2c4-4 7.9-7.9 11.9-11.9.1-.1.2-.1.4 0 2.5 2.5 4.9 4.9 7.4 7.4 0 0 .1.1.2.1-2.7 2.7-5.4 5.4-8.1 8.1h8.1c-.1.7-.1 1.2-.1 1.8zm-17.5-5.2 3.5 3.5h.2 3.1c.1 0 .2 0 .3-.1.9-.9 1.7-1.7 2.6-2.6 0 0 .1-.1.1-.1-1.8-1.8-3.5-3.5-5.2-5.2-1.6 1.4-3.1 2.9-4.6 4.5z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#000000;}</style></defs><title>icon - tool - measurement - area - line</title><path class=\\\"cls-1\\\" d=\\\"M19.14,2H4.86A2.86,2.86,0,0,0,2,4.86V19.14A2.86,2.86,0,0,0,4.86,22H19.14A2.86,2.86,0,0,0,22,19.14V4.86A2.86,2.86,0,0,0,19.14,2ZM4,4h6.22L4,10.22ZM4,18.71V13H4l9-9,0,0h5.71ZM5.54,20,20,5.54v5.69L11.23,20Zm8.52,0L20,14.06V20Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M10.22,4H13L4,13V10.22ZM20,5.54V4H18.71L4,18.71V20H5.54ZM14.06,20,20,14.06V11.23L11.23,20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9.70864175 17.0129114h12.29135825v2h-12.14119637c-.00132452.0293711-.00277091.0589835-.00433457.0888699-.11198252 2.140328-1.54526173 3.4612105-3.2460842 3.1445917-1.4379189-.2676777-2.36548818-1.5917777-2.25554648-3.2334616h-2.35283838v-2h2.85101727c.48375742-1.3216041 1.16546925-2.3853848 2.02795171-3.2480075-.18264567-.7591819-.33094514-1.4552523-.44245747-2.1059993-.9997212.2428217-2.08194563.3540068-3.23651146.3540068v-2c1.10093119 0 2.10387085-.11329307 3.00514278-.36403478-.067061-1.39749009.10114233-2.64169381.54012175-3.99140074.87824528-2.70029457 2.67433987-4.143459 4.41683292-3.50917134 1.7190901.62576874 2.1426897 2.84674853 1.0095184 5.01231865-.9488917 1.8133989-2.24059781 3.04654081-3.81728229 3.81582451.06790982.4503952.1575239.9279247.26809133 1.4410646.1343057-.0803068.27128125-.1579953.41089297-.2331767.0955675-.0514634.17416199-.0940935.35123288-.1903527.03012452-.0163737.03012452-.0163737.06032177-.0327821 2.53273324-1.3760604 3.63912134-1.7128543 4.87690454-.7320646.4256558.3372795.6993633.7334951.8408663 1.1649785.1573732-.1151393.3108908-.221996.4636277-.3224267 1.5449353-1.015857 2.9140936-1.2813901 4.0466138-.3145683 1.3543316 1.15618 1.1007616 2.8053072-.3680178 4.5663418l-1.535906-1.2810123c.8571484-1.0277023.9280413-1.4887639.6053709-1.7642245-.2529064-.2159039-.7655734-.1164778-1.6492414.4645694-.3820124.2511885-.7916868.5675309-1.2936989.9899347-.1417474.1192693-1.1521636.9929139-1.4170698 1.2079504-.9360832.7598614-2.1683444-.4799627-1.4027696-1.4113791.6859267-.8345146.7958988-1.4729018.4681355-1.7326135-.2727291-.216104-.9839554.0003993-2.6800163.9218869-.0299657.0162827-.0299657.0162827-.0600012.032608-.1779933.0967622-.2593885.1409114-.35809563.1940655-.30441957.163931-.59162724.3413674-.86158259.5349668.28483671 1.1242685.47243846 1.9072203.58864967 2.5326976zm-2.69257941 0h.65153892c-.05070864-.2442087-.11255084-.5178056-.18713872-.8311195-.16893029.2580643-.32374025.5344537-.4644002.8311195zm.84029009 2h-1.49615156c-.10563245.7406814.19047954 1.1883605.61420846 1.2672403.43307507.0806197.82635111-.279308.8819431-1.2672403zm2.54320537-12.77954768c.6348876-1.21331479.4730078-2.0620683.0784308-2.20569892-.4476461-.16294835-1.25839789.48849183-1.83079041 2.24839701-.26955538.82878773-.41470838 1.62140209-.44392294 2.47338461.88768275-.59409074 1.6219516-1.41849581 2.19628255-2.5160827z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9.52134855 16-.71695295 3h-2.8043956l1.02103611-3zm-1.13893097-4 2.38241762-7h2.443956l2.3956044 7h-2.3895877l-1.2279947-3.71428571-1.2145741 3.71428571zm8.59089482 4 1.0266876 3h-2.8043956l-.7241225-3zm-11.9733124-3h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m14.3076923 14.3214286h-4.62417582l-.87912088 2.6785714h-2.8043956l4.7648352-13h2.443956l4.7912088 13h-2.8043956zm-3.9120879-2.1696429h3.2l-1.6087912-4.86607141zm-5.3956044 6.3482143h14v2h-14z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\" class=\\\"no-fill\\\"></path><path d=\\\"m17 3h-10c-1.1 0-1.99.9-1.99 2l-.01 16 7-5 7 5v-16c0-1.1-.9-2-2-2z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m9 16.17-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16.59 8.59-4.59 4.58-4.59-4.58-1.41 1.41 6 6 6-6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m15.41 7.41-1.41-1.41-6 6 6 6 1.41-1.41-4.58-4.59z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10 6-1.41 1.41 4.58 4.59-4.58 4.59 1.41 1.41 6-6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m12 8-6 6 1.41 1.41 4.59-4.58 4.59 4.58 1.41-1.41z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m19 6.41-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m16 1h-12c-1.1 0-2 .9-2 2v14h2v-14h12zm3 4h-11c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2zm0 16h-11v-14h11z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M19,7c0-1.103-0.897-2-2-2H7V2H5v3H2v2h3h2h10v15h2v-3h3v-2h-3V7z\\\"></path><path d=\\\"M5,9v8c0,1.103,0.897,2,2,2h8v-2H7V9H5z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.1716 2H4C2.8954 2 2 2.8954 2 4V18C2 19.1046 2.8954 20 4 20H8V18H4V4H11V7.5C11 7.7761 11.2239 8 11.5 8H15V10.8432L17 8.8432V7.8284C17 7.298 16.7893 6.7892 16.4142 6.4142L12.5858 2.5858C12.2107 2.2107 11.702 2 11.1716 2Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21.5606 12.0339L20.1464 10.6197C19.8535 10.3268 19.4696 10.1804 19.0857 10.1804C18.7018 10.1804 18.3179 10.3268 18.025 10.6197L10.1803 18.4644V22H13.7158L21.5605 14.1553C22.1465 13.5695 22.1465 12.6198 21.5606 12.0339ZM13.0946 20.5H11.6804V19.0857L16.9919 13.7733L18.4066 15.188L13.0946 20.5ZM19.4673 14.1273L18.0526 12.7125L19.0844 11.6805L19.0859 11.6804L20.5 13.0946L19.4673 14.1273Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#ABB0C4;} </style><title>icon - attachment</title><g><path class=\\\"st0\\\" d=\\\"M5,7L5,7v8c0,3.9,3.2,7,7.1,6.9c1.8,0,3.6-0.7,4.9-2c1.3-1.3,2.1-3.1,2.1-4.9V7h-2v8c0,2.8-2.2,5-5,5 s-5-2.2-5-5V7l0,0c0-0.8,0.3-1.6,0.9-2.1c1.2-1.2,3.1-1.2,4.2,0C12.7,5.4,13,6.2,13,7v8c0,0.6-0.4,1-1,1c-0.3,0-0.5-0.1-0.7-0.3 C11.1,15.5,11,15.3,11,15V7H9v8c0,1.7,1.4,3,3,3c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.3,0.9-2.1V7c0-2.8-2.2-5-5-5S5,4.2,5,7z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 51 50\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M50.5 14.9977C50.5 14.0902 50.0075 13.2552 49.21 12.8127L26.655 0.312715C25.9025 -0.102285 24.9875 -0.102285 24.235 0.312715L1.79001 12.7127C0.99501 13.1527 0.50251 13.9877 0.50001 14.8952C0.49751 15.8002 0.98751 16.6402 1.78251 17.0827L24.3375 29.6827C24.7175 29.8952 25.135 30.0002 25.555 30.0002C25.975 30.0002 26.3925 29.8952 26.77 29.6852L49.215 17.1852C50.01 16.7427 50.5 15.9052 50.5 14.9977ZM25.5575 24.6352L8.15001 14.9127L25.4425 5.35772L42.8525 15.0052L25.5575 24.6352Z\\\" fill=\\\"#ADB5BD\\\"></path><path d=\\\"M46.7875 22.8152L25.5 34.6402L4.21251 22.8152L1.78501 27.1852L24.285 39.6852C24.6625 39.8952 25.0825 40.0002 25.5 40.0002C25.9175 40.0002 26.3375 39.8952 26.7125 39.6852L49.2125 27.1852L46.7875 22.8152Z\\\" fill=\\\"#ADB5BD\\\"></path><path d=\\\"M46.7875 32.8152L25.5 44.6402L4.21251 32.8152L1.78501 37.1852L24.285 49.6852C24.6625 49.8952 25.0825 50.0002 25.5 50.0002C25.9175 50.0002 26.3375 49.8952 26.7125 49.6852L49.2125 37.1852L46.7875 32.8152Z\\\" fill=\\\"#ADB5BD\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 5.75C7 5.47386 7.22386 5.25 7.5 5.25H10.5C10.7761 5.25 11 5.47386 11 5.75V18.25C11 18.5261 10.7761 18.75 10.5 18.75H7.5C7.22386 18.75 7 18.5261 7 18.25V5.75Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M13 5.75C13 5.47386 13.2239 5.25 13.5 5.25H16.5C16.7761 5.25 17 5.47386 17 5.75V18.25C17 18.5261 16.7761 18.75 16.5 18.75H13.5C13.2239 18.75 13 18.5261 13 18.25V5.75Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18.1895 11.1653C18.7884 11.5606 18.7884 12.4393 18.1895 12.8346L8.50495 19.2264C7.8401 19.6652 6.9541 19.1884 6.9541 18.3918L6.9541 5.60811C6.9541 4.81151 7.84009 4.3347 8.50494 4.7735L18.1895 11.1653Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m10.314997 14.1097181-3.10191769-.0150391c-.14580656-.0010433-.28962115-.0339596-.42136544-.0964422-.49900706-.2366652-.71167717-.8330454-.475012-1.3320524l4.78752513-10.09446718c.0995136-.20982395.2689515-.37847202.4792381-.47700427.5001074-.23433112 1.0954874-.01887692 1.3298186.48123043l4.7618949 10.16279272c.0632461.1349793.0955164.2823905.0944499.4314488-.0039515.5522706-.4548585.9967711-1.0071292.9928196l-3.1442014-.0153416v7.5319189c0 .5515432-.4454773.9970205-.9970206.9970205h-1.3092597c-.5515433 0-.9970206-.4454773-.9970206-.9970205z\\\" transform=\\\"matrix(.93969262 -.34202014 .34202014 .93969262 -3.496571 4.846563)\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 18.11H6.83V16.22H4.94V14.34H3.05V17.17C3.04999 17.421 3.15039 17.6616 3.32885 17.8382C3.5073 18.0148 3.74897 18.1126 4 18.11ZM18.17 3.93997C18.1382 3.41124 17.6997 2.99901 17.17 2.99997H14.39V4.88997H16.28V6.77997H18.17V3.93997ZM4.94 4.88997H6.83V2.99997H4C3.74048 2.98337 3.48567 3.07502 3.29618 3.25314C3.1067 3.43125 2.99947 3.67991 3 3.93997V6.77997H4.94V4.88997ZM3.05 8.66997H4.94V12.45H3.05V8.66997ZM8.72 2.99997H12.5V4.88997H8.72V2.99997Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.67518 8.36206C8.67494 8.04026 9.05891 7.87893 9.28347 8.10648L14.5 13.3924L19.714 8.10925C19.9385 7.8817 20.3225 8.04303 20.3222 8.36483L20.3214 9.44967C20.3212 9.83233 20.171 10.1992 19.904 10.4698L15.7599 14.6689L17.3189 16.2487C18.2643 15.7302 19.4705 15.8757 20.2694 16.6853C21.2435 17.6724 21.2435 19.2727 20.2694 20.2597C19.2954 21.2467 17.716 21.2467 16.742 20.2597C16.0384 19.5468 15.843 18.5139 16.1558 17.6232L14.5 15.9455L12.8442 17.6233C13.157 18.5139 12.9616 19.5468 12.258 20.2597C11.284 21.2468 9.70465 21.2468 8.73056 20.2597C7.75648 19.2727 7.75648 17.6724 8.73056 16.6853C9.52954 15.8757 10.7357 15.7302 11.6811 16.2487L13.2402 14.6689L9.09345 10.4671C8.82642 10.1965 8.67627 9.82956 8.67599 9.4469L8.67518 8.36206ZM17.7498 19.2385C18.1673 19.6615 18.8441 19.6615 19.2616 19.2385C19.679 18.8154 19.679 18.1296 19.2616 17.7066C18.8441 17.2836 18.1673 17.2836 17.7498 17.7066C17.3323 18.1296 17.3323 18.8154 17.7498 19.2385ZM11.2502 19.2385C10.8327 19.6615 10.1559 19.6615 9.73841 19.2385C9.32095 18.8155 9.32095 18.1296 9.73841 17.7066C10.1559 17.2836 10.8327 17.2836 11.2502 17.7066C11.6677 18.1296 11.6677 18.8155 11.2502 19.2385ZM14.5043 15.222C14.7995 15.222 15.0388 14.9796 15.0388 14.6804C15.0388 14.3813 14.7995 14.1388 14.5043 14.1388C14.2091 14.1388 13.9698 14.3813 13.9698 14.6804C13.9698 14.9796 14.2091 15.222 14.5043 15.222Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\"><g id=\\\"surface1\\\"><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 11.34375 4.0625 C 11.035156 4.128906 10.570312 4.390625 8.0625 5.925781 L 5.359375 7.585938 L 3.863281 7.609375 C 2.226562 7.632812 2.058594 7.65625 1.539062 7.929688 C 0.882812 8.277344 0.355469 8.890625 0.136719 9.570312 C 0.0234375 9.914062 0.0234375 9.921875 0.0234375 12.023438 L 0.0234375 14.132812 L 0.144531 14.46875 C 0.398438 15.15625 0.867188 15.703125 1.5 16.046875 C 2.058594 16.351562 2.199219 16.367188 3.863281 16.390625 L 5.359375 16.414062 L 8.0625 18.074219 C 9.546875 18.984375 10.878906 19.777344 11.019531 19.832031 C 11.226562 19.921875 11.367188 19.941406 11.765625 19.941406 C 12.230469 19.945312 12.277344 19.9375 12.570312 19.789062 C 12.917969 19.621094 13.199219 19.339844 13.359375 19.003906 C 13.597656 18.511719 13.59375 18.75 13.59375 12 C 13.59375 5.039062 13.609375 5.398438 13.296875 4.878906 C 13.109375 4.570312 12.851562 4.335938 12.515625 4.179688 C 12.3125 4.082031 12.171875 4.058594 11.859375 4.050781 C 11.640625 4.046875 11.410156 4.050781 11.34375 4.0625 Z M 11.71875 12.003906 C 11.71875 17.164062 11.710938 18.050781 11.652344 18.03125 C 11.617188 18.019531 10.292969 17.210938 8.714844 16.246094 L 5.835938 14.484375 L 4.226562 14.484375 C 2.726562 14.484375 2.609375 14.480469 2.441406 14.394531 C 2.207031 14.273438 1.988281 14.015625 1.925781 13.796875 C 1.859375 13.554688 1.859375 10.445312 1.925781 10.203125 C 1.988281 9.984375 2.207031 9.726562 2.441406 9.605469 C 2.609375 9.519531 2.726562 9.515625 4.226562 9.515625 L 5.835938 9.515625 L 8.742188 7.734375 C 10.339844 6.753906 11.664062 5.953125 11.6875 5.953125 C 11.703125 5.953125 11.71875 8.675781 11.71875 12.003906 Z M 11.71875 12.003906 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 20.085938 4.402344 C 19.984375 4.449219 19.785156 4.601562 19.65625 4.75 C 19.421875 4.996094 19.40625 5.019531 19.40625 5.265625 C 19.40625 5.558594 19.429688 5.597656 20.007812 6.242188 C 21.027344 7.382812 21.726562 8.804688 22.035156 10.359375 C 22.128906 10.8125 22.144531 11.054688 22.148438 11.859375 C 22.148438 12.890625 22.117188 13.175781 21.886719 14.054688 C 21.515625 15.460938 20.8125 16.710938 19.773438 17.789062 C 19.222656 18.359375 19.191406 18.652344 19.609375 19.109375 C 19.878906 19.40625 20.058594 19.5 20.359375 19.5 C 20.625 19.5 20.84375 19.351562 21.285156 18.867188 C 23.132812 16.835938 24.089844 14.234375 23.984375 11.53125 C 23.925781 9.992188 23.605469 8.699219 22.941406 7.335938 C 22.351562 6.117188 21.085938 4.492188 20.625 4.359375 C 20.398438 4.292969 20.300781 4.304688 20.085938 4.402344 Z M 20.085938 4.402344 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 17.585938 6.847656 C 17.328125 6.976562 16.976562 7.367188 16.941406 7.570312 C 16.890625 7.84375 16.960938 7.996094 17.324219 8.398438 C 17.9375 9.078125 18.300781 9.707031 18.535156 10.503906 C 18.886719 11.722656 18.769531 12.988281 18.195312 14.132812 C 17.96875 14.597656 17.722656 14.945312 17.320312 15.371094 C 16.925781 15.796875 16.828125 16.007812 16.917969 16.28125 C 16.992188 16.507812 17.304688 16.847656 17.546875 16.964844 C 17.960938 17.164062 18.300781 17.054688 18.730469 16.566406 C 19.8125 15.347656 20.394531 14.011719 20.53125 12.445312 C 20.695312 10.554688 20.023438 8.605469 18.75 7.25 C 18.261719 6.730469 18.003906 6.640625 17.585938 6.847656 Z M 17.585938 6.847656 \\\"></path><path style=\\\" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;\\\" d=\\\"M 15.445312 8.992188 C 15.34375 9.042969 15.136719 9.210938 14.992188 9.367188 C 14.757812 9.609375 14.71875 9.675781 14.71875 9.828125 C 14.71875 10.039062 14.785156 10.148438 15.121094 10.5 C 15.445312 10.835938 15.652344 11.273438 15.6875 11.703125 C 15.742188 12.328125 15.539062 12.851562 15.066406 13.34375 C 14.601562 13.828125 14.59375 14.042969 15.007812 14.476562 C 15.285156 14.757812 15.417969 14.835938 15.664062 14.882812 C 16.007812 14.949219 16.320312 14.757812 16.707031 14.253906 C 17.792969 12.84375 17.796875 10.953125 16.71875 9.542969 C 16.367188 9.078125 16.179688 8.9375 15.882812 8.921875 C 15.707031 8.90625 15.578125 8.929688 15.445312 8.992188 Z M 15.445312 8.992188 \\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"m0 0h24v24h-24z\\\" fill=\\\"none\\\"></path><path d=\\\"m4 8h4v-4h-4zm6 12h4v-4h-4zm-6 0h4v-4h-4zm0-6h4v-4h-4zm6 0h4v-4h-4zm6-10v4h4v-4zm-6 4h4v-4h-4zm6 6h4v-4h-4zm0 6h4v-4h-4z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.76749 15.1756H9.45332C9.75708 15.1756 10.0033 14.9293 10.0033 14.6256V13.4339C10.0033 13.288 9.94537 13.1481 9.84223 13.045C9.73908 12.9419 9.59919 12.8839 9.45332 12.8839H6.70332C5.04223 12.9052 3.59478 11.7564 3.23832 10.1339C3.02293 9.11823 3.27688 8.05958 3.92959 7.25214C4.5823 6.44469 5.56422 5.97451 6.60249 5.97224H13.4775V8.63974C13.4747 8.782 13.5545 8.91302 13.6821 8.97587C13.8098 9.03871 13.9623 9.02203 14.0733 8.93308L18.8492 5.11058C18.9349 5.03917 18.9844 4.93338 18.9844 4.82183C18.9844 4.71027 18.9349 4.60448 18.8492 4.53308L14.0367 0.747245C13.9256 0.65829 13.7731 0.641611 13.6455 0.704455C13.5178 0.7673 13.438 0.898321 13.4408 1.04058V3.70808H6.56582C4.91384 3.70968 3.34269 4.42316 2.25435 5.66596C1.16602 6.90877 0.666092 8.56033 0.882486 10.1981C1.3299 13.0918 3.83961 15.2145 6.76749 15.1756Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.33994 5.99974H13.1141C14.7752 5.97845 16.2226 7.12721 16.5791 8.74975C16.7913 9.76407 16.5359 10.82 15.8836 11.6252C15.2312 12.4304 14.2512 12.8994 13.2149 12.9022H10.3274C10.18 12.9022 10.0387 12.9614 9.93525 13.0666C9.83184 13.1717 9.77498 13.314 9.77744 13.4614V14.6531C9.77744 14.9568 10.0237 15.2031 10.3274 15.2031H13.0133C15.9674 15.2633 18.5068 13.1203 18.9441 10.1981C19.1605 8.56033 18.6606 6.90877 17.5722 5.66596C16.4839 4.42316 14.9128 3.70968 13.2608 3.70808H6.33994V1.04058C6.34272 0.898321 6.26294 0.7673 6.13529 0.704455C6.00764 0.641611 5.85515 0.65829 5.7441 0.747245L0.968271 4.56975C0.882564 4.64115 0.833008 4.74694 0.833008 4.85849C0.833008 4.97005 0.882564 5.07584 0.968271 5.14724L5.7441 8.96974C5.86027 9.06472 6.02258 9.07933 6.15383 9.00663C6.28509 8.93393 6.35881 8.7886 6.33994 8.63974V5.99974Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M14.1716 2H6C4.8954 2 4 2.8954 4 4V20C4 21.1046 4.8954 22 6 22H18C19.1046 22 20 21.1046 20 20V7.8284C20 7.298 19.7893 6.7893 19.4142 6.4142L15.5858 2.5858C15.2107 2.2107 14.702 2 14.1716 2ZM6 20V4H14V7.5C14 7.7761 14.2239 8 14.5 8H18V20H6Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.75 10H11.25V12.25H9V13.75H11.25V16H12.75V13.75H15V12.25H12.75V10Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 5H11.414L9.707 3.293C9.52 3.105 9.265 3 9 3H4C2.897 3 2 3.897 2 5V19C2 20.103 2.897 21 4 21H20C21.103 21 22 20.103 22 19V7C22 5.897 21.103 5 20 5ZM4 19V7H11H12H20L20.002 19H4Z\\\" fill=\\\"black\\\"></path><path d=\\\"M12.75 10H11.25V12.25H9V13.75H11.25V16H12.75V13.75H15V12.25H12.75V10Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M11.001 10H13.001V15H11.001zM11 16H13V18H11z\\\"></path><path d=\\\"M13.768,4.2C13.42,3.545,12.742,3.138,12,3.138s-1.42,0.407-1.768,1.063L2.894,18.064 c-0.331,0.626-0.311,1.361,0.054,1.968C3.313,20.638,3.953,21,4.661,21h14.678c0.708,0,1.349-0.362,1.714-0.968 c0.364-0.606,0.385-1.342,0.054-1.968L13.768,4.2z M4.661,19L12,5.137L19.344,19H4.661z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 26 26\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20.25 4H9.75C8.78487 4 8 4.78487 8 5.75V16.25C8 17.2151 8.78487 18 9.75 18H20.25C21.2151 18 22 17.2151 22 16.25V5.75C22 4.78487 21.2151 4 20.25 4ZM9.75 16.25V5.75H20.25L20.2518 16.25H9.75Z\\\"></path><path d=\\\"M5.78902 9.46883H4V20.2098C4 21.1971 4.80237 22 5.78902 22H16.5231V20.2098H5.78902V9.46883ZM13.7797 12.6186L12.2357 11.0737L10.9709 12.3394L13.8995 15.2699L19 9.1475L17.6242 8L13.7797 12.6186Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / approved line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-132.000000, -179.000000)\\\" fill=\\\"#239700\\\"><g transform=\\\"translate(130.000000, 176.000000)\\\"><path d=\\\"M20,9 L14.388,9 L15.511,5.633 C15.713,5.025 15.611,4.351 15.236,3.831 C14.861,3.311 14.253,3 13.612,3 L12,3 C11.703,3 11.422,3.132 11.231,3.36 L6.531,9 L4,9 C2.897,9 2,9.897 2,11 L2,20 C2,21.103 2.897,22 4,22 L7,22 L17.307,22 C18.136,22 18.888,21.479 19.18,20.702 L21.937,13.351 C21.979,13.239 22,13.12 22,13 L22,11 C22,9.897 21.103,9 20,9 Z M4,11 L6,11 L6,20 L4,20 L4,11 Z M20,12.819 L17.307,20 L8,20 L8,10.362 L12.468,5 L13.614,5 L12.052,9.683 C11.949,9.988 12.001,10.323 12.189,10.584 C12.377,10.846 12.679,11 13,11 L20,11 L20,12.819 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / cancelled / line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-170.000000, -178.000000)\\\"><g transform=\\\"translate(168.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.447,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\" fill=\\\"#868E96\\\"></path><polygon fill=\\\"#BA0000\\\" points=\\\"15.292 7.295 12 10.587 8.708 7.295 7.294 8.709 10.586 12.001 7.294 15.293 8.708 16.707 12 13.415 15.292 16.707 16.706 15.293 13.414 12.001 16.706 8.709\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / completed/ line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-213.000000, -178.000000)\\\" fill-rule=\\\"nonzero\\\"><g transform=\\\"translate(211.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.448,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\" fill=\\\"#868E96\\\"></path><polygon fill=\\\"#239700\\\" points=\\\"11 13.586 8.707 11.293 7.293 12.707 11 16.414 17.207 10.207 15.793 8.793\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>forms / marked</title><g id=\\\"forms-/-marked\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-forms-/-radio-button\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"><path d=\\\"M17,2.15 L7,2.15 C4.32141896,2.15 2.15,4.32141896 2.15,7 L2.15,17 C2.15,19.678581 4.32141896,21.85 7,21.85 L17,21.85 C19.678581,21.85 21.85,19.678581 21.85,17 L21.85,7 C21.85,4.32141896 19.678581,2.15 17,2.15 Z M7,3.85 L17,3.85 C18.739697,3.85 20.15,5.26030304 20.15,7 L20.15,17 C20.15,18.739697 18.739697,20.15 17,20.15 L7,20.15 C5.26030304,20.15 3.85,18.739697 3.85,17 L3.85,7 C3.85,5.26030304 5.26030304,3.85 7,3.85 Z\\\" id=\\\"Rectangle\\\"></path></g><circle id=\\\"Oval\\\" fill=\\\"#868E96\\\" cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / none / line</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-250.000000, -178.000000)\\\"><g transform=\\\"translate(248.000000, 176.000000)\\\"><path d=\\\"M16,2 L8,2 C4.691,2 2,4.691 2,8 L2,21 C2,21.553 2.447,22 3,22 L16,22 C19.309,22 22,19.309 22,16 L22,8 C22,4.691 19.309,2 16,2 Z M20,16 C20,18.206 18.206,20 16,20 L4,20 L4,8 C4,5.794 5.794,4 8,4 L16,4 C18.206,4 20,5.794 20,8 L20,16 Z\\\"></path><polygon points=\\\"8 11 16 11 16 13 8 13\\\"></polygon></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / rejected / fill</title><desc>Created with Sketch.</desc><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-89.000000, -179.000000)\\\" fill=\\\"#BA0000\\\"><g transform=\\\"translate(87.000000, 176.000000)\\\"><path d=\\\"M20,3 L17,3 L6.693,3 C5.864,3 5.112,3.521 4.82,4.298 L2.063,11.649 C2.021,11.761 2,11.88 2,12 L2,14 C2,15.103 2.897,16 4,16 L9.612,16 L8.49,19.367 C8.287,19.975 8.389,20.649 8.764,21.169 C9.14,21.689 9.746,22 10.388,22 L12,22 C12.297,22 12.578,21.868 12.769,21.64 L17.469,16 L20,16 C21.103,16 22,15.103 22,14 L22,5 C22,3.897 21.103,3 20,3 Z M11.531,20 L10.386,20 L11.948,15.316 C12.051,15.011 11.999,14.676 11.811,14.415 C11.623,14.154 11.321,14 11,14 L4,14 L4,12.181 L6.693,5 L16,5 L16,14.638 L11.531,20 Z M18,14 L18,5 L20,5 L20.001,14 L18,14 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>forms / unmarked</title><g id=\\\"forms-/-unmarked\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-forms-/-radio-button\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"><path d=\\\"M17,2.15 L7,2.15 C4.32141896,2.15 2.15,4.32141896 2.15,7 L2.15,17 C2.15,19.678581 4.32141896,21.85 7,21.85 L17,21.85 C19.678581,21.85 21.85,19.678581 21.85,17 L21.85,7 C21.85,4.32141896 19.678581,2.15 17,2.15 Z M7,3.85 L17,3.85 C18.739697,3.85 20.15,5.26030304 20.15,7 L20.15,17 C20.15,18.739697 18.739697,20.15 17,20.15 L7,20.15 C5.26030304,20.15 3.85,18.739697 3.85,17 L3.85,7 C3.85,5.26030304 5.26030304,3.85 7,3.85 Z\\\" id=\\\"Rectangle\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -2 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16 7H3.83L9.42 1.41L8 0L0 8L8 16L9.41 14.59L3.83 9H16V7Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 19L18 12H13V6H11V12H6L12 19Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5 12L12 18L12 13L18 13L18 11L12 11L12 6L5 12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 12L12 6V11H6V13H12L12 18L19 12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6 18H18V20H6V18ZM11 4V10H6L12 16L18 10H13V4H11Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M13 5V4.382V2H11V4.382V5H8L12 9L16 5H13ZM13 22V19H16L12 15L8 19H11V22H13ZM3 11H6V13H3V11ZM8 11H11V13H8V11ZM13 11H16V13H13V11ZM18 11H21V13H18V11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"none\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M6 4H18V6H6V4ZM11 14V20H13V14H18L12 8L6 14H11Z\\\" class=\\\"color484848 svgShape\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 5L6 12L11 12L11 18L13 18L13 12L18 12L12 5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 12 12\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.66666 1.5H2.33332C1.82916 1.5 1.41666 1.9125 1.41666 2.41667V7C1.41666 7.50417 1.82916 7.91667 2.33332 7.91667H3.70832V10.2542L6.64166 7.91667H9.66666C10.1708 7.91667 10.5833 7.50417 10.5833 7V2.41667C10.5833 1.9125 10.1708 1.5 9.66666 1.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - down</title><path class=\\\"cls-1\\\" d=\\\"M9,3.5l-3,3-3-3-1,1,4,4,4-4Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - left</title><path class=\\\"cls-1\\\" d=\\\"M7.5,2l-4,4,4,4,1-1-3-3,3-3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - right</title><path class=\\\"cls-1\\\" d=\\\"M4.5,10l4-4-4-4-1,1,3,3-3,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 12 12\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - chevron - up</title><path class=\\\"cls-1\\\" d=\\\"M10,7.5l-4-4-4,4,1,1,3-3,3,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - close</title><path class=\\\"cls-1\\\" d=\\\"M16.22,6.28,12,10.5,7.78,6.28a.4.4,0,0,0-.56,0l-.94.94a.4.4,0,0,0,0,.56L10.5,12,6.28,16.22a.4.4,0,0,0,0,.56l.94.94a.4.4,0,0,0,.56,0L12,13.5l4.22,4.22a.4.4,0,0,0,.56,0l.94-.94a.4.4,0,0,0,0-.56L13.5,12l4.22-4.22a.4.4,0,0,0,0-.56l-.94-.94A.4.4,0,0,0,16.22,6.28Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-3 -6 22 18\\\" fill=\\\"#868E96\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 4H13V6H3V4ZM0 0H16V2H0V0ZM6 8H10V10H6V8Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.903 8.586C19.854 8.48 19.793 8.379 19.707 8.293L13.707 2.293C13.621 2.207 13.52 2.146 13.414 2.097C13.384 2.083 13.352 2.075 13.32 2.064C13.236 2.036 13.15 2.018 13.061 2.013C13.04 2.011 13.021 2 13 2H6C4.897 2 4 2.897 4 4V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V9C20 8.979 19.989 8.96 19.987 8.938C19.982 8.849 19.965 8.763 19.936 8.679C19.926 8.647 19.917 8.616 19.903 8.586ZM16.586 8H14V5.414L16.586 8ZM6 20V4H12V9C12 9.553 12.447 10 13 10H18L18.002 20H6Z\\\"></path><path d=\\\"M8 12H16V14H8V12ZM8 16H16V18H8V16ZM8 8H10V10H8V8Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 64 65\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5.77337 52.636C6.26937 53.3827 7.10404 53.8333 8.00004 53.8333H48C49.0667 53.8333 50.032 53.1987 50.4507 52.2173L58.4507 33.5507C58.8054 32.7267 58.72 31.7827 58.2267 31.0333C57.7307 30.284 56.896 29.8333 56 29.8333H53.3334V19.1667C53.3334 16.2253 50.9414 13.8333 48 13.8333H31.7334L25.6427 9.068C25.1734 8.7 24.5974 8.5 24 8.5H10.6667C7.72537 8.5 5.33337 10.892 5.33337 13.8333V51.1667H5.35204C5.35204 51.6787 5.48271 52.1933 5.77337 52.636ZM46.2427 48.5H12.0454L17.76 35.1667H51.9574L46.2427 48.5ZM48 19.1667V29.8333H16C14.9334 29.8333 13.968 30.468 13.5494 31.4493L10.6667 38.1773V19.1667H30.816H32H48Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"icon-content-edit\\\"><g id=\\\"shape\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.5422 13.6309H7.21719L5.84219 17.0226H3.36719L8.86719 4.09759C9.14219 3.63926 9.50885 3.36426 9.96719 3.36426H11.0672C11.5255 3.36426 11.8922 3.73092 12.1672 4.09759L15.8384 13.0224L14.0517 14.8091L13.5422 13.6309ZM12.6255 11.4309L10.4255 6.20592L8.22552 11.4309H12.6255Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.6023 18.1245L12.0719 20.4226L14.37 19.8923L20.0269 14.2355L18.2591 12.4677L12.6023 18.1245Z\\\" fill=\\\"black\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21.6183 10.8768C21.1301 10.3886 20.3387 10.3886 19.8505 10.8768L18.9666 11.7607L20.7344 13.5285L21.6183 12.6446C22.1064 12.1564 22.1064 11.3649 21.6183 10.8768Z\\\" fill=\\\"black\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18 0H8C6.897 0 6 0.897 6 2V6H2C0.897 6 0 6.897 0 8V18C0 19.103 0.897 20 2 20H12C13.103 20 14 19.103 14 18V14H18C19.103 14 20 13.103 20 12V2C20 0.897 19.103 0 18 0ZM2 18V8H12L12.002 18H2ZM18 12H14V8C14 6.897 13.103 6 12 6H8V2H18V12Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4.5 8H4V8.5V19.5V20H4.5H15.5H16V19.5V8.5V8H15.5H4.5ZM20 4.5V4H19.5H8V3H19.5C20.3269 3 21 3.67314 21 4.5V16H20V4.5ZM15.5 21H4.5C3.67314 21 3 20.3269 3 19.5V8.5C3 7.67314 3.67314 7 4.5 7H15.5C16.3269 7 17 7.67314 17 8.5V19.5C17 20.3269 16.3269 21 15.5 21Z\\\" fill=\\\"currentColor\\\" stroke=\\\"currentColor\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17.5006 1.82662C17.9462 1.82628 18.1696 2.36506 17.8545 2.68017L10.5347 10L17.8507 17.3162C18.1658 17.6313 17.9424 18.1701 17.4967 18.1698L15.9945 18.1686C15.4646 18.1682 14.9565 17.9576 14.5818 17.5829L8.76692 11.7678L6.57926 13.9555C7.29731 15.282 7.09577 16.9745 5.97464 18.0957C4.60781 19.4625 2.39172 19.4625 1.02489 18.0957C-0.341949 16.7288 -0.341949 14.5127 1.02489 13.1459C2.01215 12.1586 3.44248 11.8845 4.67582 12.3234L6.99918 10L4.67579 7.67657C3.44245 8.1155 2.01213 7.84134 1.02487 6.85408C-0.341969 5.48724 -0.341969 3.27117 1.02487 1.90433C2.3917 0.537495 4.60778 0.537495 5.97461 1.90433C7.09574 3.02545 7.29728 4.71794 6.57923 6.04448L8.76694 8.23225L14.5856 2.41353C14.9603 2.03883 15.4684 1.82815 15.9983 1.82775L17.5006 1.82662ZM2.43911 14.5601C1.85332 15.1459 1.85332 16.0957 2.43911 16.6814C3.02489 17.2672 3.97464 17.2672 4.56043 16.6814C5.14622 16.0957 5.14622 15.1459 4.56043 14.5601C3.97464 13.9743 3.02489 13.9743 2.43911 14.5601ZM2.43908 5.43986C1.85329 4.85408 1.85329 3.90433 2.43908 3.31854C3.02486 2.73276 3.97461 2.73276 4.5604 3.31854C5.14618 3.90433 5.14618 4.85408 4.5604 5.43986C3.97461 6.02565 3.02486 6.02565 2.43908 5.43986ZM8.00098 10.006C8.00098 10.4202 8.33676 10.756 8.75098 10.756C9.16519 10.756 9.50098 10.4202 9.50098 10.006C9.50098 9.59179 9.16519 9.256 8.75098 9.256C8.33676 9.256 8.00098 9.59179 8.00098 10.006Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 160 120\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0 0H160V120H0V0Z\\\" fill=\\\"black\\\"></path><g clip-path=\\\"url(#clip0_954_17386)\\\"><path d=\\\"M24 24H160V120H24V24Z\\\" fill=\\\"#343A40\\\"></path><path d=\\\"M24 28C24 25.7909 25.7909 24 28 24H160V40H24V28Z\\\" fill=\\\"#16181C\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24 39V40H160V39H24Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29 30.5C29 29.9477 29.4477 29.5 30 29.5H34C34.5523 29.5 35 29.9477 35 30.5V34.5C35 35.0523 34.5523 35.5 34 35.5H30C29.4477 35.5 29 35.0523 29 34.5V30.5Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M39 30.5C39 29.9477 39.4477 29.5 40 29.5H44C44.5523 29.5 45 29.9477 45 30.5V34.5C45 35.0523 44.5523 35.5 44 35.5H40C39.4477 35.5 39 35.0523 39 34.5V30.5Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M49 30.5C49 29.9477 49.4477 29.5 50 29.5H64C64.5523 29.5 65 29.9477 65 30.5V34.5C65 35.0523 64.5523 35.5 64 35.5H50C49.4477 35.5 49 35.0523 49 34.5V30.5Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M24 40H72V120H24V40Z\\\" fill=\\\"#16181C\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M71 120H72V40H71V120Z\\\" fill=\\\"#485056\\\"></path></g><path d=\\\"M23 28C23 25.2386 25.2386 23 28 23H160V25H28C26.3431 25 25 26.3431 25 28H23ZM160 120H24H160ZM23 120V28C23 25.2386 25.2386 23 28 23V25C26.3431 25 25 26.3431 25 28V120H23ZM160 24V120V24Z\\\" fill=\\\"#485056\\\" mask=\\\"url(#path-2-inside-1_954_17386)\\\"></path><defs><clipPath id=\\\"clip0_954_17386\\\"><path d=\\\"M24 28C24 25.7909 25.7909 24 28 24H160V120H24V28Z\\\" fill=\\\"white\\\"></path></clipPath></defs></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - delete - line</title><path class=\\\"cls-1\\\" d=\\\"M18,6H17V4a2,2,0,0,0-2-2H9A2,2,0,0,0,7,4V6H3V8H5V20a2,2,0,0,0,2,2H17a2,2,0,0,0,2-2V8h2V6ZM9,4h6V6H9ZM7,20V8H17V20Zm6-10h2v8H13ZM9,10h2v8H9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - detach</title><path class=\\\"cls-1\\\" d=\\\"M4.8,2H6.4a.4.4,0,0,1,.4.4V13.6a.4.4,0,0,1-.4.4H4.8a.4.4,0,0,1-.4-.4V2.4A.4.4,0,0,1,4.8,2Zm4.4.4V13.6a.4.4,0,0,0,.4.4h1.6a.4.4,0,0,0,.4-.4V2.4a.4.4,0,0,0-.4-.4H9.6A.4.4,0,0,0,9.2,2.4Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 32 32\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 12L16 16L20 12L19 11L16 14L13 11L12 12Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 12L16 16L20 12L19 11L16 14L13 11L12 12Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 17L16 21L20 17L19 16L16 19L13 16L12 17Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 17L16 21L20 17L19 16L16 19L13 16L12 17Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - download</title><path class=\\\"cls-1\\\" d=\\\"M11.55,17,5.09,9.66a.6.6,0,0,1,.45-1H8.67V2.6a.6.6,0,0,1,.6-.6h5.46a.6.6,0,0,1,.6.6V8.67h3.13a.6.6,0,0,1,.45,1L12.45,17A.6.6,0,0,1,11.55,17ZM3.11,20.18V21.6a.4.4,0,0,0,.4.4h17a.4.4,0,0,0,.4-.4V20.18a.4.4,0,0,0-.4-.4h-17A.4.4,0,0,0,3.11,20.18Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-3 -2 14 12\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 29</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-545.000000, -716.000000)\\\" fill=\\\"#E7E7E7\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-29\\\" transform=\\\"translate(0.000000, 4.000000)\\\"><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"1\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"4\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"1\\\" cy=\\\"7\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"1\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"1\\\"></circle><circle id=\\\"Oval\\\" cx=\\\"4\\\" cy=\\\"7\\\" r=\\\"1\\\"></circle></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 19 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Shape</title><g id=\\\"Symbols---Light\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-/-operation-/-annotations-/-line\\\" transform=\\\"translate(-3.000000, -3.000000)\\\" fill=\\\"#868E96\\\"><path d=\\\"M19.0416689,12.7184193 L20.7833366,10.7017527 L20.7833366,19.3184193 C20.7844507,20.3973559 19.9361575,21.286044 18.8583355,21.335086 L5.10833553,21.335086 C4.56059488,21.3498468 4.02967481,21.1450706 3.63371079,20.7663225 C3.23774678,20.3875743 3.00958797,19.866275 3.0000011,19.3184193 L3.0000011,5.47675266 C2.99888704,4.3978161 3.84718022,3.50912801 4.92500219,3.46008599 L13.6333355,3.46008599 L11.8916689,5.20175266 L4.65000219,5.20175266 L4.65000219,19.5934193 L18.9500022,19.5934193 L18.9500022,12.7184193 L19.0416689,12.7184193 Z M21.3333355,6.57675266 C21.3310126,7.0882508 21.1344108,7.57975545 20.7833355,7.95175266 L11.2500022,17.3934193 L6.94166886,17.3934193 L6.94166886,12.9934193 L16.4750022,3.55175266 C17.244066,2.81608245 18.4559384,2.81608245 19.2250022,3.55175266 L20.7833355,5.11008599 C21.1507066,5.50867428 21.3480365,6.03488736 21.3333355,6.57675266 L21.3333355,6.57675266 Z M16.6583355,9.60175266 L14.6416689,7.58508599 L8.50000219,13.8184193 L8.50000219,15.835086 L10.4250022,15.835086 L16.6583355,9.60175266 Z M19.6833355,6.66841933 L17.6666689,4.65175266 L15.9250022,6.39341933 L17.9416689,8.41008599 L19.6833355,6.66841933 Z\\\" id=\\\"Shape\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 5H11.414L9.707 3.293C9.52 3.105 9.265 3 9 3H4C2.897 3 2 3.897 2 5V19C2 20.103 2.897 21 4 21H20C21.103 21 22 20.103 22 19V7C22 5.897 21.103 5 20 5ZM4 19V7H11H12H20L20.002 19H4Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / checkmark / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-585.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-checkmark-/-line\\\" transform=\\\"translate(135.000000, 1.000000)\\\"><path d=\\\"M19.19,3 L4.8,3 C3.80588745,3 3,3.80588745 3,4.8 L3,19.2 C3,20.1941125 3.80588745,21 4.8,21 L19.19,21 C20.1818401,20.9945352 20.9845352,20.1918401 20.99,19.2 L20.99,4.8 C20.9845352,3.80815987 20.1818401,3.00546481 19.19,3 Z M4.8,19.2 L4.8,4.8 L19.19,4.8 L19.19,19.2 L4.8,19.2 Z\\\" id=\\\"box\\\"></path><polygon id=\\\"checkmark\\\" points=\\\"11.01 12.99 9 10.99 7.73 12.26 11.13 15.66 16.26 9.5 14.88 8.35\\\"></polygon></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / combo box / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-675.000000, -45.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-combo-box-/-line\\\" transform=\\\"translate(225.000000, 0.000000)\\\"><path d=\\\"M20,2 L4,2 C3.04293208,2.00550048 2.27,2.78291627 2.27,3.74 L2.27,20.26 C2.27,21.2170837 3.04293208,21.9944995 4,22 L13.56,22 C14.5209755,22 15.3,21.2209755 15.3,20.26 L15.3,10.32 L20,10.32 C20.9609755,10.32 21.74,9.54097546 21.74,8.58 L21.74,3.74 C21.74,2.77902454 20.9609755,2 20,2 Z M13.6,20.28 L4,20.28 L4,10.28 L13.56,10.28 L13.6,20.28 Z M13.6,8.58 L4,8.58 L4,3.76 L13.56,3.76 L13.6,8.58 Z M20.02,8.58 L15.34,8.58 L15.34,3.74 L20,3.74 L20.02,8.58 Z M11.89,14.4 L5.89,14.4 L5.89,12.66 L11.89,12.66 L11.89,14.4 Z M11.89,18.75 L5.89,18.75 L5.89,17 L11.89,17 L11.89,18.75 Z M11.88,7 L6,7 L6,5.3 L11.9,5.3 L11.88,7 Z M17.14,6.13 L16.52,5.26 L19,5.26 L18.37,6.13 L17.78,7 L17.14,6.13 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / list box / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-540.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-list-box-/-line\\\" transform=\\\"translate(90.000000, 1.000000)\\\"><path d=\\\"M19.2,3.9 L4.8,3.9 C3.80815987,3.90546481 3.00546481,4.70815987 3,5.7 L3,18.3 C3.00546481,19.2918401 3.80815987,20.0945352 4.8,20.1 L19.2,20.1 C20.1918401,20.0945352 20.9945352,19.2918401 21,18.3 L21,5.7 C20.9945352,4.70815987 20.1918401,3.90546481 19.2,3.9 Z M4.8,18.3 L4.8,5.7 L19.2,5.7 L19.2,18.3 L4.8,18.3 Z M10.2,11.1 L17.4,11.1 L17.4,12.9 L10.2,12.9 L10.2,11.1 Z M10.2,7.5 L17.4,7.5 L17.4,9.3 L10.2,9.3 L10.2,7.5 Z M6.6,7.5 L8.4,7.5 L8.4,9.3 L6.6,9.3 L6.6,7.5 Z M10.2,14.7 L17.4,14.7 L17.4,16.5 L10.2,16.5 L10.2,14.7 Z M6.6,11.11 L8.4,11.11 L8.4,12.91 L6.6,12.91 L6.6,11.11 Z M6.6,14.7 L8.4,14.7 L8.4,16.5 L6.6,16.5 L6.6,14.7 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / radio button / line</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-630.000000, -45.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-radio-button-/-line\\\" transform=\\\"translate(180.000000, 0.000000)\\\"><path d=\\\"M12,3 C7.02943725,3 3,7.02943725 3,12 C3,16.9705627 7.02943725,21 12,21 C16.9705627,21 21,16.9705627 21,12 C21,7.02943725 16.9705627,3 12,3 Z M12,18.71 C8.29416933,18.71 5.29,15.7058307 5.29,12 C5.29,8.29416933 8.29416933,5.29 12,5.29 C15.7058307,5.29 18.71,8.29416933 18.71,12 L18.71,12 C18.6990169,15.7012718 15.7012718,18.6990169 12,18.71 L12,18.71 Z M15.66,12 C15.66,14.0213622 14.0213622,15.66 12,15.66 C9.97863782,15.66 8.34,14.0213622 8.34,12 C8.34,9.97863782 9.97863782,8.34 12,8.34 L12,8.34 C14.0123305,8.36163983 15.6383602,9.98766948 15.66,12 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / signature field</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-495.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-signature-field\\\" transform=\\\"translate(45.000000, 1.000000)\\\"><rect id=\\\"line-field\\\" x=\\\"4.16\\\" y=\\\"19.33\\\" width=\\\"3.95\\\" height=\\\"1.84\\\"></rect><rect id=\\\"line-field\\\" x=\\\"15.47\\\" y=\\\"19.33\\\" width=\\\"3.97\\\" height=\\\"1.84\\\"></rect><rect id=\\\"line-field\\\" x=\\\"10.37\\\" y=\\\"19.33\\\" width=\\\"2.85\\\" height=\\\"1.84\\\"></rect><path d=\\\"M19.3,12.6 C18.8011172,12.4852642 18.2961435,12.7658051 18.13,13.25 C17.94,13.95 17.26,16.02 15.94,16.41 C16.01,16.02 16.14,15.53 16.23,15.19 C16.61,13.75 16.89,12.71 16.02,12.19 C15.6305081,11.9024916 15.1425194,11.7820074 14.6639713,11.8551971 C14.1854232,11.9283868 13.7557535,12.1892188 13.47,12.58 C13.2677271,12.8426752 13.096585,13.1279121 12.96,13.43 C12.5316039,14.4369418 11.8577559,15.3205077 11,16 C10.6861675,16.1561782 10.3479766,16.2576354 10,16.3 C9.63781935,16.2361941 9.29545661,16.0889781 9,15.87 C8.9247858,15.7926735 8.86082555,15.705149 8.81,15.61 C13.7,11 14,6.89 13.91,5.68 C13.972568,4.66130281 13.5588159,3.67125316 12.79,3 C12.5592553,2.84166356 12.2727216,2.78725842 12,2.85 C9.38,3.4 7.76,6.55 6.9,12.78 C6.9,12.84 6.9,12.92 6.9,13.01 C6.74597659,13.6647619 6.69203125,14.3390787 6.74,15.01 C6.5,15.23 6.24,15.45 5.98,15.66 C5.63702664,16.0240749 5.23032934,16.3223196 4.78,16.54 C4.7855838,16.3090848 4.86242608,16.0855436 5,15.9 C5.14271894,15.6990247 5.19676153,15.4483085 5.14951078,15.2063846 C5.10226003,14.9644608 4.95785172,14.7525045 4.75,14.62 C4.31340093,14.3574805 3.74923757,14.4651452 3.44,14.87 C2.70616674,15.8294173 2.7738487,17.1788265 3.6,18.06 C3.89826724,18.3062994 4.27318448,18.4407037 4.66,18.4400027 C5.67361336,18.3025207 6.59829516,17.7884119 7.25,17 L7.43,16.85 L7.65,17.11 C8.24513418,17.6589582 8.99672851,18.008537 9.8,18.11 C10.620381,18.105293 11.4234173,17.8733816 12.12,17.44 C13.0831903,16.7387801 13.8592846,15.8115878 14.38,14.74 C14,16.19 13.8,17.11 14.25,17.74 C14.4499118,18.0242398 14.7640794,18.2068954 15.11,18.24 C17.29,18.48 19.11,16.77 19.96,13.68 C20.0619294,13.2018163 19.7720279,12.727432 19.3,12.6 Z M11.88,4.87 C11.9748135,5.23881339 12.0152403,5.61949948 12,6 C12,6.89 11.71,9.58 8.81,12.94 C9.29,9.69 10.18,5.89 11.88,4.87 Z M21.11,10.63 C21.1553574,11.1765896 20.8605349,11.6949686 20.3675712,11.9353938 C19.8746076,12.175819 19.2846111,12.0889784 18.8818287,11.7167099 C18.4790464,11.3444414 18.3460901,10.7630983 18.5470152,10.2527586 C18.7479402,9.74241896 19.2415363,9.40775489 19.79,9.41 C20.4895514,9.38737528 21.0775571,9.93083513 21.11,10.63 L21.11,10.63 Z\\\" id=\\\"signature\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / tool / form / text field</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Default-\\\" transform=\\\"translate(-450.000000, -46.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-5\\\" transform=\\\"translate(450.000000, 38.000000)\\\"><g id=\\\"Group-4\\\" transform=\\\"translate(0.000000, 7.000000)\\\"><g id=\\\"icon-/-tool-/-form-/-text-field\\\" transform=\\\"translate(0.000000, 1.000000)\\\"><path d=\\\"M4.8,3.12 L6.6,3.12 L6.6,4.92 L4.8,4.92 L4.8,6.72 L3,6.72 L3,4.92 C3.00546481,3.92815987 3.80815987,3.12546481 4.8,3.12 L4.8,3.12 Z M15.6,3.12 L8.4,3.12 L8.4,4.92 L15.6,4.92 L15.6,3.12 Z M4.8,9 L3,9 L3,15.24 L4.8,15.24 L4.8,9 Z M8.4,21 L15.6,21 L15.6,19.2 L8.4,19.2 L8.4,21 Z M4.8,17.4 L3,17.4 L3,19.2 C3.00546481,20.1918401 3.80815987,20.9945352 4.8,21 L6.6,21 L6.6,19.2 L4.8,19.2 L4.8,17.4 Z M19.2,19.2 L17.4,19.2 L17.4,21 L19.2,21 C20.1918401,20.9945352 20.9945352,20.1918401 21,19.2 L21,17.4 L19.2,17.4 L19.2,19.2 Z M19.2,3.11 L17.4,3.11 L17.4,4.91 L19.2,4.91 L19.2,6.71 L21,6.71 L21,4.92 C20.9945352,3.92815987 20.1918401,3.12546481 19.2,3.12 L19.2,3.11 Z M19.2,15.2 L21,15.2 L21,9 L19.2,9 L19.2,15.2 Z M15.8,8 L8.2,8 C8.10312734,8.00633297 8.02185672,8.07541299 8,8.17 L8,9.69 C7.99726713,9.75006018 8.01923348,9.80862219 8.0607914,9.8520691 C8.10234931,9.89551601 8.15987771,9.92006214 8.22,9.92 L8.67,9.92 C8.79702549,9.92 8.9,9.81702549 8.9,9.69 L8.9,9.08 L11.27,9.08 L11.27,15.38 L10.44,15.38 C10.319066,15.3900236 10.2246415,15.4887401 10.22,15.61 L10.22,16.06 L10.22,16.06 C10.2225927,16.1183688 10.248297,16.173309 10.291444,16.2127042 C10.3345911,16.2520993 10.3916366,16.2727133 10.45,16.27 L13.6,16.27 C13.6583476,16.27 13.7143055,16.2468215 13.7555635,16.2055635 C13.7968215,16.1643055 13.82,16.1083476 13.82,16.05 L13.82,15.61 C13.8045398,15.4964187 13.7044578,15.4137422 13.59,15.42 L12.75,15.42 L12.75,9.12 L15.14,9.12 L15.14,9.73 C15.1399379,9.79012229 15.164484,9.84765069 15.2079309,9.8892086 C15.2513778,9.93076652 15.3099398,9.95273287 15.37,9.95 L15.82,9.95 C15.925681,9.93047497 16.0017885,9.83745465 16.0000309,9.73 L16.0000309,8.17 C15.9781433,8.07541299 15.8968727,8.00633297 15.8,8 L15.8,8 Z\\\" id=\\\"Shape\\\"></path></g></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - chat - line</title><path class=\\\"cls-1\\\" d=\\\"M16.39,6.12h-12a2,2,0,0,0-2,2v8a2,2,0,0,0,2,2h1v3.76L6.9,21l4.76-2.85h4.73a2,2,0,0,0,2-2v-8A2,2,0,0,0,16.39,6.12Zm0,10H11.11L7.39,18.35V16.12h-3v-8h12Zm6-12v9h-2v-9h-13v-2h13A2,2,0,0,1,22.39,4.12Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 4H3C1.89543 4 1 4.89543 1 6V18C1 19.1046 1.89543 20 3 20H21C22.1046 20 23 19.1046 23 18V6C23 4.89543 22.1046 4 21 4ZM11 18H3V6H11V18ZM21 18H13V6H21V18Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.74 13.59H8.26L8.91 15H10.11L7.75 9.26999C7.64698 9.10354 7.46575 9.0016 7.27 8.99999H6.79C6.57724 8.99864 6.3843 9.12464 6.3 9.31999L3.89 15H5.09L5.74 13.59ZM7 10.6L7.71 12.39H6.28L7 10.6Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.5 13.2C19.5012 12.7008 19.2904 12.2247 18.92 11.89C19.1656 11.5797 19.2995 11.1957 19.3 10.8C19.2945 9.80816 18.4918 9.00547 17.5 9H14.5V15H17.7C18.6918 14.9945 19.4945 14.1918 19.5 13.2ZM15.7 10.2H17.5C17.8314 10.2 18.1 10.4686 18.1 10.8C18.1 11.1314 17.8314 11.4 17.5 11.4H15.7V10.2ZM15.7 12.6H17.7C18.0314 12.6 18.3 12.8686 18.3 13.2C18.3 13.5314 18.0314 13.8 17.7 13.8H15.7V12.6Z\\\"></path></svg>\"","module.exports = \"<svg data-name=\\\"Layer 1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M3.16,19.22a.93.93,0,0,0,.79.43H18.17a1,1,0,0,0,.88-.57l2.84-6.64A1,1,0,0,0,21,11.11h-.95V7.32a1.9,1.9,0,0,0-1.9-1.9H12.39L10.22,3.73a.93.93,0,0,0-.58-.2H4.9A1.9,1.9,0,0,0,3,5.42V18.7H3A.88.88,0,0,0,3.16,19.22Zm14.39-1.47H5.39l2-4.74H19.58Zm.62-10.43v3.79H6.79a1,1,0,0,0-.87.58l-1,2.39V7.32H18.17Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - full screen - exit</title><path class=\\\"cls-1\\\" d=\\\"M9.5,2H7V7H2V9.5H9.5ZM7,22H9.5V14.5H2V17H7Zm15-7.5H14.5V22H17V17h5ZM22,7H17V2H14.5V9.5H22Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - full screen</title><path class=\\\"cls-1\\\" d=\\\"M4.22,4.22H9.78V2H2V9.78H4.22ZM9.78,19.78H4.22V14.22H2V22H9.78ZM22,14.22H19.78v5.56H14.22V22H22ZM19.78,9.78H22V2H14.22V4.22h5.56Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.825 6.68301L15.85 2.83301L18.875 6.68301H16.675C17.0417 8.88301 18.9667 10.533 21.1667 10.533V11.9997C18.05 11.9997 15.4833 9.70801 15.1167 6.68301H12.825ZM13.8333 12.1831V19.7915C13.8333 20.5248 13.1916 21.1665 12.4583 21.1665H4.20825C3.47492 21.1665 2.83325 20.5248 2.83325 19.7915V8.79145C2.83325 8.05812 3.47492 7.41645 4.20825 7.41645H9.06659C9.15825 7.41645 9.15825 7.41645 9.24992 7.41645H9.34159C9.43325 7.41645 9.52492 7.50812 9.52492 7.59978L13.6499 11.7248C13.7416 11.8165 13.7416 11.8165 13.7416 11.9081V11.9998C13.8333 11.9998 13.8333 12.0915 13.8333 12.1831ZM11.9999 19.3331V12.9165H9.06659C8.60825 12.9165 8.33325 12.6414 8.33325 12.1831V9.24978H4.66659V19.3331H11.9999Z\\\" fill=\\\"#868E96\\\"></path><line x1=\\\"15\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"21\\\" x2=\\\"18\\\" y2=\\\"15\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - line</title><path class=\\\"cls-1\\\" d=\\\"M10.75,10.43v.7a4,4,0,0,0-.84.5l-.61-.36a.45.45,0,0,0-.61.16L7.82,13a.44.44,0,0,0,.17.6H8l.6.35a4.18,4.18,0,0,0,0,1L8,15.3a.44.44,0,0,0-.17.58l.89,1.53a.45.45,0,0,0,.61.16l.61-.36a4,4,0,0,0,.84.5v.71a.46.46,0,0,0,.45.44H13a.44.44,0,0,0,.44-.44v-.71a3.39,3.39,0,0,0,.84-.5l.62.36a.45.45,0,0,0,.61-.16l.89-1.53a.45.45,0,0,0-.17-.61l-.6-.35a4.18,4.18,0,0,0,0-1l.6-.35a.44.44,0,0,0,.17-.6h0l-.89-1.54a.45.45,0,0,0-.61-.16l-.62.36a3.39,3.39,0,0,0-.84-.5v-.7A.44.44,0,0,0,13,10H11.2A.45.45,0,0,0,10.75,10.43Zm1.35,2.22a1.78,1.78,0,1,1-1.77,1.79h0a1.78,1.78,0,0,1,1.75-1.78Zm7.84-4V8.6a.84.84,0,0,0-.2-.29l-6-6a1.15,1.15,0,0,0-.29-.2h-.1A.79.79,0,0,0,13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V8.94A1,1,0,0,0,19.94,8.69ZM18,20H6V4h6l6,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - cover - line</title><path class=\\\"cls-1\\\" d=\\\"M2.13,14.13H1V12.59H2.13Zm0,1.18H1V16.5a1.12,1.12,0,0,0,1.13,1.12H3.31V16.5H2.13Zm0-5.44H1v1.54H2.13Zm0-2.37H3.31V6.38H2.13A1.12,1.12,0,0,0,1,7.5V8.68H2.13Zm4.2.83,1-1-.83-.83a.57.57,0,0,0-.16-.11l-.06,0-.14,0H4.49V7.5h1ZM8.88,16.5H7.69v1.12H8.88A1.12,1.12,0,0,0,10,16.5V15.32H8.88ZM4.49,17.62h2V16.5h-2Zm4.39-3.49H10V10.61L8.88,11.74Zm.55-4.62-1.3-1.3-1,1,1.3,1.3Zm11.57.8V16.5a1.12,1.12,0,0,1-1.13,1.12H13.12A1.12,1.12,0,0,1,12,16.5v-9a1.12,1.12,0,0,1,1.12-1.12h4l.14,0,.06,0a.57.57,0,0,1,.16.11l3.38,3.37a1,1,0,0,1,.11.17s0,0,0,.05a.4.4,0,0,1,0,.15ZM19.88,16.5V10.88H17.06a.57.57,0,0,1-.56-.57V7.5H13.12v9Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - double page - line</title><path class=\\\"cls-1\\\" d=\\\"M11,10.13s0,0,0-.05a1,1,0,0,0-.11-.17L7.46,6.54a.57.57,0,0,0-.16-.11l-.06,0-.14,0h-4A1.12,1.12,0,0,0,2,7.5v9a1.12,1.12,0,0,0,1.13,1.12H9.88A1.12,1.12,0,0,0,11,16.5V10.28A.4.4,0,0,0,11,10.13ZM3.13,16.5v-9H6.5v2.81a.57.57,0,0,0,.56.57H9.88V16.5ZM22,10.28a.4.4,0,0,0,0-.15s0,0,0-.05a1,1,0,0,0-.11-.17L18.46,6.54a.57.57,0,0,0-.16-.11l-.06,0-.14,0h-4A1.12,1.12,0,0,0,13,7.5v9a1.12,1.12,0,0,0,1.13,1.12h6.74A1.12,1.12,0,0,0,22,16.5V10.28ZM14.13,16.5v-9H17.5v2.81a.57.57,0,0,0,.56.57h2.81V16.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page layout - single page - line</title><path class=\\\"cls-1\\\" d=\\\"M20,8.94a2,2,0,0,0,0-.26.36.36,0,0,0,0-.09,1.17,1.17,0,0,0-.19-.3l-6-6a1.17,1.17,0,0,0-.3-.19l-.09,0L13.06,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V9S20,9,20,8.94ZM6,20V4h6V9a1,1,0,0,0,1,1h5V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - clockwise - line</title><path class=\\\"cls-1\\\" d=\\\"M22,7.83,18.67,12,15.33,7.83h2.43a5,5,0,0,0-4.93-4.16V2a6.64,6.64,0,0,1,6.61,5.83ZM14,12.2s0,0,0,.05V20.5A1.5,1.5,0,0,1,12.5,22h-9A1.5,1.5,0,0,1,2,20.5V8.5A1.5,1.5,0,0,1,3.5,7H8.8a.65.65,0,0,1,.19,0l.07,0a.86.86,0,0,1,.22.15l4.5,4.5a.66.66,0,0,1,.15.22s0,.05,0,.07A.65.65,0,0,1,14,12.2ZM12,20V13H8.75A.76.76,0,0,1,8,12.25V9H4V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page rotation - counterclockwise - line</title><path class=\\\"cls-1\\\" d=\\\"M22.39,11.17H20.72a5,5,0,0,0-4.17-4.93V8.67L12.39,5.33,16.55,2V4.56a6.66,6.66,0,0,1,5.84,6.61Zm-8,1s0,0,0,.05V20.5a1.5,1.5,0,0,1-1.5,1.5h-9a1.5,1.5,0,0,1-1.5-1.5V8.5A1.5,1.5,0,0,1,3.89,7H9.18a.71.71,0,0,1,.2,0l.07,0a1.07,1.07,0,0,1,.22.15l4.5,4.5a.86.86,0,0,1,.15.22.19.19,0,0,0,0,.07A1.29,1.29,0,0,1,14.38,12.2Zm-2,7.8V13H9.14a.75.75,0,0,1-.75-.75V9h-4V20Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - continuous page - line</title><path class=\\\"cls-1\\\" d=\\\"M20,2V9a2,2,0,0,1-2,2H6A2,2,0,0,1,4,9V2H6V9H18V2Zm0,17.94s0,0,0,.06v2H18V21H13a1,1,0,0,1-1-1V15H6v7H4V15a2,2,0,0,1,2-2h7.06l.26.05.09,0a1.17,1.17,0,0,1,.3.19l6,6a1.17,1.17,0,0,1,.19.3.36.36,0,0,1,0,.09A2,2,0,0,1,20,19.94Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - page manipulation - page transition - page by page - line</title><path class=\\\"cls-1\\\" d=\\\"M17,17V7.83s0,0,0,0a1.7,1.7,0,0,0,0-.22l0-.07a.82.82,0,0,0-.16-.25l-5-5a.82.82,0,0,0-.25-.16l-.08,0-.21,0H5.34A1.67,1.67,0,0,0,3.67,3.67V17a1.67,1.67,0,0,0,1.67,1.67h10A1.67,1.67,0,0,0,17,17ZM5.67,4h4.66V7.83a.84.84,0,0,0,.84.83H15v8H5.67ZM20.33,9.51V20.33A1.67,1.67,0,0,1,18.66,22H11.17V20h7.16V9.51Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / page manipulation / reflow / reader</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"D---view\\\" transform=\\\"translate(-75.000000, -147.000000)\\\" fill=\\\"#868E96\\\"><g id=\\\"Group-Copy\\\" transform=\\\"translate(63.000000, 37.000000)\\\"><g id=\\\"page-transitions\\\" transform=\\\"translate(0.000000, 10.000000)\\\"><g id=\\\"page-by-page-copy\\\" transform=\\\"translate(0.000000, 96.000000)\\\"><g id=\\\"icon-/-page-manipulation-/-reflow-/-reader\\\" transform=\\\"translate(12.000000, 4.000000)\\\"><path d=\\\"M17.33,3 L5.67,3 C4.74768447,3 4,3.74768447 4,4.67 L4,19.67 C4,20.5923155 4.74768447,21.34 5.67,21.34 L17.33,21.34 C18.2523155,21.34 19,20.5923155 19,19.67 L19,4.67 C19,3.74768447 18.2523155,3 17.33,3 Z M5.67,19.67 L5.67,4.67 L17.33,4.67 L17.33,19.67 L5.67,19.67 Z\\\" id=\\\"page\\\"></path><path d=\\\"M13.66,15 L13.66,16.8 L7.33,16.8 L7.33,15 L13.66,15 Z M15.67,10.83 L15.67,12.63 L7.34,12.63 L7.34,10.83 L15.67,10.83 Z M15.67,6.78 L15.67,8.58 L7.34,8.58 L7.34,6.78 L15.67,6.78 Z\\\" id=\\\"text-2\\\"></path></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon-header-pan20</title><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g transform=\\\"translate(-369.000000, -78.000000)\\\"><g transform=\\\"translate(-22.000000, 0.000000)\\\"><g transform=\\\"translate(391.000000, 78.000000)\\\"><rect fill=\\\"none\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"20\\\" height=\\\"20\\\"></rect><path d=\\\"M4.84116789,10.6404137 C4.46186271,10.6404137 3.96297997,10.9126703 3.804829,11.1798615 C3.56953121,11.5774827 3.81897258,11.930783 3.98998135,12.1055337 L4.90417112,13.043869 C5.82350401,13.9872696 6.74283689,14.9294038 7.66345556,15.8690054 C9.43397498,17.6696974 11.5349399,18.024264 13.7413389,16.8921834 C15.5478601,15.9639786 16.5301962,14.4798639 16.66006,12.4816276 C16.7089197,11.7281735 16.7024908,10.9506595 16.6947761,10.1984717 L16.689633,9.37283798 C16.689633,9.37283798 16.6909188,7.17705742 16.6857756,6.07663452 C16.6844899,5.86516085 16.6214866,5.70560586 16.4993375,5.60176848 C16.3797599,5.49919742 16.1971792,5.44474611 15.9721676,5.44474611 L15.9631671,5.44474611 C15.5607179,5.44601242 15.1454109,5.73346466 15.1454109,6.20959701 L15.1441251,9.50833309 C15.1441251,9.63876296 15.1454109,9.78945378 15.0618352,9.92494889 C14.8496814,10.2630535 14.5938112,10.4302064 14.2955101,10.4302064 C13.8622022,10.4302064 13.5960457,10.0515798 13.5021837,9.88949223 C13.4288942,9.77045914 13.43018,9.63496403 13.4314658,9.54505606 L13.4314658,8.23949103 C13.4327516,6.96431743 13.4327516,5.68661122 13.4288942,4.41017131 C13.4327516,4.10372442 13.1254501,3.7656198 12.6239958,3.74789147 C12.3899838,3.75675564 12.2151177,3.84666361 12.1199699,3.9391042 C11.9605332,4.09359395 11.8923868,4.29493715 11.8949584,4.42663333 C11.9232456,5.8993512 11.9219598,7.41765621 11.9193882,8.90050456 L11.9193882,9.48427321 C11.9193882,9.61090415 11.9103878,9.74260033 11.8460987,9.86923128 C11.7830955,9.9933296 11.5426546,10.3985486 11.0939173,10.3985486 C10.6541804,10.3985486 10.3725946,10.0249873 10.3083056,9.89329116 C10.2337303,9.7375351 10.2337303,9.5767138 10.2337303,9.44881654 L10.2337303,7.43031931 C10.2337303,6.08423238 10.2337303,4.74067807 10.229873,3.39585745 C10.2388734,3.22743829 10.1758702,3.06914962 10.0562926,2.94378498 C9.89557009,2.77663214 9.65770074,2.68419155 9.38768689,2.68419155 C8.82708669,2.68419155 8.52621411,3.11726937 8.52492833,3.4300478 C8.52364255,4.64950379 8.52492833,5.78791597 8.52621411,6.94025756 L8.52878567,9.50200154 L8.52492833,10.8506211 C8.72551005,11.0063771 9.30539695,11.4470528 9.70913195,11.754766 C10.0640073,12.0257562 10.381595,12.2650887 10.487029,12.3511978 C10.6593236,12.4904918 10.6914681,12.8159333 10.6708956,12.9995482 C10.6400369,13.2756037 10.4960295,13.4896099 10.2671606,13.6048441 C10.0112903,13.7327414 9.60755531,13.7276761 9.41725983,13.5947136 C9.09452899,13.362979 8.38092094,12.8627868 7.84475058,12.4866929 C7.4783032,12.2296321 7.19414576,12.0308215 7.1658586,12.0080279 C6.73897955,11.7142441 5.72449892,11.0127087 5.56377639,10.9000072 C5.36319467,10.7936372 5.18832856,10.7163923 5.02117712,10.6657399 C4.96588857,10.6480116 4.9054569,10.6404137 4.84116789,10.6404137 M11.253354,19.2323232 C9.51112179,19.2323232 7.84475058,18.4750702 6.43424963,17.0403416 C5.66792459,16.2577624 4.90288534,15.4726505 4.13784608,14.688805 L2.75691808,13.2705384 C1.9353045,12.429709 1.76686728,11.2748347 2.32875326,10.3301679 C2.87392409,9.41335988 4.28442503,8.68396565 5.52134564,9.05499431 C5.80678886,9.14110335 6.09223208,9.26520168 6.42139183,9.44501762 L6.81869793,9.71220891 L6.81612637,3.42751519 C6.81741215,2.25997789 7.80103405,1 9.38768689,1 C10.1334394,1 10.8136172,1.27858808 11.2996421,1.78764447 C11.4359348,1.92820482 11.5542266,2.0877598 11.6493744,2.25617896 C11.9631048,2.12321647 12.3051223,2.05230314 12.6805701,2.06496623 C13.851916,2.10802075 14.8355379,2.89946415 15.0798361,3.9125117 C15.3575646,3.81373956 15.6532941,3.76308719 15.9554525,3.76182088 C16.6729178,3.76182088 17.2798061,3.99228919 17.7259719,4.42663333 C18.1605656,4.8521133 18.3920061,5.41941993 18.3945776,6.06903666 C18.4010065,7.17199218 18.398435,9.37410429 18.398435,9.37410429 L18.4035781,10.1883413 C18.4112928,10.9671216 18.4190074,11.7724944 18.3662905,12.5879976 C18.2004248,15.1776004 16.8734996,17.1821683 14.5320937,18.3851622 C13.4353231,18.9486699 12.3321237,19.2323232 11.253354,19.2323232\\\"></path></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - print - line</title><path class=\\\"cls-1\\\" d=\\\"M20,6H18V2H6V6H4A2,2,0,0,0,2,8v9a2,2,0,0,0,2,2H6v3H18V19h2a2,2,0,0,0,2-2V8A2,2,0,0,0,20,6ZM8,4h8V6H8Zm8,16H8V16h8Zm4-3H18V14H6v3H4V8H20Zm-4-7h2v2H16Zm-3,0h2v2H13Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - search</title><path class=\\\"cls-1\\\" d=\\\"M17.69,15.79a8.63,8.63,0,1,0-1.52,1.51l4.42,4.42a.42.42,0,0,0,.57,0l.94-.95a.39.39,0,0,0,0-.56Zm-5.28,1A6.42,6.42,0,1,1,17.19,12,6.43,6.43,0,0,1,12.41,16.8Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - select - line</title><path class=\\\"cls-1\\\" d=\\\"M21.56,15.57l-2.12-2.49L18.33,11.7l1.38-1.11,1.37-1.11a.81.81,0,0,0,.34-.84c-.08-.39-.32-.54-.68-.7l-11-2.7c-.62-.06-1.17.38-1.1.89V17.7a.8.8,0,0,0,.54.81.72.72,0,0,0,.9-.15l1.38-1.11,1.37-1.11,1.67,2.06L16.05,20a1.67,1.67,0,0,0,2.49.27l2.75-2.22A1.66,1.66,0,0,0,21.56,15.57Zm-3.84,3-1.46-1.67L14,14.13l-.67-.7-1,.78-1.79,1.44v-8l7.73,1.71-1.66,1.46-1,.77,2.21,2.76,2.14,2.36ZM5.37,5.24V18.86h.25a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1h.38V5.24H3a.92.92,0,0,1-1-1,1,1,0,0,1,1-1H5.62a.92.92,0,0,1,1,1,.89.89,0,0,1-.87,1Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - settings - line</title><path class=\\\"cls-1\\\" d=\\\"M12,8a4,4,0,1,0,4,4A4,4,0,0,0,12,8Zm0,6a2,2,0,1,1,2-2A2,2,0,0,1,12,14Zm8.42-.6-.5-.29a7.74,7.74,0,0,0,0-2.22l.5-.29a2,2,0,0,0,.73-2.74l-1-1.72a2.06,2.06,0,0,0-2.73-.74l-.53.31A8.07,8.07,0,0,0,15,4.6V4a2,2,0,0,0-2-2H11A2,2,0,0,0,9,4v.6A8.07,8.07,0,0,0,7.1,5.71L6.57,5.4a2.07,2.07,0,0,0-2.73.73l-1,1.73a2,2,0,0,0,.73,2.74l.5.29a7.74,7.74,0,0,0,0,2.22l-.5.29a2,2,0,0,0-.73,2.74l1,1.73a2.05,2.05,0,0,0,2.72.73l.53-.31A8.07,8.07,0,0,0,9,19.4V20a2,2,0,0,0,2,2h2a2,2,0,0,0,2-2v-.6a8.07,8.07,0,0,0,1.9-1.11l.53.31a2.07,2.07,0,0,0,2.73-.73l1-1.73A2,2,0,0,0,20.42,13.4Zm-2.59-2.78A5.86,5.86,0,0,1,18,12a5.92,5.92,0,0,1-.17,1.38,1,1,0,0,0,.47,1.11l1.12.64-1,1.73-1.15-.66a1,1,0,0,0-1.19.15,6.05,6.05,0,0,1-2.38,1.39,1,1,0,0,0-.71,1V20H11V18.7a1,1,0,0,0-.71-1,6.05,6.05,0,0,1-2.38-1.39,1,1,0,0,0-.69-.28,1,1,0,0,0-.5.13l-1.14.67-1-1.73,1.12-.65a1,1,0,0,0,.47-1.11A5.92,5.92,0,0,1,6,12a5.86,5.86,0,0,1,.17-1.38A1,1,0,0,0,5.7,9.51L4.58,8.86l1-1.73,1.15.67a1,1,0,0,0,1.19-.15,6.05,6.05,0,0,1,2.38-1.39,1,1,0,0,0,.71-1V4h2V5.3a1,1,0,0,0,.71,1,6.05,6.05,0,0,1,2.38,1.39,1,1,0,0,0,1.19.15l1.14-.66,1,1.73-1.12.64A1,1,0,0,0,17.83,10.62Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - sidebar - line</title><path class=\\\"cls-1\\\" d=\\\"M19.78,2H4.22A2.23,2.23,0,0,0,2,4.22V19.78A2.23,2.23,0,0,0,4.22,22H19.78A2.23,2.23,0,0,0,22,19.78V4.22A2.23,2.23,0,0,0,19.78,2ZM7.56,19.78H4.22V4.22H7.56Zm2.22,0V4.22h10V19.78Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - fit to page</title><path class=\\\"cls-1\\\" d=\\\"M9.76,13.06l-5,5L3.07,16.4a.4.4,0,0,0-.68.28V21.6a.4.4,0,0,0,.4.4H7.71A.4.4,0,0,0,8,21.32L6.32,19.64l5-5a.4.4,0,0,0,0-.57l-1-1A.39.39,0,0,0,9.76,13.06Zm7-10.38,1.67,1.68-5,5a.4.4,0,0,0,0,.57l1,1A.4.4,0,0,0,15,11l5-5L21.71,7.6a.4.4,0,0,0,.68-.28V2.4A.4.4,0,0,0,22,2H17.07A.4.4,0,0,0,16.79,2.68Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - fit to width</title><path class=\\\"cls-1\\\" d=\\\"M5.93,4.36,9.17,7.6a.39.39,0,0,1,0,.56l-1,1a.39.39,0,0,1-.56,0L4.36,5.93,2.68,7.6A.4.4,0,0,1,2,7.32V2.4A.4.4,0,0,1,2.4,2H7.32a.4.4,0,0,1,.28.68ZM7.6,14.83,4.36,18.07,2.68,16.4a.4.4,0,0,0-.68.28V21.6a.4.4,0,0,0,.4.4H7.32a.4.4,0,0,0,.28-.68L5.93,19.64,9.17,16.4a.39.39,0,0,0,0-.56l-1-1A.39.39,0,0,0,7.6,14.83ZM16.4,2.68l1.67,1.68L14.83,7.6a.39.39,0,0,0,0,.56l1,1a.39.39,0,0,0,.56,0l3.24-3.24L21.32,7.6A.4.4,0,0,0,22,7.32V2.4a.4.4,0,0,0-.4-.4H16.68A.4.4,0,0,0,16.4,2.68Zm-.56,12.15-1,1a.39.39,0,0,0,0,.56l3.24,3.24L16.4,21.32a.4.4,0,0,0,.28.68H21.6a.4.4,0,0,0,.4-.4V16.68a.4.4,0,0,0-.68-.28l-1.68,1.67L16.4,14.83A.39.39,0,0,0,15.84,14.83Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - in - line</title><path class=\\\"cls-1\\\" d=\\\"M13,11h4v2H13v4H11V13H7V11h4V7h2Zm9,1A10,10,0,1,1,12,2,10,10,0,0,1,22,12Zm-2,0a8,8,0,1,0-8,8A8,8,0,0,0,20,12Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - marquee</title><path class=\\\"cls-1\\\" d=\\\"M3.05,18.84H6.21v-2.1H4.11V14.63H2v3.16A1,1,0,0,0,3.05,18.84ZM18.84,3.05a1,1,0,0,0-1.05-1H14.63V4.11h2.11v2.1h2.1ZM4.11,4.11h2.1V2H3.05a1,1,0,0,0-1,1V6.21H4.11ZM2,8.32H4.11v4.21H2Zm14.74,0h2.1v3.15h-2.1ZM22,21l-1.81-1.82a3.53,3.53,0,0,0,.59-1.95,3.64,3.64,0,1,0-1.65,3L21,22Zm-6.9-3.77a2.08,2.08,0,1,1,2.08,2.08A2.08,2.08,0,0,1,15.1,17.18ZM8.32,2h4.21V4.11H8.32Zm0,14.74h3.15v2.1H8.32Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - zoom - out - line</title><path class=\\\"cls-1\\\" d=\\\"M7,11H17v2H7Zm15,1A10,10,0,1,1,12,2,10,10,0,0,1,22,12Zm-2,0a8,8,0,1,0-8,8A8,8,0,0,0,20,12Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.1502 3H4.85016C3.75016 3 2.8335 3.91667 2.8335 5.01667V19.3167C2.8335 20.4167 3.75016 21.3333 4.85016 21.3333H19.1502C20.2502 21.3333 21.1668 20.4167 21.1668 19.3167V5.01667C21.1668 3.91667 20.2502 3 19.1502 3ZM4.85016 19.3167V5.01667H19.1502V19.3167H4.85016Z\\\" fill=\\\"#008000\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6502 8.59167L18.1418 15.7417H5.8585L8.70016 11.6167L10.2585 14L13.6502 8.59167Z\\\" fill=\\\"#008000\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M8.66671 11.3333V7.33325H7.33337V11.3333H8.66671Z\\\"></path><path d=\\\"M8.66671 5.99992V4.66659H7.33337V5.99992H8.66671Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.33337 7.99992C1.33337 4.32392 4.32404 1.33325 8.00004 1.33325C11.676 1.33325 14.6667 4.32392 14.6667 7.99992C14.6667 11.6759 11.676 14.6666 8.00004 14.6666C4.32404 14.6666 1.33337 11.6759 1.33337 7.99992ZM2.66671 7.99992C2.66671 10.9406 5.05937 13.3333 8.00004 13.3333C10.9407 13.3333 13.3334 10.9406 13.3334 7.99992C13.3334 5.05925 10.9407 2.66659 8.00004 2.66659C5.05937 2.66659 2.66671 5.05925 2.66671 7.99992Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21 6.7H3C2.83431 6.7 2.7 6.83431 2.7 7V17C2.7 17.1657 2.83431 17.3 3 17.3H21C21.1657 17.3 21.3 17.1657 21.3 17V7C21.3 6.83431 21.1657 6.7 21 6.7ZM3 5C1.89543 5 1 5.89543 1 7V17C1 18.1046 1.89543 19 3 19H21C22.1046 19 23 18.1046 23 17V7C23 5.89543 22.1046 5 21 5H3Z\\\" fill=\\\"#868E96\\\"></path><rect x=\\\"5\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"5\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"9\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"9\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"13\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"13\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"17\\\" y=\\\"8\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"17\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\" fill=\\\"#868E96\\\"></rect><rect x=\\\"7\\\" y=\\\"14.3\\\" width=\\\"10\\\" height=\\\"1.7\\\" fill=\\\"#868E96\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 160 120\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect width=\\\"160\\\" height=\\\"120\\\" fill=\\\"white\\\"></rect><g clip-path=\\\"url(#clip0_954_17345)\\\"><path d=\\\"M24 24H160V120H24V24Z\\\" fill=\\\"#E7EBEE\\\"></path><mask id=\\\"path-5-inside-2_954_17345\\\" fill=\\\"white\\\"><path d=\\\"M24 24H160V40H24V24Z\\\"></path></mask><path d=\\\"M24 24H160V40H24V24Z\\\" fill=\\\"#F8F9FA\\\"></path><path d=\\\"M24 24H160H24ZM160 41H24V39H160V41ZM24 40V24V40ZM160 24V40V24Z\\\" fill=\\\"#CFD4DA\\\" mask=\\\"url(#path-5-inside-2_954_17345)\\\"></path><mask id=\\\"path-7-inside-3_954_17345\\\" fill=\\\"white\\\"><path d=\\\"M24 40H72V120H24V40Z\\\"></path></mask><path d=\\\"M24 40H72V120H24V40Z\\\" fill=\\\"#F8F9FA\\\"></path><path d=\\\"M24 40H72H24ZM72 120H24H72ZM24 120V40V120ZM73 40V120H71V40H73Z\\\" fill=\\\"#CFD4DA\\\" mask=\\\"url(#path-7-inside-3_954_17345)\\\"></path><rect x=\\\"29\\\" y=\\\"29.5\\\" width=\\\"6\\\" height=\\\"6\\\" rx=\\\"1\\\" fill=\\\"#E7EBEE\\\"></rect><rect x=\\\"39\\\" y=\\\"29.5\\\" width=\\\"6\\\" height=\\\"6\\\" rx=\\\"1\\\" fill=\\\"#E7EBEE\\\"></rect><rect x=\\\"49\\\" y=\\\"29.5\\\" width=\\\"16\\\" height=\\\"6\\\" rx=\\\"1\\\" fill=\\\"#E7EBEE\\\"></rect></g><path d=\\\"M23 28C23 25.2386 25.2386 23 28 23H160V25H28C26.3431 25 25 26.3431 25 28H23ZM160 120H24H160ZM23 120V28C23 25.2386 25.2386 23 28 23V25C26.3431 25 25 26.3431 25 28V120H23ZM160 24V120V24Z\\\" fill=\\\"#CFD4DA\\\" mask=\\\"url(#path-2-inside-1_954_17345)\\\"></path><defs><clipPath id=\\\"clip0_954_17345\\\"><path d=\\\"M24 28C24 25.7909 25.7909 24 28 24H160V120H24V28Z\\\" fill=\\\"white\\\"></path></clipPath></defs></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 3\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.548781 0C0.245697 0 -0.00561448 0.248254 0.0542735 0.545361C0.335761 1.94184 1.67859 3 3.29268 3C4.43797 3 5.44669 2.46725 6.03659 1.6589C6.62648 2.46725 7.6352 3 8.78049 3C9.92578 3 10.9345 2.46724 11.5244 1.65889C12.1143 2.46724 13.123 3 14.2683 3C15.4136 3 16.4223 2.46724 17.0122 1.65889C17.6021 2.46724 18.6108 3 19.7561 3C20.9014 3 21.9101 2.46724 22.5 1.65889C23.0899 2.46724 24.0986 3 25.2439 3C26.3892 3 27.3979 2.46724 27.9878 1.65889C28.5777 2.46724 29.5864 3 30.7317 3C31.877 3 32.8857 2.46724 33.4756 1.65889C34.0655 2.46724 35.0742 3 36.2195 3C37.3648 3 38.3735 2.46724 38.9634 1.65889C39.5533 2.46724 40.562 3 41.7073 3C43.3214 3 44.6642 1.94184 44.9457 0.545362C45.0056 0.248254 44.7543 0 44.4512 0V0C44.1481 0 43.9103 0.251098 43.8213 0.540791C43.5624 1.38263 42.714 2 41.7073 2C40.7007 2 39.8523 1.38263 39.5934 0.540791C39.5043 0.251098 39.2665 0 38.9634 0V0C38.6603 0 38.4225 0.251098 38.3334 0.540791C38.0745 1.38263 37.2262 2 36.2195 2C35.2129 2 34.3645 1.38263 34.1056 0.540791C34.0165 0.251098 33.7787 0 33.4756 0V0C33.1725 0 32.9347 0.251098 32.8456 0.540791C32.5867 1.38263 31.7384 2 30.7317 2C29.7251 2 28.8767 1.38263 28.6178 0.540791C28.5287 0.251098 28.2909 0 27.9878 0V0C27.6847 0 27.4469 0.251098 27.3578 0.540791C27.0989 1.38263 26.2506 2 25.2439 2C24.2373 2 23.3889 1.38263 23.13 0.540791C23.0409 0.251098 22.8031 0 22.5 0V0C22.1969 0 21.9591 0.251098 21.87 0.540791C21.6111 1.38263 20.7627 2 19.7561 2C18.7494 2 17.9011 1.38263 17.6422 0.540791C17.5531 0.251098 17.3153 0 17.0122 0V0C16.7091 0 16.4713 0.251098 16.3822 0.540791C16.1233 1.38263 15.2749 2 14.2683 2C13.2616 2 12.4133 1.38263 12.1544 0.540791C12.0653 0.251098 11.8275 0 11.5244 0V0C11.2213 0 10.9835 0.251098 10.8944 0.540791C10.6355 1.38263 9.78714 2 8.78049 2C7.77384 2 6.92545 1.38263 6.66655 0.540791C6.57746 0.251098 6.33967 0 6.03659 0V0C5.7335 0 5.49571 0.251098 5.40662 0.540791C5.14772 1.38263 4.29933 2 3.29268 2C2.28603 2 1.43765 1.38263 1.17875 0.540791C1.08966 0.251098 0.851864 0 0.548781 0V0Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.02273 1.5H0V0H1.02273V1.5ZM17.3864 1.5H5.11364V0H17.3864V1.5ZM23.5227 1.5H21.4773V0H23.5227V1.5ZM39.8864 1.5H27.6136V0H39.8864V1.5ZM45 1.5H43.9773V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.875 1.5H0V0H1.875V1.5ZM9.375 1.5H5.625V0H9.375V1.5ZM16.875 1.5H13.125V0H16.875V1.5ZM24.375 1.5H20.625V0H24.375V1.5ZM31.875 1.5H28.125V0H31.875V1.5ZM39.375 1.5H35.625V0H39.375V1.5ZM45 1.5H43.125V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.25 1.5H0V0H1.25V1.5ZM16.25 1.5H6.25V0H16.25V1.5ZM23.75 1.5H21.25V0H23.75V1.5ZM38.75 1.5H28.75V0H38.75V1.5ZM45 1.5H43.75V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.8125 1.5H0V0H2.8125V1.5ZM14.0625 1.5H8.4375V0H14.0625V1.5ZM25.3125 1.5H19.6875V0H25.3125V1.5ZM36.5625 1.5H30.9375V0H36.5625V1.5ZM45 1.5H42.1875V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.21429 1.5H0V0H3.21429V1.5ZM16.0714 1.5H6.42857V0H16.0714V1.5ZM25.7143 1.5H19.2857V0H25.7143V1.5ZM38.5714 1.5H28.9286V0H38.5714V1.5ZM45 1.5H41.7857V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M7.5 1.5H0V0H7.5V1.5ZM30 1.5H15V0H30V1.5ZM45 1.5H37.5V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.6667 2.5H0V3.5H26.6667L30 6V0L26.6667 2.5ZM29 2V4L27.6667 3L29 2Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25.8333 3.5H0V2.5H25.8333V0L30 3L25.8333 6L25.8333 3.5ZM26.8333 4.04777V1.95223L28.2886 3L26.8333 4.04777Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M29.2929 0L30 0.707092L27.7071 3L30 5.29291L29.2929 6L27 3.70709L26.9948 3.71228L26.7825 3.5H0V2.5H26.7825L26.9948 2.28772L27 2.29291L29.2929 0Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M27.996 0L27.2889 0.707092L29.0818 2.5H0.995972V3.5H29.0777L27.2848 5.29291L27.9919 6L30.2869 3.70508L30.2929 3.71112L31 3.00403L30.994 2.99799L30.996 2.99597L30.2889 2.28888L30.2869 2.29089L27.996 0Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M29 0H30V6H29V3.5H0V2.5H29V0Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.03 3.30107L25.9689 3L26.03 2.69893C26.1689 2.01468 26.7755 1.5 27.5 1.5C28.3284 1.5 29 2.17157 29 3C29 3.82843 28.3284 4.5 27.5 4.5C26.7755 4.5 26.1689 3.98532 26.03 3.30107ZM25.05 3.5C25.2816 4.64112 26.2905 5.5 27.5 5.5C28.8807 5.5 30 4.38071 30 3C30 1.61929 28.8807 0.5 27.5 0.5C26.2905 0.5 25.2816 1.35888 25.05 2.5H0V3.5H25.05Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24.5 3.5H0V2.5H24.5L27 0L30 3L27 6L24.5 3.5ZM27 4.58579L25.4142 3L27 1.41421L28.5858 3L27 4.58579Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M26.004 5.49262L26.8701 6L29.9951 0.50739L29.129 5.09238e-06L27.7067 2.5L0.00402893 2.5L0.00402876 3.5L27.1377 3.5L26.004 5.49262Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25 3.5H0V2.5H25V0.5H30V5.5H25V3.5ZM26 4.5V1.5H29V4.5H26Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M30 1.5H0V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 45 2\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M45 1.5H0V0H45V1.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.33736 2.5H30.004V3.5H3.33736L0.00402832 6V0L3.33736 2.5ZM1.00403 2V4L2.33736 3L1.00403 2Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.16667 3.5H30V2.5H4.16667V0L0 3L4.16667 6L4.16667 3.5ZM3.16667 4.04777V1.95223L1.71144 3L3.16667 4.04777Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.711136 0L0.00402832 0.707092L2.29695 3L0.00402832 5.29291L0.711136 6L3.00404 3.70709L3.00923 3.71228L3.22152 3.5H30.004V2.5H3.22152L3.00923 2.28772L3.00404 2.29291L0.711136 0Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3.00403 0L3.71114 0.707092L1.91823 2.5H30.004V3.5H1.92226L3.71516 5.29291L3.00806 6L0.713135 3.70508L0.707108 3.71112L0 3.00403L0.00604248 2.99799L0.00402832 2.99597L0.711136 2.28888L0.713135 2.29089L3.00403 0Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1.00403 0H0.00402832V6H1.00403V3.5H30.004V2.5H1.00403V0Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.96998 3.30107L4.03109 3L3.96998 2.69893C3.83108 2.01468 3.22452 1.5 2.5 1.5C1.67157 1.5 1 2.17157 1 3C1 3.82843 1.67157 4.5 2.5 4.5C3.22452 4.5 3.83108 3.98532 3.96998 3.30107ZM4.94999 3.5C4.71836 4.64112 3.70948 5.5 2.5 5.5C1.11929 5.5 0 4.38071 0 3C0 1.61929 1.11929 0.5 2.5 0.5C3.70948 0.5 4.71836 1.35888 4.94999 2.5H30V3.5H4.94999Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.50403 3.5H30.004V2.5H5.50403L3.00403 0L0.00402832 3L3.00403 6L5.50403 3.5ZM3.00403 4.58579L4.58981 3L3.00403 1.41421L1.41824 3L3.00403 4.58579Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0.870054 6L0.00402828 5.49261L3.12903 -2.73196e-07L3.99505 0.507385L2.86555 2.49264L30.004 2.49264L30.004 3.50741L2.2882 3.50742L0.870054 6Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 31 6\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.00403 3.5H30.004V2.5H5.00403V0.5H0.00402832V5.5H5.00403V3.5ZM4.00403 4.5V1.5H1.00403V4.5H4.00403Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12 2C9.243 2 7 4.243 7 7V10H6C4.897 10 4 10.897 4 12V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V12C20 10.897 19.103 10 18 10H17V7C17 4.243 14.757 2 12 2ZM18 12L18.002 20H6V12H18ZM9 10V7C9 5.346 10.346 4 12 4C13.654 4 15 5.346 15 7V10H9Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 15 15\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon-lock</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"icon-lock\\\"><rect id=\\\"15-x-15\\\" fill=\\\"#D8D8D8\\\" opacity=\\\"0\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"15\\\" height=\\\"15\\\"></rect><path d=\\\"M13.5,7.5 C13.5,6.67275 12.82725,6 12,6 L11.25,6 L11.25,3.75 C11.25,1.68225 9.56775,0 7.5,0 C5.43225,0 3.75,1.68225 3.75,3.75 L3.75,6 L3,6 C2.17275,6 1.5,6.67275 1.5,7.5 L1.5,13.5 C1.5,14.32725 2.17275,15 3,15 L12,15 C12.82725,15 13.5,14.32725 13.5,13.5 L13.5,7.5 Z M5.25,3.75 C5.25,2.5095 6.2595,1.5 7.5,1.5 C8.7405,1.5 9.75,2.5095 9.75,3.75 L9.75,6 L5.25,6 L5.25,3.75 Z\\\" id=\\\"Shape\\\" fill=\\\"#868E96\\\" fill-rule=\\\"nonzero\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11 6H9V9H6V11H9V14H11V11H14V9H11V6Z\\\"></path><path d=\\\"M10 2C5.589 2 2 5.589 2 10C2 14.411 5.589 18 10 18C11.846 18 13.543 17.365 14.897 16.312L19.293 20.708L20.707 19.294L16.311 14.898C17.365 13.543 18 11.846 18 10C18 5.589 14.411 2 10 2ZM10 16C6.691 16 4 13.309 4 10C4 6.691 6.691 4 10 4C13.309 4 16 6.691 16 10C16 13.309 13.309 16 10 16Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add</title><path class=\\\"cls-1\\\" d=\\\"M13.6,6.94H9.06V2.4a.4.4,0,0,0-.4-.4H7.34a.4.4,0,0,0-.4.4V6.94H2.4a.4.4,0,0,0-.4.4V8.66a.4.4,0,0,0,.4.4H6.94V13.6a.4.4,0,0,0,.4.4H8.66a.4.4,0,0,0,.4-.4V9.06H13.6a.4.4,0,0,0,.4-.4V7.34A.4.4,0,0,0,13.6,6.94Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.84167 19.15H20.1583V21.1667H3.84167V19.15ZM6.86667 15.025H17.0417V17.0417H6.86667V15.025ZM3.84167 10.9917H20.1583V13.0084H3.84167V10.9917ZM3.84167 2.83337H20.1583V4.85004H3.84167V2.83337ZM6.86667 6.86671H17.0417V8.88337H6.86667V6.86671Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.84167 19.15H20.1583V21.1667H3.84167V19.15ZM3.84167 15.025H15.025V17.0417H3.84167V15.025ZM3.84167 10.9917H20.1583V13.0084H3.84167V10.9917ZM3.84167 2.83337H20.1583V4.85004H3.84167V2.83337ZM3.84167 6.86671H15.025V8.88337H3.84167V6.86671Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 19.3167H20.3167V21.3333H4V19.3167ZM9.13333 15.1917H20.3167V17.2083H9.13333V15.1917ZM4 11.1583H20.3167V13.175H4V11.1583ZM4 3H20.3167V5.01667H4V3ZM9.13333 7.03333H20.3167V9.05H9.13333V7.03333Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - bold</title><path class=\\\"cls-1\\\" d=\\\"M16.81,11.72A4.46,4.46,0,0,0,17.75,9a4.51,4.51,0,0,0-4.5-4.5H5.75v15h8a4.49,4.49,0,0,0,3.06-7.78ZM13.25,7.5a1.5,1.5,0,0,1,0,3H8.75v-3Zm.5,9h-5v-3h5a1.5,1.5,0,0,1,0,3Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -1 22 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.841675 17.15H17.1583V19.1667H0.841675V17.15ZM0.841675 13.025H17.025V15.0417H0.841675V13.025ZM0.841675 8.99171H17.1583V11.0084H0.841675V8.99171ZM0.841675 0.833374H17.1583V2.85004H0.841675V0.833374ZM0.841675 4.86671H17.025V6.88337H0.841675V4.86671Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - centre align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm3.33-4.45H17.56v2.23H6.44ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM6.44,6.44H17.56V8.67H6.44Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>Artboard 270</title><g><path class=\\\"cls-1\\\" d=\\\"M9.22,15,5.57,11.38,4,13l5.22,5.22L20,7.4,18.43,5.83Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - italic</title><path class=\\\"cls-1\\\" d=\\\"M18.68,6V4.75a.38.38,0,0,0-.38-.38H9.52a.38.38,0,0,0-.38.38V6a.38.38,0,0,0,.38.38h2.82L9.61,17.63H5.7a.38.38,0,0,0-.38.38v1.24a.38.38,0,0,0,.38.38h8.78a.38.38,0,0,0,.38-.38V18a.38.38,0,0,0-.38-.38H11.69L14.42,6.37H18.3A.38.38,0,0,0,18.68,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - left align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm0-4.45H15.33v2.23H3.11Zm0-4.44H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11Zm0,4.44H15.33V8.67H3.11Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - right align</title><path class=\\\"cls-1\\\" d=\\\"M3.11,19.78H20.89V22H3.11Zm5.56-4.45H20.89v2.23H8.67ZM3.11,10.89H20.89v2.22H3.11ZM3.11,2H20.89V4.22H3.11ZM8.67,6.44H20.89V8.67H8.67Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - add style - line</title><path class=\\\"cls-1\\\" d=\\\"M9,14.5A1.5,1.5,0,1,1,7.5,13,1.5,1.5,0,0,1,9,14.5ZM10.5,6A1.5,1.5,0,1,0,12,7.5,1.5,1.5,0,0,0,10.5,6Zm-3,3A1.5,1.5,0,1,0,9,10.5,1.5,1.5,0,0,0,7.5,9Zm7.2,6.36a2,2,0,0,0-.09,1.92l.2.41A3,3,0,0,1,12.14,22H12a9.74,9.74,0,0,1-2.62-.36A10,10,0,0,1,4.46,5.43,10,10,0,0,1,22,12.14a3,3,0,0,1-3,3,3.09,3.09,0,0,1-1.3-.3l-.41-.2A2,2,0,0,0,14.7,15.36Zm3.44-2.55.42.19A1,1,0,0,0,20,12.11a8,8,0,0,0-6.87-8A7.24,7.24,0,0,0,12,4,8,8,0,0,0,6,6.74a7.92,7.92,0,0,0-1.89,6.39A8.05,8.05,0,0,0,9.9,19.72,8.42,8.42,0,0,0,12,20h.11a1,1,0,0,0,.84-.48,1,1,0,0,0,.05-1l-.2-.42A3.92,3.92,0,0,1,13,14.3,4.05,4.05,0,0,1,18.14,12.81ZM14.5,6A1.5,1.5,0,1,0,16,7.5,1.5,1.5,0,0,0,14.5,6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - menu - text underline</title><path class=\\\"cls-1\\\" d=\\\"M5.32,18H18.68a.32.32,0,0,1,.32.32v1.36a.32.32,0,0,1-.32.32H5.32A.32.32,0,0,1,5,19.68V18.32A.32.32,0,0,1,5.32,18ZM6,4.32V9.79A6.15,6.15,0,0,0,11.21,16,6,6,0,0,0,18,10V4.32A.32.32,0,0,0,17.68,4H16.32a.32.32,0,0,0-.32.32v5.5A4.12,4.12,0,0,1,12.4,14,4,4,0,0,1,8,10V4.32A.32.32,0,0,0,7.68,4H6.32A.32.32,0,0,0,6,4.32Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.903 8.586C19.854 8.48 19.793 8.379 19.707 8.293L13.707 2.293C13.621 2.207 13.52 2.146 13.414 2.097C13.384 2.083 13.352 2.075 13.32 2.064C13.236 2.036 13.15 2.018 13.061 2.013C13.04 2.011 13.021 2 13 2H6C4.897 2 4 2.897 4 4V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V9C20 8.979 19.989 8.96 19.987 8.938C19.982 8.849 19.965 8.763 19.936 8.679C19.926 8.647 19.917 8.616 19.903 8.586ZM16.586 8H14V5.414L16.586 8ZM6 20V4H12V9C12 9.553 12.447 10 13 10H18L18.002 20H6Z\\\" fill=\\\"#484848\\\"></path><path d=\\\"M8 12H16V14H8V12ZM8 16H16V18H8V16ZM8 8H10V10H8V8Z\\\" fill=\\\"#484848\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"ic-outlines\\\"><path id=\\\"shape\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.23504 11.93C5.23504 12.5932 4.69741 13.1308 4.03421 13.1308C3.37101 13.1308 2.83337 12.5932 2.83337 11.93C2.83337 11.2668 3.37101 10.7292 4.03421 10.7292C4.69741 10.7292 5.23504 11.2668 5.23504 11.93ZM4.03421 5C3.37101 5 2.83337 5.53763 2.83337 6.20083C2.83337 6.86404 3.37101 7.40167 4.03421 7.40167C4.69741 7.40167 5.23504 6.86404 5.23504 6.20083C5.23504 5.53763 4.69741 5 4.03421 5ZM4.03421 16.4583C3.37101 16.4583 2.83337 16.996 2.83337 17.6592C2.83337 18.3224 3.37101 18.86 4.03421 18.86C4.69741 18.86 5.23504 18.3224 5.23504 17.6592C5.23504 16.996 4.69741 16.4583 4.03421 16.4583ZM7.47171 13.0758H21.2217V10.7842H7.47171V13.0758ZM7.47171 5.055V7.34667H21.2217V5.055H7.47171ZM7.47171 18.805H21.2217V16.5133H7.47171V18.805Z\\\" fill=\\\"black\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" style=\\\" height: 20px; width: 20px; \\\"><rect width=\\\"18\\\" height=\\\"18\\\" rx=\\\"9.5\\\" style=\\\" stroke: currentColor; stroke-width: 1px; stroke-linejoin: round; \\\" x=\\\"1\\\" y=\\\"1\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"ic-line-spacing\\\"><g id=\\\"shape\\\"><path d=\\\"M7 7L4.5 3L2 7H3.75V16H2L4.5 20L7 16H5.25V7H7Z\\\" fill=\\\"black\\\"></path><path d=\\\"M22 5.5H9V7.5H22V5.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M22 11H9V13H22V11Z\\\" fill=\\\"black\\\"></path><path d=\\\"M22 16.5H9V18.5H22V16.5Z\\\" fill=\\\"black\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M14.7333 12.9651L11.4 10.3937C11.2352 10.2666 11 10.3875 11 10.5994V15.7423C11 15.9542 11.2352 16.0751 11.4 15.948L14.7333 13.3765C14.8667 13.2737 14.8667 13.068 14.7333 12.9651Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 14.1994H7V12.1423H11V14.1994Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18.8334\\\" y1=\\\"13.1709\\\" x2=\\\"52\\\" y2=\\\"13.1709\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"2.75\\\" stroke=\\\"#485056\\\" stroke-width=\\\"0.5\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M14.7333 60.6233L11.4 58.0519C11.2352 57.9248 11 58.0457 11 58.2576V63.4005C11 63.6124 11.2352 63.7333 11.4 63.6062L14.7333 61.0348C14.8667 60.9319 14.8667 60.7262 14.7333 60.6233Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 61.8576H7V59.8005H11V61.8576Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18.8334\\\" y1=\\\"60.8291\\\" x2=\\\"52\\\" y2=\\\"60.8291\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle cx=\\\"11\\\" cy=\\\"13\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"13\\\" x2=\\\"52\\\" y2=\\\"13\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"11\\\" cy=\\\"61\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"61\\\" x2=\\\"52\\\" y2=\\\"61\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7.5 13.5513L9.32075 15.4241C9.41892 15.525 9.58108 15.525 9.67925 15.4241L13.5 11.4941\\\" stroke=\\\"#485056\\\" stroke-linecap=\\\"round\\\"></path><line x1=\\\"18\\\" y1=\\\"13.4971\\\" x2=\\\"52\\\" y2=\\\"13.4971\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"2.75\\\" stroke=\\\"#485056\\\" stroke-width=\\\"0.5\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M7.5 60.5571L9.32075 62.4299C9.41892 62.5309 9.58108 62.5309 9.67925 62.4299L13.5 58.5\\\" stroke=\\\"#485056\\\" stroke-linecap=\\\"round\\\"></path><line x1=\\\"18\\\" y1=\\\"60.5029\\\" x2=\\\"52\\\" y2=\\\"60.5029\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.5541 11.204L11.0001 10.634L10.446 11.204L11.0001 11.7739L11.5541 11.204Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 9.82812L12.3377 11.2041L11 12.58L9.66229 11.2041L11 9.82812Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.5541 14.6235L11.0001 14.0536L10.446 14.6235L11.0001 15.1935L11.5541 14.6235Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 13.2477L11.6689 13.9357L12.3377 14.6236L11 15.9996L9.66229 14.6236L11 13.2477Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M9.89186 12.9138L9.33776 12.3438L8.78366 12.9138L9.33776 13.4837L9.89186 12.9138Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.33771 11.5379L10.6754 12.9138L9.33771 14.2898L8 12.9138L9.33771 11.5379Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M13.2164 12.9138L12.6623 12.3438L12.1082 12.9138L12.6623 13.4837L13.2164 12.9138Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.6623 11.5379L14 12.9138L12.6623 14.2898L11.3246 12.9138L12.6623 11.5379Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18\\\" y1=\\\"12.9141\\\" x2=\\\"52\\\" y2=\\\"12.9141\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"2.75\\\" stroke=\\\"#485056\\\" stroke-width=\\\"0.5\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M11.5541 59.3758L11.0001 58.8059L10.446 59.3758L11.0001 59.9458L11.5541 59.3758Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 58L12.3377 59.3759L11 60.7519L9.66229 59.3759L11 58Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.5541 62.7954L11.0001 62.2255L10.446 62.7954L11.0001 63.3653L11.5541 62.7954Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 61.4196L11.6689 62.1075L12.3377 62.7955L11 64.1714L9.66229 62.7955L11 61.4196Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M9.89186 61.0856L9.33776 60.5157L8.78366 61.0856L9.33776 61.6556L9.89186 61.0856Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.33771 59.7098L10.6754 61.0857L9.33771 62.4616L8 61.0857L9.33771 59.7098Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M13.2164 61.0856L12.6623 60.5157L12.1082 61.0856L12.6623 61.6556L13.2164 61.0856Z\\\" fill=\\\"#485056\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.6623 59.7098L14 61.0857L12.6623 62.4616L11.3246 61.0857L12.6623 59.7098Z\\\" fill=\\\"#485056\\\"></path><line x1=\\\"18\\\" y1=\\\"61.0859\\\" x2=\\\"52\\\" y2=\\\"61.0859\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"38\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M11.248 11.7486L10.2355 9.12508C10.2055 9.04708 10.174 8.95708 10.141 8.85508C10.108 8.75008 10.0765 8.63908 10.0465 8.52208C9.9835 8.76508 9.919 8.96758 9.853 9.12958L8.8405 11.7486H11.248ZM13.066 14.1426H12.391C12.313 14.1426 12.25 14.1231 12.202 14.0841C12.154 14.0451 12.118 13.9956 12.094 13.9356L11.491 12.3786H8.5975L7.9945 13.9356C7.9765 13.9896 7.942 14.0376 7.891 14.0796C7.84 14.1216 7.777 14.1426 7.702 14.1426H7.027L9.6055 7.69408H10.4875L13.066 14.1426ZM13.5903 13.6476C13.5903 13.5696 13.6038 13.4961 13.6308 13.4271C13.6608 13.3581 13.6998 13.2981 13.7478 13.2471C13.7988 13.1961 13.8588 13.1556 13.9278 13.1256C13.9968 13.0956 14.0703 13.0806 14.1483 13.0806C14.2263 13.0806 14.2998 13.0956 14.3688 13.1256C14.4378 13.1556 14.4978 13.1961 14.5488 13.2471C14.5998 13.2981 14.6403 13.3581 14.6703 13.4271C14.7003 13.4961 14.7153 13.5696 14.7153 13.6476C14.7153 13.7286 14.7003 13.8036 14.6703 13.8726C14.6403 13.9386 14.5998 13.9971 14.5488 14.0481C14.4978 14.0991 14.4378 14.1381 14.3688 14.1651C14.2998 14.1951 14.2263 14.2101 14.1483 14.2101C14.0703 14.2101 13.9968 14.1951 13.9278 14.1651C13.8588 14.1381 13.7988 14.0991 13.7478 14.0481C13.6998 13.9971 13.6608 13.9386 13.6308 13.8726C13.6038 13.8036 13.5903 13.7286 13.5903 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.105 23.405C19.736 23.417 19.421 23.447 19.16 23.495C18.902 23.54 18.6905 23.6 18.5255 23.675C18.3635 23.75 18.245 23.8385 18.17 23.9405C18.098 24.0425 18.062 24.1565 18.062 24.2825C18.062 24.4025 18.0815 24.506 18.1205 24.593C18.1595 24.68 18.212 24.752 18.278 24.809C18.347 24.863 18.4265 24.9035 18.5165 24.9305C18.6095 24.9545 18.7085 24.9665 18.8135 24.9665C18.9545 24.9665 19.0835 24.953 19.2005 24.926C19.3175 24.896 19.427 24.854 19.529 24.8C19.634 24.746 19.733 24.6815 19.826 24.6065C19.922 24.5315 20.015 24.446 20.105 24.35V23.405ZM17.5175 21.542C17.7695 21.299 18.041 21.1175 18.332 20.9975C18.623 20.8775 18.9455 20.8175 19.2995 20.8175C19.5545 20.8175 19.781 20.8595 19.979 20.9435C20.177 21.0275 20.3435 21.1445 20.4785 21.2945C20.6135 21.4445 20.7155 21.626 20.7845 21.839C20.8535 22.052 20.888 22.286 20.888 22.541V25.457H20.5325C20.4545 25.457 20.3945 25.445 20.3525 25.421C20.3105 25.394 20.2775 25.343 20.2535 25.268L20.1635 24.836C20.0435 24.947 19.9265 25.046 19.8125 25.133C19.6985 25.217 19.5785 25.289 19.4525 25.349C19.3265 25.406 19.1915 25.4495 19.0475 25.4795C18.9065 25.5125 18.749 25.529 18.575 25.529C18.398 25.529 18.2315 25.505 18.0755 25.457C17.9195 25.406 17.783 25.331 17.666 25.232C17.552 25.133 17.4605 25.0085 17.3915 24.8585C17.3255 24.7055 17.2925 24.5255 17.2925 24.3185C17.2925 24.1385 17.342 23.966 17.441 23.801C17.54 23.633 17.7005 23.4845 17.9225 23.3555C18.1445 23.2265 18.434 23.1215 18.791 23.0405C19.148 22.9565 19.586 22.9085 20.105 22.8965V22.541C20.105 22.187 20.0285 21.92 19.8755 21.74C19.7225 21.557 19.499 21.4655 19.205 21.4655C19.007 21.4655 18.8405 21.491 18.7055 21.542C18.5735 21.59 18.458 21.6455 18.359 21.7085C18.263 21.7685 18.179 21.824 18.107 21.875C18.038 21.923 17.969 21.947 17.9 21.947C17.846 21.947 17.7995 21.9335 17.7605 21.9065C17.7215 21.8765 17.6885 21.8405 17.6615 21.7985L17.5175 21.542ZM21.9731 24.962C21.9731 24.884 21.9866 24.8105 22.0136 24.7415C22.0436 24.6725 22.0826 24.6125 22.1306 24.5615C22.1816 24.5105 22.2416 24.47 22.3106 24.44C22.3796 24.41 22.4531 24.395 22.5311 24.395C22.6091 24.395 22.6826 24.41 22.7516 24.44C22.8206 24.47 22.8806 24.5105 22.9316 24.5615C22.9826 24.6125 23.0231 24.6725 23.0531 24.7415C23.0831 24.8105 23.0981 24.884 23.0981 24.962C23.0981 25.043 23.0831 25.118 23.0531 25.187C23.0231 25.253 22.9826 25.3115 22.9316 25.3625C22.8806 25.4135 22.8206 25.4525 22.7516 25.4795C22.6826 25.5095 22.6091 25.5245 22.5311 25.5245C22.4531 25.5245 22.3796 25.5095 22.3106 25.4795C22.2416 25.4525 22.1816 25.4135 22.1306 25.3625C22.0826 25.3115 22.0436 25.253 22.0136 25.187C21.9866 25.118 21.9731 25.043 21.9731 24.962Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M18.44 37.7301C18.587 37.9281 18.7475 38.0676 18.9215 38.1486C19.0985 38.2296 19.292 38.2701 19.502 38.2701C19.931 38.2701 20.2595 38.1186 20.4875 37.8156C20.7155 37.5126 20.8295 37.0611 20.8295 36.4611C20.8295 35.9031 20.7275 35.4936 20.5235 35.2326C20.3225 34.9686 20.0345 34.8366 19.6595 34.8366C19.3985 34.8366 19.1705 34.8966 18.9755 35.0166C18.7835 35.1366 18.605 35.3061 18.44 35.5251V37.7301ZM18.44 34.9266C18.632 34.7046 18.848 34.5276 19.088 34.3956C19.331 34.2636 19.61 34.1976 19.925 34.1976C20.192 34.1976 20.432 34.2486 20.645 34.3506C20.861 34.4526 21.044 34.6011 21.194 34.7961C21.344 34.9881 21.458 35.2221 21.536 35.4981C21.617 35.7741 21.6575 36.0846 21.6575 36.4296C21.6575 36.7986 21.6125 37.1346 21.5225 37.4376C21.4325 37.7406 21.302 38.0001 21.131 38.2161C20.963 38.4291 20.7575 38.5956 20.5145 38.7156C20.2715 38.8326 19.9985 38.8911 19.6955 38.8911C19.3955 38.8911 19.142 38.8356 18.935 38.7246C18.731 38.6106 18.5525 38.4501 18.3995 38.2431L18.359 38.6571C18.335 38.7711 18.266 38.8281 18.152 38.8281H17.6345V32.1996H18.44V34.9266ZM22.5356 38.3331C22.5356 38.2551 22.5491 38.1816 22.5761 38.1126C22.6061 38.0436 22.6451 37.9836 22.6931 37.9326C22.7441 37.8816 22.8041 37.8411 22.8731 37.8111C22.9421 37.7811 23.0156 37.7661 23.0936 37.7661C23.1716 37.7661 23.2451 37.7811 23.3141 37.8111C23.3831 37.8411 23.4431 37.8816 23.4941 37.9326C23.5451 37.9836 23.5856 38.0436 23.6156 38.1126C23.6456 38.1816 23.6606 38.2551 23.6606 38.3331C23.6606 38.4141 23.6456 38.4891 23.6156 38.5581C23.5856 38.6241 23.5451 38.6826 23.4941 38.7336C23.4431 38.7846 23.3831 38.8236 23.3141 38.8506C23.2451 38.8806 23.1716 38.8956 23.0936 38.8956C23.0156 38.8956 22.9421 38.8806 22.8731 38.8506C22.8041 38.8236 22.7441 38.7846 22.6931 38.7336C22.6451 38.6826 22.6061 38.6241 22.5761 38.5581C22.5491 38.4891 22.5356 38.4141 22.5356 38.3331Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29.4805 46.6134V51.1719H28.6795V46.6134H29.4805ZM29.6515 45.1824C29.6515 45.2604 29.635 45.3339 29.602 45.4029C29.572 45.4689 29.53 45.5289 29.476 45.5829C29.425 45.6339 29.3635 45.6744 29.2915 45.7044C29.2225 45.7344 29.149 45.7494 29.071 45.7494C28.993 45.7494 28.9195 45.7344 28.8505 45.7044C28.7845 45.6744 28.726 45.6339 28.675 45.5829C28.624 45.5289 28.5835 45.4689 28.5535 45.4029C28.5235 45.3339 28.5085 45.2604 28.5085 45.1824C28.5085 45.1044 28.5235 45.0309 28.5535 44.9619C28.5835 44.8899 28.624 44.8284 28.675 44.7774C28.726 44.7234 28.7845 44.6814 28.8505 44.6514C28.9195 44.6214 28.993 44.6064 29.071 44.6064C29.149 44.6064 29.2225 44.6214 29.2915 44.6514C29.3635 44.6814 29.425 44.7234 29.476 44.7774C29.53 44.8284 29.572 44.8899 29.602 44.9619C29.635 45.0309 29.6515 45.1044 29.6515 45.1824ZM30.6616 50.6769C30.6616 50.5989 30.6751 50.5254 30.7021 50.4564C30.7321 50.3874 30.7711 50.3274 30.8191 50.2764C30.8701 50.2254 30.9301 50.1849 30.9991 50.1549C31.0681 50.1249 31.1416 50.1099 31.2196 50.1099C31.2976 50.1099 31.3711 50.1249 31.4401 50.1549C31.5091 50.1849 31.5691 50.2254 31.6201 50.2764C31.6711 50.3274 31.7116 50.3874 31.7416 50.4564C31.7716 50.5254 31.7866 50.5989 31.7866 50.6769C31.7866 50.7579 31.7716 50.8329 31.7416 50.9019C31.7116 50.9679 31.6711 51.0264 31.6201 51.0774C31.5691 51.1284 31.5091 51.1674 31.4401 51.1944C31.3711 51.2244 31.2976 51.2394 31.2196 51.2394C31.1416 51.2394 31.0681 51.2244 30.9991 51.1944C30.9301 51.1674 30.8701 51.1284 30.8191 51.0774C30.7711 51.0264 30.7321 50.9679 30.7021 50.9019C30.6751 50.8329 30.6616 50.7579 30.6616 50.6769Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M10.087 62.8216C10.336 62.8216 10.5505 62.7931 10.7305 62.7361C10.9105 62.6791 11.0575 62.5996 11.1715 62.4976C11.2885 62.3926 11.374 62.2696 11.428 62.1286C11.482 61.9846 11.509 61.8271 11.509 61.6561C11.509 61.3231 11.3905 61.0606 11.1535 60.8686C10.9165 60.6736 10.561 60.5761 10.087 60.5761H8.692V62.8216H10.087ZM8.692 57.7546V59.9551H9.844C10.09 59.9551 10.303 59.9281 10.483 59.8741C10.666 59.8201 10.816 59.7451 10.933 59.6491C11.053 59.5531 11.1415 59.4376 11.1985 59.3026C11.2555 59.1646 11.284 59.0146 11.284 58.8526C11.284 58.4716 11.17 58.1941 10.942 58.0201C10.714 57.8431 10.36 57.7546 9.88 57.7546H8.692ZM9.88 57.0661C10.276 57.0661 10.6165 57.1051 10.9015 57.1831C11.1895 57.2611 11.425 57.3721 11.608 57.5161C11.794 57.6601 11.9305 57.8371 12.0175 58.0471C12.1045 58.2541 12.148 58.4881 12.148 58.7491C12.148 58.9081 12.1225 59.0611 12.0715 59.2081C12.0235 59.3521 11.95 59.4871 11.851 59.6131C11.752 59.7391 11.626 59.8531 11.473 59.9551C11.323 60.0541 11.146 60.1351 10.942 60.1981C11.416 60.2881 11.7715 60.4576 12.0085 60.7066C12.2485 60.9526 12.3685 61.2766 12.3685 61.6786C12.3685 61.9516 12.3175 62.2006 12.2155 62.4256C12.1165 62.6506 11.9695 62.8441 11.7745 63.0061C11.5825 63.1681 11.3455 63.2941 11.0635 63.3841C10.7815 63.4711 10.4605 63.5146 10.1005 63.5146H7.8235V57.0661H9.88ZM13.3179 63.0196C13.3179 62.9416 13.3314 62.8681 13.3584 62.7991C13.3884 62.7301 13.4274 62.6701 13.4754 62.6191C13.5264 62.5681 13.5864 62.5276 13.6554 62.4976C13.7244 62.4676 13.7979 62.4526 13.8759 62.4526C13.9539 62.4526 14.0274 62.4676 14.0964 62.4976C14.1654 62.5276 14.2254 62.5681 14.2764 62.6191C14.3274 62.6701 14.3679 62.7301 14.3979 62.7991C14.4279 62.8681 14.4429 62.9416 14.4429 63.0196C14.4429 63.1006 14.4279 63.1756 14.3979 63.2446C14.3679 63.3106 14.3274 63.3691 14.2764 63.4201C14.2254 63.4711 14.1654 63.5101 14.0964 63.5371C14.0274 63.5671 13.9539 63.5821 13.8759 63.5821C13.7979 63.5821 13.7244 63.5671 13.6554 63.5371C13.5864 63.5101 13.5264 63.4711 13.4754 63.4201C13.4274 63.3691 13.3884 63.3106 13.3584 63.2446C13.3314 63.1756 13.3179 63.1006 13.3179 63.0196Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"34\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"34\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"47\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M11.581 13.5306V14.1426H8.125V13.5306H9.5065V9.13408C9.5065 9.00208 9.511 8.86858 9.52 8.73358L8.3725 9.71908C8.3335 9.75208 8.2945 9.77308 8.2555 9.78208C8.2165 9.78808 8.1805 9.78808 8.1475 9.78208C8.1145 9.77608 8.083 9.76408 8.053 9.74608C8.026 9.72808 8.005 9.70858 7.99 9.68758L7.738 9.34108L9.6595 7.68058H10.312V13.5306H11.581ZM12.7202 13.6476C12.7202 13.5696 12.7337 13.4961 12.7607 13.4271C12.7907 13.3581 12.8297 13.2981 12.8777 13.2471C12.9287 13.1961 12.9887 13.1556 13.0577 13.1256C13.1267 13.0956 13.2002 13.0806 13.2782 13.0806C13.3562 13.0806 13.4297 13.0956 13.4987 13.1256C13.5677 13.1556 13.6277 13.1961 13.6787 13.2471C13.7297 13.2981 13.7702 13.3581 13.8002 13.4271C13.8302 13.4961 13.8452 13.5696 13.8452 13.6476C13.8452 13.7286 13.8302 13.8036 13.8002 13.8726C13.7702 13.9386 13.7297 13.9971 13.6787 14.0481C13.6277 14.0991 13.5677 14.1381 13.4987 14.1651C13.4297 14.1951 13.3562 14.2101 13.2782 14.2101C13.2002 14.2101 13.1267 14.1951 13.0577 14.1651C12.9887 14.1381 12.9287 14.0991 12.8777 14.0481C12.8297 13.9971 12.7907 13.9386 12.7607 13.8726C12.7337 13.8036 12.7202 13.7286 12.7202 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.4415 62.7541C11.5285 62.7541 11.5975 62.7796 11.6485 62.8306C11.6995 62.8816 11.725 62.9476 11.725 63.0286V63.5146H7.423V63.2401C7.423 63.1831 7.435 63.1246 7.459 63.0646C7.483 63.0046 7.5205 62.9491 7.5715 62.8981L9.637 60.8236C9.808 60.6496 9.964 60.4831 10.105 60.3241C10.246 60.1621 10.366 60.0001 10.465 59.8381C10.564 59.6761 10.6405 59.5126 10.6945 59.3476C10.7485 59.1796 10.7755 59.0011 10.7755 58.8121C10.7755 58.6231 10.7455 58.4581 10.6855 58.3171C10.6255 58.1731 10.543 58.0546 10.438 57.9616C10.336 57.8686 10.2145 57.7996 10.0735 57.7546C9.9325 57.7066 9.781 57.6826 9.619 57.6826C9.454 57.6826 9.3025 57.7066 9.1645 57.7546C9.0265 57.8026 8.9035 57.8701 8.7955 57.9571C8.6905 58.0411 8.602 58.1416 8.53 58.2586C8.458 58.3756 8.407 58.5046 8.377 58.6456C8.341 58.7506 8.2915 58.8211 8.2285 58.8571C8.1685 58.8901 8.083 58.8991 7.972 58.8841L7.5535 58.8121C7.5955 58.5181 7.6765 58.2586 7.7965 58.0336C7.9195 57.8056 8.0725 57.6151 8.2555 57.4621C8.4415 57.3091 8.653 57.1936 8.89 57.1156C9.127 57.0346 9.3835 56.9941 9.6595 56.9941C9.9325 56.9941 10.1875 57.0346 10.4245 57.1156C10.6615 57.1966 10.867 57.3151 11.041 57.4711C11.215 57.6241 11.3515 57.8116 11.4505 58.0336C11.5495 58.2556 11.599 58.5076 11.599 58.7896C11.599 59.0296 11.563 59.2531 11.491 59.4601C11.419 59.6641 11.3215 59.8591 11.1985 60.0451C11.0755 60.2311 10.933 60.4126 10.771 60.5896C10.612 60.7666 10.4425 60.9451 10.2625 61.1251L8.5615 62.8621C8.6815 62.8291 8.803 62.8036 8.926 62.7856C9.049 62.7646 9.1675 62.7541 9.2815 62.7541H11.4415ZM12.7202 63.0196C12.7202 62.9416 12.7337 62.8681 12.7607 62.7991C12.7907 62.7301 12.8297 62.6701 12.8777 62.6191C12.9287 62.5681 12.9887 62.5276 13.0577 62.4976C13.1267 62.4676 13.2002 62.4526 13.2782 62.4526C13.3562 62.4526 13.4297 62.4676 13.4987 62.4976C13.5677 62.5276 13.6277 62.5681 13.6787 62.6191C13.7297 62.6701 13.7702 62.7301 13.8002 62.7991C13.8302 62.8681 13.8452 62.9416 13.8452 63.0196C13.8452 63.1006 13.8302 63.1756 13.8002 63.2446C13.7702 63.3106 13.7297 63.3691 13.6787 63.4201C13.6277 63.4711 13.5677 63.5101 13.4987 63.5371C13.4297 63.5671 13.3562 63.5821 13.2782 63.5821C13.2002 63.5821 13.1267 63.5671 13.0577 63.5371C12.9887 63.5101 12.9287 63.4711 12.8777 63.4201C12.8297 63.3691 12.7907 63.3106 12.7607 63.2446C12.7337 63.1756 12.7202 63.1006 12.7202 63.0196Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M21.581 24.845V25.457H18.125V24.845H19.5065V20.4485C19.5065 20.3165 19.511 20.183 19.52 20.048L18.3725 21.0335C18.3335 21.0665 18.2945 21.0875 18.2555 21.0965C18.2165 21.1025 18.1805 21.1025 18.1475 21.0965C18.1145 21.0905 18.083 21.0785 18.053 21.0605C18.026 21.0425 18.005 21.023 17.99 21.002L17.738 20.6555L19.6595 18.995H20.312V24.845H21.581ZM22.7202 24.962C22.7202 24.884 22.7337 24.8105 22.7607 24.7415C22.7907 24.6725 22.8297 24.6125 22.8777 24.5615C22.9287 24.5105 22.9887 24.47 23.0577 24.44C23.1267 24.41 23.2002 24.395 23.2782 24.395C23.3562 24.395 23.4297 24.41 23.4987 24.44C23.5677 24.47 23.6277 24.5105 23.6787 24.5615C23.7297 24.6125 23.7702 24.6725 23.8002 24.7415C23.8302 24.8105 23.8452 24.884 23.8452 24.962C23.8452 25.043 23.8302 25.118 23.8002 25.187C23.7702 25.253 23.7297 25.3115 23.6787 25.3625C23.6277 25.4135 23.5677 25.4525 23.4987 25.4795C23.4297 25.5095 23.3562 25.5245 23.2782 25.5245C23.2002 25.5245 23.1267 25.5095 23.0577 25.4795C22.9887 25.4525 22.9287 25.4135 22.8777 25.3625C22.8297 25.3115 22.7907 25.253 22.7607 25.187C22.7337 25.118 22.7202 25.043 22.7202 24.962ZM28.9287 24.845V25.457H25.4727V24.845H26.8542V20.4485C26.8542 20.3165 26.8587 20.183 26.8677 20.048L25.7202 21.0335C25.6812 21.0665 25.6422 21.0875 25.6032 21.0965C25.5642 21.1025 25.5282 21.1025 25.4952 21.0965C25.4622 21.0905 25.4307 21.0785 25.4007 21.0605C25.3737 21.0425 25.3527 21.023 25.3377 21.002L25.0857 20.6555L27.0072 18.995H27.6597V24.845H28.9287Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M21.581 38.2161V38.8281H18.125V38.2161H19.5065V33.8196C19.5065 33.6876 19.511 33.5541 19.52 33.4191L18.3725 34.4046C18.3335 34.4376 18.2945 34.4586 18.2555 34.4676C18.2165 34.4736 18.1805 34.4736 18.1475 34.4676C18.1145 34.4616 18.083 34.4496 18.053 34.4316C18.026 34.4136 18.005 34.3941 17.99 34.3731L17.738 34.0266L19.6595 32.3661H20.312V38.2161H21.581ZM22.7202 38.3331C22.7202 38.2551 22.7337 38.1816 22.7607 38.1126C22.7907 38.0436 22.8297 37.9836 22.8777 37.9326C22.9287 37.8816 22.9887 37.8411 23.0577 37.8111C23.1267 37.7811 23.2002 37.7661 23.2782 37.7661C23.3562 37.7661 23.4297 37.7811 23.4987 37.8111C23.5677 37.8411 23.6277 37.8816 23.6787 37.9326C23.7297 37.9836 23.7702 38.0436 23.8002 38.1126C23.8302 38.1816 23.8452 38.2551 23.8452 38.3331C23.8452 38.4141 23.8302 38.4891 23.8002 38.5581C23.7702 38.6241 23.7297 38.6826 23.6787 38.7336C23.6277 38.7846 23.5677 38.8236 23.4987 38.8506C23.4297 38.8806 23.3562 38.8956 23.2782 38.8956C23.2002 38.8956 23.1267 38.8806 23.0577 38.8506C22.9887 38.8236 22.9287 38.7846 22.8777 38.7336C22.8297 38.6826 22.7907 38.6241 22.7607 38.5581C22.7337 38.4891 22.7202 38.4141 22.7202 38.3331ZM28.7892 38.0676C28.8762 38.0676 28.9452 38.0931 28.9962 38.1441C29.0472 38.1951 29.0727 38.2611 29.0727 38.3421V38.8281H24.7707V38.5536C24.7707 38.4966 24.7827 38.4381 24.8067 38.3781C24.8307 38.3181 24.8682 38.2626 24.9192 38.2116L26.9847 36.1371C27.1557 35.9631 27.3117 35.7966 27.4527 35.6376C27.5937 35.4756 27.7137 35.3136 27.8127 35.1516C27.9117 34.9896 27.9882 34.8261 28.0422 34.6611C28.0962 34.4931 28.1232 34.3146 28.1232 34.1256C28.1232 33.9366 28.0932 33.7716 28.0332 33.6306C27.9732 33.4866 27.8907 33.3681 27.7857 33.2751C27.6837 33.1821 27.5622 33.1131 27.4212 33.0681C27.2802 33.0201 27.1287 32.9961 26.9667 32.9961C26.8017 32.9961 26.6502 33.0201 26.5122 33.0681C26.3742 33.1161 26.2512 33.1836 26.1432 33.2706C26.0382 33.3546 25.9497 33.4551 25.8777 33.5721C25.8057 33.6891 25.7547 33.8181 25.7247 33.9591C25.6887 34.0641 25.6392 34.1346 25.5762 34.1706C25.5162 34.2036 25.4307 34.2126 25.3197 34.1976L24.9012 34.1256C24.9432 33.8316 25.0242 33.5721 25.1442 33.3471C25.2672 33.1191 25.4202 32.9286 25.6032 32.7756C25.7892 32.6226 26.0007 32.5071 26.2377 32.4291C26.4747 32.3481 26.7312 32.3076 27.0072 32.3076C27.2802 32.3076 27.5352 32.3481 27.7722 32.4291C28.0092 32.5101 28.2147 32.6286 28.3887 32.7846C28.5627 32.9376 28.6992 33.1251 28.7982 33.3471C28.8972 33.5691 28.9467 33.8211 28.9467 34.1031C28.9467 34.3431 28.9107 34.5666 28.8387 34.7736C28.7667 34.9776 28.6692 35.1726 28.5462 35.3586C28.4232 35.5446 28.2807 35.7261 28.1187 35.9031C27.9597 36.0801 27.7902 36.2586 27.6102 36.4386L25.9092 38.1756C26.0292 38.1426 26.1507 38.1171 26.2737 38.0991C26.3967 38.0781 26.5152 38.0676 26.6292 38.0676H28.7892Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M28.581 50.5599V51.1719H25.125V50.5599H26.5065V46.1634C26.5065 46.0314 26.511 45.8979 26.52 45.7629L25.3725 46.7484C25.3335 46.7814 25.2945 46.8024 25.2555 46.8114C25.2165 46.8174 25.1805 46.8174 25.1475 46.8114C25.1145 46.8054 25.083 46.7934 25.053 46.7754C25.026 46.7574 25.005 46.7379 24.99 46.7169L24.738 46.3704L26.6595 44.7099H27.312V50.5599H28.581ZM29.7202 50.6769C29.7202 50.5989 29.7337 50.5254 29.7607 50.4564C29.7907 50.3874 29.8297 50.3274 29.8777 50.2764C29.9287 50.2254 29.9887 50.1849 30.0577 50.1549C30.1267 50.1249 30.2002 50.1099 30.2782 50.1099C30.3562 50.1099 30.4297 50.1249 30.4987 50.1549C30.5677 50.1849 30.6277 50.2254 30.6787 50.2764C30.7297 50.3274 30.7702 50.3874 30.8002 50.4564C30.8302 50.5254 30.8452 50.5989 30.8452 50.6769C30.8452 50.7579 30.8302 50.8329 30.8002 50.9019C30.7702 50.9679 30.7297 51.0264 30.6787 51.0774C30.6277 51.1284 30.5677 51.1674 30.4987 51.1944C30.4297 51.2244 30.3562 51.2394 30.2782 51.2394C30.2002 51.2394 30.1267 51.2244 30.0577 51.1944C29.9887 51.1674 29.9287 51.1284 29.8777 51.0774C29.8297 51.0264 29.7907 50.9679 29.7607 50.9019C29.7337 50.8329 29.7202 50.7579 29.7202 50.6769ZM35.7892 50.4114C35.8762 50.4114 35.9452 50.4369 35.9962 50.4879C36.0472 50.5389 36.0727 50.6049 36.0727 50.6859V51.1719H31.7707V50.8974C31.7707 50.8404 31.7827 50.7819 31.8067 50.7219C31.8307 50.6619 31.8682 50.6064 31.9192 50.5554L33.9847 48.4809C34.1557 48.3069 34.3117 48.1404 34.4527 47.9814C34.5937 47.8194 34.7137 47.6574 34.8127 47.4954C34.9117 47.3334 34.9882 47.1699 35.0422 47.0049C35.0962 46.8369 35.1232 46.6584 35.1232 46.4694C35.1232 46.2804 35.0932 46.1154 35.0332 45.9744C34.9732 45.8304 34.8907 45.7119 34.7857 45.6189C34.6837 45.5259 34.5622 45.4569 34.4212 45.4119C34.2802 45.3639 34.1287 45.3399 33.9667 45.3399C33.8017 45.3399 33.6502 45.3639 33.5122 45.4119C33.3742 45.4599 33.2512 45.5274 33.1432 45.6144C33.0382 45.6984 32.9497 45.7989 32.8777 45.9159C32.8057 46.0329 32.7547 46.1619 32.7247 46.3029C32.6887 46.4079 32.6392 46.4784 32.5762 46.5144C32.5162 46.5474 32.4307 46.5564 32.3197 46.5414L31.9012 46.4694C31.9432 46.1754 32.0242 45.9159 32.1442 45.6909C32.2672 45.4629 32.4202 45.2724 32.6032 45.1194C32.7892 44.9664 33.0007 44.8509 33.2377 44.7729C33.4747 44.6919 33.7312 44.6514 34.0072 44.6514C34.2802 44.6514 34.5352 44.6919 34.7722 44.7729C35.0092 44.8539 35.2147 44.9724 35.3887 45.1284C35.5627 45.2814 35.6992 45.4689 35.7982 45.6909C35.8972 45.9129 35.9467 46.1649 35.9467 46.4469C35.9467 46.6869 35.9107 46.9104 35.8387 47.1174C35.7667 47.3214 35.6692 47.5164 35.5462 47.7024C35.4232 47.8884 35.2807 48.0699 35.1187 48.2469C34.9597 48.4239 34.7902 48.6024 34.6102 48.7824L32.9092 50.5194C33.0292 50.4864 33.1507 50.4609 33.2737 50.4429C33.3967 50.4219 33.5152 50.4114 33.6292 50.4114H35.7892ZM37.0679 50.6769C37.0679 50.5989 37.0814 50.5254 37.1084 50.4564C37.1384 50.3874 37.1774 50.3274 37.2254 50.2764C37.2764 50.2254 37.3364 50.1849 37.4054 50.1549C37.4744 50.1249 37.5479 50.1099 37.6259 50.1099C37.7039 50.1099 37.7774 50.1249 37.8464 50.1549C37.9154 50.1849 37.9754 50.2254 38.0264 50.2764C38.0774 50.3274 38.1179 50.3874 38.1479 50.4564C38.1779 50.5254 38.1929 50.5989 38.1929 50.6769C38.1929 50.7579 38.1779 50.8329 38.1479 50.9019C38.1179 50.9679 38.0774 51.0264 38.0264 51.0774C37.9754 51.1284 37.9154 51.1674 37.8464 51.1944C37.7774 51.2244 37.7039 51.2394 37.6259 51.2394C37.5479 51.2394 37.4744 51.2244 37.4054 51.1944C37.3364 51.1674 37.2764 51.1284 37.2254 51.0774C37.1774 51.0264 37.1384 50.9679 37.1084 50.9019C37.0814 50.8329 37.0679 50.7579 37.0679 50.6769ZM43.2763 50.5599V51.1719H39.8203V50.5599H41.2018V46.1634C41.2018 46.0314 41.2063 45.8979 41.2153 45.7629L40.0678 46.7484C40.0288 46.7814 39.9898 46.8024 39.9508 46.8114C39.9118 46.8174 39.8758 46.8174 39.8428 46.8114C39.8098 46.8054 39.7783 46.7934 39.7483 46.7754C39.7213 46.7574 39.7003 46.7379 39.6853 46.7169L39.4333 46.3704L41.3548 44.7099H42.0073V50.5599H43.2763Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"35\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><path d=\\\"M11.581 13.5306V14.1426H8.125V13.5306H9.5065V9.13408C9.5065 9.00208 9.511 8.86858 9.52 8.73358L8.3725 9.71908C8.3335 9.75208 8.2945 9.77308 8.2555 9.78208C8.2165 9.78808 8.1805 9.78808 8.1475 9.78208C8.1145 9.77608 8.083 9.76408 8.053 9.74608C8.026 9.72808 8.005 9.70858 7.99 9.68758L7.738 9.34108L9.6595 7.68058H10.312V13.5306H11.581ZM12.7202 13.6476C12.7202 13.5696 12.7337 13.4961 12.7607 13.4271C12.7907 13.3581 12.8297 13.2981 12.8777 13.2471C12.9287 13.1961 12.9887 13.1556 13.0577 13.1256C13.1267 13.0956 13.2002 13.0806 13.2782 13.0806C13.3562 13.0806 13.4297 13.0956 13.4987 13.1256C13.5677 13.1556 13.6277 13.1961 13.6787 13.2471C13.7297 13.2981 13.7702 13.3581 13.8002 13.4271C13.8302 13.4961 13.8452 13.5696 13.8452 13.6476C13.8452 13.7286 13.8302 13.8036 13.8002 13.8726C13.7702 13.9386 13.7297 13.9971 13.6787 14.0481C13.6277 14.0991 13.5677 14.1381 13.4987 14.1651C13.4297 14.1951 13.3562 14.2101 13.2782 14.2101C13.2002 14.2101 13.1267 14.1951 13.0577 14.1651C12.9887 14.1381 12.9287 14.0991 12.8777 14.0481C12.8297 13.9971 12.7907 13.9386 12.7607 13.8726C12.7337 13.8036 12.7202 13.7286 12.7202 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.105 23.405C19.736 23.417 19.421 23.447 19.16 23.495C18.902 23.54 18.6905 23.6 18.5255 23.675C18.3635 23.75 18.245 23.8385 18.17 23.9405C18.098 24.0425 18.062 24.1565 18.062 24.2825C18.062 24.4025 18.0815 24.506 18.1205 24.593C18.1595 24.68 18.212 24.752 18.278 24.809C18.347 24.863 18.4265 24.9035 18.5165 24.9305C18.6095 24.9545 18.7085 24.9665 18.8135 24.9665C18.9545 24.9665 19.0835 24.953 19.2005 24.926C19.3175 24.896 19.427 24.854 19.529 24.8C19.634 24.746 19.733 24.6815 19.826 24.6065C19.922 24.5315 20.015 24.446 20.105 24.35V23.405ZM17.5175 21.542C17.7695 21.299 18.041 21.1175 18.332 20.9975C18.623 20.8775 18.9455 20.8175 19.2995 20.8175C19.5545 20.8175 19.781 20.8595 19.979 20.9435C20.177 21.0275 20.3435 21.1445 20.4785 21.2945C20.6135 21.4445 20.7155 21.626 20.7845 21.839C20.8535 22.052 20.888 22.286 20.888 22.541V25.457H20.5325C20.4545 25.457 20.3945 25.445 20.3525 25.421C20.3105 25.394 20.2775 25.343 20.2535 25.268L20.1635 24.836C20.0435 24.947 19.9265 25.046 19.8125 25.133C19.6985 25.217 19.5785 25.289 19.4525 25.349C19.3265 25.406 19.1915 25.4495 19.0475 25.4795C18.9065 25.5125 18.749 25.529 18.575 25.529C18.398 25.529 18.2315 25.505 18.0755 25.457C17.9195 25.406 17.783 25.331 17.666 25.232C17.552 25.133 17.4605 25.0085 17.3915 24.8585C17.3255 24.7055 17.2925 24.5255 17.2925 24.3185C17.2925 24.1385 17.342 23.966 17.441 23.801C17.54 23.633 17.7005 23.4845 17.9225 23.3555C18.1445 23.2265 18.434 23.1215 18.791 23.0405C19.148 22.9565 19.586 22.9085 20.105 22.8965V22.541C20.105 22.187 20.0285 21.92 19.8755 21.74C19.7225 21.557 19.499 21.4655 19.205 21.4655C19.007 21.4655 18.8405 21.491 18.7055 21.542C18.5735 21.59 18.458 21.6455 18.359 21.7085C18.263 21.7685 18.179 21.824 18.107 21.875C18.038 21.923 17.969 21.947 17.9 21.947C17.846 21.947 17.7995 21.9335 17.7605 21.9065C17.7215 21.8765 17.6885 21.8405 17.6615 21.7985L17.5175 21.542ZM21.9731 24.962C21.9731 24.884 21.9866 24.8105 22.0136 24.7415C22.0436 24.6725 22.0826 24.6125 22.1306 24.5615C22.1816 24.5105 22.2416 24.47 22.3106 24.44C22.3796 24.41 22.4531 24.395 22.5311 24.395C22.6091 24.395 22.6826 24.41 22.7516 24.44C22.8206 24.47 22.8806 24.5105 22.9316 24.5615C22.9826 24.6125 23.0231 24.6725 23.0531 24.7415C23.0831 24.8105 23.0981 24.884 23.0981 24.962C23.0981 25.043 23.0831 25.118 23.0531 25.187C23.0231 25.253 22.9826 25.3115 22.9316 25.3625C22.8806 25.4135 22.8206 25.4525 22.7516 25.4795C22.6826 25.5095 22.6091 25.5245 22.5311 25.5245C22.4531 25.5245 22.3796 25.5095 22.3106 25.4795C22.2416 25.4525 22.1816 25.4135 22.1306 25.3625C22.0826 25.3115 22.0436 25.253 22.0136 25.187C21.9866 25.118 21.9731 25.043 21.9731 24.962Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M18.44 37.7301C18.587 37.9281 18.7475 38.0676 18.9215 38.1486C19.0985 38.2296 19.292 38.2701 19.502 38.2701C19.931 38.2701 20.2595 38.1186 20.4875 37.8156C20.7155 37.5126 20.8295 37.0611 20.8295 36.4611C20.8295 35.9031 20.7275 35.4936 20.5235 35.2326C20.3225 34.9686 20.0345 34.8366 19.6595 34.8366C19.3985 34.8366 19.1705 34.8966 18.9755 35.0166C18.7835 35.1366 18.605 35.3061 18.44 35.5251V37.7301ZM18.44 34.9266C18.632 34.7046 18.848 34.5276 19.088 34.3956C19.331 34.2636 19.61 34.1976 19.925 34.1976C20.192 34.1976 20.432 34.2486 20.645 34.3506C20.861 34.4526 21.044 34.6011 21.194 34.7961C21.344 34.9881 21.458 35.2221 21.536 35.4981C21.617 35.7741 21.6575 36.0846 21.6575 36.4296C21.6575 36.7986 21.6125 37.1346 21.5225 37.4376C21.4325 37.7406 21.302 38.0001 21.131 38.2161C20.963 38.4291 20.7575 38.5956 20.5145 38.7156C20.2715 38.8326 19.9985 38.8911 19.6955 38.8911C19.3955 38.8911 19.142 38.8356 18.935 38.7246C18.731 38.6106 18.5525 38.4501 18.3995 38.2431L18.359 38.6571C18.335 38.7711 18.266 38.8281 18.152 38.8281H17.6345V32.1996H18.44V34.9266ZM22.5356 38.3331C22.5356 38.2551 22.5491 38.1816 22.5761 38.1126C22.6061 38.0436 22.6451 37.9836 22.6931 37.9326C22.7441 37.8816 22.8041 37.8411 22.8731 37.8111C22.9421 37.7811 23.0156 37.7661 23.0936 37.7661C23.1716 37.7661 23.2451 37.7811 23.3141 37.8111C23.3831 37.8411 23.4431 37.8816 23.4941 37.9326C23.5451 37.9836 23.5856 38.0436 23.6156 38.1126C23.6456 38.1816 23.6606 38.2551 23.6606 38.3331C23.6606 38.4141 23.6456 38.4891 23.6156 38.5581C23.5856 38.6241 23.5451 38.6826 23.4941 38.7336C23.4431 38.7846 23.3831 38.8236 23.3141 38.8506C23.2451 38.8806 23.1716 38.8956 23.0936 38.8956C23.0156 38.8956 22.9421 38.8806 22.8731 38.8506C22.8041 38.8236 22.7441 38.7846 22.6931 38.7336C22.6451 38.6826 22.6061 38.6241 22.5761 38.5581C22.5491 38.4891 22.5356 38.4141 22.5356 38.3331Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29.4805 46.6134V51.1719H28.6795V46.6134H29.4805ZM29.6515 45.1824C29.6515 45.2604 29.635 45.3339 29.602 45.4029C29.572 45.4689 29.53 45.5289 29.476 45.5829C29.425 45.6339 29.3635 45.6744 29.2915 45.7044C29.2225 45.7344 29.149 45.7494 29.071 45.7494C28.993 45.7494 28.9195 45.7344 28.8505 45.7044C28.7845 45.6744 28.726 45.6339 28.675 45.5829C28.624 45.5289 28.5835 45.4689 28.5535 45.4029C28.5235 45.3339 28.5085 45.2604 28.5085 45.1824C28.5085 45.1044 28.5235 45.0309 28.5535 44.9619C28.5835 44.8899 28.624 44.8284 28.675 44.7774C28.726 44.7234 28.7845 44.6814 28.8505 44.6514C28.9195 44.6214 28.993 44.6064 29.071 44.6064C29.149 44.6064 29.2225 44.6214 29.2915 44.6514C29.3635 44.6814 29.425 44.7234 29.476 44.7774C29.53 44.8284 29.572 44.8899 29.602 44.9619C29.635 45.0309 29.6515 45.1044 29.6515 45.1824ZM30.6616 50.6769C30.6616 50.5989 30.6751 50.5254 30.7021 50.4564C30.7321 50.3874 30.7711 50.3274 30.8191 50.2764C30.8701 50.2254 30.9301 50.1849 30.9991 50.1549C31.0681 50.1249 31.1416 50.1099 31.2196 50.1099C31.2976 50.1099 31.3711 50.1249 31.4401 50.1549C31.5091 50.1849 31.5691 50.2254 31.6201 50.2764C31.6711 50.3274 31.7116 50.3874 31.7416 50.4564C31.7716 50.5254 31.7866 50.5989 31.7866 50.6769C31.7866 50.7579 31.7716 50.8329 31.7416 50.9019C31.7116 50.9679 31.6711 51.0264 31.6201 51.0774C31.5691 51.1284 31.5091 51.1674 31.4401 51.1944C31.3711 51.2244 31.2976 51.2394 31.2196 51.2394C31.1416 51.2394 31.0681 51.2244 30.9991 51.1944C30.9301 51.1674 30.8701 51.1284 30.8191 51.0774C30.7711 51.0264 30.7321 50.9679 30.7021 50.9019C30.6751 50.8329 30.6616 50.7579 30.6616 50.6769Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.4415 62.7541C11.5285 62.7541 11.5975 62.7796 11.6485 62.8306C11.6995 62.8816 11.725 62.9476 11.725 63.0286V63.5146H7.423V63.2401C7.423 63.1831 7.435 63.1246 7.459 63.0646C7.483 63.0046 7.5205 62.9491 7.5715 62.8981L9.637 60.8236C9.808 60.6496 9.964 60.4831 10.105 60.3241C10.246 60.1621 10.366 60.0001 10.465 59.8381C10.564 59.6761 10.6405 59.5126 10.6945 59.3476C10.7485 59.1796 10.7755 59.0011 10.7755 58.8121C10.7755 58.6231 10.7455 58.4581 10.6855 58.3171C10.6255 58.1731 10.543 58.0546 10.438 57.9616C10.336 57.8686 10.2145 57.7996 10.0735 57.7546C9.9325 57.7066 9.781 57.6826 9.619 57.6826C9.454 57.6826 9.3025 57.7066 9.1645 57.7546C9.0265 57.8026 8.9035 57.8701 8.7955 57.9571C8.6905 58.0411 8.602 58.1416 8.53 58.2586C8.458 58.3756 8.407 58.5046 8.377 58.6456C8.341 58.7506 8.2915 58.8211 8.2285 58.8571C8.1685 58.8901 8.083 58.8991 7.972 58.8841L7.5535 58.8121C7.5955 58.5181 7.6765 58.2586 7.7965 58.0336C7.9195 57.8056 8.0725 57.6151 8.2555 57.4621C8.4415 57.3091 8.653 57.1936 8.89 57.1156C9.127 57.0346 9.3835 56.9941 9.6595 56.9941C9.9325 56.9941 10.1875 57.0346 10.4245 57.1156C10.6615 57.1966 10.867 57.3151 11.041 57.4711C11.215 57.6241 11.3515 57.8116 11.4505 58.0336C11.5495 58.2556 11.599 58.5076 11.599 58.7896C11.599 59.0296 11.563 59.2531 11.491 59.4601C11.419 59.6641 11.3215 59.8591 11.1985 60.0451C11.0755 60.2311 10.933 60.4126 10.771 60.5896C10.612 60.7666 10.4425 60.9451 10.2625 61.1251L8.5615 62.8621C8.6815 62.8291 8.803 62.8036 8.926 62.7856C9.049 62.7646 9.1675 62.7541 9.2815 62.7541H11.4415ZM12.7202 63.0196C12.7202 62.9416 12.7337 62.8681 12.7607 62.7991C12.7907 62.7301 12.8297 62.6701 12.8777 62.6191C12.9287 62.5681 12.9887 62.5276 13.0577 62.4976C13.1267 62.4676 13.2002 62.4526 13.2782 62.4526C13.3562 62.4526 13.4297 62.4676 13.4987 62.4976C13.5677 62.5276 13.6277 62.5681 13.6787 62.6191C13.7297 62.6701 13.7702 62.7301 13.8002 62.7991C13.8302 62.8681 13.8452 62.9416 13.8452 63.0196C13.8452 63.1006 13.8302 63.1756 13.8002 63.2446C13.7702 63.3106 13.7297 63.3691 13.6787 63.4201C13.6277 63.4711 13.5677 63.5101 13.4987 63.5371C13.4297 63.5671 13.3562 63.5821 13.2782 63.5821C13.2002 63.5821 13.1267 63.5671 13.0577 63.5371C12.9887 63.5101 12.9287 63.4711 12.8777 63.4201C12.8297 63.3691 12.7907 63.3106 12.7607 63.2446C12.7337 63.1756 12.7202 63.1006 12.7202 63.0196Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"35\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M11.581 13.5306V14.1426H8.125V13.5306H9.5065V9.13408C9.5065 9.00208 9.511 8.86858 9.52 8.73358L8.3725 9.71908C8.3335 9.75208 8.2945 9.77308 8.2555 9.78208C8.2165 9.78808 8.1805 9.78808 8.1475 9.78208C8.1145 9.77608 8.083 9.76408 8.053 9.74608C8.026 9.72808 8.005 9.70858 7.99 9.68758L7.738 9.34108L9.6595 7.68058H10.312V13.5306H11.581ZM13.5212 11.3121C13.5212 10.6701 13.4387 10.0461 13.2737 9.44008C13.1117 8.83408 12.8732 8.25808 12.5582 7.71208C12.5342 7.66708 12.5192 7.62808 12.5132 7.59508C12.5072 7.55908 12.5087 7.52908 12.5177 7.50508C12.5267 7.47808 12.5402 7.45558 12.5582 7.43758C12.5792 7.41658 12.6017 7.39858 12.6257 7.38358L12.9812 7.16308C13.2062 7.51108 13.3967 7.85458 13.5527 8.19358C13.7117 8.53258 13.8392 8.87308 13.9352 9.21508C14.0342 9.55408 14.1062 9.89758 14.1512 10.2456C14.1962 10.5936 14.2187 10.9491 14.2187 11.3121C14.2187 11.6781 14.1962 12.0351 14.1512 12.3831C14.1062 12.7281 14.0342 13.0716 13.9352 13.4136C13.8392 13.7556 13.7117 14.0961 13.5527 14.4351C13.3967 14.7741 13.2062 15.1161 12.9812 15.4611L12.6257 15.2451C12.6017 15.2301 12.5792 15.2121 12.5582 15.1911C12.5402 15.1731 12.5267 15.1506 12.5177 15.1236C12.5087 15.0996 12.5072 15.0696 12.5132 15.0336C12.5192 14.9976 12.5342 14.9571 12.5582 14.9121C12.8732 14.3661 13.1117 13.7901 13.2737 13.1841C13.4387 12.5781 13.5212 11.9541 13.5212 11.3121Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.105 23.405C19.736 23.417 19.421 23.447 19.16 23.495C18.902 23.54 18.6905 23.6 18.5255 23.675C18.3635 23.75 18.245 23.8385 18.17 23.9405C18.098 24.0425 18.062 24.1565 18.062 24.2825C18.062 24.4025 18.0815 24.506 18.1205 24.593C18.1595 24.68 18.212 24.752 18.278 24.809C18.347 24.863 18.4265 24.9035 18.5165 24.9305C18.6095 24.9545 18.7085 24.9665 18.8135 24.9665C18.9545 24.9665 19.0835 24.953 19.2005 24.926C19.3175 24.896 19.427 24.854 19.529 24.8C19.634 24.746 19.733 24.6815 19.826 24.6065C19.922 24.5315 20.015 24.446 20.105 24.35V23.405ZM17.5175 21.542C17.7695 21.299 18.041 21.1175 18.332 20.9975C18.623 20.8775 18.9455 20.8175 19.2995 20.8175C19.5545 20.8175 19.781 20.8595 19.979 20.9435C20.177 21.0275 20.3435 21.1445 20.4785 21.2945C20.6135 21.4445 20.7155 21.626 20.7845 21.839C20.8535 22.052 20.888 22.286 20.888 22.541V25.457H20.5325C20.4545 25.457 20.3945 25.445 20.3525 25.421C20.3105 25.394 20.2775 25.343 20.2535 25.268L20.1635 24.836C20.0435 24.947 19.9265 25.046 19.8125 25.133C19.6985 25.217 19.5785 25.289 19.4525 25.349C19.3265 25.406 19.1915 25.4495 19.0475 25.4795C18.9065 25.5125 18.749 25.529 18.575 25.529C18.398 25.529 18.2315 25.505 18.0755 25.457C17.9195 25.406 17.783 25.331 17.666 25.232C17.552 25.133 17.4605 25.0085 17.3915 24.8585C17.3255 24.7055 17.2925 24.5255 17.2925 24.3185C17.2925 24.1385 17.342 23.966 17.441 23.801C17.54 23.633 17.7005 23.4845 17.9225 23.3555C18.1445 23.2265 18.434 23.1215 18.791 23.0405C19.148 22.9565 19.586 22.9085 20.105 22.8965V22.541C20.105 22.187 20.0285 21.92 19.8755 21.74C19.7225 21.557 19.499 21.4655 19.205 21.4655C19.007 21.4655 18.8405 21.491 18.7055 21.542C18.5735 21.59 18.458 21.6455 18.359 21.7085C18.263 21.7685 18.179 21.824 18.107 21.875C18.038 21.923 17.969 21.947 17.9 21.947C17.846 21.947 17.7995 21.9335 17.7605 21.9065C17.7215 21.8765 17.6885 21.8405 17.6615 21.7985L17.5175 21.542ZM22.6159 22.6265C22.6159 21.9845 22.5334 21.3605 22.3684 20.7545C22.2064 20.1485 21.9679 19.5725 21.6529 19.0265C21.6289 18.9815 21.6139 18.9425 21.6079 18.9095C21.6019 18.8735 21.6034 18.8435 21.6124 18.8195C21.6214 18.7925 21.6349 18.77 21.6529 18.752C21.6739 18.731 21.6964 18.713 21.7204 18.698L22.0759 18.4775C22.3009 18.8255 22.4914 19.169 22.6474 19.508C22.8064 19.847 22.9339 20.1875 23.0299 20.5295C23.1289 20.8685 23.2009 21.212 23.2459 21.56C23.2909 21.908 23.3134 22.2635 23.3134 22.6265C23.3134 22.9925 23.2909 23.3495 23.2459 23.6975C23.2009 24.0425 23.1289 24.386 23.0299 24.728C22.9339 25.07 22.8064 25.4105 22.6474 25.7495C22.4914 26.0885 22.3009 26.4305 22.0759 26.7755L21.7204 26.5595C21.6964 26.5445 21.6739 26.5265 21.6529 26.5055C21.6349 26.4875 21.6214 26.465 21.6124 26.438C21.6034 26.414 21.6019 26.384 21.6079 26.348C21.6139 26.312 21.6289 26.2715 21.6529 26.2265C21.9679 25.6805 22.2064 25.1045 22.3684 24.4985C22.5334 23.8925 22.6159 23.2685 22.6159 22.6265Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M18.44 37.7301C18.587 37.9281 18.7475 38.0676 18.9215 38.1486C19.0985 38.2296 19.292 38.2701 19.502 38.2701C19.931 38.2701 20.2595 38.1186 20.4875 37.8156C20.7155 37.5126 20.8295 37.0611 20.8295 36.4611C20.8295 35.9031 20.7275 35.4936 20.5235 35.2326C20.3225 34.9686 20.0345 34.8366 19.6595 34.8366C19.3985 34.8366 19.1705 34.8966 18.9755 35.0166C18.7835 35.1366 18.605 35.3061 18.44 35.5251V37.7301ZM18.44 34.9266C18.632 34.7046 18.848 34.5276 19.088 34.3956C19.331 34.2636 19.61 34.1976 19.925 34.1976C20.192 34.1976 20.432 34.2486 20.645 34.3506C20.861 34.4526 21.044 34.6011 21.194 34.7961C21.344 34.9881 21.458 35.2221 21.536 35.4981C21.617 35.7741 21.6575 36.0846 21.6575 36.4296C21.6575 36.7986 21.6125 37.1346 21.5225 37.4376C21.4325 37.7406 21.302 38.0001 21.131 38.2161C20.963 38.4291 20.7575 38.5956 20.5145 38.7156C20.2715 38.8326 19.9985 38.8911 19.6955 38.8911C19.3955 38.8911 19.142 38.8356 18.935 38.7246C18.731 38.6106 18.5525 38.4501 18.3995 38.2431L18.359 38.6571C18.335 38.7711 18.266 38.8281 18.152 38.8281H17.6345V32.1996H18.44V34.9266ZM23.073 35.9976C23.073 35.3556 22.9905 34.7316 22.8255 34.1256C22.6635 33.5196 22.425 32.9436 22.11 32.3976C22.086 32.3526 22.071 32.3136 22.065 32.2806C22.059 32.2446 22.0605 32.2146 22.0695 32.1906C22.0785 32.1636 22.092 32.1411 22.11 32.1231C22.131 32.1021 22.1535 32.0841 22.1775 32.0691L22.533 31.8486C22.758 32.1966 22.9485 32.5401 23.1045 32.8791C23.2635 33.2181 23.391 33.5586 23.487 33.9006C23.586 34.2396 23.658 34.5831 23.703 34.9311C23.748 35.2791 23.7705 35.6346 23.7705 35.9976C23.7705 36.3636 23.748 36.7206 23.703 37.0686C23.658 37.4136 23.586 37.7571 23.487 38.0991C23.391 38.4411 23.2635 38.7816 23.1045 39.1206C22.9485 39.4596 22.758 39.8016 22.533 40.1466L22.1775 39.9306C22.1535 39.9156 22.131 39.8976 22.11 39.8766C22.092 39.8586 22.0785 39.8361 22.0695 39.8091C22.0605 39.7851 22.059 39.7551 22.065 39.7191C22.071 39.6831 22.086 39.6426 22.11 39.5976C22.425 39.0516 22.6635 38.4756 22.8255 37.8696C22.9905 37.2636 23.073 36.6396 23.073 35.9976Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M29.4805 46.6134V51.1719H28.6795V46.6134H29.4805ZM29.6515 45.1824C29.6515 45.2604 29.635 45.3339 29.602 45.4029C29.572 45.4689 29.53 45.5289 29.476 45.5829C29.425 45.6339 29.3635 45.6744 29.2915 45.7044C29.2225 45.7344 29.149 45.7494 29.071 45.7494C28.993 45.7494 28.9195 45.7344 28.8505 45.7044C28.7845 45.6744 28.726 45.6339 28.675 45.5829C28.624 45.5289 28.5835 45.4689 28.5535 45.4029C28.5235 45.3339 28.5085 45.2604 28.5085 45.1824C28.5085 45.1044 28.5235 45.0309 28.5535 44.9619C28.5835 44.8899 28.624 44.8284 28.675 44.7774C28.726 44.7234 28.7845 44.6814 28.8505 44.6514C28.9195 44.6214 28.993 44.6064 29.071 44.6064C29.149 44.6064 29.2225 44.6214 29.2915 44.6514C29.3635 44.6814 29.425 44.7234 29.476 44.7774C29.53 44.8284 29.572 44.8899 29.602 44.9619C29.635 45.0309 29.6515 45.1044 29.6515 45.1824ZM31.4626 48.3414C31.4626 47.6994 31.3801 47.0754 31.2151 46.4694C31.0531 45.8634 30.8146 45.2874 30.4996 44.7414C30.4756 44.6964 30.4606 44.6574 30.4546 44.6244C30.4486 44.5884 30.4501 44.5584 30.4591 44.5344C30.4681 44.5074 30.4816 44.4849 30.4996 44.4669C30.5206 44.4459 30.5431 44.4279 30.5671 44.4129L30.9226 44.1924C31.1476 44.5404 31.3381 44.8839 31.4941 45.2229C31.6531 45.5619 31.7806 45.9024 31.8766 46.2444C31.9756 46.5834 32.0476 46.9269 32.0926 47.2749C32.1376 47.6229 32.1601 47.9784 32.1601 48.3414C32.1601 48.7074 32.1376 49.0644 32.0926 49.4124C32.0476 49.7574 31.9756 50.1009 31.8766 50.4429C31.7806 50.7849 31.6531 51.1254 31.4941 51.4644C31.3381 51.8034 31.1476 52.1454 30.9226 52.4904L30.5671 52.2744C30.5431 52.2594 30.5206 52.2414 30.4996 52.2204C30.4816 52.2024 30.4681 52.1799 30.4591 52.1529C30.4501 52.1289 30.4486 52.0989 30.4546 52.0629C30.4606 52.0269 30.4756 51.9864 30.4996 51.9414C30.8146 51.3954 31.0531 50.8194 31.2151 50.2134C31.3801 49.6074 31.4626 48.9834 31.4626 48.3414Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M11.4415 62.7541C11.5285 62.7541 11.5975 62.7796 11.6485 62.8306C11.6995 62.8816 11.725 62.9476 11.725 63.0286V63.5146H7.423V63.2401C7.423 63.1831 7.435 63.1246 7.459 63.0646C7.483 63.0046 7.5205 62.9491 7.5715 62.8981L9.637 60.8236C9.808 60.6496 9.964 60.4831 10.105 60.3241C10.246 60.1621 10.366 60.0001 10.465 59.8381C10.564 59.6761 10.6405 59.5126 10.6945 59.3476C10.7485 59.1796 10.7755 59.0011 10.7755 58.8121C10.7755 58.6231 10.7455 58.4581 10.6855 58.3171C10.6255 58.1731 10.543 58.0546 10.438 57.9616C10.336 57.8686 10.2145 57.7996 10.0735 57.7546C9.9325 57.7066 9.781 57.6826 9.619 57.6826C9.454 57.6826 9.3025 57.7066 9.1645 57.7546C9.0265 57.8026 8.9035 57.8701 8.7955 57.9571C8.6905 58.0411 8.602 58.1416 8.53 58.2586C8.458 58.3756 8.407 58.5046 8.377 58.6456C8.341 58.7506 8.2915 58.8211 8.2285 58.8571C8.1685 58.8901 8.083 58.8991 7.972 58.8841L7.5535 58.8121C7.5955 58.5181 7.6765 58.2586 7.7965 58.0336C7.9195 57.8056 8.0725 57.6151 8.2555 57.4621C8.4415 57.3091 8.653 57.1936 8.89 57.1156C9.127 57.0346 9.3835 56.9941 9.6595 56.9941C9.9325 56.9941 10.1875 57.0346 10.4245 57.1156C10.6615 57.1966 10.867 57.3151 11.041 57.4711C11.215 57.6241 11.3515 57.8116 11.4505 58.0336C11.5495 58.2556 11.599 58.5076 11.599 58.7896C11.599 59.0296 11.563 59.2531 11.491 59.4601C11.419 59.6641 11.3215 59.8591 11.1985 60.0451C11.0755 60.2311 10.933 60.4126 10.771 60.5896C10.612 60.7666 10.4425 60.9451 10.2625 61.1251L8.5615 62.8621C8.6815 62.8291 8.803 62.8036 8.926 62.7856C9.049 62.7646 9.1675 62.7541 9.2815 62.7541H11.4415ZM13.5212 60.6841C13.5212 60.0421 13.4387 59.4181 13.2737 58.8121C13.1117 58.2061 12.8732 57.6301 12.5582 57.0841C12.5342 57.0391 12.5192 57.0001 12.5132 56.9671C12.5072 56.9311 12.5087 56.9011 12.5177 56.8771C12.5267 56.8501 12.5402 56.8276 12.5582 56.8096C12.5792 56.7886 12.6017 56.7706 12.6257 56.7556L12.9812 56.5351C13.2062 56.8831 13.3967 57.2266 13.5527 57.5656C13.7117 57.9046 13.8392 58.2451 13.9352 58.5871C14.0342 58.9261 14.1062 59.2696 14.1512 59.6176C14.1962 59.9656 14.2187 60.3211 14.2187 60.6841C14.2187 61.0501 14.1962 61.4071 14.1512 61.7551C14.1062 62.1001 14.0342 62.4436 13.9352 62.7856C13.8392 63.1276 13.7117 63.4681 13.5527 63.8071C13.3967 64.1461 13.2062 64.4881 12.9812 64.8331L12.6257 64.6171C12.6017 64.6021 12.5792 64.5841 12.5582 64.5631C12.5402 64.5451 12.5267 64.5226 12.5177 64.4956C12.5087 64.4716 12.5072 64.4416 12.5132 64.4056C12.5192 64.3696 12.5342 64.3291 12.5582 64.2841C12.8732 63.7381 13.1117 63.1621 13.2737 62.5561C13.4387 61.9501 13.5212 61.3261 13.5212 60.6841Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line x1=\\\"18\\\" y1=\\\"11.3428\\\" x2=\\\"52\\\" y2=\\\"11.3428\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"18\\\" y1=\\\"60.7139\\\" x2=\\\"52\\\" y2=\\\"60.7139\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"23.6855\\\" x2=\\\"52\\\" y2=\\\"23.6855\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"28\\\" y1=\\\"36.0283\\\" x2=\\\"52\\\" y2=\\\"36.0283\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><line x1=\\\"38\\\" y1=\\\"48.3711\\\" x2=\\\"52\\\" y2=\\\"48.3711\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><path d=\\\"M8.6965 14.1426H7.8235V7.69408H8.6965V14.1426ZM10.022 13.6476C10.022 13.5696 10.0355 13.4961 10.0625 13.4271C10.0925 13.3581 10.1315 13.2981 10.1795 13.2471C10.2305 13.1961 10.2905 13.1556 10.3595 13.1256C10.4285 13.0956 10.502 13.0806 10.58 13.0806C10.658 13.0806 10.7315 13.0956 10.8005 13.1256C10.8695 13.1556 10.9295 13.1961 10.9805 13.2471C11.0315 13.2981 11.072 13.3581 11.102 13.4271C11.132 13.4961 11.147 13.5696 11.147 13.6476C11.147 13.7286 11.132 13.8036 11.102 13.8726C11.072 13.9386 11.0315 13.9971 10.9805 14.0481C10.9295 14.0991 10.8695 14.1381 10.8005 14.1651C10.7315 14.1951 10.658 14.2101 10.58 14.2101C10.502 14.2101 10.4285 14.1951 10.3595 14.1651C10.2905 14.1381 10.2305 14.0991 10.1795 14.0481C10.1315 13.9971 10.0925 13.9386 10.0625 13.8726C10.0355 13.8036 10.022 13.7286 10.022 13.6476Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M21.248 23.063L20.2355 20.4395C20.2055 20.3615 20.174 20.2715 20.141 20.1695C20.108 20.0645 20.0765 19.9535 20.0465 19.8365C19.9835 20.0795 19.919 20.282 19.853 20.444L18.8405 23.063H21.248ZM23.066 25.457H22.391C22.313 25.457 22.25 25.4375 22.202 25.3985C22.154 25.3595 22.118 25.31 22.094 25.25L21.491 23.693H18.5975L17.9945 25.25C17.9765 25.304 17.942 25.352 17.891 25.394C17.84 25.436 17.777 25.457 17.702 25.457H17.027L19.6055 19.0085H20.4875L23.066 25.457ZM23.5903 24.962C23.5903 24.884 23.6038 24.8105 23.6308 24.7415C23.6608 24.6725 23.6998 24.6125 23.7478 24.5615C23.7988 24.5105 23.8588 24.47 23.9278 24.44C23.9968 24.41 24.0703 24.395 24.1483 24.395C24.2263 24.395 24.2998 24.41 24.3688 24.44C24.4378 24.47 24.4978 24.5105 24.5488 24.5615C24.5998 24.6125 24.6403 24.6725 24.6703 24.7415C24.7003 24.8105 24.7153 24.884 24.7153 24.962C24.7153 25.043 24.7003 25.118 24.6703 25.187C24.6403 25.253 24.5998 25.3115 24.5488 25.3625C24.4978 25.4135 24.4378 25.4525 24.3688 25.4795C24.2998 25.5095 24.2263 25.5245 24.1483 25.5245C24.0703 25.5245 23.9968 25.5095 23.9278 25.4795C23.8588 25.4525 23.7988 25.4135 23.7478 25.3625C23.6998 25.3115 23.6608 25.253 23.6308 25.187C23.6038 25.118 23.5903 25.043 23.5903 24.962Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M20.087 38.1351C20.336 38.1351 20.5505 38.1066 20.7305 38.0496C20.9105 37.9926 21.0575 37.9131 21.1715 37.8111C21.2885 37.7061 21.374 37.5831 21.428 37.4421C21.482 37.2981 21.509 37.1406 21.509 36.9696C21.509 36.6366 21.3905 36.3741 21.1535 36.1821C20.9165 35.9871 20.561 35.8896 20.087 35.8896H18.692V38.1351H20.087ZM18.692 33.0681V35.2686H19.844C20.09 35.2686 20.303 35.2416 20.483 35.1876C20.666 35.1336 20.816 35.0586 20.933 34.9626C21.053 34.8666 21.1415 34.7511 21.1985 34.6161C21.2555 34.4781 21.284 34.3281 21.284 34.1661C21.284 33.7851 21.17 33.5076 20.942 33.3336C20.714 33.1566 20.36 33.0681 19.88 33.0681H18.692ZM19.88 32.3796C20.276 32.3796 20.6165 32.4186 20.9015 32.4966C21.1895 32.5746 21.425 32.6856 21.608 32.8296C21.794 32.9736 21.9305 33.1506 22.0175 33.3606C22.1045 33.5676 22.148 33.8016 22.148 34.0626C22.148 34.2216 22.1225 34.3746 22.0715 34.5216C22.0235 34.6656 21.95 34.8006 21.851 34.9266C21.752 35.0526 21.626 35.1666 21.473 35.2686C21.323 35.3676 21.146 35.4486 20.942 35.5116C21.416 35.6016 21.7715 35.7711 22.0085 36.0201C22.2485 36.2661 22.3685 36.5901 22.3685 36.9921C22.3685 37.2651 22.3175 37.5141 22.2155 37.7391C22.1165 37.9641 21.9695 38.1576 21.7745 38.3196C21.5825 38.4816 21.3455 38.6076 21.0635 38.6976C20.7815 38.7846 20.4605 38.8281 20.1005 38.8281H17.8235V32.3796H19.88ZM23.3179 38.3331C23.3179 38.2551 23.3314 38.1816 23.3584 38.1126C23.3884 38.0436 23.4274 37.9836 23.4754 37.9326C23.5264 37.8816 23.5864 37.8411 23.6554 37.8111C23.7244 37.7811 23.7979 37.7661 23.8759 37.7661C23.9539 37.7661 24.0274 37.7811 24.0964 37.8111C24.1654 37.8411 24.2254 37.8816 24.2764 37.9326C24.3274 37.9836 24.3679 38.0436 24.3979 38.1126C24.4279 38.1816 24.4429 38.2551 24.4429 38.3331C24.4429 38.4141 24.4279 38.4891 24.3979 38.5581C24.3679 38.6241 24.3274 38.6826 24.2764 38.7336C24.2254 38.7846 24.1654 38.8236 24.0964 38.8506C24.0274 38.8806 23.9539 38.8956 23.8759 38.8956C23.7979 38.8956 23.7244 38.8806 23.6554 38.8506C23.5864 38.8236 23.5264 38.7846 23.4754 38.7336C23.4274 38.6826 23.3884 38.6241 23.3584 38.5581C23.3314 38.4891 23.3179 38.4141 23.3179 38.3331Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M32.581 50.5599V51.1719H29.125V50.5599H30.5065V46.1634C30.5065 46.0314 30.511 45.8979 30.52 45.7629L29.3725 46.7484C29.3335 46.7814 29.2945 46.8024 29.2555 46.8114C29.2165 46.8174 29.1805 46.8174 29.1475 46.8114C29.1145 46.8054 29.083 46.7934 29.053 46.7754C29.026 46.7574 29.005 46.7379 28.99 46.7169L28.738 46.3704L30.6595 44.7099H31.312V50.5599H32.581ZM33.7202 50.6769C33.7202 50.5989 33.7337 50.5254 33.7607 50.4564C33.7907 50.3874 33.8297 50.3274 33.8777 50.2764C33.9287 50.2254 33.9887 50.1849 34.0577 50.1549C34.1267 50.1249 34.2002 50.1099 34.2782 50.1099C34.3562 50.1099 34.4297 50.1249 34.4987 50.1549C34.5677 50.1849 34.6277 50.2254 34.6787 50.2764C34.7297 50.3274 34.7702 50.3874 34.8002 50.4564C34.8302 50.5254 34.8452 50.5989 34.8452 50.6769C34.8452 50.7579 34.8302 50.8329 34.8002 50.9019C34.7702 50.9679 34.7297 51.0264 34.6787 51.0774C34.6277 51.1284 34.5677 51.1674 34.4987 51.1944C34.4297 51.2244 34.3562 51.2394 34.2782 51.2394C34.2002 51.2394 34.1267 51.2244 34.0577 51.1944C33.9887 51.1674 33.9287 51.1284 33.8777 51.0774C33.8297 51.0264 33.7907 50.9679 33.7607 50.9019C33.7337 50.8329 33.7202 50.7579 33.7202 50.6769Z\\\" fill=\\\"#485056\\\"></path><path d=\\\"M8.6965 63.5146H7.8235V57.0661H8.6965V63.5146ZM11.219 63.5146H10.346V57.0661H11.219V63.5146ZM12.5444 63.0196C12.5444 62.9416 12.5579 62.8681 12.5849 62.7991C12.6149 62.7301 12.6539 62.6701 12.7019 62.6191C12.7529 62.5681 12.8129 62.5276 12.8819 62.4976C12.9509 62.4676 13.0244 62.4526 13.1024 62.4526C13.1804 62.4526 13.2539 62.4676 13.3229 62.4976C13.3919 62.5276 13.4519 62.5681 13.5029 62.6191C13.5539 62.6701 13.5944 62.7301 13.6244 62.7991C13.6544 62.8681 13.6694 62.9416 13.6694 63.0196C13.6694 63.1006 13.6544 63.1756 13.6244 63.2446C13.5944 63.3106 13.5539 63.3691 13.5029 63.4201C13.4519 63.4711 13.3919 63.5101 13.3229 63.5371C13.2539 63.5671 13.1804 63.5821 13.1024 63.5821C13.0244 63.5821 12.9509 63.5671 12.8819 63.5371C12.8129 63.5101 12.7529 63.4711 12.7019 63.4201C12.6539 63.3691 12.6149 63.3106 12.5849 63.2446C12.5579 63.1756 12.5444 63.1006 12.5444 63.0196Z\\\" fill=\\\"#485056\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"8.5\\\" y=\\\"10.5\\\" width=\\\"5\\\" height=\\\"5\\\" fill=\\\"#485056\\\" stroke=\\\"#485056\\\"></rect><line x1=\\\"18\\\" y1=\\\"13\\\" x2=\\\"52\\\" y2=\\\"13\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"31\\\" cy=\\\"49\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"8.5\\\" y=\\\"58.5\\\" width=\\\"5\\\" height=\\\"5\\\" fill=\\\"#485056\\\" stroke=\\\"#485056\\\"></rect><line x1=\\\"18\\\" y1=\\\"61\\\" x2=\\\"52\\\" y2=\\\"61\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect><defs><filter id=\\\"filter0_d_359_14319\\\" x=\\\"32.1913\\\" y=\\\"42.0117\\\" width=\\\"16.7461\\\" height=\\\"17.8586\\\" filterUnits=\\\"userSpaceOnUse\\\" color-interpolation-filters=\\\"sRGB\\\"><feFlood flood-opacity=\\\"0\\\" result=\\\"BackgroundImageFix\\\"></feFlood><feColorMatrix in=\\\"SourceAlpha\\\" type=\\\"matrix\\\" values=\\\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\\\" result=\\\"hardAlpha\\\"></feColorMatrix><feOffset dy=\\\"1\\\"></feOffset><feGaussianBlur stdDeviation=\\\"0.4\\\"></feGaussianBlur><feColorMatrix type=\\\"matrix\\\" values=\\\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\\\"></feColorMatrix><feBlend mode=\\\"normal\\\" in2=\\\"BackgroundImageFix\\\" result=\\\"effect1_dropShadow_359_14319\\\"></feBlend><feBlend mode=\\\"normal\\\" in=\\\"SourceGraphic\\\" in2=\\\"effect1_dropShadow_359_14319\\\" result=\\\"shape\\\"></feBlend></filter></defs></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 74\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle cx=\\\"11\\\" cy=\\\"13\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"13\\\" x2=\\\"52\\\" y2=\\\"13\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"25\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"25\\\" x2=\\\"52\\\" y2=\\\"25\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"21\\\" cy=\\\"37\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"28\\\" y1=\\\"37\\\" x2=\\\"52\\\" y2=\\\"37\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect x=\\\"28.5\\\" y=\\\"46.5\\\" width=\\\"5\\\" height=\\\"5\\\" fill=\\\"#485056\\\" stroke=\\\"#485056\\\"></rect><line x1=\\\"38\\\" y1=\\\"49\\\" x2=\\\"52\\\" y2=\\\"49\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><circle cx=\\\"11\\\" cy=\\\"61\\\" r=\\\"3\\\" fill=\\\"#485056\\\"></circle><line x1=\\\"18\\\" y1=\\\"61\\\" x2=\\\"52\\\" y2=\\\"61\\\" stroke=\\\"#868E96\\\" stroke-width=\\\"2\\\"></line><rect class=\\\"office-editor-list-style-item-border\\\" x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"59\\\" height=\\\"73\\\" stroke=\\\"#ADB5BD\\\" style=\\\"fill: none;\\\"></rect></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"ic-numbered-list\\\"><g id=\\\"shape\\\"><path d=\\\"M3.9566 4.19617V7.80391H3.18854V5.186L2.58815 5.79721L2.15002 5.33745L3.2859 4.19617H3.9566Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 5.5H7V7.5H21V5.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 11H7V13H21V11Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 16.5H21V18.5H7V16.5Z\\\" fill=\\\"black\\\"></path><path d=\\\"M4.79641 13.8309V13.1548H3.32518C4.26093 12.4733 4.76936 11.9378 4.76936 11.3212C4.76936 10.6018 4.15816 10.1691 3.39009 10.1691C2.88706 10.1691 2.35158 10.353 2 10.7586L2.43812 11.2671C2.68152 11.0129 2.99524 10.8506 3.40632 10.8506C3.70381 10.8506 3.99048 11.0074 3.99048 11.3212C3.99048 11.7647 3.55777 12.1379 2.08113 13.2305V13.8309H4.79641Z\\\" fill=\\\"black\\\"></path><path d=\\\"M4.84509 18.8032C4.84509 19.4252 4.28797 19.8633 3.42254 19.8633C2.75725 19.8633 2.26504 19.6091 2 19.2846L2.40026 18.7707C2.64907 19.0304 3.04392 19.1818 3.3955 19.1818C3.83362 19.1818 4.07702 18.9925 4.07702 18.7221C4.07702 18.4354 3.85526 18.3056 3.35223 18.3056C3.20078 18.3056 2.95738 18.311 2.90329 18.3164V17.624C2.9682 17.6295 3.21701 17.6295 3.35223 17.6295C3.75249 17.6295 4.01752 17.5105 4.01752 17.2454C4.01752 16.9588 3.72544 16.8181 3.34682 16.8181C3.00065 16.8181 2.68693 16.9479 2.43271 17.1913L2.04868 16.7099C2.34076 16.38 2.79511 16.1366 3.42795 16.1366C4.27174 16.1366 4.791 16.5152 4.791 17.1156C4.791 17.57 4.40156 17.8674 4.0013 17.9378C4.3691 17.9756 4.84509 18.2623 4.84509 18.8032Z\\\" fill=\\\"black\\\"></path></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.3334 2.83325V9.24992C19.3334 10.2583 18.5084 11.0833 17.5 11.0833H6.50002C5.49169 11.0833 4.66669 10.2583 4.66669 9.24992V2.83325H6.50002V9.24992H17.5V2.83325H19.3334ZM19.3334 19.2416C19.3334 19.3333 19.3334 19.3333 19.3334 19.2416V21.1666H17.5V20.2499H12.9167C12.3667 20.2499 12 19.8833 12 19.3333V14.7499H6.50002V21.1666H4.66669V14.7499C4.66669 13.7416 5.49169 12.9166 6.50002 12.9166H12.9167C12.9167 12.9166 12.9167 12.9166 13.0084 12.9166C13.1 12.9166 13.1917 12.9166 13.2834 13.0083H13.375C13.4667 13.0083 13.5584 13.0999 13.65 13.1916L19.15 18.6916C19.2417 18.7833 19.2417 18.8749 19.3334 18.9666V19.0583C19.3334 19.1499 19.3334 19.2416 19.3334 19.2416Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 55 46\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1.27337 44.636C1.76937 45.3827 2.60404 45.8333 3.50004 45.8333H43.5C44.5667 45.8333 45.532 45.1987 45.9507 44.2173L53.9507 25.5507C54.3054 24.7267 54.22 23.7827 53.7267 23.0333C53.2307 22.284 52.396 21.8333 51.5 21.8333H48.8334V11.1667C48.8334 8.22533 46.4414 5.83333 43.5 5.83333H27.2334L21.1427 1.068C20.6734 0.7 20.0974 0.5 19.5 0.5H6.16671C3.22537 0.5 0.833374 2.892 0.833374 5.83333V43.1667H0.852041C0.852041 43.6787 0.982707 44.1933 1.27337 44.636ZM41.7427 40.5H7.54537L13.26 27.1667H47.4574L41.7427 40.5ZM43.5 11.1667V21.8333H11.5C10.4334 21.8333 9.46804 22.468 9.04937 23.4493L6.16671 30.1773V11.1667H26.316H27.5H43.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - eraser</title><path class=\\\"cls-1\\\" d=\\\"M12.93,3.1,7.78,8.25,2.62,13.5a2.18,2.18,0,0,0,0,3.05L7.3,21.22a1.07,1.07,0,0,0,.76.32H20.68a.4.4,0,0,0,.4-.4V19.77a.4.4,0,0,0-.4-.4H13.53l7.84-7.84a2.17,2.17,0,0,0,0-3.06L16,3.1A2.17,2.17,0,0,0,12.93,3.1ZM8.51,19.37,4.17,15,9.32,9.78l.8-.81,5.37,5.37-4.94,4.94-.08.09h-2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - redo</title><path class=\\\"cls-1\\\" d=\\\"M8.47,20.13H11.4a.6.6,0,0,0,.6-.6v-1.3a.6.6,0,0,0-.6-.6h-3a3.82,3.82,0,0,1-3.78-3,3.76,3.76,0,0,1,3.67-4.54h7.5V13a.4.4,0,0,0,.65.32l5.21-4.17a.41.41,0,0,0,0-.63L16.4,4.39a.4.4,0,0,0-.65.32V7.62H8.25a6.26,6.26,0,0,0-6.2,7.08A6.41,6.41,0,0,0,8.47,20.13Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - operation - undo</title><path class=\\\"cls-1\\\" d=\\\"M8.25,10.12h7.39a3.82,3.82,0,0,1,3.78,3,3.76,3.76,0,0,1-3.67,4.53H12.6a.6.6,0,0,0-.6.61v1.3a.6.6,0,0,0,.6.6h2.93A6.41,6.41,0,0,0,22,14.7a6.26,6.26,0,0,0-6.2-7.08H8.25V4.71a.4.4,0,0,0-.65-.32L2.39,8.56a.41.41,0,0,0,0,.63L7.6,13.36A.4.4,0,0,0,8.25,13Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 21 21\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6 0C4.89543 0 4 0.89543 4 2V8.75H6V2H12V7H16.5V16.5H6V15.25H4V16.5C4 17.6046 4.89543 18.5 6 18.5H16.5C17.6046 18.5 18.5 17.6046 18.5 16.5V6.41421C18.5 5.88378 18.2893 5.37507 17.9142 5L13.5 0.58579C13.1249 0.21071 12.6162 0 12.0858 0H6Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M2.5 9.5V8H0.5V9.5C0.5 11.433 2.067 13 4 13L8 13.0004V14.5004C8 14.7064 8.2352 14.824 8.4 14.7004L11.4667 12.4004C11.7333 12.2004 11.7333 11.8004 11.4667 11.6004L8.4 9.30045C8.2352 9.17685 8 9.29445 8 9.50045V11.0004H4C3.17157 11.0004 2.5 10.3284 2.5 9.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.4917 13.5493H18.325V9.25016C18.329 9.23204 18.329 9.21328 18.325 9.19516C18.324 9.11363 18.3084 9.03293 18.2792 8.95683V8.87433C18.2352 8.77231 18.1731 8.67913 18.0958 8.59933L12.5958 3.09933C12.518 3.02624 12.4281 2.9673 12.33 2.92516H12.2475L12 2.8335H5.49166C4.47914 2.8335 3.65833 3.65431 3.65833 4.66683V19.3335C3.65833 20.346 4.47914 21.1668 5.49166 21.1668H10.9917V19.3335H5.49166V4.66683H10.9917V9.25016C10.9917 9.75642 11.4021 10.1668 11.9083 10.1668H16.4917V13.5493Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20.25 17.5L17.0417 14.9975C16.9306 14.9085 16.7781 14.8919 16.6505 14.9547C16.5228 15.0175 16.4431 15.1486 16.4458 15.2908V16.895H12.7792V18.7283H16.4458V20.3417C16.4466 20.4823 16.5278 20.61 16.6547 20.6706C16.7816 20.7311 16.9319 20.7137 17.0417 20.6258L20.25 18.105C20.3461 18.0341 20.4028 17.9219 20.4028 17.8025C20.4028 17.6831 20.3461 17.5708 20.25 17.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M22 16.25L19 20L16 16.25H18.25V11H19.75V16.25H22Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 11H9C8.44772 11 8 10.5523 8 10V7H4V18H12V11ZM2 6.5C2 5.67157 2.67157 5 3.5 5H8.37868C8.7765 5 9.15804 5.15804 9.43934 5.43934L13.5607 9.56066C13.842 9.84197 14 10.2235 14 10.6213V18.5C14 19.3284 13.3284 20 12.5 20H3.5C2.67157 20 2 19.3284 2 18.5V6.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 11H9C8.44772 11 8 10.5523 8 10V7H4V18H12V11ZM2 6.5C2 5.67157 2.67157 5 3.5 5H8.37868C8.7765 5 9.15804 5.15804 9.43934 5.43934L13.5607 9.56066C13.842 9.84197 14 10.2235 14 10.6213V18.5C14 19.3284 13.3284 20 12.5 20H3.5C2.67157 20 2 19.3284 2 18.5V6.5Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M22 14.75L19 11L16 14.75H18.25V20H19.75V14.75H22Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24\\\" xml:space=\\\"preserve\\\"><path d=\\\"M2 4a2 2 0 0 1 2-2h9a1 1 0 0 1 .707.293l2 2A1 1 0 0 1 16 5h1.812a2 2 0 0 1 1.425.597l2.188 2.222A2 2 0 0 1 22 9.222V20a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2H4a2 2 0 0 1-2-2V4zm10.586 0 1 1H10a2 2 0 0 0-2 2v7a1 1 0 0 1-1-1v-2H5v2a3 3 0 0 0 3 3v2H4V4h8.586zM10 16v4h10V10h-3V7h-7v7h2v-2.414L15.414 15 12 18.414V16h-2z\\\" style=\\\"fill-rule:evenodd;clip-rule:evenodd\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - outlines</title><path class=\\\"cls-1\\\" d=\\\"M4.59,12a1.31,1.31,0,1,1-1.31-1.31A1.31,1.31,0,0,1,4.59,12ZM3.28,4.44A1.31,1.31,0,1,0,4.59,5.75,1.31,1.31,0,0,0,3.28,4.44Zm0,12.5a1.31,1.31,0,1,0,1.31,1.31A1.31,1.31,0,0,0,3.28,16.94ZM7,13.25H22v-2.5H7ZM20.53,4.5H7V7H22V4.5ZM7,19.5H22V17H7Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - panel - thumbnail - line</title><path class=\\\"cls-1\\\" d=\\\"M16.5,5.66H3.81A1.81,1.81,0,0,0,2,7.47V20.15A1.82,1.82,0,0,0,3.81,22H16.5a1.82,1.82,0,0,0,1.81-1.82V7.47A1.81,1.81,0,0,0,16.5,5.66ZM3.81,20.15V7.47H16.5V20.15Zm6.34-5.43H5.62V9.28h4.53ZM12,16.53h2.71v1.81H5.62V16.53H12Zm0-7.25h2.71v1.81H12Zm0,3.63h2.71v1.81H12ZM22,3.85V12H20.19V3.85H8.41V2H20.19A1.82,1.82,0,0,1,22,3.85Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16.2 8.1V2.7C16.2 1.7073 15.3927 0.9 14.4 0.9H11.7C11.7 0.4032 11.2977 0 10.8 0H5.4C4.9023 0 4.5 0.4032 4.5 0.9H1.8C0.8073 0.9 0 1.7073 0 2.7V14.4C0 15.3927 0.8073 16.2 1.8 16.2H8.1C8.1 17.1927 8.9073 18 9.9 18H16.2C17.1927 18 18 17.1927 18 16.2V9.9C18 8.9073 17.1927 8.1 16.2 8.1ZM8.1 9.9V14.4H1.8V2.7H4.5V4.5H11.7V2.7H14.4V8.1H9.9C8.9073 8.1 8.1 8.9073 8.1 9.9ZM9.9 16.2V9.9H16.2L16.2009 16.2H9.9Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M15 11H11V12.5H15V11Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M15 13.5H12V15H15V13.5Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M16.2 8.1V2.7C16.2 1.7073 15.3927 0.9 14.4 0.9H11.7C11.7 0.4032 11.2977 0 10.8 0H5.4C4.9023 0 4.5 0.4032 4.5 0.9H1.8C0.8073 0.9 0 1.7073 0 2.7V14.4C0 15.3927 0.8073 16.2 1.8 16.2H8.1C8.1 17.1927 8.9073 18 9.9 18H16.2C17.1927 18 18 17.1927 18 16.2V9.9C18 8.9073 17.1927 8.1 16.2 8.1ZM8.1 9.9V14.4H1.8V2.7H4.5V4.5H11.7V2.7H14.4V8.1H9.9C8.9073 8.1 8.1 8.9073 8.1 9.9ZM9.9 16.2V9.9H16.2L16.2009 16.2H9.9Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19.903 8.586C19.854 8.48 19.793 8.379 19.707 8.293L13.707 2.293C13.621 2.207 13.52 2.146 13.414 2.097C13.384 2.083 13.352 2.075 13.32 2.064C13.236 2.036 13.15 2.018 13.061 2.013C13.04 2.011 13.021 2 13 2H6C4.897 2 4 2.897 4 4V20C4 21.103 4.897 22 6 22H18C19.103 22 20 21.103 20 20V9C20 8.979 19.989 8.96 19.987 8.938C19.982 8.849 19.965 8.763 19.936 8.679C19.926 8.647 19.917 8.616 19.903 8.586ZM16.586 8H14V5.414L16.586 8ZM6 20V4H12V9C12 9.553 12.447 10 13 10H18L18.002 20H6Z\\\" fill=\\\"black\\\"></path><path d=\\\"M8 12H16V14H8V12ZM8 16H16V18H8V16ZM8 8H10V10H8V8Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 14 14\\\" fill=\\\"#485056\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.00223 14.0001C2.05623 14.0001 2.11023 13.9934 2.16356 13.9801L4.83023 13.3134C4.94756 13.2841 5.05489 13.2234 5.14023 13.1381L13.3356 4.94274C13.5876 4.69074 13.7262 4.35607 13.7262 4.00007C13.7262 3.64407 13.5876 3.3094 13.3356 3.0574L12.2782 2.00007C11.7742 1.49607 10.8969 1.49607 10.3929 2.00007L2.19756 10.1954C2.11223 10.2807 2.05156 10.3881 2.02223 10.5047L1.35556 13.1714C1.29823 13.3987 1.36556 13.6387 1.53089 13.8047C1.65689 13.9314 1.82756 14.0001 2.00223 14.0001ZM11.3356 2.94274L12.3929 4.00007L11.3356 5.0574L10.2782 4.00007L11.3356 2.94274ZM3.27089 11.0074L9.33556 4.94274L10.3929 6.00007L4.32756 12.0647L2.91823 12.4167L3.27089 11.0074Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -2 12 9\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 10</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke-linecap=\\\"square\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-544.000000, -777.000000)\\\" stroke=\\\"#4F565E\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-11\\\" transform=\\\"translate(0.500000, 63.000000)\\\"><g id=\\\"Group-15\\\" transform=\\\"translate(0.000000, 2.000000)\\\"><line x1=\\\"0\\\" y1=\\\"3.5\\\" x2=\\\"6\\\" y2=\\\"3.5\\\" id=\\\"Line\\\"></line><line x1=\\\"3\\\" y1=\\\"0.5\\\" x2=\\\"3\\\" y2=\\\"6.5\\\" id=\\\"Line-2\\\"></line></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M13.67 2H6C4.8954 2 4 2.8954 4 4V20C4 21.1046 4.8954 22 6 22H18C19.1046 22 20 21.1046 20 20V8.33C20 7.7996 19.7893 7.2851 19.4142 6.91L15.09 2.5858C14.7149 2.2107 14.2004 2 13.67 2ZM6 20V4H13V8.5C13 8.7761 13.2239 9 13.5 9H18V20H6Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 5H11.414L9.707 3.293C9.52 3.105 9.265 3 9 3H4C2.897 3 2 3.897 2 5V19C2 20.103 2.897 21 4 21H20C21.103 21 22 20.103 22 19V7C22 5.897 21.103 5 20 5ZM4 19V7H11H12H20L20.002 19H4Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -2 21 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18.4261 8.09498L1.42611 0.0949834C1.07611 -0.0680166 0.663114 -0.0170167 0.365114 0.227983C0.0661136 0.472983 -0.0628864 0.867984 0.0301136 1.24198L1.96911 8.99998L0.0301136 16.758C-0.0638864 17.132 0.0661136 17.528 0.365114 17.773C0.548114 17.923 0.772114 18 1.00011 18C1.14511 18 1.29011 17.969 1.42611 17.905L18.4261 9.90498C18.7761 9.73998 19.0001 9.38798 19.0001 8.99998C19.0001 8.61198 18.7761 8.25998 18.4261 8.09498ZM2.48111 15.197L3.32011 11.84L9.00011 8.99998L3.32011 6.15998L2.48111 2.80298L15.6511 8.99998L2.48111 15.197Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -1 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16 2H2L2 16H16V2ZM2 0C0.895431 0 0 0.89543 0 2V16C0 17.1046 0.89543 18 2 18H16C17.1046 18 18 17.1046 18 16V2C18 0.895431 17.1046 0 16 0H2Z\\\"></path><path d=\\\"M12 1H13.5V17H12V1Z\\\"></path><path d=\\\"M4 4H10V5.75H4V4Z\\\"></path><path d=\\\"M4 7.5H10V9.25H4V7.5Z\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.29815 13.6088L7.53553 14.8462L8.5962 13.7855L7.35881 12.5482L8.59619 11.3108L7.53553 10.2501L6.29815 11.4875L5.06066 10.25L4 11.3107L5.23749 12.5482L4 13.7856L5.06066 14.8463L6.29815 13.6088Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5 21H19C20.103 21 21 20.103 21 19V8C21 7.735 20.895 7.48 20.707 7.293L16.707 3.293C16.52 3.105 16.266 3 16 3H5C3.897 3 3 3.897 3 5V19C3 20.103 3.897 21 5 21ZM15 19H9V14H15V19ZM13 7H11V5H13V7ZM5 5H7V9H15V5H15.586L19 8.414L19.001 19H17V14C17 12.897 16.103 12 15 12H9C7.897 12 7 12.897 7 14V19H5V5Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -2 12 9\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 10</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke-linecap=\\\"square\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-544.000000, -777.000000)\\\" stroke=\\\"#CFD4DA\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-11\\\" transform=\\\"translate(0.500000, 63.000000)\\\"><g id=\\\"Group-15\\\" transform=\\\"translate(0.000000, 2.000000)\\\"><line x1=\\\"0\\\" y1=\\\"3.5\\\" x2=\\\"6\\\" y2=\\\"3.5\\\" id=\\\"Line\\\"></line><line x1=\\\"3\\\" y1=\\\"0.5\\\" x2=\\\"3\\\" y2=\\\"6.5\\\" id=\\\"Line-2\\\"></line></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"-1 -2 12 9\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group 10</title><g id=\\\"Form-Builder\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke-linecap=\\\"square\\\"><g id=\\\"List-Box-3\\\" transform=\\\"translate(-544.000000, -777.000000)\\\" stroke=\\\"#3183C8\\\"><g id=\\\"Group-33\\\" transform=\\\"translate(536.000000, 689.000000)\\\"><g id=\\\"Group-32\\\" transform=\\\"translate(9.000000, 23.000000)\\\"><g id=\\\"Group-11\\\" transform=\\\"translate(0.500000, 63.000000)\\\"><g id=\\\"Group-15\\\" transform=\\\"translate(0.000000, 2.000000)\\\"><line x1=\\\"0\\\" y1=\\\"3.5\\\" x2=\\\"6\\\" y2=\\\"3.5\\\" id=\\\"Line\\\"></line><line x1=\\\"3\\\" y1=\\\"0.5\\\" x2=\\\"3\\\" y2=\\\"6.5\\\" id=\\\"Line-2\\\"></line></g></g></g></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g id=\\\"wv-icon-text\\\"><path id=\\\"shape\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20.6573 9.65005C19.802 6.44278 17.2433 3.97139 14.0083 3.22788C10.7732 2.48437 7.39227 3.59064 5.22246 6.10263C3.1741 8.43892 2.48265 11.6698 3.39537 14.6398C4.3081 17.6098 6.69464 19.8948 9.70153 20.6775C10.4656 20.8912 11.2552 20.9997 12.0486 21H12.174C13.1016 20.9864 13.9567 20.4954 14.4359 19.701C14.9151 18.9065 14.9506 17.9211 14.53 17.0943L14.3508 16.727C14.0824 16.1775 14.1128 15.529 14.4314 15.007C14.9143 14.2219 15.9141 13.9312 16.7426 14.3352L17.1099 14.5143C17.4745 14.6848 17.872 14.7735 18.2745 14.7741C19.7587 14.7741 20.9619 13.5709 20.9619 12.0867C20.9683 11.2646 20.8659 10.4453 20.6573 9.65005ZM17.8893 12.8929L17.513 12.7227C15.8633 11.9511 13.8972 12.5221 12.9175 14.0575C12.2574 15.0929 12.1894 16.3989 12.7383 17.4974L12.9085 17.8736C13.0549 18.1587 13.0379 18.5003 12.8637 18.7694C12.7036 19.0326 12.4193 19.195 12.1113 19.1994H12.0127C8.05477 19.1994 4.84622 15.9909 4.84622 12.0329C4.84622 8.07496 8.05477 4.86641 12.0127 4.86641C12.3515 4.86382 12.69 4.88778 13.025 4.93807C15.8519 5.35301 18.1672 7.3978 18.9284 10.1517C19.0998 10.7975 19.1842 11.4633 19.1792 12.1315C19.1649 12.4329 18.9997 12.707 18.7398 12.8604C18.4799 13.0138 18.1601 13.026 17.8893 12.8929ZM9.32529 14.2366C9.32529 14.9787 8.72368 15.5803 7.98157 15.5803C7.23945 15.5803 6.63785 14.9787 6.63785 14.2366C6.63785 13.4945 7.23945 12.8929 7.98157 12.8929C8.33794 12.8929 8.67972 13.0345 8.93172 13.2865C9.18372 13.5385 9.32529 13.8802 9.32529 14.2366ZM9.32529 10.6534C9.32529 11.3955 8.72368 11.9971 7.98157 11.9971C7.23945 11.9971 6.63785 11.3955 6.63785 10.6534C6.63785 9.91125 7.23945 9.30964 7.98157 9.30964C8.33794 9.30964 8.67972 9.45121 8.93172 9.70321C9.18372 9.9552 9.32529 10.297 9.32529 10.6534ZM12.0127 7.96592C12.0127 8.70804 11.4111 9.30964 10.669 9.30964C9.92689 9.30964 9.32528 8.70804 9.32528 7.96592C9.32528 7.22381 9.92689 6.6222 10.669 6.6222C11.0254 6.6222 11.3672 6.76377 11.6192 7.01577C11.8712 7.26777 12.0127 7.60955 12.0127 7.96592ZM15.596 7.96592C15.596 8.70804 14.9944 9.30964 14.2523 9.30964C13.5101 9.30964 12.9085 8.70804 12.9085 7.96592C12.9085 7.22381 13.5101 6.6222 14.2523 6.6222C14.6086 6.6222 14.9504 6.76377 15.2024 7.01577C15.4544 7.26777 15.596 7.60955 15.596 7.96592Z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"currentColor\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.5 6H4.5C3.94772 6 3.5 6.44772 3.5 7V17C3.5 17.5523 3.94772 18 4.5 18H9.5V16H5.5V8H9.5V6ZM15.5 16H19.5V8H15.5V6H20.5C21.0523 6 21.5 6.44772 21.5 7V17C21.5 17.5523 21.0523 18 20.5 18H15.5V16Z\\\"></path><path d=\\\"M13 7L8.5 10.75V3.25L13 7Z\\\"></path><path d=\\\"M11.75 17L16.25 20.75V13.25L11.75 17Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - bold</title><path class=\\\"cls-1\\\" d=\\\"M16.81,11.72A4.46,4.46,0,0,0,17.75,9a4.51,4.51,0,0,0-4.5-4.5H5.75v15h8a4.49,4.49,0,0,0,3.06-7.78ZM13.25,7.5a1.5,1.5,0,0,1,0,3H8.75v-3Zm.5,9h-5v-3h5a1.5,1.5,0,0,1,0,3Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - italic</title><path class=\\\"cls-1\\\" d=\\\"M18.68,6V4.75a.38.38,0,0,0-.38-.38H9.52a.38.38,0,0,0-.38.38V6a.38.38,0,0,0,.38.38h2.82L9.61,17.63H5.7a.38.38,0,0,0-.38.38v1.24a.38.38,0,0,0,.38.38h8.78a.38.38,0,0,0,.38-.38V18a.38.38,0,0,0-.38-.38H11.69L14.42,6.37H18.3A.38.38,0,0,0,18.68,6Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 7H20V9H4V7ZM4 3H20V5H4V3ZM4 11H20V13H4V11ZM4 15H20V17H4V15ZM6 19H18V21H6V19Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - text - underline</title><path class=\\\"cls-1\\\" d=\\\"M5.32,18H18.68a.32.32,0,0,1,.32.32v1.36a.32.32,0,0,1-.32.32H5.32A.32.32,0,0,1,5,19.68V18.32A.32.32,0,0,1,5.32,18ZM6,4.32V9.79A6.15,6.15,0,0,0,11.21,16,6,6,0,0,0,18,10V4.32A.32.32,0,0,0,17.68,4H16.32a.32.32,0,0,0-.32.32v5.5A4.12,4.12,0,0,1,12.4,14,4,4,0,0,1,8,10V4.32A.32.32,0,0,0,7.68,4H6.32A.32.32,0,0,0,6,4.32Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 0 20 20\\\" fill=\\\"#868E96\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 20L8 18V15H13C13.553 15 14 14.553 14 14V12.414C14 11.888 13.786 11.372 13.414 11L12 9.586V6C12.553 6 13 5.553 13 5V2C13 0.897 12.103 0 11 0H3C1.897 0 1 0.897 1 2V5C1 5.553 1.448 6 2 6V9.586L0.586 11C0.213 11.372 0 11.888 0 12.414V14C0 14.553 0.448 15 1 15H6V18L7 20ZM3 2H11V4H3V2ZM2 12.414L3.707 10.707C3.895 10.52 4 10.266 4 10V6H10V10C10 10.266 10.105 10.52 10.293 10.707L12 12.414V13H2V12.414Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><path id=\\\"svg_1\\\" fill=\\\"black\\\" d=\\\"m19.27838,3.27762c-0.0298,-0.11112 -0.1323,-0.18778 -0.2473,-0.18396c-8.04996,0.26687 -14.4939,6.87671 -14.4939,14.99162c0,0.9567 0.08957,1.8925 0.26077,2.7995c0.02206,0.1168 0.12473,0.2005 0.24363,0.2005l1.52753,0c0.1613,0 0.2803,-0.1505 0.24707,-0.3083c-0.18284,-0.8685 -0.279,-1.7689 -0.279,-2.6917c0,-7.1797 5.8203,-13 13,-13c0.1133,0 0.1969,-0.10705 0.1676,-0.21648l-0.4264,-1.59118z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path fill=\\\"default\\\" class=\\\"st0\\\" d=\\\"M15.2,12.2v4H7.8v-1.6c0-0.3-0.4-0.5-0.6-0.3l-3.2,2.5c-0.2,0.1-0.2,0.4,0,0.6L7.2,20c0.2,0.2,0.6,0,0.6-0.3 v-1.6h8.3c0.5,0,0.9-0.4,0.9-0.8l0-5.1H15.2z\\\"></path><path class=\\\"st0\\\" d=\\\"M17,12.2h1.6c0.9,0,1.7-0.7,1.7-1.7V5.6c0-0.9-0.7-1.7-1.7-1.7H5.4C4.5,4,3.7,4.7,3.7,5.6v4.9 c0,0.9,0.7,1.7,1.7,1.7h9.8H17z M5.6,10.4V5.8h12.8l0,4.6H5.6z\\\"></path><path fill=\\\"none\\\" d=\\\"M5.6,10.4V5.8h12.8l0,4.6H5.6z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"fill: rgba(0, 0, 0, 1);transform: ;msFilter:;\\\"><path d=\\\"M5,2C3.897,2,3,2.897,3,4v12c0,1.103,0.897,2,2,2h3.586L12,21.414L15.414,18H19c1.103,0,2-0.897,2-2V4c0-1.103-0.897-2-2-2 H5z M19,16h-4.414L12,18.586L9.414,16H5V4h14V16z\\\"></path><path d=\\\"M11 6H13V12H11zM11 13H13V15H11z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - check - stamp</title><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.19 3H4.8C3.80589 3 3 3.80589 3 4.8V19.2C3 20.1941 3.80589 21 4.8 21H19.19C20.1818 20.9945 20.9845 20.1918 20.99 19.2V4.8C20.9845 3.80816 20.1818 3.00546 19.19 3ZM4.8 19.2V4.8H19.19V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.01 12.99L8.99998 10.99L7.72998 12.26L11.13 15.66L16.26 9.49998L14.88 8.34998L11.01 12.99V12.99Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - comment - line</title><path class=\\\"cls-1\\\" d=\\\"M20,2.46H4a2,2,0,0,0-2,2v10a2,2,0,0,0,2,2H7v5.08l6.35-5.08H20a2,2,0,0,0,2-2v-10A2,2,0,0,0,20,2.46Zm0,12H12.65L9,17.38V14.46H4v-10H20Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M18,8.46H6v-2H18Zm-2.5,4H6v-2h9.5Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - cross - stamp</title><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.2 3H4.8C3.80816 3.00546 3.00546 3.80816 3 4.8V19.2C3.00546 20.1918 3.80816 20.9945 4.8 21H19.2C20.1918 20.9945 20.9945 20.1918 21 19.2V4.8C20.9945 3.80816 20.1918 3.00546 19.2 3ZM4.8 19.2V4.8H19.2V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.5399 8.18005L11.9999 10.7301L9.45993 8.18005L8.17993 9.46005L10.7299 12.0001L8.17993 14.5401L9.45993 15.8201L11.9999 13.2701L14.5399 15.8201L15.8199 14.5401L13.2699 12.0001L15.8199 9.46005L14.5399 8.18005V8.18005Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.19 3H4.8C3.80589 3 3 3.80589 3 4.8V19.2C3 20.1941 3.80589 21 4.8 21H19.19C20.1818 20.9945 20.9845 20.1918 20.99 19.2V4.8C20.9845 3.80816 20.1818 3.00546 19.19 3ZM4.8 19.2V4.8H19.19V19.2H4.8Z\\\"></path><path class=\\\"cls-1\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0001 8.33997C9.97873 8.33997 8.34009 9.9786 8.34009 12C8.34009 14.0213 9.97873 15.66 12.0001 15.66C14.0215 15.66 15.6601 14.0213 15.6601 12C15.6332 9.98986 14.0102 8.36688 12.0001 8.33997Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><defs><style>.cls-1{fill:#abb0c4;} .cls-0{fill: none}</style></defs><title>icon - tool - free highlight - fill</title><rect class=\\\"cls-2\\\" x=\\\"4\\\" y=\\\"5\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"#868E96\\\" strokestroke-width=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"5\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"4\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"17\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"4\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"3\\\" y=\\\"8\\\" width=\\\"18\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"7\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"11\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect><rect class=\\\"cls-1\\\" x=\\\"15\\\" y=\\\"11\\\" width=\\\"2\\\" height=\\\"2\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - highlight</title><path class=\\\"cls-1\\\" d=\\\"M9.91,13.07h3.86L11.84,8.46Zm5.46,3.68L14.62,15H9.05L7.77,18H5.63L10.45,6.64a1,1,0,0,1,1-.64h1a1.23,1.23,0,0,1,1,.64l2,4.91V4H5.85A2.22,2.22,0,0,0,3.63,6.22V17.78A2.22,2.22,0,0,0,5.85,20h9.52Z\\\"></path><rect class=\\\"cls-1\\\" x=\\\"18.37\\\" y=\\\"2\\\" width=\\\"2\\\" height=\\\"20\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - image - line</title><path class=\\\"cls-1\\\" d=\\\"M19.89,2H4.33A2.23,2.23,0,0,0,2.11,4.22V19.78A2.23,2.23,0,0,0,4.33,22H19.89a2.22,2.22,0,0,0,2.22-2.22V4.22A2.22,2.22,0,0,0,19.89,2ZM4.33,19.78V4.22H19.89V19.78Z\\\"></path><polygon class=\\\"cls-1\\\" points=\\\"13.94 8.13 18.78 15.87 11.52 15.87 9.1 15.87 5.45 15.87 8.48 11.43 10.26 14.02 13.94 8.13\\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - link</title><g><rect class=\\\"cls-1\\\" x=\\\"5.51\\\" y=\\\"10.92\\\" width=\\\"12.99\\\" height=\\\"2.16\\\" transform=\\\"translate(-4.97 12) rotate(-45)\\\"></rect><path class=\\\"cls-1\\\" d=\\\"M9.7,18.89A3.25,3.25,0,0,1,5.11,14.3l3.06-3.07L6.64,9.7,3.58,12.77a5.41,5.41,0,0,0,7.66,7.65l3.06-3.06-1.53-1.53Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M20.42,3.58a5.41,5.41,0,0,0-7.65,0L9.7,6.64l1.54,1.53L14.3,5.11A3.25,3.25,0,0,1,18.89,9.7l-3.06,3.07,1.53,1.53,3.06-3.07A5.41,5.41,0,0,0,20.42,3.58Z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 8C19 7.44772 19.4477 7 20 7C20.5523 7 21 7.44772 21 8C21 8.55228 20.5523 9 20 9C19.4477 9 19 8.55228 19 8Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 12C19 11.4477 19.4477 11 20 11C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13C19.4477 13 19 12.5523 19 12Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 16C19 15.4477 19.4477 15 20 15C20.5523 15 21 15.4477 21 16C21 16.5523 20.5523 17 20 17C19.4477 17 19 16.5523 19 16Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 20C15 19.4477 15.4477 19 16 19C16.5523 19 17 19.4477 17 20C17 20.5523 16.5523 21 16 21C15.4477 21 15 20.5523 15 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 20C11 19.4477 11.4477 19 12 19C12.5523 19 13 19.4477 13 20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20Z\\\" fill=\\\"black\\\"></path><path d=\\\"M21 4.90556C21 5.13138 20.7893 5.29793 20.5679 5.25357C19.7378 5.08725 18.8791 5 18 5C10.8203 5 5 10.8203 5 18C5 18.8791 5.08725 19.7378 5.25357 20.5679C5.29793 20.7893 5.13138 21 4.90556 21H3.70876C3.47096 21 3.26516 20.8327 3.22424 20.5984C3.07685 19.7544 3 18.8862 3 18C3 9.71573 9.71573 3 18 3C18.8862 3 19.7544 3.07685 20.5984 3.22424C20.8327 3.26516 21 3.47096 21 3.70876V4.90556Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 20C19 19.4477 19.4477 19 20 19C20.5523 19 21 19.4477 21 20C21 20.5523 20.5523 21 20 21C19.4477 21 19 20.5523 19 20Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M12,2C6.5,2,2,6.5,2,12c0,5.5,4.5,10,10,10c5.5,0,10-4.5,10-10C22,6.5,17.5,2,12,2z M4.2,13.8 C4.1,13.2,4,12.6,4,12c0-4.4,3.6-8,8-8c0.6,0,1.2,0.1,1.8,0.2L4.2,13.8z M5,15.8L15.8,5c1.3,0.7,2.4,1.8,3.1,3.1L8.1,19l0,0 C6.8,18.2,5.7,17.1,5,15.8z M12,20c-0.6,0-1.1-0.1-1.6-0.2l0,0l9.4-9.5c0.1,0.5,0.2,1.1,0.2,1.7C20,16.4,16.4,20,12,20z\\\"></path><path fill=\\\"none\\\" d=\\\"M13.8,4.2l-9.6,9.6C4.1,13.2,4,12.6,4,12c0-4.4,3.6-8,8-8C12.6,4,13.2,4.1,13.8,4.2z M15.8,5L5,15.8 c0.7,1.3,1.8,2.4,3.1,3.1l0,0L19,8.1C18.2,6.8,17.1,5.7,15.8,5z M19.8,10.3l-9.4,9.5l0,0c0.5,0.1,1.1,0.2,1.6,0.2c4.4,0,8-3.6,8-8 C20,11.4,19.9,10.9,19.8,10.3z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M18.5,2.8H5.5C4,2.8,2.8,4,2.8,5.5v13.1c0,1.4,1.2,2.6,2.6,2.6h13.1c1.4,0,2.6-1.2,2.6-2.6V5.5 C21.2,4,20,2.8,18.5,2.8z M4.7,4.7h5.7l-5.7,5.7V4.7z M4.7,18.2v-5.2l0,0l8.3-8.3l0,0h5.2L4.7,18.2z M6.1,19.3L19.3,6.1l0,5.2l-8,8 H6.1z M13.9,19.3l5.4-5.4l0,5.4H13.9z\\\"></path><path fill=\\\"none\\\" d=\\\"M10.4,4.7l-5.7,5.7V4.7H10.4z M12.9,4.7L12.9,4.7l-8.2,8.3l0,0v5.2L18.2,4.7H12.9z M19.3,6.1L6.1,19.3h5.2l8-8 L19.3,6.1z M19.3,13.9l-5.4,5.4h5.4L19.3,13.9z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M21.9,8.9l-9.2-6.7c-0.4-0.3-1-0.3-1.5,0L2.1,8.9c-0.4,0.3-0.6,0.9-0.5,1.4l3.5,10.8C5.3,21.6,5.8,22,6.3,22 h11.3c0.5,0,1-0.4,1.2-0.9l3.5-10.8C22.6,9.8,22.4,9.2,21.9,8.9z M12,4.3l1.9,1.4l-8.9,8.9l0,0l-1.4-4.2L12,4.3z M6.9,20.1l-1.1-3.4 l0,0l9.8-9.8l3.6,2.6h0L8.6,20.1H6.9z M17.1,20.1h-5.4l8.1-8.2h0L17.1,20.1z\\\"></path><path fill=\\\"none\\\" d=\\\"M13.9,5.7l-8.9,8.9l-1.4-4.2l8.3-6L13.9,5.7z M19.2,9.5l-3.6-2.6l-9.8,9.8l1.1,3.4h1.7L19.2,9.5L19.2,9.5z M19.8,11.9l-8.1,8.2h5.4L19.8,11.9L19.8,11.9z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} .st1{fill:none;} </style><path class=\\\"st0\\\" d=\\\"M20.5,10.7c-0.5-4.2-4.2-7.3-8.4-7.3c-3.3,0-6.3,1.9-7.5,4.9C2,9.2,0.1,11.5,0,14.1c0,3.2,2.8,6,6,6h13.2 c2.6,0,4.9-2.2,4.7-4.8C24,13.2,22.6,11.3,20.5,10.7z M18.9,17.4H6.4C4.6,17.4,3,15.8,3,14c0.1-1.7,1.3-3.1,3-3.4l0.7-0.1l0.3-0.6 c0.7-2.2,2.8-3.8,5.1-3.8c3.1,0,5.6,2.5,5.6,5.6v1.2h1.2c1.2,0,2.2,1,2.2,2.2C21.1,16.3,20.1,17.4,18.9,17.4z\\\"></path><path fill=\\\"none\\\" d=\\\"M18.9,17.4H6.4C4.6,17.4,3,15.9,3,14c0.1-1.7,1.3-3.1,3-3.4l0.7-0.1l0.3-0.7c0.7-2.2,2.8-3.8,5.1-3.8 c3.1,0,5.6,2.5,5.6,5.6v1.2h1.2c1.2,0,2.2,1,2.2,2.2C21.1,16.4,20.1,17.4,18.9,17.4z\\\"></path><polygon class=\\\"st0\\\" points=\\\"11.4,4.9 12.6,5.9 4.5,17.1 3.3,16.1 \\\"></polygon><polygon class=\\\"st0\\\" points=\\\"15.5,7.1 16.7,8 9.5,18.3 8.3,17.4 \\\"></polygon><polygon class=\\\"st0\\\" points=\\\"18.3,10.8 19.3,11.6 14.5,18.3 13.5,17.5 \\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - measurement - distance - line</title><path class=\\\"cls-1\\\" d=\\\"M21.46,6.59l-4.05-4a2,2,0,0,0-2.79.08l-12,12a2,2,0,0,0-.08,2.79l4.05,4.05a2,2,0,0,0,2.79-.08l12-12A2,2,0,0,0,21.46,6.59ZM20,8,8,20a.43.43,0,0,1-.09.06s0,0,0,0l-4-4A.17.17,0,0,1,4,16L5.24,14.7l2,2,1.35-1.35-2-2L7.94,12l2.71,2.7L12,13.35l-2.7-2.7L10.65,9.3l2,2L14,10l-2-2,1.35-1.35L16.06,9.3l1.35-1.36L14.7,5.24,16,4c.06-.05.1-.06.09-.08l4,4A.17.17,0,0,1,20,8Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - measurement - perimeter</title><path class=\\\"cls-1\\\" d=\\\"M16.07,4.3H7.92v-2h8.15ZM4,15.43H2v1.85a1.81,1.81,0,0,0,1.81,1.8h1.8v-2H4ZM4,4.28H5.6v-2H3.8A1.81,1.81,0,0,0,2,4.08V5.89H4ZM4,8.21H2v4.91H4ZM17.71,21.6a.4.4,0,0,0,.68-.28V14.8a.4.4,0,0,0-.68-.28l-3.26,3.26a.4.4,0,0,0,0,.56ZM20,5.89h2V4.09a1.82,1.82,0,0,0-1.81-1.81h-1.8v2H20Zm0,2.32v4.91h2V8.21ZM20,17H18.4v2h1.8A1.81,1.81,0,0,0,22,17.28v-1.8H20ZM9.27,17H7.92v2H9.27V21h2V14.69h-2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 529 472\\\" preserveAspectRatio=\\\"xMidYMid meet\\\"><metadata> Created by potrace 1.16, written by Peter Selinger 2001-2019 </metadata><title>icon - 3D</title><g transform=\\\"translate(0,472) scale(0.1,-0.1)\\\" fill=\\\"#abb0c4\\\" stroke=\\\"none\\\"><path d=\\\"M2414 4710 c-12 -5 -39 -11 -60 -15 -43 -7 -81 -14 -104 -18 -8 -2 -33 -8 -55 -14 -22 -7 -54 -14 -71 -16 -17 -3 -40 -9 -50 -15 -11 -5 -32 -12 -49 -15 -16 -3 -37 -8 -45 -11 -8 -3 -26 -8 -40 -10 -43 -8 -81 -19 -255 -71 -49 -15 -153 -45 -230 -66 -77 -22 -148 -41 -157 -44 -10 -3 -28 -8 -40 -11 -30 -7 -40 -10 -58 -17 -19 -6 -105 -32 -145 -43 -16 -4 -32 -8 -35 -9 -3 -1 -25 -7 -50 -14 -25 -6 -63 -18 -85 -25 -56 -19 -185 -58 -199 -60 -6 -1 -15 -4 -21 -7 -5 -4 -41 -16 -80 -29 -81 -25 -187 -79 -229 -116 -28 -25 -29 -33 -4 -38 64 -12 128 -31 128 -38 0 -5 4 -7 9 -3 5 3 29 -2 53 -10 24 -9 51 -18 60 -20 21 -6 16 -4 198 -55 80 -23 152 -43 160 -45 8 -3 76 -21 150 -42 74 -20 137 -39 140 -42 5 -6 19 -10 60 -17 14 -3 32 -7 40 -11 16 -6 24 -9 55 -17 92 -24 309 -86 323 -92 23 -10 55 -18 111 -30 14 -3 28 -7 33 -10 4 -3 16 -7 25 -9 10 -2 83 -22 163 -45 80 -23 197 -55 260 -72 63 -17 117 -34 120 -37 3 -3 12 -8 20 -9 67 -16 61 -14 130 -35 51 -16 58 -16 110 0 69 21 82 24 138 37 9 2 39 12 66 21 26 9 57 19 67 21 11 2 29 7 42 10 12 3 27 6 32 7 6 2 15 5 20 9 9 5 303 88 365 103 8 2 15 4 15 5 0 1 7 3 15 5 76 19 80 20 102 29 14 6 231 68 323 92 31 8 39 11 55 17 8 4 26 8 40 11 41 7 55 11 60 17 3 3 75 24 160 47 169 47 190 52 205 55 6 2 16 6 23 11 7 4 16 5 19 2 3 -3 11 -2 17 4 7 5 86 30 176 55 91 25 190 53 220 61 30 9 63 18 74 20 30 6 30 11 0 38 -49 43 -153 92 -284 134 -201 65 -258 82 -275 82 -8 0 -15 4 -15 8 0 5 -6 9 -12 10 -7 0 -22 3 -33 6 -11 3 -40 10 -65 16 -42 10 -64 17 -115 36 -26 9 -30 10 -135 38 -215 57 -296 81 -302 90 -4 6 -8 8 -8 4 0 -6 -65 11 -225 58 -66 19 -84 24 -120 31 -16 2 -48 11 -70 19 -22 8 -51 17 -65 20 -14 3 -43 10 -65 16 -61 17 -53 15 -127 34 -13 3 -41 7 -63 10 -22 2 -62 7 -90 10 -78 10 -428 12 -451 4z\\\"></path><path d=\\\"M63 3692 c-24 -57 -48 -152 -53 -207 -5 -49 -5 -2405 0 -2435 8 -56 55 -185 87 -239 44 -74 149 -186 210 -224 39 -25 104 -52 145 -62 9 -2 52 -15 95 -29 158 -50 213 -66 228 -66 8 0 15 -5 15 -12 0 -6 2 -9 6 -6 3 3 26 -1 52 -9 60 -18 81 -24 115 -30 15 -3 27 -10 27 -15 0 -5 4 -6 10 -3 5 3 16 3 23 -2 6 -4 14 -8 17 -8 36 -6 120 -30 120 -34 0 -4 8 -7 18 -8 9 0 58 -13 107 -27 96 -28 114 -33 144 -40 11 -3 30 -10 43 -17 13 -7 24 -12 26 -11 1 1 3 2 5 1 1 0 9 -2 17 -4 8 -2 25 -6 38 -9 12 -3 32 -9 45 -12 31 -7 40 -10 57 -17 8 -4 26 -8 40 -11 14 -2 59 -14 100 -26 41 -12 86 -23 100 -26 14 -2 36 -9 50 -14 24 -9 95 -27 135 -34 11 -2 34 -6 51 -10 17 -3 48 -8 70 -12 21 -3 48 -7 59 -9 11 -3 36 -7 55 -11 19 -4 55 -7 80 -8 42 -1 44 1 51 31 3 18 7 704 8 1526 2 1224 0 1494 -11 1495 -7 0 -22 3 -33 6 -11 3 -81 22 -155 43 -74 20 -137 39 -140 42 -5 6 -19 10 -60 17 -14 3 -41 10 -60 16 -19 7 -39 13 -45 14 -64 16 -337 94 -344 99 -6 3 -20 8 -31 11 -11 2 -28 6 -37 9 -10 3 -83 23 -163 45 -79 22 -151 43 -160 46 -8 4 -18 7 -22 6 -4 -1 -20 3 -35 10 -30 12 -36 14 -70 22 -50 13 -64 16 -80 21 -164 45 -256 71 -343 96 -58 17 -136 39 -175 50 -38 11 -77 23 -85 26 -21 8 -49 16 -100 27 -11 3 -25 8 -31 11 -5 4 -25 9 -42 12 -18 3 -37 9 -43 14 -6 5 -14 6 -17 2 -4 -3 -13 0 -22 7 -8 7 -15 10 -15 7 0 -3 -14 -2 -31 3 -29 9 -31 7 -46 -28z m932 -852 c0 -2 9 -4 20 -5 91 -14 133 -24 174 -42 20 -9 42 -17 49 -19 7 -1 38 -17 70 -34 175 -99 315 -267 370 -444 24 -79 20 -200 -8 -264 -27 -63 -89 -120 -165 -153 -30 -13 -55 -26 -55 -29 0 -3 14 -14 31 -24 54 -32 156 -135 199 -201 23 -36 55 -102 71 -147 26 -76 28 -92 25 -193 -7 -194 -67 -296 -220 -371 -68 -33 -70 -33 -210 -33 -130 1 -148 3 -226 30 -47 16 -121 51 -164 77 -102 60 -237 193 -298 292 -50 81 -104 222 -110 286 -3 38 -2 39 27 37 17 0 44 -4 60 -7 17 -3 46 -8 65 -11 44 -7 75 -13 75 -15 0 -1 16 -4 35 -7 51 -7 83 -25 85 -48 1 -11 12 -45 24 -75 50 -131 123 -204 243 -241 59 -18 71 -19 103 -8 52 19 100 62 123 113 29 60 25 196 -7 278 -49 125 -179 221 -315 233 -26 2 -50 6 -52 8 -9 9 -13 50 -7 61 4 6 8 26 9 46 1 19 3 35 3 35 1 0 4 22 7 50 3 27 9 54 14 60 5 6 48 10 103 9 86 -1 98 1 126 23 45 35 63 77 63 145 0 238 -315 374 -408 175 -13 -29 -24 -58 -24 -65 0 -20 -36 -7 -235 89 -97 47 -100 51 -86 100 59 197 184 299 356 293 33 -1 60 -3 60 -4z\\\"></path><path d=\\\"M5178 3724 c-3 -2 -14 -7 -24 -9 -11 -2 -41 -11 -69 -19 -27 -8 -90 -27 -140 -41 -80 -24 -157 -45 -250 -69 -5 -1 -37 -11 -70 -21 -33 -10 -64 -20 -70 -21 -13 -4 -57 -14 -70 -17 -5 -2 -14 -5 -20 -8 -5 -4 -71 -23 -145 -43 -74 -21 -160 -45 -190 -53 -67 -20 -69 -20 -100 -28 -34 -8 -43 -11 -60 -18 -18 -8 -184 -55 -214 -62 -55 -11 -67 -14 -76 -20 -5 -3 -18 -8 -27 -10 -10 -2 -83 -23 -163 -45 -80 -23 -152 -43 -160 -45 -8 -2 -36 -11 -62 -19 -27 -8 -48 -12 -48 -9 0 3 -7 0 -15 -7 -8 -6 -18 -9 -24 -6 -5 3 -11 2 -13 -2 -1 -5 -50 -21 -108 -36 -58 -16 -125 -35 -148 -43 -24 -8 -53 -15 -63 -16 -20 -1 -20 -15 -18 -1495 1 -821 5 -1507 8 -1525 6 -29 10 -32 46 -32 22 -1 54 3 70 7 17 4 48 10 70 13 63 9 88 13 125 20 19 4 44 9 55 11 29 4 58 11 98 22 20 6 38 7 41 4 3 -3 6 -1 6 5 0 5 6 10 13 11 15 1 35 6 62 15 11 3 34 9 50 12 33 7 42 9 65 17 8 3 42 13 75 23 75 20 263 73 290 81 11 3 25 6 30 7 6 2 15 5 20 8 6 4 44 14 85 24 41 10 80 21 85 25 12 9 157 45 168 42 4 -1 7 2 7 7 0 5 17 12 38 17 20 4 39 8 42 9 76 22 97 28 108 28 6 0 12 4 12 9 0 4 8 8 18 8 9 0 36 7 59 15 22 8 52 16 65 19 12 2 35 9 51 15 15 6 27 8 27 5 0 -4 6 -2 13 3 6 6 58 25 113 42 151 46 256 133 349 287 30 49 77 179 85 234 5 29 5 2386 1 2435 -5 56 -47 201 -65 225 -12 16 -30 23 -38 14z m-858 -950 c19 -4 42 -8 50 -10 94 -16 183 -64 259 -141 132 -133 191 -308 185 -553 -1 -69 -5 -141 -8 -160 -2 -19 -7 -55 -11 -80 -37 -277 -235 -575 -505 -759 -73 -50 -170 -104 -170 -94 0 4 -4 2 -8 -4 -7 -12 -182 -77 -228 -86 -10 -2 -26 -6 -34 -9 -35 -13 -108 -36 -145 -47 -95 -26 -151 -43 -170 -52 -11 -5 -31 -11 -45 -13 -40 -8 -64 -14 -82 -21 -12 -5 -18 -2 -19 6 -1 8 -2 427 -3 931 l-1 917 40 11 c22 6 50 13 63 15 36 8 64 16 225 64 37 11 67 18 67 16 0 -2 16 3 36 11 20 8 39 13 41 10 3 -3 13 -1 23 4 9 5 28 11 41 14 28 6 64 14 99 21 14 3 43 8 65 11 22 3 41 6 42 8 5 4 160 -3 193 -10z\\\"></path><path d=\\\"M3967 2443 c-2 -2 -17 -6 -33 -8 -44 -6 -73 -13 -84 -20 -5 -3 -19 -8 -30 -11 -11 -2 -30 -6 -42 -9 -12 -2 -26 -9 -31 -14 -18 -18 -22 -143 -22 -691 0 -529 0 -535 20 -533 25 3 46 8 65 16 8 3 51 18 95 32 279 91 443 251 517 505 24 84 29 123 32 250 6 241 -60 396 -198 461 -54 26 -68 28 -172 27 -62 0 -115 -2 -117 -5z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - tool - more</title><path class=\\\"cls-1\\\" d=\\\"M14.5,12A2.5,2.5,0,1,1,12,9.5,2.51,2.51,0,0,1,14.5,12ZM4.5,9.5A2.5,2.5,0,1,0,7,12,2.51,2.51,0,0,0,4.5,9.5Zm15,0A2.5,2.5,0,1,0,22,12,2.51,2.51,0,0,0,19.5,9.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6 2H12L17 7V16C17 17.1046 16.1046 18 15 18H6C4.89543 18 4 17.1046 4 16V4C4 2.89543 4.89543 2 6 2ZM6 3.75H11.2751L15.25 7.72487V16C15.25 16.1381 15.1381 16.25 15 16.25H6C5.86193 16.25 5.75 16.1381 5.75 16V4C5.75 3.86193 5.86193 3.75 6 3.75Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M18.75 8.5H20.5V20.5C20.5 21.0523 20.0523 21.5 19.5 21.5H11.5V19.75H18.75V8.5Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M11 3L16 8H11V3Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M10.2982 12.8588L11.5355 14.0962L12.5962 13.0355L11.3588 11.7982L12.5962 10.5608L11.5355 9.50011L10.2982 10.7375L9.06066 9.5L8 10.5607L9.23749 11.7982L8 13.0356L9.06066 14.0963L10.2982 12.8588Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - pen - highlight</title><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M19.9658 6.91017H19.92L16.2992 3.25267C16.1376 3.0909 15.9183 3 15.6896 3C15.4609 3 15.2416 3.0909 15.08 3.25267L7.82917 10.4118C7.68847 10.5239 7.59386 10.6837 7.56334 10.861L6.56417 15.2518L4.8225 17.4427H7.6275L8.73667 16.3335L12.2567 15.5452C12.4386 15.5144 12.6023 15.4162 12.715 15.2702L19.92 8.12934C20.2428 7.7936 20.2625 7.2692 19.9658 6.91017V6.91017ZM11.9083 13.5377L9.54334 11.1727L15.7583 5.0585L18.1233 7.4235L11.9083 13.5377Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M18.4167 17.2685C18.744 18.2557 18.9773 19.2716 19.1133 20.3027C18.2719 19.3853 17.15 18.7728 15.9233 18.561C14.8314 18.4146 13.7204 18.5244 12.6783 18.8818C11.4047 19.3332 10.1589 19.8597 8.9475 20.4585C7.81125 21.1097 6.50296 21.3975 5.19833 21.2835C4.80235 21.1839 4.45663 20.9426 4.22666 20.6052C4.14173 20.4738 4.07395 20.3321 4.025 20.1835C4.01028 20.0885 3.98252 19.9959 3.9425 19.9085C3.80542 19.4227 3.84105 18.9043 4.04333 18.4418C4.15136 18.1403 4.32695 17.8675 4.55667 17.6443L4.905 19.4135C4.79615 19.4335 4.71381 19.5233 4.70333 19.6335C4.70333 19.8993 5.79417 19.7527 6.67417 19.4227C7.31069 19.1708 7.92412 18.8641 8.5075 18.506C9.77851 17.691 11.1416 17.0294 12.5683 16.5352C13.7125 16.1519 14.9299 16.0389 16.125 16.2052C16.6842 16.3049 17.2193 16.5102 17.7017 16.8102C17.8758 16.8927 18.4167 17.2685 18.4167 17.2685Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - pen - line</title><path class=\\\"cls-1\\\" d=\\\"M18.91,19.66a1.13,1.13,0,0,1-1.35,1.82,5.82,5.82,0,0,0-2.09-1c-3.22-.85-4.57-.29-6.82.63l-.55.23A7.42,7.42,0,0,1,5.42,22a3,3,0,0,1-2-.69,2.38,2.38,0,0,1-.87-1.66,1.81,1.81,0,0,1,.59-1.36,9.16,9.16,0,0,1,.93-.78,1.13,1.13,0,0,1,1.58.23,1.14,1.14,0,0,1-.23,1.59,2.93,2.93,0,0,0-.42.33c.27.13.84.17,2.25-.4L7.8,19a10.81,10.81,0,0,1,8.25-.72A7.89,7.89,0,0,1,18.91,19.66Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M21.45,5.77a2.09,2.09,0,0,1-.62,1.51l-9.16,9.16c-.09.08-.26.26-.44.26,0,0-4.18.9-4.42.89a1,1,0,0,1-.72-.13.67.67,0,0,1-.16-.73l.8-4.53c0-.18.08-.27.26-.45L13,5.8l3.2-3.2a2.2,2.2,0,0,1,3,0l1.66,1.66A2.34,2.34,0,0,1,21.45,5.77ZM16.21,9.06,14.37,7.22,8.59,13l1.84,1.84Zm3.2-3.2L17.57,4,15.88,5.71l1.84,1.84Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#868e96;}</style></defs><path class=\\\"cls-1\\\" d=\\\"M17.83,2.83H6.17A1.67,1.67,0,0,0,4.5,4.5v15a1.67,1.67,0,0,0,1.67,1.67H17.83A1.67,1.67,0,0,0,19.5,19.5V4.5A1.67,1.67,0,0,0,17.83,2.83ZM6.17,19.5V4.5H17.83v15Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M13.67,10.22H7.84v7.59h8.32V10.22Zm.38,4.88a.26.26,0,0,1,0,.38l-.58.58a.28.28,0,0,1-.38,0L12,15l-1.09,1.09a.28.28,0,0,1-.38,0L10,15.48a.28.28,0,0,1,0-.38L11,14,10,12.92a.28.28,0,0,1,0-.38l.58-.58a.26.26,0,0,1,.38,0L12,13.05,13.09,12a.26.26,0,0,1,.38,0l.58.58a.26.26,0,0,1,0,.38L13,14Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.5 8C8.22386 8 8 8.22386 8 8.5V15.5C8 15.7761 8.22386 16 8.5 16H15.5C15.7761 16 16 15.7761 16 15.5V8.5C16 8.22386 15.7761 8 15.5 8H8.5ZM13.2374 14.2981L12.0001 13.0607L10.7626 14.2982L9.7019 13.2375L10.9394 12.0001L9.7019 10.7626L10.7626 9.7019L12.0001 10.9394L13.2374 9.70201L14.2981 10.7627L13.0607 12.0001L14.2981 13.2374L13.2374 14.2981Z\\\" fill=\\\"none\\\"></path><path d=\\\"M21.4778 18.2034C21.6137 18.0674 21.5427 17.8348 21.354 17.798L17.2862 17.0046C17.119 16.972 16.972 17.119 17.0046 17.2862L17.798 21.354C17.8348 21.5427 18.0674 21.6138 18.2034 21.4778L19.0255 20.6557C19.1192 20.562 19.2712 20.562 19.365 20.6557L20.6389 21.9297C20.7327 22.0234 20.8847 22.0234 20.9784 21.9297L21.9297 20.9784C22.0234 20.8847 22.0234 20.7327 21.9297 20.6389L20.6557 19.365C20.562 19.2712 20.562 19.1192 20.6557 19.0254L21.4778 18.2034Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 3H9V5H7V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 7H5V9H3V7Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 5C3 3.89543 3.89543 3 5 3V5H3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 11H5V13H3V11Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 15H5V17H3V15Z\\\" fill=\\\"black\\\"></path><path d=\\\"M3 19H5V21C3.89543 21 3 20.1046 3 19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M7 19H9V21H7V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 19H13V21H11V19Z\\\" fill=\\\"black\\\"></path><path d=\\\"M11 3H13V5H11V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M15 3H17V5H15V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 3C20.1046 3 21 3.89543 21 5H19V3Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 7H21V9H19V7Z\\\" fill=\\\"black\\\"></path><path d=\\\"M19 11H21V13H19V11Z\\\" fill=\\\"black\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - select - pages</title><path d=\\\"M20 2H8C6.897 2 6 2.897 6 4V16C6 17.103 6.897 18 8 18H20C21.103 18 22 17.103 22 16V4C22 2.897 21.103 2 20 2ZM8 16V4H20L20.002 16H8Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M4 8.00037H2V20.0004C2 21.1034 2.897 22.0004 4 22.0004H16V20.0004H4V8.00037ZM12.933 11.5194L11.207 9.79338L9.793 11.2074L13.067 14.4814L18.769 7.64137L17.231 6.35938L12.933 11.5194Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - arrow</title><path class=\\\"cls-1\\\" d=\\\"M14.66,7.57,5.09,17.14a.61.61,0,0,0,0,.85l.92.92a.61.61,0,0,0,.85,0l9.57-9.57L18.06,11a.6.6,0,0,0,1-.42v-5a.6.6,0,0,0-.6-.6h-5a.6.6,0,0,0-.42,1Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M18.4,11.2C18,8,15.2,5.6,12,5.6c-2.5,0-4.8,1.5-5.7,3.8c-2,0.6-3.4,2.4-3.5,4.4c0,2.5,2.1,4.6,4.6,4.6h10.1 c2,0,3.7-1.7,3.6-3.7C21.1,13.1,20,11.6,18.4,11.2z M17.2,16.3H7.7c-1.4,0-2.6-1.2-2.6-2.6c0.1-1.3,1-2.4,2.3-2.6L7.9,11l0.2-0.5 c0.5-1.7,2.1-2.9,3.9-2.9c2.4,0,4.3,1.9,4.3,4.3v0.9h0.9c0.9,0,1.7,0.8,1.7,1.7C18.9,15.5,18.1,16.3,17.2,16.3z\\\"></path><path fill=\\\"none\\\" d=\\\"M17.2,16.3H7.7c-1.4,0-2.6-1.2-2.6-2.6c0.1-1.3,1-2.4,2.3-2.6L7.9,11l0.2-0.5c0.5-1.7,2.1-2.9,3.9-2.9 c2.4,0,4.3,1.9,4.3,4.3v0.9h0.9c0.9,0,1.7,0.8,1.7,1.7C18.9,15.5,18.1,16.3,17.2,16.3z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - line</title><rect class=\\\"cls-1\\\" x=\\\"3\\\" y=\\\"10.75\\\" width=\\\"18\\\" height=\\\"2.5\\\" rx=\\\"0.6\\\" transform=\\\"translate(-4.97 12) rotate(-45)\\\"></rect></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M12,2.8c-5.1,0-9.2,4.1-9.2,9.2s4.1,9.2,9.2,9.2s9.2-4.1,9.2-9.2C21.2,6.9,17.1,2.8,12,2.8z M12,18.8 c-3.8,0-6.9-3.1-6.9-6.9c0-3.8,3.1-6.9,6.9-6.9c3.8,0,6.9,3.1,6.9,6.9c0,0,0,0,0,0C18.9,15.8,15.8,18.9,12,18.8L12,18.8z\\\"></path><path fill=\\\"none\\\" d=\\\"M12,18.8c-3.8,0-6.9-3.1-6.9-6.9c0-3.8,3.1-6.9,6.9-6.9c3.8,0,6.9,3.1,6.9,6.9c0,0,0,0,0,0 C18.9,15.8,15.8,18.9,12,18.8L12,18.8z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M20.7,9.3l-8.1-5.8c-0.4-0.3-0.9-0.3-1.3,0L3.3,9.3c-0.4,0.3-0.6,0.8-0.4,1.2L6,20c0.1,0.4,0.5,0.7,1,0.8h10 c0.5,0,0.9-0.3,1-0.8l3.1-9.5C21.2,10.1,21.1,9.6,20.7,9.3z M16.1,18.5H7.9l-2.6-7.8L12,5.8l6.7,4.9L16.1,18.5z\\\"></path><polygon fill=\\\"none\\\" points=\\\"16.1,18.5 7.9,18.5 5.3,10.7 12,5.8 18.7,10.7 \\\"></polygon></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - shape - polyline</title><path class=\\\"cls-1\\\" d=\\\"M22.89,7.06l-.64-.64a.8.8,0,0,0-1.13,0l-6.77,6.77L10.23,9.07A1.66,1.66,0,0,0,9,8.58a1.69,1.69,0,0,0-1.2.49L1.11,15.8a.83.83,0,0,0-.23.57.79.79,0,0,0,.23.57l.64.64a.81.81,0,0,0,1.13,0L9,11.42l4.12,4.12a1.69,1.69,0,0,0,2.39,0L22.89,8.2a.83.83,0,0,0,.23-.57A.79.79,0,0,0,22.89,7.06Z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 24 24\\\" style=\\\"enable-background:new 0 0 24 24;\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\"> .st0{fill:#868E96;} </style><path class=\\\"st0\\\" d=\\\"M19.3,3.8H4.7c-1,0-1.8,0.8-1.8,1.8v12.8c0,1,0.8,1.8,1.8,1.8h14.7c1,0,1.8-0.8,1.8-1.8V5.6 C21.2,4.6,20.3,3.7,19.3,3.8z M5.1,18V6h13.8v12H5.1z\\\"></path><rect fill=\\\"none\\\" x=\\\"5.1\\\" y=\\\"6\\\" width=\\\"13.8\\\" height=\\\"12\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - signature</title><path class=\\\"cls-1\\\" d=\\\"M20,12.66a1,1,0,0,0-1.27.7c-.21.77-1,3-2.39,3.45.08-.42.22-1,.32-1.33.41-1.58.71-2.71-.23-3.25a2,2,0,0,0-2.79.42,4.84,4.84,0,0,0-.55.93,7.14,7.14,0,0,1-2.18,2.81,3.12,3.12,0,0,1-1.12.33,2.47,2.47,0,0,1-1-.5,1.46,1.46,0,0,1-.21-.28c5.29-5.08,5.58-9.51,5.52-10.84a3.59,3.59,0,0,0-1.21-2.91A1,1,0,0,0,12.05,2c-2.86.59-4.63,4-5.57,10.83l-.05.25a7.89,7.89,0,0,0-.17,2.19L5.43,16A4.18,4.18,0,0,1,4.12,17a1.25,1.25,0,0,1,.19-.69A1,1,0,0,0,4,14.86a1.06,1.06,0,0,0-1.44.27,2.7,2.7,0,0,0,.18,3.48A1.8,1.8,0,0,0,3.94,19a4.45,4.45,0,0,0,2.88-1.54l.2-.17a2.09,2.09,0,0,0,.24.28A4.23,4.23,0,0,0,9.6,18.72,4.81,4.81,0,0,0,12.13,18a8.11,8.11,0,0,0,2.47-2.94c-.42,1.57-.64,2.58-.14,3.27a1.29,1.29,0,0,0,.94.54c2.37.27,4.35-1.6,5.29-5A1,1,0,0,0,20,12.66ZM11.87,4.23A4.1,4.1,0,0,1,12,5.42c0,1-.31,3.91-3.47,7.57C9,9.48,10,5.33,11.87,4.23Zm10.07,6.28a1.46,1.46,0,0,1-2.9,0,1.45,1.45,0,0,1,2.9,0Z\\\"></path><rect class=\\\"cls-1\\\" x=\\\"3.45\\\" y=\\\"19.99\\\" width=\\\"16.66\\\" height=\\\"2.01\\\"></rect></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - stamp - line</title><path class=\\\"cls-1\\\" d=\\\"M4,20.5H20V22H4Zm15.27-5H4.74a.76.76,0,0,0-.75.75V19H20V16.26A.76.76,0,0,0,19.26,15.51Z\\\"></path><path class=\\\"cls-1\\\" d=\\\"M15.68,10.79a5,5,0,0,0,1.57-3.54,5.26,5.26,0,0,0-10.51,0,5.06,5.06,0,0,0,1.58,3.56,12.78,12.78,0,0,1,.82,1,7,7,0,0,1,.44,1.44H9v1.5h6v-1.5h-.58a6.08,6.08,0,0,1,.45-1.44A12.73,12.73,0,0,1,15.68,10.79Zm-1.4-1.15c-.27.32-.59.7-.9,1.13A6.91,6.91,0,0,0,12.63,13H11.37a6.52,6.52,0,0,0-.76-2.18c-.31-.45-.65-.83-.91-1.15A3.25,3.25,0,0,1,8.56,7.25a3.44,3.44,0,1,1,6.88,0A3.35,3.35,0,0,1,14.28,9.64Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text - free text</title><g><path class=\\\"cls-1\\\" d=\\\"M19.39,4.77V7.64A.43.43,0,0,1,19,8h-.82a.41.41,0,0,1-.4-.41V6.51H13.34V18h1.54a.41.41,0,0,1,.41.41v.81a.41.41,0,0,1-.41.41H9.14a.41.41,0,0,1-.41-.41v-.81A.41.41,0,0,1,9.14,18h1.54V6.51H6.27V7.64A.41.41,0,0,1,5.86,8H5A.43.43,0,0,1,4.6,7.6V4.77A.41.41,0,0,1,5,4.36H19A.39.39,0,0,1,19.39,4.77Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#8c8c8c;}</style></defs><title>icon - line - tool - highlight</title><path class=\\\"cls-1\\\" d=\\\"M9.91,13.07h3.86L11.84,8.46Zm5.46,3.68L14.62,15H9.05L7.77,18H5.63L10.45,6.64a1,1,0,0,1,1-.64h1a1.23,1.23,0,0,1,1,.64l2,4.91V4H5.85A2.22,2.22,0,0,0,3.63,6.22V17.78A2.22,2.22,0,0,0,5.85,20h9.52Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M20.37,2V22h-2V2Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - squiggly</title><path class=\\\"cls-1\\\" d=\\\"M21,20V22a3,3,0,0,1-2.56-1.41c-.38-.51-.64-.64-1-.64s-.51.13-1,.64A3.34,3.34,0,0,1,13.79,22a3,3,0,0,1-2.56-1.41c-.38-.51-.64-.64-1-.64s-.52.13-1,.64A3.34,3.34,0,0,1,6.62,22a3,3,0,0,1-2.57-1.41c-.38-.51-.64-.64-1-.64V17.9a3,3,0,0,1,2.56,1.41c.38.51.64.64,1,.64s.51-.13,1-.64a3.32,3.32,0,0,1,2.57-1.41,3,3,0,0,1,2.56,1.41c.38.51.64.64,1,.64s.52-.13,1-.64a3.31,3.31,0,0,1,2.56-1.41A3,3,0,0,1,20,19.31C20.33,19.82,20.59,20,21,20Z\\\"></path><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M8.79,12.77h6.67L17,16.36h2.56L13.92,2.64A1.34,1.34,0,0,0,12.77,2H11.62a1.24,1.24,0,0,0-1.16.77L4.69,16.36H7.26Zm3.34-7.95,2.31,5.51H9.82Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - strikethrough</title><rect class=\\\"cls-1\\\" x=\\\"3.13\\\" y=\\\"11.31\\\" width=\\\"17.74\\\" height=\\\"1.7\\\"></rect><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M12,5l2.4,5.77h2.68l-3.28-8A1.49,1.49,0,0,0,12.64,2H11.49a1.24,1.24,0,0,0-1.16.77L7,10.73H9.59Zm3.25,8.62,2,4.74h2.57l-2-4.74ZM4.17,18.32H6.74l2-4.74H6.18Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tool - text manipulation - underline</title><rect class=\\\"cls-1\\\" x=\\\"2.8\\\" y=\\\"20.29\\\" width=\\\"18.4\\\" height=\\\"1.7\\\"></rect><path fill=\\\"default\\\" class=\\\"cls-1\\\" d=\\\"M8.53,13.2h6.94l1.6,3.74h2.66L13.87,2.8a1.54,1.54,0,0,0-1.2-.8h-1.2a1.27,1.27,0,0,0-1.2.8l-6,14.14H6.93ZM12,5.07l2.4,5.73H9.6Z\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.8616 13.8047L2.19491 3.13799L3.13772 2.19518L13.8044 12.8619L12.8616 13.8047Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M11.5351 9.17844L13.1851 7.52849C14.4868 6.22674 14.4868 4.11619 13.1851 2.81445C11.8834 1.5127 9.7728 1.5127 8.47106 2.81445L6.82111 4.46439L7.76392 5.4072L9.41386 3.75725C10.1949 2.97621 11.4612 2.97621 12.2423 3.75725C13.0233 4.5383 13.0233 5.80463 12.2423 6.58568L10.5923 8.23563L11.5351 9.17844Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M9.64953 7.29282L10.8281 6.11428C11.0884 5.85393 11.0884 5.43182 10.8281 5.17147C10.5677 4.91112 10.1456 4.91112 9.88527 5.17147L8.70673 6.35001L9.64953 7.29282Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M4.46409 6.82141L5.4069 7.76422L3.75701 9.41411C2.97596 10.1952 2.97596 11.4615 3.75701 12.2425C4.53806 13.0236 5.80439 13.0236 6.58544 12.2425L8.23532 10.5927L9.17813 11.5355L7.52825 13.1853C6.2265 14.4871 4.11595 14.4871 2.8142 13.1853C1.51245 11.8836 1.51245 9.77305 2.8142 8.4713L4.46409 6.82141Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M7.29251 9.64984L6.11403 10.8283C5.85368 11.0887 5.43157 11.0887 5.17122 10.8283C4.91087 10.568 4.91087 10.1459 5.17122 9.88551L6.3497 8.70703L7.29251 9.64984Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.2918 12.2917C14.2918 13.575 13.2835 14.5833 12.0002 14.5833C10.7168 14.5833 9.7085 13.575 9.7085 12.2917C9.7085 11.0083 10.7168 10 12.0002 10C13.2835 10 14.2918 11.0083 14.2918 12.2917ZM5.12516 10C3.84183 10 2.8335 11.0083 2.8335 12.2917C2.8335 13.575 3.84183 14.5833 5.12516 14.5833C6.4085 14.5833 7.41683 13.575 7.41683 12.2917C7.41683 11.0083 6.4085 10 5.12516 10ZM18.8752 10C17.5918 10 16.5835 11.0083 16.5835 12.2917C16.5835 13.575 17.5918 14.5833 18.8752 14.5833C20.1585 14.5833 21.1668 13.575 21.1668 12.2917C21.1668 11.0083 20.1585 10 18.8752 10Z\\\" fill=\\\"#1A4971\\\"></path><circle cx=\\\"21\\\" cy=\\\"3\\\" r=\\\"3\\\" fill=\\\"#3183C8\\\"></circle></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tools - more</title><g><path class=\\\"cls-1\\\" d=\\\"M12,14.5A2.5,2.5,0,1,1,14.5,12,2.51,2.51,0,0,1,12,14.5Zm2.5-10A2.5,2.5,0,1,0,12,7,2.51,2.51,0,0,0,14.5,4.5Zm0,15A2.5,2.5,0,1,0,12,22,2.51,2.51,0,0,0,14.5,19.5Z\\\"></path></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - tools - more</title><path class=\\\"cls-1\\\" d=\\\"M14.5,12A2.5,2.5,0,1,1,12,9.5,2.51,2.51,0,0,1,14.5,12ZM4.5,9.5A2.5,2.5,0,1,0,7,12,2.51,2.51,0,0,0,4.5,9.5Zm15,0A2.5,2.5,0,1,0,22,12,2.51,2.51,0,0,0,19.5,9.5Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-10 -5 25 25\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>Group</title><g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g id=\\\"Comments\\\" transform=\\\"translate(-1488.000000, -305.000000)\\\" fill=\\\"#979A9E\\\"><g id=\\\"Group\\\" transform=\\\"translate(1488.000000, 305.000000)\\\"><rect id=\\\"Rectangle\\\" x=\\\"0\\\" y=\\\"0\\\" width=\\\"4\\\" height=\\\"11\\\"></rect><rect id=\\\"Rectangle\\\" x=\\\"0\\\" y=\\\"13\\\" width=\\\"4\\\" height=\\\"4\\\"></rect></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M14 12C12.905 12 12 11.095 12 10C12 9.646 12.103 9.317 12.268 9.027C12.178 9.02 12.092 9 12 9C10.358 9 9 10.359 9 12C9 13.642 10.358 15 12 15C13.641 15 15 13.642 15 12C15 11.908 14.98 11.822 14.973 11.732C14.683 11.897 14.354 12 14 12Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M12 5C4.36704 5 2.07304 11.617 2.05204 11.684L1.94604 12L2.05105 12.316C2.07305 12.383 4.36704 19 12 19C19.633 19 21.927 12.383 21.948 12.316L22.054 12L21.949 11.684C21.927 11.617 19.633 5 12 5ZM12 17C6.64904 17 4.57604 13.154 4.07404 12C4.57804 10.842 6.65204 7 12 7C17.351 7 19.424 10.846 19.926 12C19.422 13.158 17.348 17 12 17Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 25 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.675 13.2667H7.35L5.975 16.6583H3.5L9 3.73333C9.275 3.275 9.64167 3 10.1 3H11.2C11.6583 3 12.025 3.36667 12.3 3.73333L15.5893 11.7296C15.3978 12.0029 15.1962 12.2989 14.9941 12.6085C14.6787 13.0915 14.3531 13.6208 14.0604 14.158L13.675 13.2667ZM12.7583 11.0667L10.5583 5.84167L8.35833 11.0667H12.7583Z\\\"></path><path d=\\\"M21.5 17.3636C21.5 19.3719 19.933 21 18 21C16.067 21 14.5 19.3719 14.5 17.3636C14.5 15.3553 18 11 18 11C18 11 21.5 15.3553 21.5 17.3636Z\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6 6.94H9.06V2.4C9.06 2.17909 8.88091 2 8.66 2H7.34C7.11909 2 6.94 2.17909 6.94 2.4V6.94H2.4C2.17909 6.94 2 7.11909 2 7.34V8.66C2 8.88091 2.17909 9.06 2.4 9.06H6.94V13.6C6.94 13.8209 7.11909 14 7.34 14H8.66C8.88091 14 9.06 13.8209 9.06 13.6V9.06H13.6C13.8209 9.06 14 8.88091 14 8.66V7.34C14 7.11909 13.8209 6.94 13.6 6.94Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.94 9.05994H2.4C2.17909 9.05994 2 8.88086 2 8.65994V7.33994C2 7.11903 2.17909 6.93994 2.4 6.93994H13.6C13.7061 6.93994 13.8078 6.98208 13.8828 7.0571C13.9579 7.13211 14 7.23385 14 7.33994V8.65994C14 8.88086 13.8209 9.05994 13.6 9.05994H9.06\\\" fill=\\\"#868E96\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 60 60\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M49.7575 21.465C49.635 21.2 49.4825 20.9475 49.2675 20.7325L34.2675 5.7325C34.0525 5.5175 33.8 5.365 33.535 5.2425C33.46 5.2075 33.38 5.1875 33.3 5.16C33.09 5.09 32.875 5.045 32.6525 5.0325C32.6 5.0275 32.5525 5 32.5 5H15C12.2425 5 10 7.2425 10 10V50C10 52.7575 12.2425 55 15 55H45C47.7575 55 50 52.7575 50 50V22.5C50 22.4475 49.9725 22.4 49.9675 22.345C49.955 22.1225 49.9125 21.9075 49.84 21.6975C49.815 21.6175 49.7925 21.54 49.7575 21.465ZM41.465 20H35V13.535L41.465 20ZM15 50V10H30V22.5C30 23.8825 31.1175 25 32.5 25H45L45.005 50H15Z\\\" fill=\\\"#818A92\\\"></path><path d=\\\"M20 30H40V35H20V30ZM20 40H40V45H20V40ZM20 20H25V25H20V20Z\\\" fill=\\\"#818A92\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 24 24\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>icon / operation / multi select</title><g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g fill=\\\"#868E96\\\"><g><path d=\\\"M18.17,13.39 L16.28,13.39 L16.28,16.22 L13.44,16.22 L13.44,18.11 L16.28,18.11 L16.28,21 L18.17,21 L18.17,18.11 L21,18.11 L21,16.22 L18.17,16.22 L18.17,13.39 Z M4,18.11 L6.83,18.11 L6.83,16.22 L4.94,16.22 L4.94,14.34 L3.05,14.34 L3.05,17.17 C3.05,17.4210458 3.15039276,17.6616665 3.32884571,17.838241 C3.50729865,18.0148155 3.74896838,18.1126707 4,18.11 Z M18.17,3.94 C18.1382202,3.41127612 17.6996773,2.99904577 17.17,2.99999835 L14.39,2.99999835 L14.39,4.89 L16.28,4.89 L16.28,6.78 L18.17,6.78 L18.17,3.94 Z M4.94,4.89 L6.83,4.89 L6.83,3 L3.99999804,3 C3.74047377,2.9834001 3.48566705,3.07505767 3.29618264,3.25317302 C3.10669822,3.43128837 2.99946966,3.67994396 2.99999804,3.94 L2.99999804,6.78 L4.94,6.78 L4.94,4.89 Z M3.05,8.67 L4.94,8.67 L4.94,12.45 L3.05,12.45 L3.05,8.67 Z M16.28,8.67 L18.17,8.67 L18.17,11.5 L16.28,11.5 L16.28,8.67 Z M8.72,3 L12.5,3 L12.5,4.89 L8.72,4.89 L8.72,3 Z M8.72,16.22 L11.55,16.22 L11.55,18.11 L8.72,18.11 L8.72,16.22 Z\\\"></path></g></g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 4H4C2.897 4 2 4.897 2 6V18C2 19.103 2.897 20 4 20H20C21.103 20 22 19.103 22 18V6C22 4.897 21.103 4 20 4ZM4 6H20V8H4V6ZM4 18V12H20.001L20.002 18H4Z\\\" fill=\\\"#2597EF\\\"></path><path d=\\\"M6 14H12V16H6V14Z\\\" fill=\\\"#2597EF\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M20 4H6C4.897 4 4 4.897 4 6V11H6V8L12.4 12.8C12.578 12.933 12.789 13 13 13C13.211 13 13.422 12.933 13.6 12.8L20 8V17H12V19H20C21.103 19 22 18.103 22 17V6C22 4.897 21.103 4 20 4ZM13 10.75L6.666 6H19.334L13 10.75Z\\\" fill=\\\"#E07800\\\"></path><path d=\\\"M2 12H9V14H2V12ZM4 15H10V17H4V15ZM7 18H11V20H7V18Z\\\" fill=\\\"#E07800\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M19.15 3H4.85004C3.75004 3 2.83337 3.91667 2.83337 5.01667V19.3167C2.83337 20.4167 3.75004 21.3333 4.85004 21.3333H19.15C20.25 21.3333 21.1667 20.4167 21.1667 19.3167V5.01667C21.1667 3.91667 20.25 3 19.15 3ZM4.85004 19.3167V5.01667H19.15V19.3167H4.85004Z\\\" fill=\\\"#15A815\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.6499 8.59155L18.1416 15.7416H11.4499H9.24994H5.85828L8.69994 11.6166L10.2583 13.9999L13.6499 8.59155Z\\\" fill=\\\"#15A815\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"-2 -1 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M10.8042 7.19517C10.5436 6.93451 10.1222 6.93451 9.86157 7.19517L8.79891 8.25784C8.30624 8.11117 7.3869 7.77784 6.80424 7.19517C6.22157 6.61251 5.88824 5.69317 5.74157 5.20051L6.80424 4.13784C7.0649 3.87717 7.0649 3.45584 6.80424 3.19517L4.13757 0.528508C3.8769 0.267841 3.45557 0.267841 3.19491 0.528508L1.3869 2.33651C1.13357 2.58984 0.990905 2.93784 0.996238 3.29317C1.01157 4.24251 1.2629 7.53984 3.86157 10.1385C6.46024 12.7372 9.75757 12.9878 10.7076 13.0038C10.7109 13.0038 10.7229 13.0038 10.7262 13.0038C11.0782 13.0038 11.4109 12.8652 11.6629 12.6132L13.4709 10.8052C13.7316 10.5445 13.7316 10.1232 13.4709 9.86251L10.8042 7.19517ZM10.7196 11.6698C9.88757 11.6558 7.0409 11.4325 4.80424 9.19518C2.56024 6.95117 2.3429 4.09451 2.32957 3.27917L3.66624 1.94251L5.39024 3.66651L4.52824 4.52851C4.36891 4.68717 4.3009 4.91651 4.3469 5.13651C4.3629 5.21317 4.75424 7.03117 5.8609 8.13784C6.96757 9.24451 8.78557 9.63584 8.86224 9.65184C9.08424 9.69917 9.31157 9.63051 9.47024 9.47117L10.3329 8.60917L12.0569 10.3332L10.7196 11.6698Z\\\" fill=\\\"#FF5252\\\"></path></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 55 56\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path id=\\\"shape\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M54.0477 20.689C51.4304 10.7109 43.601 3.02211 33.702 0.708961C23.8031 -1.60418 13.4576 1.83753 6.81815 9.65263C0.550317 16.9211 -1.56549 26.9727 1.22739 36.2127C4.02027 45.4527 11.3229 52.5615 20.5238 54.9967C22.8617 55.6615 25.2779 55.9991 27.7055 56H28.0893C30.9278 55.9578 33.5442 54.43 35.0105 51.9585C36.4768 49.487 36.5857 46.4213 35.2984 43.8488L34.7502 42.7061C33.9288 40.9966 34.0218 38.9791 34.9969 37.3551C36.4744 34.9125 39.5338 34.0083 42.069 35.2649L43.1928 35.8223C44.3085 36.3528 45.5247 36.6286 46.7563 36.6305C51.2979 36.6305 54.9797 32.8872 54.9797 28.2696C54.9993 25.712 54.686 23.163 54.0477 20.689ZM45.5776 30.7779L44.4263 30.2484C39.3783 27.8478 33.3621 29.6244 30.3644 34.401C28.3445 37.6224 28.1363 41.6856 29.8162 45.1029L30.337 46.2735C30.7849 47.1605 30.7327 48.2233 30.1999 49.0604C29.7098 49.8793 28.8401 50.3845 27.8974 50.3982H27.5959C15.4848 50.3982 5.66688 40.416 5.66688 28.1024C5.66688 15.7888 15.4848 5.80661 27.5959 5.80661C28.6325 5.79856 29.6681 5.87311 30.6933 6.02957C39.3434 7.32046 46.4281 13.682 48.7573 22.2498C49.2819 24.2589 49.5401 26.3303 49.5248 28.409C49.481 29.347 48.9756 30.1994 48.1802 30.6768C47.3848 31.1541 46.4065 31.1921 45.5776 30.7779ZM19.3725 34.9584C19.3725 37.2672 17.5316 39.1388 15.2608 39.1388C12.99 39.1388 11.1491 37.2672 11.1491 34.9584C11.1491 32.6495 12.99 30.7779 15.2608 30.7779C16.3513 30.7779 17.3971 31.2183 18.1682 32.0023C18.9393 32.7863 19.3725 33.8496 19.3725 34.9584ZM19.3725 23.8105C19.3725 26.1193 17.5316 27.9909 15.2608 27.9909C12.99 27.9909 11.1491 26.1193 11.1491 23.8105C11.1491 21.5017 12.99 19.63 15.2608 19.63C16.3513 19.63 17.3971 20.0704 18.1682 20.8544C18.9393 21.6384 19.3725 22.7017 19.3725 23.8105ZM27.5959 15.4495C27.5959 17.7583 25.755 19.63 23.4842 19.63C21.2134 19.63 19.3725 17.7583 19.3725 15.4495C19.3725 13.1407 21.2134 11.2691 23.4842 11.2691C24.5747 11.2691 25.6205 11.7095 26.3916 12.4935C27.1627 13.2775 27.5959 14.3408 27.5959 15.4495ZM38.5603 15.4495C38.5603 17.7583 36.7195 19.63 34.4487 19.63C32.1778 19.63 30.337 17.7583 30.337 15.4495C30.337 13.1407 32.1778 11.2691 34.4487 11.2691C35.5392 11.2691 36.585 11.7095 37.3561 12.4935C38.1272 13.2775 38.5603 14.3408 38.5603 15.4495Z\\\" fill=\\\"#ADB5BD\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 512 512\\\" style=\\\"enable-background:new 0 0 512 512;\\\" xml:space=\\\"preserve\\\"><g><g><path d=\\\"M320,42.667h10.667c5.891,0,10.667-4.776,10.667-10.667V10.667C341.333,4.775,336.557,0,330.667,0H320 c-25.458,0-48.354,12.188-64,31.469C240.354,12.188,217.458,0,192,0h-10.667c-5.891,0-10.667,4.775-10.667,10.667V32 c0,5.891,4.776,10.667,10.667,10.667H192c23.521,0,42.667,22.469,42.667,50.083v141.917h-32c-5.891,0-10.667,4.775-10.667,10.667 v21.333c0,5.891,4.776,10.667,10.667,10.667h32V419.25c0,27.615-19.146,50.083-42.667,50.083h-10.667 c-5.891,0-10.667,4.775-10.667,10.667v21.333c0,5.891,4.776,10.667,10.667,10.667H192c25.458,0,48.354-12.188,64-31.469 C271.646,499.813,294.542,512,320,512h10.667c5.891,0,10.667-4.776,10.667-10.667V480c0-5.892-4.776-10.667-10.667-10.667H320 c-23.521,0-42.667-22.469-42.667-50.083V277.333h32c5.891,0,10.667-4.776,10.667-10.667v-21.333 c0-5.892-4.776-10.667-10.667-10.667h-32V92.75C277.333,65.135,296.479,42.667,320,42.667z\\\"></path></g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 21 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1.50002 3.86222C0.756978 3.57034 0.230957 2.8466 0.230957 2C0.230957 0.895431 1.12639 0 2.23096 0C2.97124 0 3.61758 0.402199 3.96339 1H11.75C11.8881 1 12 1.11193 12 1.25V2.25C12 2.38807 11.8881 2.5 11.75 2.5H4.16795C4.01085 3.11036 3.57287 3.60796 3.00002 3.84679V16.1532C3.57287 16.392 4.01085 16.8896 4.16795 17.5H16.563C16.7439 16.7972 17.2972 16.2439 18 16.063V8.75C18 8.61193 18.1119 8.5 18.25 8.5H19.25C19.3881 8.5 19.5 8.61193 19.5 8.75V16.2676C20.0978 16.6134 20.5 17.2597 20.5 18C20.5 19.1046 19.6046 20 18.5 20C17.7597 20 17.1134 19.5978 16.7676 19H3.96339C3.61758 19.5978 2.97124 20 2.23096 20C1.12639 20 0.230957 19.1046 0.230957 18C0.230957 17.1534 0.756978 16.4297 1.50002 16.1378V3.86222Z\\\" fill=\\\"#868E96\\\"></path><path d=\\\"M18.8157 3.25543C18.7181 3.1578 18.7181 2.99951 18.8157 2.90188L20.5837 1.13388C20.6814 1.03625 20.6814 0.877961 20.5837 0.78033L19.8766 0.0732233C19.779 -0.0244078 19.6207 -0.0244078 19.5231 0.0732233L17.7551 1.84122C17.6574 1.93885 17.4991 1.93885 17.4015 1.84122L15.6339 0.0735983C15.5363 -0.0240328 15.378 -0.0240327 15.2803 0.0735983L14.5732 0.780705C14.4756 0.878336 14.4756 1.03663 14.5732 1.13426L16.3409 2.90188C16.4385 2.99951 16.4385 3.1578 16.3409 3.25543L14.5733 5.02297C14.4757 5.1206 14.4757 5.27889 14.5733 5.37652L15.2804 6.08363C15.3781 6.18126 15.5363 6.18126 15.634 6.08363L17.4015 4.31609C17.4991 4.21846 17.6574 4.21846 17.7551 4.31609L19.523 6.08401C19.6206 6.18164 19.7789 6.18164 19.8765 6.08401L20.5836 5.3769C20.6813 5.27927 20.6813 5.12098 20.5836 5.02335L18.8157 3.25543Z\\\" fill=\\\"#868E96\\\"></path><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.50002 4.5C6.56702 4.5 5.00002 6.067 5.00002 8C5.00002 9.933 6.56702 11.5 8.50002 11.5C8.66978 11.5 8.83671 11.4879 9.00002 11.4646V14.5C9.00002 15.0523 9.44773 15.5 10 15.5H15C15.5523 15.5 16 15.0523 16 14.5V9.5C16 8.94772 15.5523 8.5 15 8.5H11.9646C11.9879 8.3367 12 8.16976 12 8C12 6.067 10.433 4.5 8.50002 4.5ZM10.5 10H14.5V14H10.5V10Z\\\" fill=\\\"#868E96\\\"></path></svg>\"","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Tooltip.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tooltip--bottom,.tooltip--bottomLeft,.tooltip--left,.tooltip--right,.tooltip--top,.tooltip--topLeft{position:absolute;z-index:110;background:#222;font-size:12px;padding:6px 8px;border-radius:3px;transition:opacity .3s ease-out;backface-visibility:hidden}.tooltip--bottom .tooltip__content:before,.tooltip--bottomLeft .tooltip__content:before,.tooltip--left .tooltip__content:before,.tooltip--right .tooltip__content:before,.tooltip--top .tooltip__content:before,.tooltip--topLeft .tooltip__content:before{content:\\\"\\\";width:0;height:0;position:absolute}.tooltip--top{margin-top:-10px}.tooltip--top .tooltip__content:before{bottom:-6px;left:50%;margin-left:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:6px solid #222}.tooltip--topLeft{margin-top:-10px}.tooltip--topLeft .tooltip__content:before{bottom:-5px;margin-left:-7px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:6px solid #222}.tooltip--bottom{margin-top:10px}.tooltip--bottom .tooltip__content:before{top:-6px;left:50%;margin-left:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:6px solid #222}.tooltip--bottomLeft{margin-top:10px}.tooltip--bottomLeft .tooltip__content:before{top:-5px;margin-left:-7px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:6px solid #222}.tooltip--left{margin-left:-10px;white-space:nowrap}.tooltip--left .tooltip__content:before{border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #222;right:-6px;top:50%;margin-top:-6px}.tooltip--right{margin-left:10px;white-space:nowrap}.tooltip--right .tooltip__content:before{border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:6px solid #222;left:-6px;top:50%;margin-top:-6px}.tooltip__shortcut{margin-left:3px;opacity:.5}.tooltip__content{background:#222;color:#fff;font-size:12px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Icon.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Icon{width:22px;height:22px;pointer-events:none;color:var(--icon-color)}.Icon.icon-border rect{stroke:var(--border)!important}.Icon circle:not([fill*=\\\"#\\\"]),.Icon path:not([fill*=\\\"#\\\"]),.Icon polygon:not([fill*=\\\"#\\\"]),.Icon rect:not([fill*=\\\"#\\\"]){fill:currentColor}.Icon:not(.disabled) path[fill=default]{fill:var(--icon-color)}.Icon.disabled,.Icon.disabled path{fill:var(--disabled-icon)}.Icon circle[fill=fill],.Icon circle[fill=none],.Icon path[fill=fill],.Icon path[fill=none],.Icon path[fill=stroke],.Icon polygon[fill=fill],.Icon polygon[fill=none],.Icon rect[fill=fill],.Icon rect[fill=none]{fill:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Button.modular-ui.icon-only:hover:not(:disabled):not(.disabled){cursor:pointer;border:none;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6);background-color:var(--faded-component-background)}.Button{padding:0;border:none;background-color:transparent;position:relative;display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:4px;width:32px;height:32px;color:var(--text-color)}:host(:not([data-tabbing=true])) .Button,html:not([data-tabbing=true]) .Button{outline:none}.Button img{height:24px;width:24px}.Button.active path[fill=default]{fill:var(--selected-icon-color)}.Button.active[data-element=panToolButton],.Button.active[data-element=selectToolButton]{background:var(--view-header-button-active)}.Button.active .Icon{color:var(--selected-icon-color)}.Button.disabled,.Button:disabled{background:none;cursor:default}.Button.disabled .Icon,.Button.disabled span,.Button:disabled .Icon,.Button:disabled span{color:var(--disabled-icon)}.Button.modular-ui.icon-only.active{box-shadow:inset 0 0 0 1px var(--blue-5);background:var(--tools-button-active)}.Button.modular-ui.icon-only.active .Icon{color:var(--blue-5)}.Button:focus{outline:none}.Button.focus-visible,.Button:focus-visible{outline:var(--focus-visible-outline)!important;z-index:2}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToggleZoomOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.zoom-overlay{display:flex;align-items:center;justify-content:center;background-color:var(--toggle-zoom-overlay-background);border-radius:4px;height:28px;margin:0 2px}.zoom-overlay .Button{margin:0 1px;height:100%}.zoom-overlay .Button:last-child{margin-right:0}.zoom-overlay .Button:first-child{margin-left:0}.zoom-overlay .toggle-element-button{height:100%}.ToggleZoomOverlay{height:100%;color:var(--text-color);margin-right:1px}.ToggleZoomOverlay .textarea{resize:none;border:none;outline:none;color:inherit;background-color:transparent;font-weight:700;min-width:28px;text-align:right}.ToggleZoomOverlay .Icon{width:12px;height:12px}.OverlayContainer{display:flex;align-items:center;justify-content:flex-end;min-width:68px;height:100%;border-radius:4px;position:relative}.OverlayContainer:hover{background-color:var(--view-header-button-hover)}.OverlayContainer.active{background-color:var(--view-header-button-active)}.OverlayContainer .Button.active,.OverlayContainer .Button:hover{background:none!important}.OverlayContainer .toggle-element-button{width:26px;margin-left:4px;margin-top:-2px;font-size:16px;height:26px}.OverlayText{border-radius:4px;align-items:center;margin-right:-8px;font-weight:700;height:100%;text-align:center;display:flex}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Dropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Dropdown{border:none;background-color:transparent;display:flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;justify-content:space-between;align-items:center;z-index:80;border-radius:4px;height:28px;border:1px solid var(--border);padding:0 4px 0 8px;background:var(--component-background);cursor:pointer}.Dropdown,.Dropdown__wrapper{position:relative}:host(:not([data-tabbing=true])) .Dropdown,html:not([data-tabbing=true]) .Dropdown{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .Dropdown{height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .Dropdown{height:32px}}.Dropdown .arrow{width:12px;height:16px;margin-top:2px}.Dropdown .picked-option{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.Dropdown .picked-option .picked-option-text{flex:.8;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.Dropdown .picked-option .picked-option-text .Dropdown__input{width:100%;border:none}.Dropdown.text-left .picked-option{text-align:left}.Dropdown:disabled{background:none;border:1px solid var(--gray-4);color:var(--disabled-icon);pointer-events:none}.Dropdown:focus{outline:none}.Dropdown.focus-visible,.Dropdown:focus-visible{outline:var(--focus-visible-outline)!important}.Dropdown__items{z-index:1;display:flex;flex-direction:column;position:absolute;top:30px;right:0;border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden;overflow-y:auto}.Dropdown__items.hide{visibility:hidden}.Dropdown__items.dropdown-items-with-custom-display{right:inherit}.Dropdown__label{font-weight:700;min-height:28px;padding-left:8px;align-items:center;display:flex;border-radius:0;padding-right:32px}.Dropdown__item{border:none;background-color:transparent;height:28px;align-items:center;display:flex;border-radius:0;padding:0 32px 0 8px;cursor:pointer}:host(:not([data-tabbing=true])) .Dropdown__item,html:not([data-tabbing=true]) .Dropdown__item{outline:none}.Dropdown__item.active,.Dropdown__item:hover{color:var(--dropdown-item-active-text)}.Dropdown__item.active .Icon,.Dropdown__item.active .Icon svg *,.Dropdown__item:hover .Icon,.Dropdown__item:hover .Icon svg *{color:var(--dropdown-item-active-icon)}.Dropdown__item.active{background-color:var(--dropdown-item-active)}.Dropdown__item:hover{background-color:var(--dropdown-item-hover)}.Dropdown__item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.Dropdown__item:last-child{border-bottom-right-radius:4px}[data-element=endLineStyleDropdown] .picked-option-text{flex:.95!important}[data-element=endLineStyleDropdown] .picked-option .arrow{width:11px!important}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./TrackChangeOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".track-change-overlay .Dropdown__item-TrackChange{display:flex;flex-direction:column}.track-change-overlay .Dropdown__item-TrackChange .Dropdown__item-mode{font-weight:700;text-align:left}.track-change-overlay .Dropdown__item-TrackChange .Dropdown__item-description{font-size:10px;margin-top:4px}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tool-button-container{display:flex;flex-direction:row;align-items:center;height:26px;margin:0 6px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-button-container{margin:0 10px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-button-container{margin:0 10px}}.tool-button-container .tool-button-arrow-container{width:13px;height:100%;margin-right:2px}.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container{font-size:13px;display:flex;align-items:center;height:100%;cursor:pointer}.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container .tool-button-arrow-down,.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container .tool-button-arrow-up{width:13px;height:13px}.tool-button-container .tool-button-arrow-container .tool-button-arrow-inner-container .tool-button-arrow-up{margin-top:-1px}.tool-button-container .tool-button{display:flex;flex-direction:row;align-items:center;border-radius:4px;margin-right:1px}.tool-button-container .tool-button.Button{width:26px;height:26px}.tool-button-container .tool-button.Button:hover{background:var(--tools-overlay-button-hover)}.tool-button-container .tool-button.active,.tool-button-container .tool-button.Button.active{background:var(--tools-overlay-button-active)}.tool-button-container .tool-button.active .Icon{color:var(--selected-icon-color)}.tool-button-container .tool-button.active div:hover{background:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./HorizontalDivider.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.divider-container{width:100%;padding:8px 4px}.divider-container .divider-horizontal{height:1px;background:var(--divider)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .divider-container{padding-top:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .divider-container{padding-top:0}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ColorPaletteHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.palette-options{display:flex;margin-bottom:8px;margin-top:4px;border-radius:4px;border:1px solid var(--border);width:100%;cursor:pointer}.palette-options .palette-options-button{padding:0;border:none;background-color:transparent;height:20px;text-align:center;vertical-align:middle;line-height:20px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1;border-radius:0;min-width:55px}:host(:not([data-tabbing=true])) .palette-options .palette-options-button,html:not([data-tabbing=true]) .palette-options .palette-options-button{outline:none}.palette-options .palette-options-button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.palette-options .palette-options-button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.palette-options .palette-options-button:hover{background:var(--popup-button-hover)}.palette-options .palette-options-button.active{background:var(--popup-button-active)}.palette-options .palette-options-button.disabled{color:var(--gray-6);cursor:default}.palette-options .palette-options-button.disabled:hover{background:none}.palette-options .palette-options-divider{width:1px;background:var(--divider)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ColorPalette{display:flex;flex-wrap:wrap;display:grid;grid-template-columns:repeat(7,1fr)}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ColorPalette{width:196px}}.ColorPalette.padding{padding:4px 12px 8px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette{max-width:450px;width:auto}}@media(max-width:640px)and (-ms-high-contrast:active),(max-width:640px)and (-ms-high-contrast:none){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette{width:308px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette{max-width:450px;width:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette{width:308px}}}.ColorPalette .cell-container{padding:0;border:none;background-color:transparent;flex:1 0 14%;cursor:pointer;width:var(--cell-border-size);height:var(--cell-border-size);display:flex;align-items:center;justify-content:center;border-radius:4px}:host(:not([data-tabbing=true])) .ColorPalette .cell-container,html:not([data-tabbing=true]) .ColorPalette .cell-container{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette .cell-container{width:28px;height:28px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette .cell-container{width:28px;height:28px}}.ColorPalette .cell-container .cell-outer.active{border:1px solid var(--color-palette-border);width:var(--cell-outer-border-size);height:var(--cell-outer-border-size);border-radius:10000000px;display:flex;align-items:center;justify-content:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ColorPalette .cell-container .cell-outer.active{width:28px;height:28px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ColorPalette .cell-container .cell-outer.active{width:28px;height:28px}}.ColorPalette .cell-container .cell-outer .cell{width:18px;height:18px;border-radius:10000000px}.ColorPalette .cell-container .cell-outer .cell .transparent{border:2px solid var(--faded-text);border-radius:10000000px}.ColorPalette .cell-container .cell-outer .cell.border{border:1px solid var(--white-color-palette-border)}.ColorPalette .cell-container.focus-visible,.ColorPalette .cell-container:focus-visible{outline:var(--focus-visible-outline)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ColorPalettePicker.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".colorPicker .colorPickerController{padding:5px;margin-top:4px;display:flex;align-items:center;justify-content:space-between;border-radius:4px}.colorPicker .cellIcon .Icon svg{height:100%}.colorPicker .cell-container:disabled{cursor:no-drop;opacity:.5}.colorPicker .cell-container.cell-tool:not([disabled]):hover{border:none;box-shadow:var(--colorpicker-tool-shadow);background:var(--colorpicker-tool-bg);border-radius:4px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Slider.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .slider{margin-top:6px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .slider{margin-top:6px}}.slider input:focus{outline:none;border:1px solid var(--slider-input-focus)}.slider input[type=number]::-webkit-inner-spin-button,.slider input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.slider svg{height:var(--slider-svg-hieght);cursor:pointer}.slider .slider-input-wrapper{display:flex;align-items:center}.slider .slider-input-field{border-radius:4px;border:1px solid var(--border);height:28px;width:50px;text-align:center}.slider .slider-input-field.is-editing{border-color:var(--focus-border)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .slider .slider-input-field{width:79px;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .slider .slider-input-field{width:79px;height:32px}}.slider .slider-property{margin-bottom:4px}.slider .slider-property:nth-child(n+2){margin-top:8px}.slider .slider-element-container{display:flex;flex-direction:row;align-items:center;margin-left:-5px}.slider .slider-element-container .slider-value{min-width:41px;display:flex;justify-content:flex-end;flex:1}.slider .slider-element-container svg{width:148px;flex:7}.slider .slider-element-container svg circle{fill:var(--slider-filled)}.slider .slider-element-container svg line:first-child{stroke:var(--slider-filled)}.slider .slider-element-container svg line:nth-child(2){stroke:var(--slider-background)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .slider .slider-element-container svg line{stroke-width:4}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .slider .slider-element-container svg line{stroke-width:4}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./StyleOption.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StyleOption .styles-container{margin-top:2px;margin-bottom:8px}.StyleOption .styles-container .styles-input{background:var(--component-background);border-radius:4px;border:1px solid var(--border);height:28px;width:80px;text-transform:capitalize;color:var(--text-color)}.StyleOption .styles-container .styles-title{margin-left:6px}.StyleOption .styles-container .styles-layout{display:flex;margin-left:2px;margin-top:7px}.StyleOption .styles-container [data-element=borderStylePicker]{width:80px;margin-left:2px;margin-top:7px}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown{width:80px!important}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown .picked-option-text svg{width:48px;margin-top:11px}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown__items{width:80px}.StyleOption .styles-container [data-element=borderStylePicker] .Dropdown__items svg{width:65px;margin-top:11px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./TextStylePicker.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.container-fluid{width:100%;display:flex;flex-direction:column;position:relative;grid-gap:8px;gap:8px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .container-fluid .Dropdown__wrapper{width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .container-fluid .Dropdown__wrapper{width:100%}}.container-fluid .Dropdown{padding:3px 4px;text-align:left}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .container-fluid .Dropdown{width:100%!important;font-size:13px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .container-fluid .Dropdown{width:100%!important;font-size:13px}}.container-fluid .Dropdown .Icon{width:16px;height:16px;flex:inherit}.container-fluid .FontSizeDropdown{width:100px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .container-fluid .FontSizeDropdown{width:100%;padding:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .container-fluid .FontSizeDropdown{width:100%;padding:0}}.container-fluid .container-dropdown{display:flex;flex-direction:row;grid-gap:8px;gap:8px}.container-fluid .error-text{font-size:var(--font-size-small);color:var(--error-text-color);text-align:center}.icon-grid{position:static}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .row{display:flex}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .rich-text-format{float:left}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .text-horizontal-alignment{float:right}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .text-horizontal-alignment.isRedaction,.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .text-vertical-alignment{float:left}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .row{display:flex}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .rich-text-format{float:left}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .text-horizontal-alignment{float:right}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .text-horizontal-alignment.isRedaction,.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .text-vertical-alignment{float:left}}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid{display:grid}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .row{display:flex}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid{display:grid}.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .row{display:flex}}.icon-grid .row{grid-gap:8px;gap:8px;padding-top:8px;display:flex}.icon-grid .row .Button{background:none;width:34px!important;height:34px!important;margin:0!important}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .icon-grid .row .Button{width:32px!important;height:32px!important}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .icon-grid .row .Button{width:32px!important;height:32px!important}}.icon-grid .row .Button .Icon{height:26px!important;width:26px!important;color:var(--icon-color)}.icon-grid .row .Button .Icon.disabled,.icon-grid .row .Button .Icon:disabled{color:var(--disabled-icon)}.icon-grid .row .Button.active{background:var(--popup-button-active)}.icon-grid .row .Button.active .Icon{color:var(--button-icon-color-active)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FontSizeDropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FontSizeDropdown{position:relative;width:100%;display:flex;background:var(--component-background);border:1px solid var(--border);border-radius:4px;align-items:center;flex-direction:row;justify-content:space-between;height:28px;padding:3px 4px}.FontSizeDropdown.disabled{border:1px solid var(--gray-4)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .FontSizeDropdown{height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .FontSizeDropdown{height:32px}}.FontSizeDropdown input{width:25px;border:0;height:100%;flex:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.FontSizeDropdown input:focus{border:1px solid var(--blue-5)}.FontSizeDropdown input.error{border-color:var(--error-border-color)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .FontSizeDropdown input{font-size:13px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .FontSizeDropdown input{font-size:13px}}.FontSizeDropdown .disabledText{color:var(--disabled-text)}.FontSizeDropdown input::-webkit-inner-spin-button,.FontSizeDropdown input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.FontSizeDropdown input[type=number]{-moz-appearance:textfield}.FontSizeDropdown .icon-button{flex:inherit;height:16px;width:16px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .FontSizeDropdown .icon-button{margin-right:4px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .FontSizeDropdown .icon-button{margin-right:4px}}.FontSizeDropdown .icon-button .Icon{height:100%;width:100%}.FontSizeDropdown .hidden{display:none!important}.FontSizeDropdown .Dropdown__items{z-index:1;display:flex;flex-direction:column;position:absolute;top:30px;right:0;border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden;overflow-y:auto;max-height:200px;width:100%}.FontSizeDropdown .Dropdown__items.hide{visibility:hidden}.FontSizeDropdown .Dropdown__items .Dropdown__item{border:none;background-color:transparent;height:28px;align-items:center;display:flex;border-radius:0;padding:0 32px 0 8px;font-size:var(--font-size-default);line-height:28px}:host(:not([data-tabbing=true])) .FontSizeDropdown .Dropdown__items .Dropdown__item,html:not([data-tabbing=true]) .FontSizeDropdown .Dropdown__items .Dropdown__item{outline:none}.FontSizeDropdown .Dropdown__items .Dropdown__item.active,.FontSizeDropdown .Dropdown__items .Dropdown__item:hover{color:var(--dropdown-item-active-text)}.FontSizeDropdown .Dropdown__items .Dropdown__item.active .Icon,.FontSizeDropdown .Dropdown__items .Dropdown__item.active .Icon svg *,.FontSizeDropdown .Dropdown__items .Dropdown__item:hover .Icon,.FontSizeDropdown .Dropdown__items .Dropdown__item:hover .Icon svg *{color:var(--dropdown-item-active-icon)}.FontSizeDropdown .Dropdown__items .Dropdown__item.active{background-color:var(--dropdown-item-active)}.FontSizeDropdown .Dropdown__items .Dropdown__item:hover{background-color:var(--dropdown-item-hover)}.FontSizeDropdown .Dropdown__items .Dropdown__item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.FontSizeDropdown .Dropdown__items .Dropdown__item:last-child{border-bottom-right-radius:4px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ui__choice__input__icon{top:-6px!important}.ui__icon{align-items:baseline!important}.ui__choice{align-items:center}.ui__choice__label{font-size:13px!important}.ui__choice__input--switch .ui__choice__input__switch{height:14px!important;border-radius:24px!important;background-color:var(--input-switch-default-color)!important;border:none!important}.ui__choice__input--switch .ui__choice__input__switch.ui__choice__input__switch--disabled{opacity:.6;cursor:not-allowed}.ui__choice__input--switch .ui__choice__input__switch.ui__choice__input__switch--checked{background-color:var(--checked-option)!important}.ui__choice__input--switch .ui__choice__input__switch.ui__choice__input__switch--checked .ui__choice__input__toggle{left:12px!important}.ui__choice__input--switch .ui__choice__input__switch--focus{outline:var(--focus-visible-outline)}.ui__choice__input--switch .ui__choice__input__switch .ui__choice__input__toggle{height:10px!important;width:10px!important;background-color:var(--gray-0)!important;left:2px!important}.ui__choice__input--switch input:disabled{cursor:not-allowed!important}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LabelTextEditor.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"input.overlay-text-input{width:100%;height:28px;padding:6px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LineStyleOptions.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".LineStyleOptions{width:100%;margin-top:4px;margin-bottom:4px}.LineStyleOptions .LayoutTitle{margin-left:6px}.LineStyleOptions .StyleContainer{margin:4px 2px 0;display:flex;flex-direction:row;justify-content:space-between}.LineStyleOptions .linestyle-image svg{width:35px;margin-top:11px}.LineStyleOptions .linestyle-image.shift-alignment svg{margin-top:8px}.LineStyleOptions .Dropdown__items .linestyle-image svg{width:45px}.LineStyleOptions [data-element=middleLineStyleDropdown] .linestyle-image.shift-alignment{padding-top:0}.LineStyleOptions [data-element=middleLineStyleDropdown] .Dropdown__items{top:-197px}\", \"\"]);\n\n// exports\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./StylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.StylePopup{padding:12px;display:flex;flex-direction:column;width:220px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .StylePopup{width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .StylePopup{width:100%}}.StylePopup .sliders-container{padding-left:6px;padding-right:6px;margin-top:4px}.StylePopup .collapsible-menu{width:100%;display:flex;cursor:pointer;position:relative;align-items:center}.StylePopup .collapsible-menu .menu-title{padding-left:4px;padding-top:6px;padding-bottom:6px;font-weight:700;font-size:14px}.StylePopup .collapsible-menu .Icon{position:absolute;right:0;height:18px;width:18px}.StylePopup .divider{background-color:var(--divider);width:100%;height:1px;margin:6px 0}.StylePopup .menu-items{padding:6px 4px}.StylePopup .closed{display:none}.StylePopup .snapping-option{margin-top:10px;margin-left:2px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SignatureRowContent.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.signature-row-content{padding:0;border:none;background-color:transparent;width:162px;height:26px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-right:8px}:host(:not([data-tabbing=true])) .signature-row-content,html:not([data-tabbing=true]) .signature-row-content{outline:none}.signature-row-content img{max-width:100%;max-height:100%}.signature-row-content.interactable:hover{background:var(--tools-overlay-button-hover)}.signature-row-content.active,.signature-row-content.interactable.active{background:var(--tools-overlay-button-active)}.signature-row-content .signature-button-icon{width:20px;height:20px;margin-top:2px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.signature-style-popup .tab-list{width:100%;height:28px;display:flex;border-radius:4px;color:var(--text-color)}.signature-style-popup .tab-list .tab-options-button{text-align:center;vertical-align:middle;line-height:24px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1;border-radius:0;cursor:pointer}.signature-style-popup .tab-list .tab-options-button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.signature-style-popup .tab-list .tab-options-button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.signature-style-popup .tab-list .tab-options-button:hover{background:var(--popup-button-hover)}.signature-style-popup .tab-list .tab-options-button.selected{background:var(--popup-button-active);cursor:default}.signature-style-popup .tab-list .tab-options-button.focus-visible,.signature-style-popup .tab-list .tab-options-button:focus-visible{outline:var(--focus-visible-outline)}.signature-style-popup .tab-panel{width:100%;display:flex;flex-direction:column;align-items:center}.signature-style-popup .tab-panel.focus-visible,.signature-style-popup .tab-panel:focus-visible{outline:var(--focus-visible-outline)!important}.add-btn{border-radius:4px;border:1px solid var(--primary-button);color:var(--ribbon-active-color);cursor:pointer;display:flex;align-items:center;justify-content:center}.add-btn.disabled{border:1px solid var(--disabled-text);color:var(--disabled-text);cursor:auto}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .add-btn{height:40px;width:90%;margin:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .add-btn{height:40px;width:90%;margin:0}}.add-btn.signature-row-content .btn-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:130px}.signature-row{display:flex;flex-direction:row;height:26px;justify-content:space-between}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-row{justify-content:center}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-row{justify-content:center}}.signature-row .icon-button{padding:0;border:none;background-color:transparent;display:flex;align-items:center;justify-content:center;width:34px;border-radius:4px;cursor:pointer}:host(:not([data-tabbing=true])) .signature-row .icon-button,html:not([data-tabbing=true]) .signature-row .icon-button{outline:none}.signature-row .icon-button:hover{background:var(--tools-overlay-button-hover)}.signature-style-popup{width:100%;padding-left:8px;padding-right:4px;max-height:300px;overflow-y:scroll}.signature-style-popup .tab-list{font-size:14px;margin:0 0 12px}.signature-style-popup .tab-list .tab-options-button{padding:0;border:none;background-color:transparent}:host(:not([data-tabbing=true])) .signature-style-popup .tab-list .tab-options-button,html:not([data-tabbing=true]) .signature-style-popup .tab-list .tab-options-button{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-style-popup{width:auto;padding:0;margin-top:12px;height:236px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-style-popup{width:auto;padding:0;margin-top:12px;height:236px}}.signature-style-popup .signature-row{margin-bottom:12px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-style-popup .signature-row{margin-bottom:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-style-popup .signature-row{margin-bottom:16px}}.signature-style-popup .add-btn{margin-bottom:8px;width:100%;margin-right:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .signature-style-popup .add-btn{margin:32px 0 0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .signature-style-popup .add-btn{margin:32px 0 0}}.signature-style-popup .tab-list .tab-options-divider+.tab-options-button{border-left:none!important}.signature-style-popup .tab-list .tab-options-button{border-top:1px solid var(--tab-border-color);border-bottom:1px solid var(--tab-border-color)}.signature-style-popup .tab-list .tab-options-button:first-child{border-left:1px solid var(--tab-border-color)}.signature-style-popup .tab-list .tab-options-button:last-child{border-right:1px solid var(--tab-border-color)}.signature-style-popup .tab-list .tab-options-button:hover{background:var(--tab-background-color-hover);border-top:1px solid var(--tab-border-color-hover);border-bottom:1px solid var(--tab-border-color-hover);border-right:1px solid var(--tab-border-color-hover)}.signature-style-popup .tab-list .tab-options-button:hover+button,.signature-style-popup .tab-list .tab-options-button:hover+div{border-left:none}.signature-style-popup .tab-list .tab-options-button.selected{border:1px solid var(--tab-border-color-selected);color:var(--tab-text-color-selected)}.signature-style-popup .tab-list .tab-options-button.selected+button,.signature-style-popup .tab-list .tab-options-button.selected+div{border-left:none!important}.signature-style-popup .tab-list .tab-options-button:not(.selected){border-right:1px solid var(--tab-border-color)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RubberStampOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.rubber-stamp-overlay{margin-left:0;margin-bottom:8px;padding-left:8px;padding-right:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay{margin-bottom:0;margin-right:0;padding-top:12px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay{margin-bottom:0;margin-right:0;padding-top:12px}}.rubber-stamp-overlay .custom-stamp-panel{max-height:270px;overflow:auto;margin-bottom:8px}.rubber-stamp-overlay .standard-stamp-panel{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;flex-flow:row wrap;align-content:flex-start;max-height:300px;overflow-y:scroll}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .standard-stamp-panel{height:236px;width:300px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .standard-stamp-panel{height:236px;width:300px}}.rubber-stamp-overlay .rubber-stamp{padding:0;border:none;background-color:transparent;border-radius:4px;flex-basis:50%;cursor:pointer}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .rubber-stamp,html:not([data-tabbing=true]) .rubber-stamp-overlay .rubber-stamp{outline:none}.rubber-stamp-overlay .rubber-stamp:hover{background:var(--popup-button-hover)}.rubber-stamp-overlay .rubber-stamp.active{background:var(--tools-overlay-button-active)}.rubber-stamp-overlay .rubber-stamp img{width:100%}.rubber-stamp-overlay .stamp-row{display:flex;flex-direction:row;height:45px;justify-content:space-between;padding-bottom:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .stamp-row{justify-content:center}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .stamp-row{justify-content:center}}.rubber-stamp-overlay .stamp-row .icon{padding:0;border:none;background-color:transparent;display:flex;align-items:center;justify-content:center;width:34px;height:45px;border-radius:4px;cursor:pointer}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .stamp-row .icon,html:not([data-tabbing=true]) .rubber-stamp-overlay .stamp-row .icon{outline:none}.rubber-stamp-overlay .stamp-row .icon:hover{background:var(--tools-overlay-button-hover)}.rubber-stamp-overlay .stamp-row .custom-stamp{padding:0;border:none;background-color:transparent;flex-shrink:1}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .stamp-row .custom-stamp,html:not([data-tabbing=true]) .rubber-stamp-overlay .stamp-row .custom-stamp{outline:none}.rubber-stamp-overlay .stamp-row-content{width:162px;border-radius:4px;padding:2px;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-right:8px}.rubber-stamp-overlay .stamp-row-content img{max-width:100%;max-height:100%}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.rubber-stamp-overlay .stamp-row-content img{flex-grow:1;flex-basis:0}}.rubber-stamp-overlay .stamp-row-content:not(.add-btn):hover{background:var(--popup-button-hover)}.rubber-stamp-overlay .stamp-row-content.interactable:hover{background:var(--tools-overlay-button-hover)}.rubber-stamp-overlay .stamp-row-content.active,.rubber-stamp-overlay .stamp-row-content.interactable.active{background:var(--tools-overlay-button-active)}.rubber-stamp-overlay .stamp-row-content.add-btn{background-color:transparent}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .stamp-row-content.add-btn{width:90%;margin-right:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .stamp-row-content.add-btn{width:90%;margin-right:0}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .rubber-stamp-overlay .tab-header{width:300px;margin:auto}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .rubber-stamp-overlay .tab-header{width:300px;margin:auto}}.rubber-stamp-overlay .tab-list{display:flex;border-radius:4px;border:1px solid var(--border);height:28px;color:var(--text-color);margin-bottom:8px;width:100%}.rubber-stamp-overlay .tab-list .tab-options-button{border:none;background-color:transparent;text-align:center;vertical-align:middle;line-height:24px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex:1;border-radius:0;cursor:pointer;padding:0 10px}:host(:not([data-tabbing=true])) .rubber-stamp-overlay .tab-list .tab-options-button,html:not([data-tabbing=true]) .rubber-stamp-overlay .tab-list .tab-options-button{outline:none}.rubber-stamp-overlay .tab-list .tab-options-button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.rubber-stamp-overlay .tab-list .tab-options-button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.rubber-stamp-overlay .tab-list .tab-options-button:hover{background:var(--popup-button-hover)}.rubber-stamp-overlay .tab-list .tab-options-button.selected{background:var(--popup-button-active);cursor:default}.rubber-stamp-overlay .tab-list .tab-options-divider{width:1px;background:var(--divider)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolStylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.ToolStylePopup{background:var(--preset-background);display:flex;flex-direction:column;justify-content:center;border-radius:0 0 4px 4px;box-shadow:0 0 3px 0 var(--box-shadow);width:220px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolStylePopup{width:auto;margin:0;position:relative;max-width:none;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;border:0;padding-bottom:24px;border-radius:4px;box-shadow:none}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolStylePopup .swipe-indicator{background:var(--divider);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolStylePopup{width:auto;margin:0;position:relative;max-width:none;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;border:0;padding-bottom:24px;border-radius:4px;box-shadow:none}.App.is-web-component:not(.is-in-desktop-only-mode) .ToolStylePopup .swipe-indicator{background:var(--divider);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolsDropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tools-dropdown-container{padding:0;border:none;background-color:transparent;width:34px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer}:host(:not([data-tabbing=true])) .tools-dropdown-container,html:not([data-tabbing=true]) .tools-dropdown-container{outline:none}.tools-dropdown-container:not(.disabled):hover{background:var(--tools-overlay-button-hover)}.tools-dropdown-container:not(.disabled).active{background:var(--tools-overlay-button-active)}.tools-dropdown-container:not(.disabled).active .Icon{color:var(--selected-icon-color)}.tools-dropdown-container.disabled{cursor:auto}.tools-dropdown-container.disabled .Icon{color:var(--disabled-text)}.tools-dropdown-container .tools-arrow-up{width:22px;height:22px}.tools-dropdown-container .tools-arrow-down{width:22px;height:22px;margin-top:1px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SelectedSignatureRow.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.selected-signature-row{display:flex;flex-direction:row;width:100%;justify-content:space-between;padding-left:8px;padding-right:4px;align-items:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-signature-row{width:auto;padding-left:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-signature-row .add-btn{width:190px;height:30px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .selected-signature-row{width:auto;padding-left:0}.App.is-web-component:not(.is-in-desktop-only-mode) .selected-signature-row .add-btn{width:190px;height:30px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SelectedRubberStamp.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.selected-rubber-stamp-container{display:flex;flex-direction:row;width:100%;justify-content:space-between;padding-left:8px;padding-right:4px;align-items:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-rubber-stamp-container .signature-row-content{height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .selected-rubber-stamp-container .signature-row-content{height:32px}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .selected-rubber-stamp-container{width:auto}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .selected-rubber-stamp-container{width:auto}}.selected-rubber-stamp-container .selected-rubber-stamp{display:flex;align-items:center;justify-content:center}.selected-rubber-stamp-container .selected-rubber-stamp .signature-row-content img{max-width:120%;max-height:120%;height:inherit}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./SelectedStamp.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".stamp-overLay .no-presets{color:var(--no-presets-text);display:flex;justify-content:center;align-items:center;width:100%}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolsOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.ToolsOverlay{visibility:visible}.closed.ToolsOverlay{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ToolsOverlay{position:absolute;z-index:95;border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background)}@media(min-width:901px){.App:not(.is-web-component) .ToolsOverlayContainer{margin-right:12px}}@container (min-width: 901px){.ToolsOverlayContainer{margin-right:12px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlayContainer{margin-right:18px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlayContainer{margin-right:18px}}.ToolsOverlay{box-shadow:none;padding:0;flex-wrap:nowrap;border:0;border-radius:0;background:transparent;position:relative;border-radius:4px 4px 0 0;height:32px;align-items:center;width:220px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay{width:100%;height:auto;display:flex;flex-direction:column;background:var(--mobile-presets-background);margin-top:-12px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay{width:100%;height:auto;display:flex;flex-direction:column;background:var(--mobile-presets-background);margin-top:-12px}}.ToolsOverlay.shadow{box-shadow:0 0 5px 0 var(--box-shadow)}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay.shadow .ToolStylePopup{box-shadow:0 -20px 0 var(--preset-background),0 0 5px 0 var(--box-shadow)}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay.shadow .ToolStylePopup{box-shadow:0 -20px 0 var(--preset-background),0 0 5px 0 var(--box-shadow)}}.ToolsOverlay .no-presets{color:var(--no-presets-text)}.ToolsOverlay .no-presets,.ToolsOverlay .tools-container{display:flex;justify-content:center;align-items:center;width:100%}.ToolsOverlay .tools-container{border-radius:4px;background:var(--preset-background);height:100%}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay .tools-container{background:var(--mobile-presets-background);height:52px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay .tools-container.is-styling-open{height:78px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay .tools-container{background:var(--mobile-presets-background);height:52px}.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay .tools-container.is-styling-open{height:78px}}.ToolsOverlay .tools-container .tool-buttons-container{display:flex;align-items:center;height:32px;padding-left:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolsOverlay .tools-container .tool-buttons-container{width:100%;justify-content:center}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolsOverlay .tools-container .tool-buttons-container{width:100%;justify-content:center}}.ToolsOverlay .close-icon-container{padding:0;border:none;background-color:transparent;position:absolute;right:18px;cursor:pointer}:host(:not([data-tabbing=true])) .ToolsOverlay .close-icon-container,html:not([data-tabbing=true]) .ToolsOverlay .close-icon-container{outline:none}.ToolsOverlay .close-icon-container .close-icon{width:24px;height:24px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Ribbons.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.custom-ribbons-container{height:100%;display:flex;align-items:center;justify-content:center;flex:1}.custom-ribbons-container .is-hidden{visibility:hidden}.custom-ribbons-container .ribbons-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}.custom-ribbons-container .ribbons-container .ribbons{display:flex;align-items:center;justify-content:center;background-color:var(--ribbons-background);border-radius:4px;height:28px;position:absolute;left:50%;transform:translateX(-50%);top:0;bottom:0;margin:auto}.custom-ribbons-container .ribbons-container .ribbons .ribbon-group{padding:0;border:none;background-color:transparent;margin:0 22px;cursor:pointer;color:var(--faded-text);white-space:nowrap}:host(:not([data-tabbing=true])) .custom-ribbons-container .ribbons-container .ribbons .ribbon-group,html:not([data-tabbing=true]) .custom-ribbons-container .ribbons-container .ribbons .ribbon-group{outline:none}.custom-ribbons-container .ribbons-container .ribbons .ribbon-group.active{color:var(--ribbon-active-color)}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.custom-ribbons-container .ribbons-container .ribbons .ribbon-group{min-width:70px;margin:0 12px}}.custom-ribbons-container .ribbons-container .ribbons [data-element=exitFormEditingButton]{width:100%;padding:0 5px;border:1px solid var(--border);background:var(--view-header-background);white-space:nowrap}.custom-ribbons-container .editable-file-name{cursor:pointer}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ApplyFormFieldButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.apply-form-field-button{background-color:var(--primary-button);border:1px solid var(--primary-button);color:var(--primary-button-text);padding:7px 14px;width:-moz-fit-content;width:fit-content;border-radius:5px;height:30px;cursor:pointer}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.apply-form-field-button{width:100%}}.apply-form-field-button:hover{background:var(--primary-button-hover)!important;border:1px solid var(--primary-button-hover)!important;border-radius:5px!important}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .apply-form-field-button{padding:7px 12px;white-space:nowrap}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .apply-form-field-button{padding:7px 12px;white-space:nowrap}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n  var storage = (0, _getStorage.default)(type);\n  return {\n    getItem: function getItem(key) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.getItem(key));\n      });\n    },\n    setItem: function setItem(key, item) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.setItem(key, item));\n      });\n    },\n    removeItem: function removeItem(key) {\n      return new Promise(function (resolve, reject) {\n        resolve(storage.removeItem(key));\n      });\n    }\n  };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n  getItem: noop,\n  setItem: noop,\n  removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n  if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n    return false;\n  }\n\n  try {\n    var storage = self[storageType];\n    var testKey = \"redux-persist \".concat(storageType, \" test\");\n    storage.setItem(testKey, 'test');\n    storage.getItem(testKey);\n    storage.removeItem(testKey);\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n    return false;\n  }\n\n  return true;\n}\n\nfunction getStorage(type) {\n  var storageType = \"\".concat(type, \"Storage\");\n  if (hasStorage(storageType)) return self[storageType];else {\n    if (process.env.NODE_ENV !== 'production') {\n      console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n    }\n\n    return noopStorage;\n  }\n}","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LogoBar.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LogoBar{justify-content:space-between;padding:4px 16px;width:100%;height:24px;background:var(--gray-0);color:#747c84;font-size:12px;line-height:16px}.LogoBar,.LogoBar .logo-container{display:flex;flex-direction:row;align-items:center}.LogoBar .logo-button{width:100%;grid-gap:4px;gap:4px;color:#747c84;font-size:12px!important}.LogoBar .logo-button .Icon{width:14px;height:14px}.LogoBar .version{text-decoration:none;color:#747c84}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Accessibility.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.Accessibility{position:fixed;z-index:9999;display:flex;align-items:center;overflow:hidden;background:#fff;color:#000;font-size:1.2em;border:1px solid var(--border);height:36px;padding:0 10px}.Accessibility.visible{transform:translateY(0)}.Accessibility.hidden{transform:translateY(-100%)}.Accessibility button{border:none;background-color:transparent;color:#000;margin:0 7px;padding:2px 6px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ToolGroupButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.tool-group-button{display:flex;align-items:center;justify-content:center;height:32px;border-radius:4px;cursor:pointer}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.StatefulButton{padding:5px;width:-moz-fit-content;width:fit-content;background-color:var(--gray-4)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./CustomElement.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.HeaderItems{display:flex;align-items:center;width:100%;height:100%;position:relative;padding:0 4px}.HeaderItems .divider:first-of-type+.divider{display:none}.HeaderItems>.Button,.HeaderItems>.toggle-element-button{margin:0 6px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.Button,.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.toggle-element-button{margin:0 5px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.Button,.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.toggle-element-button{margin:0 5px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.Button,.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.toggle-element-button{margin:0 10px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.Button,.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.toggle-element-button{margin:0 10px}}.HeaderItems .tool-group-button{margin:0 6px}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems .tool-group-button{margin:0 11px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems .tool-group-button{margin:0 11px}}.HeaderItems .spacer{flex:1;height:100%}.HeaderItems>.divider{width:1px;height:20px;margin:0 6px;background:var(--divider);flex-shrink:0}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.divider{margin:0 4px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.divider{margin:0 4px}}.tool-group-buttons-container{overflow:hidden;position:relative;height:100%;display:flex;align-items:center}.tool-group-buttons-container .chevron-scroll{display:flex;align-items:center;position:absolute;z-index:1;height:100%;pointer-events:none;width:64px;background:var(--tools-header-background);top:0;bottom:0;margin:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.tool-group-buttons-container .chevron-scroll{background:none}}.tool-group-buttons-container .chevron-scroll .Icon{color:var(--scroll-chevron-color)}.tool-group-buttons-container .chevron-scroll.left{left:0;-webkit-mask-image:-webkit-gradient(linear,right top,left top,from(transparent),to(#000),color-stop(.6,#000));mask-image:-webkit-gradient(linear,right top,left top,from(transparent),to(#000),color-stop(.6,#000));justify-content:flex-start}.tool-group-buttons-container .chevron-scroll.right{right:0;-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),to(#000),color-stop(.6,#000));mask-image:-webkit-gradient(linear,left top,right top,from(transparent),to(#000),color-stop(.6,#000));justify-content:flex-end}.tool-group-buttons-container .chevron-scroll .scroll-edge{background:var(--tools-header-background);height:100%}.tool-group-buttons-container .chevron-scroll .scroll-edge.left{width:8px}.tool-group-buttons-container .chevron-scroll .scroll-edge.right{right:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:8px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:16px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:16px}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:12px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .tool-group-buttons-container .chevron-scroll .scroll-edge.right{width:12px}}.tool-group-buttons-container .chevron-scroll .tool-group-button{padding:0;border:none;background-color:transparent;margin:0;pointer-events:all}:host(:not([data-tabbing=true])) .tool-group-buttons-container .chevron-scroll .tool-group-button,html:not([data-tabbing=true]) .tool-group-buttons-container .chevron-scroll .tool-group-button{outline:none}.tool-group-buttons-scroll{display:flex;overflow:auto;scroll-behavior:smooth;height:100%;align-items:center;-ms-overflow-style:none;scrollbar-width:none}.tool-group-buttons-scroll::-webkit-scrollbar{display:none}.tool-group-buttons-scroll :last-child{margin-right:0}.HeaderItems>.divider{margin-left:0}@media(min-width:901px){.App:not(.is-web-component) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@container (min-width: 901px){.HeaderItems>.divider{margin-left:16px;margin-right:16px}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderItems>.divider{margin-left:16px;margin-right:16px}}.HeaderItems .tool-group-button{scroll-snap-align:start}.HeaderItems .tool-group-button,.HeaderItems>.Button{width:32px;height:32px}.HeaderItems .Button:not(.disabled):hover{border-radius:4px;background:var(--tools-button-hover)}.HeaderItems .Button:not(.disabled).active{border-radius:4px;background:var(--tools-button-active)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./TabsHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TabsHeader{display:flex;width:100%;justify-content:flex-start;align-items:flex-end;background:var(--multi-tab-header-background);overflow-y:hidden;overflow-x:hidden;height:var(--multi-tab-header-height)}.TabsHeader .add-button{width:100%;display:flex;align-items:center;border-bottom:var(--multi-tab-border);padding-left:var(--multi-tab-add-button-padding)}.TabsHeader .add-button .Button .Icon{width:14px;height:14px}.TabsHeader .add-button .Button:hover{background-color:var(--view-header-button-hover)}.TabsHeader .add-button.add-button-with-label .Button{display:flex;width:-moz-fit-content;width:fit-content;padding:10px}.TabsHeader .add-button.add-button-with-label .Button .Icon{margin-right:4px}.TabsHeader .add-button .tab-dropdown-button{width:24px;height:24px;margin:0 0 2px 6px;text-align:center;padding:4px;border-radius:4px;border:1px solid var(--multi-tab-divider)}.TabsHeader .add-button .tab-dropdown-button.active{border:1px solid var(--multi-tab-toggle-button-active);color:var(--multi-tab-toggle-button-active)}.TabsHeader .add-button .tab-dropdown-button:hover{cursor:pointer;background-color:var(--tools-button-hover);border:1px solid var(--multi-tab-hover-border)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Tab.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.draggable-tab{height:34px;display:flex;align-items:center;padding-top:2px}.draggable-tab .close-button-wrapper{display:grid;justify-items:end}.Tab{height:32px;min-width:140px;width:180px;max-width:180px;flex-direction:row;justify-content:space-between;direction:ltr;cursor:pointer;background-color:var(--gray-2)}.Tab,.Tab .file-text{display:flex;align-items:center}.Tab .file-text{min-width:60%;padding-left:6px;justify-content:flex-start;color:var(--multi-tab-text-color)}.Tab .file-text p{font-size:var(--font-size-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize}.Tab .file-text.disabled{-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:wait}.Tab .Button{margin:6px;width:24px;height:24px}.Tab .Button .Icon{width:16px;height:16px;flex:inherit}.Tab .Button:hover{background-color:var(--view-header-button-hover)}.Tab .divider{background-color:var(--multi-tab-divider);width:1px;height:var(--multi-tab-divider-height);top:var(--multi-tab-divider-top);position:absolute}.Tab:not(.active){box-shadow:inset 0 -1px 0 0 var(--multi-tab-divider)}.Tab.active{border-top-left-radius:var(--multi-tab-border-radius);border-top-right-radius:var(--multi-tab-border-radius);box-shadow:inset 0 1px 0 0 var(--multi-tab-divider),inset 1px 0 0 0 var(--multi-tab-divider),inset -1px 0 0 0 var(--multi-tab-divider),0 0 0 0;background-color:var(--multi-tab-active-tab-background)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .Tab.active{background-color:var(--tools-header-background)}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .Tab.active{background-color:var(--tools-header-background)}}.Tab.active .file-text{color:var(--multi-tab-active-text-color)}.Tab.active .divider{display:none}.Tab:hover{border-top-left-radius:3px;border-top-right-radius:3px;box-shadow:inset 0 0 0 1px var(--multi-tab-hover-border);background-color:var(--view-header-button-hover)}.Tab:hover .divider{display:none}.Tab:hover:active{background-color:var(--multi-tab-active-tab-background)}.Tab .hide{display:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./HoverTab.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".HoverTab{height:100%;justify-content:center;align-items:center}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FlyoutMenu.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.FlyoutMenu{visibility:visible}.closed.FlyoutMenu{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FlyoutMenu{position:absolute;z-index:95;overflow:auto;display:flex;flex-direction:column;align-items:flex-start;border-radius:4px;background:var(--component-background);box-shadow:0 0 3px 0 var(--document-box-shadow);padding:6px 0}@media(max-height:500px){.App:not(.is-web-component) .FlyoutMenu{max-height:100%;display:block}}@container (max-height: 500px){.App.is-web-component .FlyoutMenu{max-height:100%;display:block}}.FlyoutMenu .row{width:100%;margin:2px 0;height:32px;display:flex;align-items:center;padding-left:12px;padding-right:18px;cursor:pointer}.FlyoutMenu .row:hover{background:var(--popup-button-hover)}.FlyoutMenu .row.active{background:var(--popup-button-active)}.FlyoutMenu .row .title{margin-left:4px}.FlyoutMenu .type{margin-top:2px;margin-bottom:8px;padding-left:12px;padding-right:18px;font-weight:700}.FlyoutMenu .divider{margin:8px}.FlyoutMenu .divider,.FlyoutMenu .dividerSmall{height:1px;background:var(--divider);width:calc(100% - 16px)}.FlyoutMenu .dividerSmall{margin:2px 8px}.FlyoutMenu.mobile{position:fixed;width:100%;left:0;bottom:0;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;border:0;box-shadow:0 0 3px 0 var(--document-box-shadow);padding-top:30px;padding-bottom:30px}.FlyoutMenu.mobile .swipe-indicator{background:var(--gray-6);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}.FlyoutMenu.mobile .row,.FlyoutMenu.mobile .type{padding:0 24px}.FlyoutMenu[data-element=pageManipulationOverlay] .Button .Icon path,.FlyoutMenu[data-element=pageManipulationOverlay] .Button .Icon rect{fill:var(--icon-color)}.FlyoutMenu[data-element=pageManipulationOverlay].mobile{z-index:101}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./CollapsedTab.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".draggable-collapsed-tab{height:32px;width:100%}.draggable-collapsed-tab:hover{background-color:var(--multi-tab-flyout-hover)}.draggable-collapsed-tab:hover,.draggable-collapsed-tab:hover .Icon{color:var(--multi-tab-flyout-hover-text)}.CollapsedTab{display:flex;align-items:center;justify-content:space-between;max-height:32px;width:100%;min-width:180px;cursor:pointer}.CollapsedTab .file-text{max-width:140px;padding-left:8px;display:flex;align-items:center;justify-content:flex-start}.CollapsedTab .file-text p{font-size:var(--font-size-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize}.CollapsedTab .file-text.disabled{-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:wait}.CollapsedTab .Button{height:24px;width:24px;margin-right:8px}.CollapsedTab .Button.hidden-button{display:none}.CollapsedTab .Button .Icon{margin:0}.CollapsedTab .Button:hover .Icon{color:var(--icon-color)}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.view-header-border{width:100%;height:1px;background:var(--border)}.HeaderToolsContainer{display:flex;align-items:flex-end;width:100%;z-index:71;height:40px;touch-action:none}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderToolsContainer{height:52px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .HeaderToolsContainer.closed{height:0}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderToolsContainer{height:52px}.App.is-web-component:not(.is-in-desktop-only-mode) .HeaderToolsContainer.closed{height:0}}.HeaderToolsContainer.closed{height:0}.MainHeader{box-sizing:content-box!important;display:flex;flex-direction:column;align-items:center;width:100%;height:36px;background:var(--view-header-background);z-index:72;touch-action:none}.MainHeader:not(.Tools) .Button:hover:enabled{background:var(--view-header-button-hover)}.MainHeader:not(.Tools) .Button.active{background:var(--view-header-button-active)}.MainHeader:not(.Tools) .Button.active .Icon{color:var(--view-header-icon-active-fill)}.MainHeader.Tools{background:var(--tools-header-background);height:40px}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .MainHeader.Tools{height:52px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .MainHeader.Tools{height:52px}}.MainHeader.OfficeTools .picked-option{text-align:left}@media(max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .MainHeader{height:52px}}@container (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .MainHeader{height:52px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ModalWrapper.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.modal-container{border-radius:4px;overflow-y:auto;max-height:100%}@media(max-height:500px){.App:not(.is-web-component) .modal-container{overflow:auto;max-height:100%}}@container (max-height: 500px){.App.is-web-component .modal-container{overflow:auto;max-height:100%}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .modal-container{width:100%;position:fixed;left:0;bottom:0;padding-top:4px;min-width:100px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .modal-container{width:100%;position:fixed;left:0;bottom:0;padding-top:4px;min-width:100px}}.modal-container{display:flex;align-items:center;flex-direction:column;border-radius:var(--border-radius);box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background)}.modal-container .wrapper{align-self:stretch;flex-grow:1;display:flex;flex-direction:column;position:relative}.modal-container .wrapper .header-container{width:100%;padding:16px;border-bottom:1px solid var(--divider);display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:16px}.modal-container .wrapper .header-container .left-header{display:flex;flex-direction:row-reverse;align-items:center;grid-gap:8px;gap:8px}.modal-container .wrapper .header-container .left-header h2{font-weight:700;font-size:16px;margin:0}.modal-container .wrapper .header-container .back-button{height:32px;width:32px;justify-content:center}.modal-container .wrapper .header-container .close-button{position:static;height:32px;width:32px}.modal-container .wrapper .header-container .close-button:hover{background:var(--tools-button-hover);border-radius:4px}.modal-container .wrapper .header-container .close-button.selected{background:var(--view-header-button-active);cursor:default}.modal-container .wrapper input.text-input-modal{width:100%;height:30px;border:1px solid var(--gray-5);border-radius:4px;color:var(--text-color);padding:4px 42px 6px 8px;margin-top:16px}.modal-container .wrapper input.text-input-modal:focus{outline:none;border:1px solid var(--focus-border)}.modal-container .wrapper input.text-input-modal:focus.correct{border:1px solid var(--focus-border)}.modal-container .wrapper input.text-input-modal::-moz-placeholder{color:var(--placeholder-text)}.modal-container .wrapper input.text-input-modal::placeholder{color:var(--placeholder-text)}.modal-container .wrapper input.text-input-modal.wrong{border:1px solid #cf0101}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PasswordModal.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.PasswordModal{visibility:visible}.closed.PasswordModal{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PasswordModal .footer .modal-button.confirm:hover{background:var(--primary-button-hover);border-color:var(--primary-button-hover);color:var(--gray-0)}.PasswordModal .footer .modal-button.confirm{background:var(--primary-button);border-color:var(--primary-button);color:var(--primary-button-text)}.PasswordModal .footer .modal-button.confirm.disabled{cursor:default;background:var(--disabled-button-color);color:var(--primary-button-text)}.PasswordModal .footer .modal-button.confirm.disabled span{color:var(--primary-button-text)}.PasswordModal .footer .modal-button.cancel:hover,.PasswordModal .footer .modal-button.secondary-btn-custom:hover{border:none;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6)}.PasswordModal .footer .modal-button.cancel,.PasswordModal .footer .modal-button.secondary-btn-custom{border:none;box-shadow:inset 0 0 0 1px var(--primary-button);color:var(--primary-button)}.PasswordModal .footer .modal-button.cancel.disabled,.PasswordModal .footer .modal-button.secondary-btn-custom.disabled{cursor:default;border:none;box-shadow:inset 0 0 0 1px rgba(43,115,171,.5);color:rgba(43,115,171,.5)}.PasswordModal .footer .modal-button.cancel.disabled span,.PasswordModal .footer .modal-button.secondary-btn-custom.disabled span{color:rgba(43,115,171,.5)}.PasswordModal{position:fixed;left:0;bottom:0;z-index:100;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background:var(--modal-negative-space)}.PasswordModal .modal-container .wrapper .modal-content{padding:10px}.PasswordModal .footer{display:flex;flex-direction:row;justify-content:flex-end;width:100%;margin-top:13px}.PasswordModal .footer.modal-footer{padding:16px;margin:0;border-top:1px solid var(--divider)}.PasswordModal .footer .modal-button{display:flex;justify-content:center;align-items:center;padding:6px 18px;margin:8px 0 0;width:auto;width:-moz-fit-content;width:fit-content;border-radius:4px;height:30px;cursor:pointer}.PasswordModal .footer .modal-button.confirm{margin-left:4px}.PasswordModal .footer .modal-button.secondary-btn-custom{border-radius:4px;padding:2px 20px 4px;cursor:pointer}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PasswordModal .footer .modal-button{padding:23px 8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .PasswordModal .footer .modal-button{padding:23px 8px}}.PasswordModal .swipe-indicator{background:var(--swipe-indicator-bg);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PasswordModal .swipe-indicator{display:none}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .PasswordModal .swipe-indicator{display:none}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PasswordModal .swipe-indicator{width:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .PasswordModal .swipe-indicator{width:32px}}.PasswordModal .modal-container{width:480px}.PasswordModal .modal-container .wrapper form{padding:16px;font-size:14px}.PasswordModal .modal-container .wrapper .incorrect-password{margin-top:6px;font-size:13px;color:#cf0101}.PasswordModal .modal-container .wrapper .modal-button{margin-top:0}.PasswordModal .modal-container .wrapper .error-modal-content{padding:2px 16px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var $ = require('../internals/export');\n\n// eslint-disable-next-line es-x/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: BUGGY }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  hypot: function hypot(value1, value2) {\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * sqrt(sum);\n  }\n});\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PageNavOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PageNavOverlay{height:32px;font-family:Lato;font-weight:700;color:var(--text-color);display:inline-flex;align-items:center;cursor:pointer;opacity:.85;position:relative;left:50%;transform:translateX(-50%);top:auto;margin-left:auto;margin-right:auto;background:var(--gray-8);border-radius:4px;z-index:0;bottom:20px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PageNavOverlay{height:36px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .PageNavOverlay{height:36px}}.PageNavOverlay.logo-bar-enabled{bottom:44px}.PageNavOverlay .side-arrow-container{padding:0;border:none;background-color:transparent;width:24px;height:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;margin:0 4px}:host(:not([data-tabbing=true])) .PageNavOverlay .side-arrow-container,html:not([data-tabbing=true]) .PageNavOverlay .side-arrow-container{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .PageNavOverlay .side-arrow-container{width:40px;height:28px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .PageNavOverlay .side-arrow-container{width:40px;height:28px}}.PageNavOverlay .side-arrow-container:hover{background:var(--gray-10)}.PageNavOverlay .side-arrow-container .side-arrow{width:16px;height:16px;color:var(--gray-0)}.PageNavOverlay .formContainer{height:100%;display:flex;align-items:center}.PageNavOverlay .formContainer form{top:-1px;position:relative;color:var(--gray-0);margin-bottom:0}.PageNavOverlay .formContainer form input{min-width:8px;padding:0;border:none;text-align:right;font-family:Lato;font-weight:700;background:transparent;color:var(--gray-0);cursor:pointer;outline:none;border-bottom:1px solid var(--icon-color);border-radius:0}.FadeOut{opacity:0;transition:opacity .3s ease}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es-x/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n  parseFloat: parseFloat\n});\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n  enumerable: true,\n  get: function get() {\n    return _DraggableCore.default;\n  }\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _clsx2 = _interopRequireDefault(require(\"clsx\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nvar _excluded = [\"axis\", \"bounds\", \"children\", \"defaultPosition\", \"defaultClassName\", \"defaultClassNameDragging\", \"defaultClassNameDragged\", \"position\", \"positionOffset\", \"scale\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define <Draggable>\n//\nvar Draggable = /*#__PURE__*/function (_React$Component) {\n  _inherits(Draggable, _React$Component);\n\n  var _super = _createSuper(Draggable);\n\n  function Draggable(props\n  /*: DraggableProps*/\n  ) {\n    var _this;\n\n    _classCallCheck(this, Draggable);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStart\", function (e, coreData) {\n      (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n      var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n\n      if (shouldStart === false) return false;\n\n      _this.setState({\n        dragging: true,\n        dragged: true\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDrag\", function (e, coreData) {\n      if (!_this.state.dragging) return false;\n      (0, _log.default)('Draggable: onDrag: %j', coreData);\n      var uiData = (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        x: uiData.x,\n        y: uiData.y\n      }; // Keep within bounds.\n\n      if (_this.props.bounds) {\n        // Save original x and y.\n        var x = newState.x,\n            y = newState.y; // Add slack to the values used to calculate bound position. This will ensure that if\n        // we start removing slack, the element won't react to it right away until it's been\n        // completely removed.\n\n        newState.x += _this.state.slackX;\n        newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n        var _getBoundPosition = (0, _positionFns.getBoundPosition)(_assertThisInitialized(_this), newState.x, newState.y),\n            _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2),\n            newStateX = _getBoundPosition2[0],\n            newStateY = _getBoundPosition2[1];\n\n        newState.x = newStateX;\n        newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n        newState.slackX = _this.state.slackX + (x - newState.x);\n        newState.slackY = _this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n        uiData.x = newState.x;\n        uiData.y = newState.y;\n        uiData.deltaX = newState.x - _this.state.x;\n        uiData.deltaY = newState.y - _this.state.y;\n      } // Short-circuit if user's callback killed it.\n\n\n      var shouldUpdate = _this.props.onDrag(e, uiData);\n\n      if (shouldUpdate === false) return false;\n\n      _this.setState(newState);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragStop\", function (e, coreData) {\n      if (!_this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n      var shouldContinue = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_assertThisInitialized(_this), coreData));\n\n      if (shouldContinue === false) return false;\n      (0, _log.default)('Draggable: onDragStop: %j', coreData);\n      var newState\n      /*: $Shape<DraggableState>*/\n      = {\n        dragging: false,\n        slackX: 0,\n        slackY: 0\n      }; // If this is a controlled component, the result of this operation will be to\n      // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n      var controlled = Boolean(_this.props.position);\n\n      if (controlled) {\n        var _this$props$position = _this.props.position,\n            x = _this$props$position.x,\n            y = _this$props$position.y;\n        newState.x = x;\n        newState.y = y;\n      }\n\n      _this.setState(newState);\n    });\n\n    _this.state = {\n      // Whether or not we are currently dragging.\n      dragging: false,\n      // Whether or not we have been dragged before.\n      dragged: false,\n      // Current transform x and y.\n      x: props.position ? props.position.x : props.defaultPosition.x,\n      y: props.position ? props.position.y : props.defaultPosition.y,\n      prevPropsPosition: _objectSpread({}, props.position),\n      // Used for compensating for out-of-bounds drags\n      slackX: 0,\n      slackY: 0,\n      // Can only determine if SVG after mounting\n      isElementSVG: false\n    };\n\n    if (props.position && !(props.onDrag || props.onStop)) {\n      // eslint-disable-next-line no-console\n      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n    }\n\n    return _this;\n  }\n\n  _createClass(Draggable, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // Check to see if the element passed is an instanceof SVGElement\n      if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n        this.setState({\n          isElementSVG: true\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.setState({\n        dragging: false\n      }); // prevents invariant if unmounted while dragging\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props$nodeRef$c, _this$props, _this$props$nodeRef;\n\n      return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 ? void 0 : (_this$props$nodeRef = _this$props.nodeRef) === null || _this$props$nodeRef === void 0 ? void 0 : _this$props$nodeRef.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: ReactElement<any>*/\n    {\n      var _clsx;\n\n      var _this$props2 = this.props,\n          axis = _this$props2.axis,\n          bounds = _this$props2.bounds,\n          children = _this$props2.children,\n          defaultPosition = _this$props2.defaultPosition,\n          defaultClassName = _this$props2.defaultClassName,\n          defaultClassNameDragging = _this$props2.defaultClassNameDragging,\n          defaultClassNameDragged = _this$props2.defaultClassNameDragged,\n          position = _this$props2.position,\n          positionOffset = _this$props2.positionOffset,\n          scale = _this$props2.scale,\n          draggableCoreProps = _objectWithoutProperties(_this$props2, _excluded);\n\n      var style = {};\n      var svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n      var controlled = Boolean(position);\n      var draggable = !controlled || this.state.dragging;\n      var validPosition = position || defaultPosition;\n      var transformOpts = {\n        // Set left if horizontal drag is enabled\n        x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n        // Set top if vertical drag is enabled\n        y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n      }; // If this element was SVG, we use the `transform` attribute.\n\n      if (this.state.isElementSVG) {\n        svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n      } else {\n        // Add a CSS transform to move the element around. This allows us to move the element around\n        // without worrying about whether or not it is relatively or absolutely positioned.\n        // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n        // has a clean slate.\n        style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n      } // Mark with class while dragging\n\n\n      var className = (0, _clsx2.default)(children.props.className || '', defaultClassName, (_clsx = {}, _defineProperty(_clsx, defaultClassNameDragging, this.state.dragging), _defineProperty(_clsx, defaultClassNameDragged, this.state.dragged), _clsx)); // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n      return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n        onStart: this.onDragStart,\n        onDrag: this.onDrag,\n        onStop: this.onDragStop\n      }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n        className: className,\n        style: _objectSpread(_objectSpread({}, children.props.style), style),\n        transform: svgTransform\n      }));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: // React 16.3+\n    // Arity (props, state)\n    function getDerivedStateFromProps(_ref, _ref2)\n    /*: ?$Shape<DraggableState>*/\n    {\n      var position = _ref.position;\n      var prevPropsPosition = _ref2.prevPropsPosition;\n\n      // Set x/y if a new position is provided in props that is different than the previous.\n      if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n        (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n          position: position,\n          prevPropsPosition: prevPropsPosition\n        });\n        return {\n          x: position.x,\n          y: position.y,\n          prevPropsPosition: _objectSpread({}, position)\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Draggable;\n}(React.Component);\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", _objectSpread(_objectSpread({}, _DraggableCore.default.propTypes), {}, {\n  /**\n   * `axis` determines which axis the draggable can move.\n   *\n   *  Note that all callbacks will still return data as normal. This only\n   *  controls flushing to the DOM.\n   *\n   * 'both' allows movement horizontally and vertically.\n   * 'x' limits movement to horizontal axis.\n   * 'y' limits movement to vertical axis.\n   * 'none' limits all movement.\n   *\n   * Defaults to 'both'.\n   */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n  /**\n   * `bounds` determines the range of movement available to the element.\n   * Available values are:\n   *\n   * 'parent' restricts movement within the Draggable's parent node.\n   *\n   * Alternatively, pass an object with the following properties, all of which are optional:\n   *\n   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n   *\n   * All values are in px.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable bounds={{right: 300, bottom: 300}}>\n   *              <div>Content</div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n    left: _propTypes.default.number,\n    right: _propTypes.default.number,\n    top: _propTypes.default.number,\n    bottom: _propTypes.default.number\n  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n  defaultClassName: _propTypes.default.string,\n  defaultClassNameDragging: _propTypes.default.string,\n  defaultClassNameDragged: _propTypes.default.string,\n\n  /**\n   * `defaultPosition` specifies the x and y that the dragged item should start at\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable defaultPosition={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  defaultPosition: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  positionOffset: _propTypes.default.shape({\n    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n  }),\n\n  /**\n   * `position`, if present, defines the current position of the element.\n   *\n   *  This is similar to how form elements in React work - if no `position` is supplied, the component\n   *  is uncontrolled.\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable position={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  position: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n}));\n\n_defineProperty(Draggable, \"defaultProps\", _objectSpread(_objectSpread({}, _DraggableCore.default.defaultProps), {}, {\n  axis: 'both',\n  bounds: false,\n  defaultClassName: 'react-draggable',\n  defaultClassNameDragging: 'react-draggable-dragging',\n  defaultClassNameDragged: 'react-draggable-dragged',\n  defaultPosition: {\n    x: 0,\n    y: 0\n  },\n  scale: 1\n}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nvar prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix()\n/*: string*/\n{\n  var _window$document, _window$document$docu;\n\n  var prop\n  /*: string*/\n  = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n  // Ensure we're running in an environment where there is actually a global\n  // `window` obj\n  if (typeof window === 'undefined') return ''; // If we're in a pseudo-browser server-side environment, this access\n  // path may not exist, so bail out if it doesn't.\n\n  var style = (_window$document = window.document) === null || _window$document === void 0 ? void 0 : (_window$document$docu = _window$document.documentElement) === null || _window$document$docu === void 0 ? void 0 : _window$document$docu.style;\n  if (!style) return '';\n  if (prop in style) return '';\n\n  for (var i = 0; i < prefixes.length; i++) {\n    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n  }\n\n  return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n  return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n  var out = '';\n  var shouldCapitalize = true;\n\n  for (var i = 0; i < str.length; i++) {\n    if (shouldCapitalize) {\n      out += str[i].toUpperCase();\n      shouldCapitalize = false;\n    } else if (str[i] === '-') {\n      shouldCapitalize = true;\n    } else {\n      out += str[i];\n    }\n  }\n\n  return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = (getPrefix()\n/*: string*/\n);\n\nexports.default = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nvar eventsFor = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend'\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup'\n  }\n}; // Default to mouse events.\n\nvar dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n  dragging: boolean,\n  lastX: number,\n  lastY: number,\n  touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreDefaultProps = {\n  allowAnyClick: boolean,\n  disabled: boolean,\n  enableUserSelectHack: boolean,\n  onStart: DraggableEventHandler,\n  onDrag: DraggableEventHandler,\n  onStop: DraggableEventHandler,\n  onMouseDown: (e: MouseEvent) => void,\n  scale: number,\n};*/\n\n/*:: export type DraggableCoreProps = {\n  ...DraggableCoreDefaultProps,\n  cancel: string,\n  children: ReactElement<any>,\n  offsetParent: HTMLElement,\n  grid: [number, number],\n  handle: string,\n  nodeRef?: ?React.ElementRef<any>,\n};*/\n\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nvar DraggableCore = /*#__PURE__*/function (_React$Component) {\n  _inherits(DraggableCore, _React$Component);\n\n  var _super = _createSuper(DraggableCore);\n\n  function DraggableCore() {\n    var _this;\n\n    _classCallCheck(this, DraggableCore);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      dragging: false,\n      // Used while dragging to determine deltas.\n      lastX: NaN,\n      lastY: NaN,\n      touchIdentifier: null\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStart\", function (e) {\n      // Make it possible to attach event handlers on top of this one.\n      _this.props.onMouseDown(e); // Only accept left-clicks.\n\n\n      if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n      var thisNode = _this.findDOMNode();\n\n      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n        throw new Error('<DraggableCore> not mounted on DragStart!');\n      }\n\n      var ownerDocument = thisNode.ownerDocument; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n      if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) {\n        return;\n      } // Prevent scrolling on mobile devices, like ipad/iphone.\n      // Important that this is after handle/cancel.\n\n\n      if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to\n      // distinguish between individual touches on multitouch screens by identifying which\n      // touchpoint was set to this element.\n\n      var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n\n      _this.setState({\n        touchIdentifier: touchIdentifier\n      }); // Get the current drag point from the event. This is used as the offset.\n\n\n      var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return; // not possible but satisfies flow\n\n      var x = position.x,\n          y = position.y; // Create an event object with all the data parents need to make a decision here.\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n      (0, _log.default)('calling', _this.props.onStart);\n\n      var shouldUpdate = _this.props.onStart(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from\n      // being selected all over the page.\n\n      if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n      // so we know how much we've moved during the drag. This allows us\n      // to drag elements around even if they have been moved, without issue.\n\n      _this.setState({\n        dragging: true,\n        lastX: x,\n        lastY: y\n      }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n      // this element. We use different events depending on whether or not we have detected that this\n      // is a touch-capable device.\n\n\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function (e) {\n      // Get the current drag point from the event. This is used as the offset.\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX,\n            deltaY = y - _this.state.lastY;\n\n        var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);\n\n        deltaX = _snapToGrid2[0];\n        deltaY = _snapToGrid2[1];\n        if (!deltaX && !deltaY) return; // skip useless drag\n\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y);\n      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n      var shouldUpdate = _this.props.onDrag(e, coreEvent);\n\n      if (shouldUpdate === false || _this.mounted === false) {\n        try {\n          // $FlowIgnore\n          _this.handleDragStop(new MouseEvent('mouseup'));\n        } catch (err) {\n          // Old browsers\n          var event = ((document.createEvent('MouseEvents')\n          /*: any*/\n          )\n          /*: MouseTouchEvent*/\n          ); // I see why this insanity was deprecated\n          // $FlowIgnore\n\n          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n          _this.handleDragStop(event);\n        }\n\n        return;\n      }\n\n      _this.setState({\n        lastX: x,\n        lastY: y\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDragStop\", function (e) {\n      if (!_this.state.dragging) return;\n      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _assertThisInitialized(_this));\n      if (position == null) return;\n      var x = position.x,\n          y = position.y; // Snap to grid if prop has been provided\n\n      if (Array.isArray(_this.props.grid)) {\n        var deltaX = x - _this.state.lastX || 0;\n        var deltaY = y - _this.state.lastY || 0;\n\n        var _snapToGrid3 = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);\n\n        var _snapToGrid4 = _slicedToArray(_snapToGrid3, 2);\n\n        deltaX = _snapToGrid4[0];\n        deltaY = _snapToGrid4[1];\n        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;\n      }\n\n      var coreEvent = (0, _positionFns.createCoreData)(_assertThisInitialized(_this), x, y); // Call event handler\n\n      var shouldContinue = _this.props.onStop(e, coreEvent);\n\n      if (shouldContinue === false || _this.mounted === false) return false;\n\n      var thisNode = _this.findDOMNode();\n\n      if (thisNode) {\n        // Remove user-select hack\n        if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n      }\n\n      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n      _this.setState({\n        dragging: false,\n        lastX: NaN,\n        lastY: NaN\n      });\n\n      if (thisNode) {\n        // Remove event handlers\n        (0, _log.default)('DraggableCore: Removing handlers');\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag);\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n      dragEventFor = eventsFor.mouse;\n      return _this.handleDragStop(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStart(e);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return _this.handleDragStop(e);\n    });\n\n    return _this;\n  }\n\n  _createClass(DraggableCore, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n      // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n      // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n\n      var thisNode = this.findDOMNode();\n\n      if (thisNode) {\n        var ownerDocument = thisNode.ownerDocument;\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n        (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n          passive: false\n        });\n        if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n      }\n    } // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n    // the underlying DOM node ourselves. See the README for more information.\n\n  }, {\n    key: \"findDOMNode\",\n    value: function findDOMNode()\n    /*: ?HTMLElement*/\n    {\n      var _this$props, _this$props2, _this$props2$nodeRef;\n\n      return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : (_this$props2$nodeRef = _this$props2.nodeRef) === null || _this$props2$nodeRef === void 0 ? void 0 : _this$props2$nodeRef.current : _reactDom.default.findDOMNode(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render()\n    /*: React.Element<any>*/\n    {\n      // Reuse the child provided\n      // This makes it flexible to use whatever element is wanted (div, ul, etc)\n      return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n        // Note: mouseMove handler is attached to document so it will still function\n        // when the user drags quickly and leaves the bounds of the element.\n        onMouseDown: this.onMouseDown,\n        onMouseUp: this.onMouseUp,\n        // onTouchStart is added on `componentDidMount` so they can be added with\n        // {passive: false}, which allows it to cancel. See\n        // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n        onTouchEnd: this.onTouchEnd\n      });\n    }\n  }]);\n\n  return DraggableCore;\n}(React.Component);\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n  /**\n   * `allowAnyClick` allows dragging using any mouse button.\n   * By default, we only accept the left button.\n   *\n   * Defaults to `false`.\n   */\n  allowAnyClick: _propTypes.default.bool,\n\n  /**\n   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n   * with the exception of `onMouseDown`, will not fire.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * By default, we add 'user-select:none' attributes to the document body\n   * to prevent ugly text selection during drag. If this is causing problems\n   * for your app, set this to `false`.\n   */\n  enableUserSelectHack: _propTypes.default.bool,\n\n  /**\n   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n   * instead of using the parent node.\n   */\n  offsetParent: function offsetParent(props\n  /*: DraggableCoreProps*/\n  , propName\n  /*: $Keys<DraggableCoreProps>*/\n  ) {\n    if (props[propName] && props[propName].nodeType !== 1) {\n      throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n    }\n  },\n\n  /**\n   * `grid` specifies the x and y that dragging should snap to.\n   */\n  grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n  /**\n   * `handle` specifies a selector to be used as the handle that initiates drag.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable handle=\".handle\">\n   *              <div>\n   *                  <div className=\"handle\">Click me to drag</div>\n   *                  <div>This is some other content</div>\n   *              </div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  handle: _propTypes.default.string,\n\n  /**\n   * `cancel` specifies a selector to be used to prevent drag initialization.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *           return(\n   *               <Draggable cancel=\".cancel\">\n   *                   <div>\n   *                     <div className=\"cancel\">You can't drag from here</div>\n   *                     <div>Dragging here works fine</div>\n   *                   </div>\n   *               </Draggable>\n   *           );\n   *       }\n   *   });\n   * ```\n   */\n  cancel: _propTypes.default.string,\n\n  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n   * Unfortunately, in order for <Draggable> to work properly, we need raw access\n   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n   * as in this example:\n   *\n   * function MyComponent() {\n   *   const nodeRef = React.useRef(null);\n   *   return (\n   *     <Draggable nodeRef={nodeRef}>\n   *       <div ref={nodeRef}>Example Target</div>\n   *     </Draggable>\n   *   );\n   * }\n   *\n   * This can be used for arbitrarily nested components, so long as the ref ends up\n   * pointing to the actual child DOM node and not a custom component.\n   */\n  nodeRef: _propTypes.default.object,\n\n  /**\n   * Called when dragging starts.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onStart: _propTypes.default.func,\n\n  /**\n   * Called while dragging.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onDrag: _propTypes.default.func,\n\n  /**\n   * Called when dragging stops.\n   * If this function returns the boolean false, the drag will remain active.\n   */\n  onStop: _propTypes.default.func,\n\n  /**\n   * A workaround option which can be passed if onMouseDown needs to be accessed,\n   * since it'll always be blocked (as there is internal use of onMouseDown)\n   */\n  onMouseDown: _propTypes.default.func,\n\n  /**\n   * `scale`, if set, applies scaling while dragging an element\n   */\n  scale: _propTypes.default.number,\n\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n  allowAnyClick: false,\n  // by default only accept left click\n  disabled: false,\n  enableUserSelectHack: true,\n  onStart: function onStart() {},\n  onDrag: function onDrag() {},\n  onStop: function onStop() {},\n  onMouseDown: function onMouseDown() {},\n  scale: 1\n});","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ReaderModeStylePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.ReaderModeStylePopup{visibility:visible}.closed.ReaderModeStylePopup{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ReaderModeStylePopup{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.ReaderModeStylePopup:empty{padding:0}.ReaderModeStylePopup .buttons{display:flex}.ReaderModeStylePopup .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ReaderModeStylePopup .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ReaderModeStylePopup .Button{width:42px;height:42px}}.ReaderModeStylePopup .Button:hover{background:var(--popup-button-hover)}.ReaderModeStylePopup .Button:hover:disabled{background:none}.ReaderModeStylePopup .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ReaderModeStylePopup .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ReaderModeStylePopup .Button .Icon{width:24px;height:24px}}.is-vertical.ReaderModeStylePopup .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.ReaderModeStylePopup .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.ReaderModeStylePopup .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.ReaderModeStylePopup .Button.main-menu-button{width:100%;height:32px}}.is-vertical.ReaderModeStylePopup .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.ReaderModeStylePopup .Button.main-menu-button span{white-space:nowrap}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.ReaderModeStylePopup{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);cursor:move}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentContainer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.document-content-container{flex-direction:column;transition:all .3s ease-in-out}.document-content-container,.document-content-container .measurement-container{display:flex;align-items:center;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;height:100%}.document-content-container .measurement-container{flex-direction:column;flex:1}.document-content-container .measurement-container .footer{pointer-events:none;position:absolute;bottom:0;left:0;z-index:55;width:100%;transition:all .3s ease}.document-content-container .measurement-container .footer>*{pointer-events:auto}.document-content-container.closed{display:none}.DocumentContainer{display:flex;flex-direction:column;flex:1;width:100%;overflow:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.DocumentContainer{margin-left:0!important;width:100%!important}}.DocumentContainer .document{margin:auto;outline:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.DocumentContainer .document.hidden{display:none}.DocumentContainer .document .pageSection[id*=pageSectionb]{box-shadow:none}.DocumentContainer .document .pageSection .pageContainer{background-color:#fff;position:relative;box-shadow:0 0 2px 0 rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.12),0 1px 3px 0 rgba(0,0,0,.12)}.DocumentContainer .document .pageSection .pageContainer span.link{cursor:pointer}.DocumentContainer .document textarea.freetext{position:absolute;z-index:20;border:0;padding:0;box-sizing:border-box;resize:none;outline:1px solid transparent}.DocumentContainer .bookmark-shortcut{z-index:40;width:20px;height:20px;top:0;right:25px;cursor:pointer}.DocumentContainer .bookmark-shortcut.filled{color:var(--primary-button)}.DocumentContainer .bookmark-shortcut.filled svg.filled{display:inline}.DocumentContainer .bookmark-shortcut.filled svg.unfilled{display:none}.DocumentContainer .bookmark-shortcut.unfilled{color:var(--placeholder-text)}.DocumentContainer .bookmark-shortcut.unfilled:hover{color:var(--primary-button)}.DocumentContainer .bookmark-shortcut.unfilled svg.filled{display:none}.DocumentContainer .bookmark-shortcut.unfilled svg.unfilled{display:inline}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ResizeBar.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".resize-bar{display:flex;align-items:center;justify-content:center;cursor:col-resize;width:14px;background-color:var(--panel-background);border-right:1px solid var(--lighter-border);border-left:1px solid var(--lighter-border);z-index:65}.resize-bar[data-element=stylePanelResizeBar]{border-color:var(--lighter-border)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./RightPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.right-panel{position:fixed;right:0;transition:transform .3s ease-in-out;height:calc(100% - 40px);max-width:calc(100% - 16px);z-index:65;background-color:var(--panel-background);display:flex!important;flex-direction:row;overflow:hidden}.right-panel.logo-bar-enabled{height:calc(100% - 24px)}.right-panel.tools-header-open{height:calc(100% - 80px)}.right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 104px)}.right-panel.multi-tab-active{height:calc(100% - 120px)}.right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:901px){.App:not(.is-web-component) .right-panel{height:calc(100% - 40px)}.App:not(.is-web-component) .right-panel.logo-bar-enabled{height:calc(100% - 64px)}.App:not(.is-web-component) .right-panel.tools-header-open{height:calc(100% - 74px)}.App:not(.is-web-component) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.App:not(.is-web-component) .right-panel.multi-tab-active{height:calc(100% - 120px)}.App:not(.is-web-component) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@container (min-width: 901px){.right-panel{height:calc(100% - 40px)}.right-panel.logo-bar-enabled{height:calc(100% - 64px)}.right-panel.tools-header-open{height:calc(100% - 74px)}.right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.right-panel.multi-tab-active{height:calc(100% - 120px)}.right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{height:calc(100% - 37px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.ModularPanel{height:calc(100% - 49px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.logo-bar-enabled{height:calc(100% - 61px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open{height:calc(100% - 76px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open.ModularPanel{height:calc(100% - 98px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active{height:calc(100% - 70px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active.ModularPanel{height:calc(100% - 85px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active.tools-header-open{height:calc(100% - 110px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.multi-tab-active.tools-header-open.ModularPanel{height:calc(100% - 134px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden{height:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 36px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{height:calc(100% - 37px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.ModularPanel{height:calc(100% - 49px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.logo-bar-enabled{height:calc(100% - 61px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open{height:calc(100% - 76px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open.ModularPanel{height:calc(100% - 98px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active{height:calc(100% - 70px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active.ModularPanel{height:calc(100% - 85px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active.tools-header-open{height:calc(100% - 110px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.multi-tab-active.tools-header-open.ModularPanel{height:calc(100% - 134px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden{height:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 36px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{height:calc(100% - 53px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.logo-bar-enabled{height:calc(100% - 77px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{height:calc(100% - 53px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.logo-bar-enabled{height:calc(100% - 77px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open{height:calc(100% - 104px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open{height:calc(100% - 104px)}.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{max-width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{max-width:100%}}.right-panel.closed{transform:translateX(100%)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{z-index:95}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{z-index:95}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{border-left:1px solid var(--side-panel-border)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{border-left:1px solid var(--side-panel-border)}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .right-panel{position:fixed;top:0;right:0;height:100%;width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .right-panel{position:fixed;top:0;right:0;height:100%;width:100%}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".FilePickerHandler{display:none}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./CopyTextHandler.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".CopyTextHandler{position:fixed;z-index:-1;opacity:0}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./PrintHandler.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".PrintHandler{height:0}@media print{body,html{height:100%}body{overflow:visible!important}.PrintHandler{display:block;height:100%}.PrintHandler.ios-print{top:0;bottom:0;left:0;right:0;position:absolute}.PrintHandler img{display:block!important;max-width:100%;max-height:100%;height:100%;width:100%;-o-object-fit:contain;object-fit:contain}.PrintHandler .img:not(:last-child){page-break-after:always}.PrintHandler .page__container{box-sizing:border-box;display:flex;flex-direction:column;padding:10px;min-height:100%;min-width:100%;font-size:10px}.PrintHandler .page__container .page__header{align-self:flex-start;font-size:2rem;margin-bottom:2rem;padding-bottom:.6rem;border-bottom:.1rem solid #000}.PrintHandler .page__container .note{display:flex;flex-direction:column;padding:.6rem;border:.1rem solid #d3d3d3;border-radius:.4rem;margin-bottom:.5rem}.PrintHandler .page__container .note .note__info{font-size:1.3rem;margin-bottom:.1rem}.PrintHandler .page__container .note .note__info--with-icon{display:flex}.PrintHandler .page__container .note .note__info--with-icon .note__icon{width:1.65rem;height:1.65rem;margin-top:-.1rem;margin-right:.2rem}.PrintHandler .page__container .note .note__info--with-icon .note__icon path:not([fill=none]){fill:currentColor}.PrintHandler .page__container .note .note__root .note__content{margin-left:.3rem}.PrintHandler .page__container .note .note__reply{margin:.5rem 0 0 2rem}.PrintHandler .page__container .note .note__content{font-size:1.2rem;margin-top:.1rem}.PrintHandler #print-handler{height:100%}#app{overflow:visible!important}.App{display:none!important}#app,body,html{max-width:none!important}iframe{display:none}}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./TextEditingPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.TextEditingPanel{padding:16px 16px 0;display:flex;flex-direction:column}.TextEditingPanel .text-editing-panel-text-style-picker{margin-top:16px}.TextEditingPanel .text-editing-panel-section .text-editing-panel-heading{font-size:var(--font-size-default);font-weight:700}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items{margin-top:16px;margin-bottom:16px}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .text-editing-panel-menu-items-buttons{display:flex;grid-gap:8px;gap:8px}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .text-editing-panel-menu-items-buttons.undo-redo{grid-gap:12px;gap:12px}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .Dropdown__items{right:auto}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .FontSizeDropdown .Dropdown__items{right:0}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .Dropdown__items .Dropdown__item{font-size:var(--font-size-default);font-family:var(--font-family)}.TextEditingPanel .text-editing-panel-section .text-editing-panel-menu-items .Dropdown .picked-option .picked-option-text{font-family:var(--font-family)}.TextEditingPanel .text-editing-panel-section .top-panel{margin-top:0}.TextEditingPanel .text-editing-panel-section .icon-grid .row{padding-top:12px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .text-editing-panel-section .icon-grid .row{padding-top:8px;float:none}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .text-editing-panel-section .icon-grid .row{padding-top:8px;float:none}}.TextEditingPanel .text-editing-panel-section .link-section{margin-top:12px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .text-editing-panel-section .link-section{margin-top:8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .text-editing-panel-section .link-section{margin-top:8px}}.TextEditingPanel .text-editing-panel-section .text-editing-row{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;grid-gap:8px;gap:8px;width:100%;margin-top:8px;margin-bottom:8px}.TextEditingPanel .text-editing-panel-section .text-editing-row .Button .Icon{width:32px;height:32px}.TextEditingPanel .text-editing-panel-section .text-editing-row .color-picker-container{width:100%}.TextEditingPanel .text-editing-panel-section .text-editing-row .ColorPalette{display:flex;flex-wrap:wrap;justify-content:left;align-content:flex-start;grid-gap:8px;gap:8px}.TextEditingPanel .text-editing-panel-section .custom-colors-pallete .cell-container{flex:none}.TextEditingPanel .text-editing-panel-section .custom-colors-section{margin-top:12px}.TextEditingPanel .text-editing-panel-section .addToCustomButton{width:24px;height:24px;padding-top:8px;align-self:center}.TextEditingPanel .text-editing-panel-section .text-editing-panel-color-palette{display:flex;margin-bottom:16px}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.TextEditingPanel .text-editing-panel-section .opacity-slider{align-items:stretch}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel{width:100%;min-width:100%;padding-top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .icon-grid .text-horizontal-alignment{float:none}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .close-container{display:flex;align-items:center;justify-content:flex-end;width:100%;padding-right:12px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .close-container .close-icon-container{z-index:3;cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .TextEditingPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel{width:100%;min-width:100%;padding-top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .icon-grid .text-horizontal-alignment{float:none}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .close-container{display:flex;align-items:center;justify-content:flex-end;width:100%;padding-right:12px}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .close-container .close-icon-container{z-index:3;cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .TextEditingPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Wv3dPropertiesPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.wv3d-properties-panel{padding:16px 0 0 16px;display:flex;flex-direction:column;overflow-y:auto;-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.wv3d-properties-panel .no-selections{flex-direction:column;display:flex;align-items:center;justify-content:center}.wv3d-properties-panel .no-selections .empty-icon,.wv3d-properties-panel .no-selections .empty-icon svg{width:100px;height:100px}.wv3d-properties-panel .no-selections .empty-icon *{fill:var(--gray-5);color:var(--gray-5)}.wv3d-properties-panel .no-selections .empty-text{margin-top:4px;padding-left:4px;padding-right:4px;width:68%;text-align:center}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel{width:100%;min-width:100%;padding-top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .wv3d-properties-panel .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel{width:100%;min-width:100%;padding-top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .wv3d-properties-panel .close-container .close-icon-container .close-icon{width:24px;height:24px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ModularPanel.modular-ui-panel .BookmarksPanel .bookmark-outline-footer .multi-selection-button:hover:not(.disabled),.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .documentControls .documentControlsButton button:hover,.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .documentControls .PageControlContainer button:hover,.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .thumbnail-slider-container Button:hover:not(.active),.ModularPanel.modular-ui-panel.ModularPanel .Thumbnail.active .thumbnailControls-overlay.modular-ui .Button:hover:not(.active),.ModularPanel.modular-ui-panel .OutlinesPanel .bookmark-outline-footer .multi-selection-button:hover:not(.disabled){cursor:pointer;border:none;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6);background-color:var(--faded-component-background)}.ModularPanel.modular-ui-panel.ModularPanel .Thumbnail.active .thumbnailControls-overlay.modular-ui .Button.active{border:none;box-shadow:inset 0 0 0 1px var(--blue-5);color:var(--blue-5);background-color:var(--faded-component-background)}.ModularPanel.modular-ui-panel.ModularPanel .Thumbnail.active .thumbnailControls-overlay.modular-ui .Button.active .Icon{color:var(--blue-5)}.ModularPanel{z-index:65;background-color:var(--panel-background);display:flex;position:fixed;overflow:hidden;transition:transform .3s ease-in-out;max-width:calc(100% - 16px);height:calc(100% - 40px)}.ModularPanel h1{margin:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel{max-width:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel{max-width:100%}}.ModularPanel.logo-bar-enabled{height:calc(100% - 24px)}.ModularPanel.tools-header-open{height:calc(100% - 80px)}.ModularPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 104px)}.ModularPanel.multi-tab-active{height:calc(100% - 120px)}.ModularPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.multi-tab-active{height:calc(100% - 140px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.multi-tab-active{height:calc(100% - 140px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:901px){.App:not(.is-web-component) .ModularPanel{height:calc(100% - 40px)}.App:not(.is-web-component) .ModularPanel.logo-bar-enabled{height:calc(100% - 64px)}.App:not(.is-web-component) .ModularPanel.tools-header-open{height:calc(100% - 74px)}.App:not(.is-web-component) .ModularPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.App:not(.is-web-component) .ModularPanel.multi-tab-active{height:calc(100% - 120px)}.App:not(.is-web-component) .ModularPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@container (min-width: 901px){.ModularPanel{height:calc(100% - 40px)}.ModularPanel.logo-bar-enabled{height:calc(100% - 64px)}.ModularPanel.tools-header-open{height:calc(100% - 74px)}.ModularPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 98px)}.ModularPanel.multi-tab-active{height:calc(100% - 120px)}.ModularPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 144px)}}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel{height:calc(100% - 37px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.ModularPanel{height:calc(100% - 49px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.logo-bar-enabled{height:calc(100% - 61px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-open{height:calc(100% - 76px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-open.ModularPanel{height:calc(100% - 98px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.multi-tab-active{height:calc(100% - 70px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.multi-tab-active.ModularPanel{height:calc(100% - 85px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.multi-tab-active.tools-header-open{height:calc(100% - 110px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.multi-tab-active.tools-header-open.ModularPanel{height:calc(100% - 134px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-and-header-hidden{height:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 36px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel{height:calc(100% - 37px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.ModularPanel{height:calc(100% - 49px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.logo-bar-enabled{height:calc(100% - 61px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-open{height:calc(100% - 76px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-open.ModularPanel{height:calc(100% - 98px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 100px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.multi-tab-active{height:calc(100% - 70px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.multi-tab-active.ModularPanel{height:calc(100% - 85px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.multi-tab-active.logo-bar-enabled{height:calc(100% - 139px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.multi-tab-active.tools-header-open{height:calc(100% - 110px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.multi-tab-active.tools-header-open.ModularPanel{height:calc(100% - 134px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-and-header-hidden{height:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-and-header-hidden.logo-bar-enabled{height:calc(100% - 24px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-and-header-hidden.multi-tab-active{height:calc(100% - 36px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-and-header-hidden.multi-tab-active.logo-bar-enabled{height:calc(100% - 164px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel{height:calc(100% - 53px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.logo-bar-enabled{height:calc(100% - 77px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel{height:calc(100% - 53px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.logo-bar-enabled{height:calc(100% - 77px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-open{height:calc(100% - 104px)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-open{height:calc(100% - 104px)}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel.tools-header-open.logo-bar-enabled{height:calc(100% - 128px)}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel{border-right:1px solid var(--side-panel-border)}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel{border-right:1px solid var(--side-panel-border)}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel{position:fixed;top:0;left:0;height:100%;width:100%;z-index:95}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel{position:fixed;top:0;left:0;height:100%;width:100%;z-index:95}}.ModularPanel .ModularPanel-container{display:flex;flex-direction:column;padding:16px;overflow-y:auto}.ModularPanel .ModularPanel-container.searchPanel{padding:0;overflow-x:hidden}.ModularPanel .ModularPanel-container.searchPanel .SearchPanel{padding:16px 16px 0}.ModularPanel .ModularPanel-container.searchPanel .SearchPanel .results .ReactVirtualized__List,.ModularPanel .ModularPanel-container.searchPanel .SearchPanel .SearchOverlay{padding-right:16px}.ModularPanel .ModularPanel-container.notesPanel{padding:0}.ModularPanel .ModularPanel-container.notesPanel .notes-panel-container{position:static}.ModularPanel .ModularPanel-container.notesPanel .notes-panel-container .NotesPanel{width:100%}.ModularPanel .ModularPanel-container.notesPanel .notes-panel-container .NotesPanel .normal-notes-container,.ModularPanel .ModularPanel-container.notesPanel .notes-panel-container .NotesPanel .virtualized-notes-container,.ModularPanel .ModularPanel-container.notesPanel .notes-panel-container .NotesPanel [data-element=notesPanelHeader]{padding-right:16px}.ModularPanel .ModularPanel-container.textEditingPanel{padding:0;overflow-y:unset}.ModularPanel .ModularPanel-container.textEditingPanel .text-editing-panel-heading{font-size:14px}.ModularPanel .ModularPanel-container .PortfolioPanel{overflow:auto;-webkit-overflow-scrolling:touch;flex:1;flex-direction:column;padding:0}.ModularPanel .ModularPanel-container .documentControls{margin-top:16px;border-top:1.5px solid var(--border)}.ModularPanel .ModularPanel-container .documentControls .divider{display:none}.ModularPanel .ModularPanel-container .documentControlsInput .documentControlsButton,.ModularPanel .ModularPanel-container .documentControlsInput input{height:32px}.ModularPanel .ModularPanel-container .bookmark-outline-footer,.ModularPanel .ModularPanel-container .documentControlsInput{padding:12px 0 20px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel .ModularPanel-container{padding-top:0;width:100%;min-width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel .ModularPanel-container .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;min-height:64px;width:100%;padding-right:5px;top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel .ModularPanel-container .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ModularPanel .ModularPanel-container .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel .ModularPanel-container{padding-top:0;width:100%;min-width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel .ModularPanel-container .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;min-height:64px;width:100%;padding-right:5px;top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel .ModularPanel-container .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .ModularPanel .ModularPanel-container .close-container .close-icon-container .close-icon{width:24px;height:24px}}.ModularPanel.right{right:0}.ModularPanel.left{left:0}.ModularPanel[\\\\:not-has\\\\(.resize-bar\\\\)].right{border-left:1px solid var(--side-panel-border)}.ModularPanel:not(:has(.resize-bar)).right{border-left:1px solid var(--side-panel-border)}.ModularPanel[\\\\:not-has\\\\(.resize-bar\\\\)].left{border-right:1px solid var(--side-panel-border)}.ModularPanel:not(:has(.resize-bar)).left{border-right:1px solid var(--side-panel-border)}.ModularPanel.closed{display:none}.ModularPanel.right.closed{transform:translateX(100%);left:auto}.ModularPanel.left.closed{transform:translateX(-100%)}.ModularPanel.modular-ui-panel{background-color:var(--gray-0)}.ModularPanel.modular-ui-panel .resize-bar{border-color:var(--lighter-border)}.ModularPanel.modular-ui-panel button.Dropdown{border-color:var(--border)}.ModularPanel.modular-ui-panel button.Dropdown:disabled{border-color:var(--lighter-border)}.ModularPanel.modular-ui-panel button.Dropdown:disabled .Icon{color:var(--lighter-border)}.ModularPanel.modular-ui-panel .bookmark-outline-footer{border-top:1px solid var(--lighter-border)}.ModularPanel.modular-ui-panel .msg.msg-no-bookmark-outline{color:var(--gray-7)}.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .documentControls{border-color:var(--lighter-border)}.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .documentControls .PageControlContainer{margin-top:16px}.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .thumbnail-slider-container{width:100%;margin-bottom:16px}.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .thumbnail-slider-container .slider-element-container{margin:0}.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .thumbnail-slider-container Button{width:24px;height:24px;padding:4px;margin:4px}.ModularPanel.modular-ui-panel.ModularPanel .ModularPanel-container .thumbnail-slider-container Button .Icon{width:16px;height:auto}.ModularPanel.modular-ui-panel.ModularPanel .Thumbnail.selected .container canvas{background-color:rgba(43,115,171,.1)}.ModularPanel.modular-ui-panel.ModularPanel .Thumbnail.active .container .page-image{border:1px solid var(--focus-border)}.ModularPanel.modular-ui-panel.ModularPanel .Thumbnail.active .thumbnailControls-overlay.modular-ui{padding-left:2px}.ModularPanel.modular-ui-panel .BookmarksPanel,.ModularPanel.modular-ui-panel .OutlinesPanel{padding:0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./PropertyKeyValuePair.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".property-pair{margin-left:24px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;align-items:center;padding-bottom:10px;-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.property-key{flex-basis:140px}.property-key,.property-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.property-value{flex-basis:300px;padding-left:20px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Group.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".group-title{display:flex;align-items:center;margin-bottom:5px;-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.dropdown.active{visibility:visible}.dropdown.inactive{visibility:hidden;display:none}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./HeaderTitle.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".header-value{color:var(--gray-7)}.header-title{font-size:16px}\", \"\"]);\n\n// exports\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n  var parts = split(input, '.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] == '') {\n    parts.length--;\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part == '') return input;\n    radix = 10;\n    if (part.length > 1 && charAt(part, 0) == '0') {\n      radix = exec(HEX_START, part) ? 16 : 8;\n      part = stringSlice(part, radix == 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n      number = parseInt(part, radix);\n    }\n    push(numbers, number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index == partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = pop(numbers);\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var chr = function () {\n    return charAt(input, pointer);\n  };\n\n  if (chr() == ':') {\n    if (charAt(input, 1) != ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (chr()) {\n    if (pieceIndex == 8) return;\n    if (chr() == ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && exec(HEX, chr())) {\n      value = value * 16 + parseInt(chr(), 16);\n      pointer++;\n      length++;\n    }\n    if (chr() == '.') {\n      if (length == 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (chr()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (chr() == '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!exec(DIGIT, chr())) return;\n        while (exec(DIGIT, chr())) {\n          number = parseInt(chr(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece == 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n      }\n      if (numbersSeen != 4) return;\n      break;\n    } else if (chr() == ':') {\n      pointer++;\n      if (!chr()) return;\n    } else if (chr()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex != 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex != 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      unshift(result, host % 256);\n      host = floor(host / 256);\n    } return join(result, '.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += numberToString(host[index], 16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n  var code = codeAt(chr, 0);\n  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length == 2 && exec(ALPHA, charAt(string, 0))\n    && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n    string.length == 2 ||\n    ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n  return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n  segment = toLowerCase(segment);\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n  var urlString = $toString(url);\n  var baseState, failure, searchParams;\n  if (isBase) {\n    failure = this.parse(urlString);\n    if (failure) throw TypeError(failure);\n    this.searchParams = null;\n  } else {\n    if (base !== undefined) baseState = new URLState(base, true);\n    failure = this.parse(urlString, null, baseState);\n    if (failure) throw TypeError(failure);\n    searchParams = getInternalSearchParamsState(new URLSearchParams());\n    searchParams.bindURL(this);\n    this.searchParams = searchParams;\n  }\n};\n\nURLState.prototype = {\n  type: 'URL',\n  // https://url.spec.whatwg.org/#url-parsing\n  // eslint-disable-next-line max-statements -- TODO\n  parse: function (input, stateOverride, base) {\n    var url = this;\n    var state = stateOverride || SCHEME_START;\n    var pointer = 0;\n    var buffer = '';\n    var seenAt = false;\n    var seenBracket = false;\n    var seenPasswordToken = false;\n    var codePoints, chr, bufferCodePoints, failure;\n\n    input = $toString(input);\n\n    if (!stateOverride) {\n      url.scheme = '';\n      url.username = '';\n      url.password = '';\n      url.host = null;\n      url.port = null;\n      url.path = [];\n      url.query = null;\n      url.fragment = null;\n      url.cannotBeABaseURL = false;\n      input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n    }\n\n    input = replace(input, TAB_AND_NEW_LINE, '');\n\n    codePoints = arrayFrom(input);\n\n    while (pointer <= codePoints.length) {\n      chr = codePoints[pointer];\n      switch (state) {\n        case SCHEME_START:\n          if (chr && exec(ALPHA, chr)) {\n            buffer += toLowerCase(chr);\n            state = SCHEME;\n          } else if (!stateOverride) {\n            state = NO_SCHEME;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case SCHEME:\n          if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n            buffer += toLowerCase(chr);\n          } else if (chr == ':') {\n            if (stateOverride && (\n              (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n              (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n              (url.scheme == 'file' && !url.host)\n            )) return;\n            url.scheme = buffer;\n            if (stateOverride) {\n              if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n              return;\n            }\n            buffer = '';\n            if (url.scheme == 'file') {\n              state = FILE;\n            } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n              state = SPECIAL_RELATIVE_OR_AUTHORITY;\n            } else if (url.isSpecial()) {\n              state = SPECIAL_AUTHORITY_SLASHES;\n            } else if (codePoints[pointer + 1] == '/') {\n              state = PATH_OR_AUTHORITY;\n              pointer++;\n            } else {\n              url.cannotBeABaseURL = true;\n              push(url.path, '');\n              state = CANNOT_BE_A_BASE_URL_PATH;\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            state = NO_SCHEME;\n            pointer = 0;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case NO_SCHEME:\n          if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n          if (base.cannotBeABaseURL && chr == '#') {\n            url.scheme = base.scheme;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            url.cannotBeABaseURL = true;\n            state = FRAGMENT;\n            break;\n          }\n          state = base.scheme == 'file' ? FILE : RELATIVE;\n          continue;\n\n        case SPECIAL_RELATIVE_OR_AUTHORITY:\n          if (chr == '/' && codePoints[pointer + 1] == '/') {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n            pointer++;\n          } else {\n            state = RELATIVE;\n            continue;\n          } break;\n\n        case PATH_OR_AUTHORITY:\n          if (chr == '/') {\n            state = AUTHORITY;\n            break;\n          } else {\n            state = PATH;\n            continue;\n          }\n\n        case RELATIVE:\n          url.scheme = base.scheme;\n          if (chr == EOF) {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n          } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n            state = RELATIVE_SLASH;\n          } else if (chr == '?') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.path.length--;\n            state = PATH;\n            continue;\n          } break;\n\n        case RELATIVE_SLASH:\n          if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          } else if (chr == '/') {\n            state = AUTHORITY;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            state = PATH;\n            continue;\n          } break;\n\n        case SPECIAL_AUTHORITY_SLASHES:\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n          pointer++;\n          break;\n\n        case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n          if (chr != '/' && chr != '\\\\') {\n            state = AUTHORITY;\n            continue;\n          } break;\n\n        case AUTHORITY:\n          if (chr == '@') {\n            if (seenAt) buffer = '%40' + buffer;\n            seenAt = true;\n            bufferCodePoints = arrayFrom(buffer);\n            for (var i = 0; i < bufferCodePoints.length; i++) {\n              var codePoint = bufferCodePoints[i];\n              if (codePoint == ':' && !seenPasswordToken) {\n                seenPasswordToken = true;\n                continue;\n              }\n              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n              if (seenPasswordToken) url.password += encodedCodePoints;\n              else url.username += encodedCodePoints;\n            }\n            buffer = '';\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (seenAt && buffer == '') return INVALID_AUTHORITY;\n            pointer -= arrayFrom(buffer).length + 1;\n            buffer = '';\n            state = HOST;\n          } else buffer += chr;\n          break;\n\n        case HOST:\n        case HOSTNAME:\n          if (stateOverride && url.scheme == 'file') {\n            state = FILE_HOST;\n            continue;\n          } else if (chr == ':' && !seenBracket) {\n            if (buffer == '') return INVALID_HOST;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PORT;\n            if (stateOverride == HOSTNAME) return;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (url.isSpecial() && buffer == '') return INVALID_HOST;\n            if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PATH_START;\n            if (stateOverride) return;\n            continue;\n          } else {\n            if (chr == '[') seenBracket = true;\n            else if (chr == ']') seenBracket = false;\n            buffer += chr;\n          } break;\n\n        case PORT:\n          if (exec(DIGIT, chr)) {\n            buffer += chr;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            stateOverride\n          ) {\n            if (buffer != '') {\n              var port = parseInt(buffer, 10);\n              if (port > 0xFFFF) return INVALID_PORT;\n              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n              buffer = '';\n            }\n            if (stateOverride) return;\n            state = PATH_START;\n            continue;\n          } else return INVALID_PORT;\n          break;\n\n        case FILE:\n          url.scheme = 'file';\n          if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n          else if (base && base.scheme == 'file') {\n            if (chr == EOF) {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n            } else if (chr == '?') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n              url.fragment = '';\n              state = FRAGMENT;\n            } else {\n              if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.shortenPath();\n              }\n              state = PATH;\n              continue;\n            }\n          } else {\n            state = PATH;\n            continue;\n          } break;\n\n        case FILE_SLASH:\n          if (chr == '/' || chr == '\\\\') {\n            state = FILE_HOST;\n            break;\n          }\n          if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n            else url.host = base.host;\n          }\n          state = PATH;\n          continue;\n\n        case FILE_HOST:\n          if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n            if (!stateOverride && isWindowsDriveLetter(buffer)) {\n              state = PATH;\n            } else if (buffer == '') {\n              url.host = '';\n              if (stateOverride) return;\n              state = PATH_START;\n            } else {\n              failure = url.parseHost(buffer);\n              if (failure) return failure;\n              if (url.host == 'localhost') url.host = '';\n              if (stateOverride) return;\n              buffer = '';\n              state = PATH_START;\n            } continue;\n          } else buffer += chr;\n          break;\n\n        case PATH_START:\n          if (url.isSpecial()) {\n            state = PATH;\n            if (chr != '/' && chr != '\\\\') continue;\n          } else if (!stateOverride && chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            state = PATH;\n            if (chr != '/') continue;\n          } break;\n\n        case PATH:\n          if (\n            chr == EOF || chr == '/' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            (!stateOverride && (chr == '?' || chr == '#'))\n          ) {\n            if (isDoubleDot(buffer)) {\n              url.shortenPath();\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else if (isSingleDot(buffer)) {\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else {\n              if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n                if (url.host) url.host = '';\n                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n              }\n              push(url.path, buffer);\n            }\n            buffer = '';\n            if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n              while (url.path.length > 1 && url.path[0] === '') {\n                shift(url.path);\n              }\n            }\n            if (chr == '?') {\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.fragment = '';\n              state = FRAGMENT;\n            }\n          } else {\n            buffer += percentEncode(chr, pathPercentEncodeSet);\n          } break;\n\n        case CANNOT_BE_A_BASE_URL_PATH:\n          if (chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case QUERY:\n          if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n            else if (chr == '#') url.query += '%23';\n            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case FRAGMENT:\n          if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n          break;\n      }\n\n      pointer++;\n    }\n  },\n  // https://url.spec.whatwg.org/#host-parsing\n  parseHost: function (input) {\n    var result, codePoints, index;\n    if (charAt(input, 0) == '[') {\n      if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n      result = parseIPv6(stringSlice(input, 1, -1));\n      if (!result) return INVALID_HOST;\n      this.host = result;\n    // opaque host\n    } else if (!this.isSpecial()) {\n      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n      result = '';\n      codePoints = arrayFrom(input);\n      for (index = 0; index < codePoints.length; index++) {\n        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n      }\n      this.host = result;\n    } else {\n      input = toASCII(input);\n      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n      result = parseIPv4(input);\n      if (result === null) return INVALID_HOST;\n      this.host = result;\n    }\n  },\n  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n  cannotHaveUsernamePasswordPort: function () {\n    return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n  },\n  // https://url.spec.whatwg.org/#include-credentials\n  includesCredentials: function () {\n    return this.username != '' || this.password != '';\n  },\n  // https://url.spec.whatwg.org/#is-special\n  isSpecial: function () {\n    return hasOwn(specialSchemes, this.scheme);\n  },\n  // https://url.spec.whatwg.org/#shorten-a-urls-path\n  shortenPath: function () {\n    var path = this.path;\n    var pathSize = path.length;\n    if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n      path.length--;\n    }\n  },\n  // https://url.spec.whatwg.org/#concept-url-serializer\n  serialize: function () {\n    var url = this;\n    var scheme = url.scheme;\n    var username = url.username;\n    var password = url.password;\n    var host = url.host;\n    var port = url.port;\n    var path = url.path;\n    var query = url.query;\n    var fragment = url.fragment;\n    var output = scheme + ':';\n    if (host !== null) {\n      output += '//';\n      if (url.includesCredentials()) {\n        output += username + (password ? ':' + password : '') + '@';\n      }\n      output += serializeHost(host);\n      if (port !== null) output += ':' + port;\n    } else if (scheme == 'file') output += '//';\n    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n    if (query !== null) output += '?' + query;\n    if (fragment !== null) output += '#' + fragment;\n    return output;\n  },\n  // https://url.spec.whatwg.org/#dom-url-href\n  setHref: function (href) {\n    var failure = this.parse(href);\n    if (failure) throw TypeError(failure);\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-origin\n  getOrigin: function () {\n    var scheme = this.scheme;\n    var port = this.port;\n    if (scheme == 'blob') try {\n      return new URLConstructor(scheme.path[0]).origin;\n    } catch (error) {\n      return 'null';\n    }\n    if (scheme == 'file' || !this.isSpecial()) return 'null';\n    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n  },\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  getProtocol: function () {\n    return this.scheme + ':';\n  },\n  setProtocol: function (protocol) {\n    this.parse($toString(protocol) + ':', SCHEME_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-username\n  getUsername: function () {\n    return this.username;\n  },\n  setUsername: function (username) {\n    var codePoints = arrayFrom($toString(username));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.username = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-password\n  getPassword: function () {\n    return this.password;\n  },\n  setPassword: function (password) {\n    var codePoints = arrayFrom($toString(password));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.password = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-host\n  getHost: function () {\n    var host = this.host;\n    var port = this.port;\n    return host === null ? ''\n      : port === null ? serializeHost(host)\n      : serializeHost(host) + ':' + port;\n  },\n  setHost: function (host) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(host, HOST);\n  },\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  getHostname: function () {\n    var host = this.host;\n    return host === null ? '' : serializeHost(host);\n  },\n  setHostname: function (hostname) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(hostname, HOSTNAME);\n  },\n  // https://url.spec.whatwg.org/#dom-url-port\n  getPort: function () {\n    var port = this.port;\n    return port === null ? '' : $toString(port);\n  },\n  setPort: function (port) {\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    port = $toString(port);\n    if (port == '') this.port = null;\n    else this.parse(port, PORT);\n  },\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  getPathname: function () {\n    var path = this.path;\n    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n  },\n  setPathname: function (pathname) {\n    if (this.cannotBeABaseURL) return;\n    this.path = [];\n    this.parse(pathname, PATH_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-search\n  getSearch: function () {\n    var query = this.query;\n    return query ? '?' + query : '';\n  },\n  setSearch: function (search) {\n    search = $toString(search);\n    if (search == '') {\n      this.query = null;\n    } else {\n      if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n      this.query = '';\n      this.parse(search, QUERY);\n    }\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  getSearchParams: function () {\n    return this.searchParams.facade;\n  },\n  // https://url.spec.whatwg.org/#dom-url-hash\n  getHash: function () {\n    var fragment = this.fragment;\n    return fragment ? '#' + fragment : '';\n  },\n  setHash: function (hash) {\n    hash = $toString(hash);\n    if (hash == '') {\n      this.fragment = null;\n      return;\n    }\n    if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n    this.fragment = '';\n    this.parse(hash, FRAGMENT);\n  },\n  update: function () {\n    this.query = this.searchParams.serialize() || null;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLPrototype);\n  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n  var state = setInternalState(that, new URLState(url, false, base));\n  if (!DESCRIPTORS) {\n    that.href = state.serialize();\n    that.origin = state.getOrigin();\n    that.protocol = state.getProtocol();\n    that.username = state.getUsername();\n    that.password = state.getPassword();\n    that.host = state.getHost();\n    that.hostname = state.getHostname();\n    that.port = state.getPort();\n    that.pathname = state.getPathname();\n    that.search = state.getSearch();\n    that.searchParams = state.getSearchParams();\n    that.hash = state.getHash();\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n  return {\n    get: function () {\n      return getInternalURLState(this)[getter]();\n    },\n    set: setter && function (value) {\n      return getInternalURLState(this)[setter](value);\n    },\n    configurable: true,\n    enumerable: true\n  };\n};\n\nif (DESCRIPTORS) {\n  // `URL.prototype.href` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-href\n  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n  // `URL.prototype.origin` getter\n  // https://url.spec.whatwg.org/#dom-url-origin\n  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n  // `URL.prototype.protocol` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n  // `URL.prototype.username` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-username\n  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n  // `URL.prototype.password` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-password\n  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n  // `URL.prototype.host` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-host\n  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n  // `URL.prototype.hostname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n  // `URL.prototype.port` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-port\n  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n  // `URL.prototype.pathname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n  // `URL.prototype.search` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-search\n  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n  // `URL.prototype.searchParams` getter\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n  // `URL.prototype.hash` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hash\n  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar RangeError = global.RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = charCodeAt(string, counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = charCodeAt(string, counter++);\n      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        push(output, value);\n        counter--;\n      }\n    } else {\n      push(output, value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > baseMinusTMin * tMax >> 1) {\n    delta = floor(delta / baseMinusTMin);\n    k += base;\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      push(output, fromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    push(output, delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue == n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        var k = base;\n        while (true) {\n          var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n          k += base;\n        }\n\n        push(output, fromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n\n    delta++;\n    n++;\n  }\n  return join(output, '');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n  }\n  return join(encoded, '.');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = toString(requireObjectCoercible($this));\n    var intMaxLength = toLength(maxLength);\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : toString(fillString);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr == '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./AudioPlaybackPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.AudioPlaybackPopupContainer{visibility:visible}.closed.AudioPlaybackPopupContainer{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.AudioPlaybackPopupContainer{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.AudioPlaybackPopupContainer:empty{padding:0}.AudioPlaybackPopupContainer .buttons{display:flex}.AudioPlaybackPopupContainer .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .AudioPlaybackPopupContainer .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .AudioPlaybackPopupContainer .Button{width:42px;height:42px}}.AudioPlaybackPopupContainer .Button:hover{background:var(--popup-button-hover)}.AudioPlaybackPopupContainer .Button:hover:disabled{background:none}.AudioPlaybackPopupContainer .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .AudioPlaybackPopupContainer .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .AudioPlaybackPopupContainer .Button .Icon{width:24px;height:24px}}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button{width:100%;height:32px}}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.AudioPlaybackPopupContainer .Button.main-menu-button span{white-space:nowrap}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.AudioPlaybackPopup .audio-popup-draggable-header{height:15px}.AudioPlaybackPopup .audio-popup-draggable-header,.AudioPlaybackPopup .audio-popup-ui{display:flex;justify-content:center;align-items:center}.AudioPlaybackPopup span.current-time,.AudioPlaybackPopup span.duration{padding:0 5px}.AudioPlaybackPopupContainer{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);width:325px;top:90%;left:calc(50% - 150px)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.DocumentCropPopupContainer{visibility:visible}.closed.DocumentCropPopupContainer{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.DocumentCropPopupContainer .DocumentCropPopup .Button.save-button:hover:not(:disabled){background:var(--primary-button-hover);border-color:var(--primary-button-hover);color:var(--gray-0)}.DocumentCropPopupContainer .DocumentCropPopup .Button.save-button:disabled{cursor:default;background:var(--disabled-button-color);color:var(--primary-button-text)}.DocumentCropPopupContainer .DocumentCropPopup .Button.cancel-button:hover{border:none;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6)}.DocumentCropPopupContainer{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.DocumentCropPopupContainer:empty{padding:0}.DocumentCropPopupContainer .buttons{display:flex}.DocumentCropPopupContainer .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .Button{width:42px;height:42px}}.DocumentCropPopupContainer .Button:hover{background:var(--popup-button-hover)}.DocumentCropPopupContainer .Button:hover:disabled{background:none}.DocumentCropPopupContainer .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .Button .Icon{width:24px;height:24px}}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.DocumentCropPopupContainer .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.DocumentCropPopupContainer .Button.main-menu-button{width:100%;height:32px}}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.DocumentCropPopupContainer .Button.main-menu-button span{white-space:nowrap}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.DocumentCropPopupContainer{border-radius:var(--border-radius);box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);top:0;z-index:100}.DocumentCropPopupContainer .DocumentCropPopup{width:250px}.DocumentCropPopupContainer .DocumentCropPopup .document-crop-section{padding:16px;display:flex;flex-direction:column}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .DocumentCropPopup .document-crop-section{padding:0 16px 16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .DocumentCropPopup .document-crop-section{padding:0 16px 16px}}.DocumentCropPopupContainer .DocumentCropPopup .document-crop-section .ui__choice{margin:0;padding-bottom:12px}.DocumentCropPopupContainer .DocumentCropPopup .multi-page-crop-wrapper{display:flex;grid-column-gap:4px;-moz-column-gap:4px;column-gap:4px}.DocumentCropPopupContainer .DocumentCropPopup .multi-page-crop-wrapper .multi-page-crop-example{color:var(--faded-text)}.DocumentCropPopupContainer .DocumentCropPopup .multi-page-crop-wrapper .ui__choice{padding-bottom:0}.DocumentCropPopupContainer .DocumentCropPopup .document-crop-page-input-container{margin-top:12px;margin-left:23px;height:32px;display:flex}.DocumentCropPopupContainer .DocumentCropPopup .document-crop-page-input-container .PageNumberInput,.DocumentCropPopupContainer .DocumentCropPopup .page-number-input{width:100%}.DocumentCropPopupContainer .DocumentCropPopup .extra-space-section{height:var(--padding)}.DocumentCropPopupContainer .DocumentCropPopup .menu-title{padding-bottom:16px;font-size:var(--font-size-default);margin:0}.DocumentCropPopupContainer .DocumentCropPopup .collapsible-page-group-header>button{font-weight:700;margin:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .DocumentCropPopup .collapsible-page-group-header>button{padding:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .DocumentCropPopup .collapsible-page-group-header>button{padding:16px}}.DocumentCropPopupContainer .DocumentCropPopup .crop-inactive>.collapsible-page-group-header>button{color:var(--gray-6);pointer-events:none}.DocumentCropPopupContainer .DocumentCropPopup .crop-inactive>.collapsible-page-group-header>button .Icon{opacity:.5}.DocumentCropPopupContainer .DocumentCropPopup .menu-items{padding:6px 4px}.DocumentCropPopupContainer .DocumentCropPopup .Icon{height:16px;width:16px}.DocumentCropPopupContainer .DocumentCropPopup .divider{border-top:1px solid var(--divider);width:100%}.DocumentCropPopupContainer .DocumentCropPopup .buttons{padding:12px;text-align:right;font-size:13px;display:flex;justify-content:space-between;box-sizing:border-box;height:56px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .DocumentCropPopup .Button{height:32px;margin:0;font-size:13px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .DocumentCropPopup .Button{height:32px;margin:0;font-size:13px}}.DocumentCropPopupContainer .DocumentCropPopup .Button.save-button{color:var(--primary-button-text);padding:6px 16px;background:var(--primary-button);border-radius:4px;border:0;height:32px;width:-moz-fit-content;width:fit-content;cursor:pointer}.DocumentCropPopupContainer .DocumentCropPopup .Button.save-button:hover:not(:disabled){background-color:var(--primary-button-hover)}.DocumentCropPopupContainer .DocumentCropPopup .Button.save-button:disabled{cursor:auto;border:0}.DocumentCropPopupContainer .DocumentCropPopup .Button.save-button:disabled span{color:var(--primary-button-text)}.DocumentCropPopupContainer .DocumentCropPopup .Button.cancel-button{cursor:pointer;background:none;border:0;color:var(--secondary-button-text);padding:6px 16px;margin-right:4px;height:32px;width:-moz-fit-content;width:fit-content}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .DocumentCropPopup .Button.cancel-button{margin-right:0;margin-left:8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .DocumentCropPopup .Button.cancel-button{margin-right:0;margin-left:8px}}.DocumentCropPopupContainer .DocumentCropPopup .Button.cancel-button:hover{background-color:transparent;box-shadow:none}.DocumentCropPopupContainer .DocumentCropPopup .Button.cancel-button:focus{outline:none}.DocumentCropPopupContainer .DocumentCropPopup .Button.cancel-button:disabled{opacity:.5;cursor:auto;color:var(--secondary-button-text)}.DocumentCropPopupContainer .crop-dimensions{display:flex;flex-wrap:wrap;align-items:center}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input-container{display:flex;flex-wrap:wrap;grid-column-gap:12px;-moz-column-gap:12px;column-gap:12px;padding-top:16px;grid-row-gap:8px;row-gap:8px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input-container{padding-top:0;flex:1 1 100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input-container{padding-top:0;flex:1 1 100%}}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input{display:flex;align-items:center;flex:1 1}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input{flex:1 1 calc(50% - 6px);display:flex;align-items:center;font-size:13px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input input{font-size:13px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input{flex:1 1 calc(50% - 6px);display:flex;align-items:center;font-size:13px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input input{font-size:13px}}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .dimensions-settings-title{width:18px;height:18px;text-align:center}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .input-field-container{display:flex;align-items:center;border:1px solid var(--border);background:var(--component-background);color:var(--text-color);border-radius:var(--border-radius);width:100%;min-width:64px;height:32px;padding:1px 2px;margin-left:var(--padding-small)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .input-field-container ::-moz-placeholder{color:var(--text-color)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .input-field-container ::placeholder{color:var(--text-color)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .input-field-container[focus-within]{border-color:var(--focus-border)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .input-field-container:focus-within{border-color:var(--focus-border)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .dimension-input-field{border-left:0;border-right:0;margin-right:0;display:flex;align-items:center;border:1px solid var(--border);background:var(--component-background);color:var(--text-color);border-radius:var(--border-radius);width:100%;min-width:64px;height:32px;margin-left:var(--padding-small);padding:1px 2px 1px 8px;text-align:left}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .dimension-input-field ::-moz-placeholder{color:var(--text-color)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .dimension-input-field ::placeholder{color:var(--text-color)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .dimension-input-field[focus-within]{border-color:var(--focus-border)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .dimension-input-field:focus-within{border-color:var(--focus-border)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .dimension-input-unit{color:var(--text-color)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input .Icon{margin:4px}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input input{border:0}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input input::-webkit-inner-spin-button,.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-input input[type=number]{-moz-appearance:textfield}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings{padding-top:8px;width:100%;display:flex;align-items:center;font-size:var(--font-size-default)}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings .dimensions-settings-title-container{display:flex}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings .dimensions-settings-title{margin-right:var(--padding-small);font-weight:600}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings .dimensions-settings-title{font-size:13px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings .dimensions-settings-title{font-size:13px}}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings button.Dropdown{width:100%!important;height:32px;text-align:left}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings .Dropdown__items{width:100%;z-index:100}.DocumentCropPopupContainer .crop-dimensions .crop-dimensions-settings .Dropdown__wrapper{width:100%}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer{width:100%;justify-content:start;position:static}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-section{align-items:center;justify-content:space-between;width:100%;padding:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .DocumentCropPopup{width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .arrow{flex:0 1 auto}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left;font-size:13px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown__items{top:-52px;z-index:100;width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .wrapper{z-index:99}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-mobile-container .save-button{margin-left:6px;min-width:75px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .cancel-button{padding:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .cancel-button .Icon{width:24px;height:24px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:0;margin-left:6px;display:flex}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-page-input-container Button{height:32px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .page-number-input{width:100%;min-width:150px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .page-number-error{color:var(--color-message-error);margin-top:4px;margin-left:auto}}@media(max-width:640px)and (max-width:430px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:12px;margin-left:0}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer{width:100%;justify-content:start;position:static}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-section{align-items:center;justify-content:space-between;width:100%;padding:0}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .DocumentCropPopup{width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .arrow{flex:0 1 auto}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left;font-size:13px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .Dropdown__items{top:-52px;z-index:100;width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .wrapper{z-index:99}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-mobile-container .save-button{margin-left:6px;min-width:75px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .cancel-button{padding:0}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .cancel-button .Icon{width:24px;height:24px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:0;margin-left:6px;display:flex}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-page-input-container Button{height:32px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .page-number-input{width:100%;min-width:150px}.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .page-number-error{color:var(--color-message-error);margin-top:4px;margin-left:auto}@media(max-width:430px){.App.is-web-component:not(.is-in-desktop-only-mode) .DocumentCropPopupContainer .document-crop-page-input-container{margin-top:12px;margin-left:0}}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./PageNumberInput.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".PageNumberInput{cursor:default}.PageNumberInput .input-wrapper{position:relative;display:flex;align-items:center}.PageNumberInput .input-wrapper .Icon{position:absolute;right:8px;color:var(--error-border-color)}.PageNumberInput .page-number-input{padding:6px!important;width:108px;height:32px}.PageNumberInput .page-number-input.page-number-input--error{padding-right:30px;border-color:var(--error-border-color)!important}.PageNumberInput .page-number-input::-moz-placeholder{color:var(--gray-6)}.PageNumberInput .page-number-input::placeholder{color:var(--gray-6)}.PageNumberInput .page-number-input::-moz-placeholder.error{border-color:var(--error-text-color)}.PageNumberInput .page-number-input::placeholder.error{border-color:var(--error-text-color)}.PageNumberInput .page-number-error{color:var(--error-text-color);margin-top:8px;position:absolute;width:100%}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./CollapsibleSection.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.CollapsibleSection h1,.CollapsibleSection h2,.CollapsibleSection h3,.CollapsibleSection h4,.CollapsibleSection h5,.CollapsibleSection h6{margin:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .CollapsibleSection{border-bottom:1px solid #cfd4da}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .CollapsibleSection{border-bottom:1px solid #cfd4da}}.CollapsibleSection .collapsible-page-group-header{outline:2px solid transparent}.CollapsibleSection .collapsible-page-group-header button{width:100%;background-color:transparent;border:none;display:flex;justify-content:space-between;align-items:center;border-radius:4px;cursor:pointer;padding:0 4px}.CollapsibleSection .collapsible-page-group-header button .Icon{width:22px;height:22px;pointer-events:none;color:var(--icon-color)}.CollapsibleSection .collapsible-page-group-header button.focus-visible,.CollapsibleSection .collapsible-page-group-header button:focus-visible{outline:var(--focus-visible-outline)}.CollapsibleSection .collapsible-page-group-header>:first-child:hover{box-shadow:inset 0 0 0 1px var(--hover-border)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .CollapsibleSection .collapsible-page-group-header button{font-size:13px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .CollapsibleSection .collapsible-page-group-header button .Icon{width:16px;height:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .CollapsibleSection .collapsible-page-group-header button{font-size:13px}.App.is-web-component:not(.is-in-desktop-only-mode) .CollapsibleSection .collapsible-page-group-header button .Icon{width:16px;height:16px}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./mobilePopupWrapper.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MobilePopupWrapper{position:sticky;bottom:0!important;width:100%;background-color:#fff;border-radius:4px 4px 0 0;box-shadow:0 4px 16px 0 rgba(134,142,150,.24),0 0 4px 0 #868e96;z-index:99}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.SnippingPopupContainer{visibility:visible}.closed.SnippingPopupContainer{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.SnippingPopupContainer .SnippingToolPopup .Button.save-button:hover:not(:disabled){background:var(--primary-button-hover);border-color:var(--primary-button-hover);color:var(--gray-0)}.SnippingPopupContainer .SnippingToolPopup .Button.save-button:disabled{cursor:default;background:var(--disabled-button-color);color:var(--primary-button-text)}.SnippingPopupContainer .SnippingToolPopup .Button.cancel-button:hover{border:none;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6)}.SnippingPopupContainer{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.SnippingPopupContainer:empty{padding:0}.SnippingPopupContainer .buttons{display:flex}.SnippingPopupContainer .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .Button{width:42px;height:42px}}.SnippingPopupContainer .Button:hover{background:var(--popup-button-hover)}.SnippingPopupContainer .Button:hover:disabled{background:none}.SnippingPopupContainer .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .Button .Icon{width:24px;height:24px}}.is-vertical.SnippingPopupContainer .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.SnippingPopupContainer .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.SnippingPopupContainer .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.SnippingPopupContainer .Button.main-menu-button{width:100%;height:32px}}.is-vertical.SnippingPopupContainer .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.SnippingPopupContainer .Button.main-menu-button span{white-space:nowrap}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.SnippingPopupContainer{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);top:0}.SnippingPopupContainer .SnippingToolPopup{width:250px}.SnippingPopupContainer .SnippingToolPopup .snipping-section{padding:16px;display:flex;flex-direction:column}.SnippingPopupContainer .SnippingToolPopup .snipping-section .ui__choice{margin:0}.SnippingPopupContainer .SnippingToolPopup .snipping-section .ui__choice:not(:last-of-type){padding-bottom:12px}.SnippingPopupContainer .SnippingToolPopup .menu-title{padding-bottom:16px;font-weight:700}.SnippingPopupContainer .SnippingToolPopup .crop-inactive{color:var(--gray-6)}.SnippingPopupContainer .SnippingToolPopup .Icon{height:18px;width:18px}.SnippingPopupContainer .SnippingToolPopup .divider{border-top:1px solid var(--divider);width:100%}.SnippingPopupContainer .SnippingToolPopup .buttons{padding:12px;text-align:right;font-size:13px;display:flex;justify-content:space-between}.SnippingPopupContainer .SnippingToolPopup .Button.save-button{color:var(--primary-button-text);padding:6px 16px;background:var(--primary-button);border-radius:4px;border:0;height:32px;width:-moz-fit-content;width:fit-content;cursor:pointer}.SnippingPopupContainer .SnippingToolPopup .Button.save-button:hover:not(:disabled){background-color:var(--primary-button-hover)}.SnippingPopupContainer .SnippingToolPopup .Button.save-button:disabled{cursor:auto;border:0}.SnippingPopupContainer .SnippingToolPopup .Button.save-button:disabled span{color:var(--primary-button-text)}.SnippingPopupContainer .SnippingToolPopup .Button.cancel-button{cursor:pointer;background:none;border:0;color:var(--secondary-button-text);padding:6px 16px;margin-right:4px;height:32px;width:-moz-fit-content;width:fit-content}.SnippingPopupContainer .SnippingToolPopup .Button.cancel-button:hover{background-color:transparent;box-shadow:none}.SnippingPopupContainer .SnippingToolPopup .Button.cancel-button:focus{outline:none}.SnippingPopupContainer .SnippingToolPopup .Button.cancel-button:disabled{opacity:.5;cursor:auto;color:var(--secondary-button-text)}.SnippingPopupContainer .custom-select{flex-grow:2;max-width:100%}.SnippingPopupContainer .custom-select .customSelector{margin-left:0;width:100%!important}.SnippingPopupContainer .custom-select .customSelector .customSelector__selectedItem,.SnippingPopupContainer .custom-select .customSelector ul{width:100%}.SnippingPopupContainer .custom-select .customSelector .customSelector__arrow{height:18px;width:18px}.SnippingPopupContainer .custom-select select{height:28px;width:100%}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer{width:100%;position:fixed;bottom:0!important;border-radius:0;justify-content:start;top:auto}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-section{padding:8px 12px;display:flex;align-items:center;justify-content:space-between;width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .SnippingToolPopup{width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container{display:flex;align-items:center}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .customSelector{width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown .arrow{flex:0 1 auto}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .Dropdown__items{top:-52px;z-index:80;width:100%}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .wrapper{z-index:79}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-mobile-container .save-button{margin-left:6px;min-width:75px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .cancel-button{padding:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .cancel-button .Icon{width:24px;height:24px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-selector{width:100%;display:flex}}@media(max-width:640px)and (max-width:430px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .SnippingPopupContainer .snipping-selector{display:block}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer{width:100%;position:fixed;bottom:0!important;border-radius:0;justify-content:start;top:auto}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-section{padding:8px 12px;display:flex;align-items:center;justify-content:space-between;width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .SnippingToolPopup{width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container{display:flex;align-items:center}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .customSelector{width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown{height:32px;min-width:150px;width:100%!important}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown .arrow{flex:0 1 auto}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown .picked-option .picked-option-text{width:150px;text-align:left}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .Dropdown__items{top:-52px;z-index:80;width:100%}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .wrapper{z-index:79}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-mobile-container .save-button{margin-left:6px;min-width:75px}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .cancel-button{padding:0}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .cancel-button .Icon{width:24px;height:24px}.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-selector{width:100%;display:flex}@media(max-width:430px){.App.is-web-component:not(.is-in-desktop-only-mode) .SnippingPopupContainer .snipping-selector{display:block}}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./EmbeddedJSPopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.EmbeddedJSPopup{visibility:visible}.closed.EmbeddedJSPopup{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.EmbeddedJSPopup{position:absolute;z-index:70;display:flex;justify-content:center;align-items:center}.EmbeddedJSPopup:empty{padding:0}.EmbeddedJSPopup .buttons{display:flex}.EmbeddedJSPopup .Button{margin:4px;width:32px;height:32px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .EmbeddedJSPopup .Button{width:42px;height:42px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .EmbeddedJSPopup .Button{width:42px;height:42px}}.EmbeddedJSPopup .Button:hover{background:var(--popup-button-hover)}.EmbeddedJSPopup .Button:hover:disabled{background:none}.EmbeddedJSPopup .Button .Icon{width:18px;height:18px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .EmbeddedJSPopup .Button .Icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .EmbeddedJSPopup .Button .Icon{width:24px;height:24px}}.is-vertical.EmbeddedJSPopup .Button.main-menu-button{width:100%;border-radius:0;justify-content:flex-start;padding-left:var(--padding-small);padding-right:var(--padding-small);margin:0 0 var(--padding-tiny) 0}.is-vertical.EmbeddedJSPopup .Button.main-menu-button:first-child{margin-top:var(--padding-tiny)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .is-vertical.EmbeddedJSPopup .Button.main-menu-button{width:100%;height:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .is-vertical.EmbeddedJSPopup .Button.main-menu-button{width:100%;height:32px}}.is-vertical.EmbeddedJSPopup .Button.main-menu-button .Icon{margin-right:10px}.is-vertical.EmbeddedJSPopup .Button.main-menu-button span{white-space:nowrap}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}.EmbeddedJSPopup{box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);border-radius:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .EmbeddedJSPopup{display:none!important}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .EmbeddedJSPopup{display:none!important}}.EmbeddedJSPopup .menu-option{width:100%;display:flex;justify-content:space-between;padding:1em}.EmbeddedJSPopup .menu-option:hover{background:var(--popup-button-hover)}.EmbeddedJSPopup hr{padding:0;margin:0;width:100%}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}@keyframes bottom-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes up-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@media print{#form-field-indicator-wrapper{opacity:0}}#form-field-indicator-wrapper{position:relative;z-index:60}.formFieldIndicator{background-color:var(--color-blue-gray-5);color:var(--color-gray-1);width:98px;min-height:32px;font-size:13px;position:fixed;padding:4px 0;display:flex;justify-content:center;align-items:center;font-family:Lato,sans-serif}.formFieldIndicator .formFieldIndicator-text{margin:0;position:absolute;padding:0 8px}.formFieldIndicator:before{right:-20px;border-left:20px solid var(--color-blue-gray-5)}.formFieldIndicator.rightSidePage:before,.formFieldIndicator:before{content:\\\"\\\";display:block;position:absolute;bottom:0;width:0;height:0;border-top:20px solid transparent;border-bottom:20px solid transparent}.formFieldIndicator.rightSidePage:before{left:-20px;border-right:20px solid var(--color-blue-gray-5);border-left:0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./FilePicker.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.file-picker-component{width:100%;height:100%;position:relative;border-radius:4px;background:var(--signature-draw-background);border:1px solid var(--modal-stroke-and-border);padding:8px}.file-picker-component .file-picker-container{position:relative;border:1px dashed var(--modal-stroke-and-border);display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%}.file-picker-component .file-picker-container.dragging{background:var(--file-picker-drop-background);border:1px dashed var(--file-picker-drop-border)}.file-picker-component .file-picker-container .file-picker-body{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;position:absolute;color:var(--faded-text)}.file-picker-component .file-picker-container .file-picker-body .label-separator{margin:10px}.file-picker-component .file-picker-container .file-picker-body .modal-btn-file{border-radius:4px;border:1px solid var(--primary-button);color:var(--primary-button);padding:2px 20px 4px;cursor:pointer}.file-picker-component .file-picker-container .file-picker-body .modal-btn-file:hover{border-color:var(--blue-6);color:var(--blue-6)}.file-picker-component .file-picker-container .file-picker-body .modal-btn-file.focus-visible,.file-picker-component .file-picker-container .file-picker-body .modal-btn-file:focus-visible{outline:var(--focus-visible-outline)}.file-picker-component .file-picker-container .file-picker-body .Icon{width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;margin-bottom:15px}.file-picker-component .file-picker-container .file-picker-body .Icon svg{height:45px}.file-picker-component .file-picker-container .file-picker-body .file-picker-separator{margin:10px}.file-picker-component .file-picker-container .file-picker-error{position:absolute;color:red;bottom:0;right:0;margin:0 5px 5px 0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./MultiTabEmptyPage.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MultiTabEmptyPage{width:100%}.MultiTabEmptyPage.closed{display:none}.MultiTabEmptyPage .empty-page-body,.MultiTabEmptyPage .image-signature{height:100%;width:100%}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./MultiViewer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.MultiViewer{display:flex;flex-direction:row;align-items:center;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;height:100%}.MultiViewer.hidden{display:none}.MultiViewer .resize-bar{height:100%}.MultiViewer .CompareContainer{height:100%;border:2px solid var(--document-background-color);box-sizing:border-box;overflow:hidden}.MultiViewer .CompareContainer.active{border:2px solid var(--blue-5)}.MultiViewer .CompareContainer .borderLineBottom{visibility:hidden;height:2px;background-color:var(--blue-5);position:absolute;bottom:0;z-index:41}.MultiViewer .CompareContainer .borderLineBottom.active{visibility:visible}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./DropArea.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.DropArea{grid-gap:10px;gap:10px;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:10;top:0;bottom:0;left:0;right:0;width:100%;height:100%;background-color:var(--document-background-color);border:4px dashed #e1e1e3;box-sizing:border-box}.DropArea .Icon{color:var(--gray-7);height:65px;width:65px}.DropArea .hidden{display:none}.DropArea button{width:105px;height:32px;border-radius:4px;top:1px;right:1px;bottom:1px;left:1px;color:var(--blue-5);background-color:var(--document-background-color);border:1px solid var(--blue-5);pointer-events:auto}.DropArea button:hover{background-color:var(--tools-button-hover)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar global = require('../internals/global');\n\nvar Array = global.Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    c = pow(2, -exponent);\n    if (number * c < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  while (mantissaLength >= 8) {\n    buffer[index++] = mantissa & 255;\n    mantissa /= 256;\n    mantissaLength -= 8;\n  }\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  while (exponentLength > 0) {\n    buffer[index++] = exponent & 255;\n    exponent /= 256;\n    exponentLength -= 8;\n  }\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  while (nBits > 0) {\n    exponent = exponent * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  while (nBits > 0) {\n    mantissa = mantissa * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  for (i = 0; length > i; i++) {\n    result[i] = mapping ? mapfn(O[i], i) : O[i];\n  }\n  return result;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es-x/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else delete O[to];\n    to += inc;\n    from += inc;\n  } return O;\n};\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    if (this.length === 1) return this.head.data;\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n  module.exports.prototype[util.inspect.custom] = function () {\n    var obj = util.inspect({ length: this.length });\n    return this.constructor.name + ' ' + obj;\n  };\n}","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n  || global.WebKitBlobBuilder\n  || global.MSBlobBuilder\n  || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n  try {\n    var a = new Blob(['hi']);\n    return a.size === 2;\n  } catch(e) {\n    return false;\n  }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n  try {\n    var b = new Blob([new Uint8Array([1,2])]);\n    return b.size === 2;\n  } catch(e) {\n    return false;\n  }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n  && BlobBuilder.prototype.append\n  && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n  for (var i = 0; i < ary.length; i++) {\n    var chunk = ary[i];\n    if (chunk.buffer instanceof ArrayBuffer) {\n      var buf = chunk.buffer;\n\n      // if this is a subarray, make a copy so we only\n      // include the subarray region from the underlying buffer\n      if (chunk.byteLength !== buf.byteLength) {\n        var copy = new Uint8Array(chunk.byteLength);\n        copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n        buf = copy.buffer;\n      }\n\n      ary[i] = buf;\n    }\n  }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n  options = options || {};\n\n  var bb = new BlobBuilder();\n  mapArrayBufferViews(ary);\n\n  for (var i = 0; i < ary.length; i++) {\n    bb.append(ary[i]);\n  }\n\n  return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n  mapArrayBufferViews(ary);\n  return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n  if (blobSupported) {\n    return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n  } else if (blobBuilderSupported) {\n    return BlobBuilderConstructor;\n  } else {\n    return undefined;\n  }\n})();\n","var baseRange = require('./_baseRange'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nmodule.exports = createRange;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.DocumentHeader{width:100%;height:-moz-fit-content;height:fit-content;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:4px 0}.DocumentHeader.hidden{visibility:hidden}.DocumentHeader .Button{width:28px;height:28px}.DocumentHeader .Button:hover{background-color:var(--popup-button-hover)}.DocumentHeader .Button.active{background-color:var(--view-header-button-active)}.DocumentHeader .Button.active .Icon{color:var(--view-header-icon-active-fill)}.DocumentHeader .file-name{font-family:var(--font-family);font-size:var(--font-size-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.DocumentHeader .control-buttons{display:flex;grid-gap:8px;gap:8px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./DocumentContainer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.MultiViewer .DocumentContainer{display:flex;flex-direction:column;align-items:center;width:calc(100% - 4px);height:calc(100% - 32px);overflow:overlay;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.MultiViewer .DocumentContainer{margin-left:0!important;width:100%!important}}.MultiViewer .DocumentContainer .document{overflow-x:visible;overflow-y:visible;margin:auto;outline:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.MultiViewer .DocumentContainer .document.hidden{display:none}.MultiViewer .DocumentContainer .document .pageSection[id*=pageSectionb]{box-shadow:none}.MultiViewer .DocumentContainer .document .pageSection .pageContainer{background-color:#fff;position:relative;box-shadow:0 0 2px 0 rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.12),0 1px 3px 0 rgba(0,0,0,.12)}.MultiViewer .DocumentContainer .document .pageSection .pageContainer span.link{cursor:pointer}.MultiViewer .DocumentContainer .document textarea.freetext{position:absolute;z-index:20;border:0;padding:0;box-sizing:border-box;resize:none;outline:1px solid transparent}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./OverlayItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.OverlayItem{border:none;background-color:transparent;margin:2px 0;display:flex;align-items:center;height:24px;padding:0 0 0 10px;cursor:pointer;width:100%}:host(:not([data-tabbing=true])) .OverlayItem,html:not([data-tabbing=true]) .OverlayItem{outline:none}.OverlayItem.selected,.OverlayItem:hover{background:var(--popup-button-hover)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ZoomOverlay.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ZoomItem{border:none;background-color:transparent;display:flex;flex-direction:row;align-items:center;padding:2px 19px 2px 6px;cursor:pointer;width:100%}:host(:not([data-tabbing=true])) .ZoomItem,html:not([data-tabbing=true]) .ZoomItem{outline:none}.ZoomItem.selected,.ZoomItem:hover{background:var(--popup-button-hover)}.ZoomItem .Icon{margin:4px 8px 4px 4px}.ZoomItem Button{height:auto}.ZoomItem.Button{justify-content:flex-start}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var isArray = require('./isArray');\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n  if (!arguments.length) {\n    return [];\n  }\n  var value = arguments[0];\n  return isArray(value) ? value : [value];\n}\n\nmodule.exports = castArray;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ComparisonButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ComparisonButton{display:flex;align-items:center;font-size:var(--font-size-medium)}.ComparisonButton button{border:none;background-color:transparent;background:var(--primary-button);border-radius:4px;display:flex;align-items:center;padding:8px 16px;justify-content:center;position:relative;color:var(--primary-button-text);cursor:pointer}:host(:not([data-tabbing=true])) .ComparisonButton button,html:not([data-tabbing=true]) .ComparisonButton button{outline:none}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ComparisonButton button{font-size:13px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ComparisonButton button{font-size:13px}}.ComparisonButton button:hover{background:var(--primary-button-hover)}.ComparisonButton button:hover:disabled{background:var(--primary-button)}.ComparisonButton button:disabled{opacity:.8;cursor:not-allowed}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ComparePanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ComparePanel{padding:0;height:100%}.ComparePanel .input-container{margin:16px;display:flex;position:relative;box-sizing:border-box;border:1px solid var(--gray-6);border-radius:4px;height:28px;align-items:center;justify-content:flex-end;color:var(--text-color);padding:6px 2px 6px 6px;background:var(--gray-0)}.ComparePanel .input-container[focus-within]{border:1px solid var(--blue-5)}.ComparePanel .input-container:focus-within{border:1px solid var(--blue-5)}.ComparePanel .input-container .Icon{width:16px;height:16px}.ComparePanel .input-container input{width:100%;padding:6px 26px 6px 6px;height:20px;border:none;background:transparent}.ComparePanel .changeListContainer{height:calc(100% - 28px)}.ComparePanel .changeListContainer .changeListTitle{padding:8px 16px 2px;font-size:var(--font-size-medium);font-family:var(--font-family);font-weight:var(--font-weight-bold);color:var(--gray-9)}.ComparePanel .changeListContainer .changeListTitle span{color:var(--gray-7)}.ComparePanel .changeListContainer .changeList{padding:16px;height:calc(100% - 43px);overflow-y:auto;display:flex;flex-direction:column;grid-gap:8px;gap:8px}.ComparePanel .changeListContainer .changeList .page-number{margin-top:10px;font-size:var(--font-size-default);font-family:var(--font-family);color:var(--gray-7)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../../node_modules/sass-loader/dist/cjs.js!./ChangeListItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ChangeListItem{display:flex;flex-direction:row;border-radius:4px;align-self:stretch;filter:drop-shadow(0 0 2px var(--gray-6));background-color:var(--component-background);font-family:var(--font-family)}.ChangeListItem .icon-change{padding:14px 0 14px 14px;height:100%}.ChangeListItem .icon-change .Icon{width:24px;height:24px;color:var(--gray-6)}.ChangeListItem .container-right{padding:12px;width:calc(100% - 38px);display:flex;flex-direction:column;word-wrap:break-word}.ChangeListItem .container-right .title{font-size:var(--font-size-medium);color:var(--gray-9)}.ChangeListItem .container-right .type{font-size:var(--font-size-small);color:var(--gray-7);text-transform:capitalize}.ChangeListItem .container-right .value-container{padding:12px;margin-top:10px;width:100%;display:flex;flex-direction:column;border-radius:4px;align-self:stretch;color:var(--gray-9);font-size:var(--font-size-medium);font-weight:var(--font-weight-medium)}.ChangeListItem .container-right .value-container.old{background-color:var(--change-list-old-bg)}.ChangeListItem .container-right .value-container.old .value-title{color:var(--red)}.ChangeListItem .container-right .value-container.new{background-color:var(--change-list-new-bg)}.ChangeListItem .container-right .value-container.new .value-title{color:var(--green)}.ChangeListItem .container-right .value-container .value-title{display:flex;justify-content:space-between;font-size:var(--font-size-small);font-weight:var(--font-weight-bold)}.ChangeListItem .container-right .text{font-size:13px}.ChangeListItem:hover{outline:1px solid var(--gray-9)}.ChangeListItem.selected{outline:1px solid var(--blue-5)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./WatermarkPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.WatermarkPanel{padding:16px 16px 0;display:flex;flex-direction:column}.WatermarkPanel .watermark-panel-header{font-style:normal;font-weight:700;font-size:16px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel{width:100%;min-width:100%;padding-top:0}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel .close-container .close-icon-container{cursor:pointer}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .WatermarkPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel{width:100%;min-width:100%;padding-top:0}.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel .close-container{display:flex;align-items:center;justify-content:flex-end;height:64px;width:100%;padding-right:12px}.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel .close-container .close-icon-container{cursor:pointer}.App.is-web-component:not(.is-in-desktop-only-mode) .WatermarkPanel .close-container .close-icon-container .close-icon{width:24px;height:24px}}.WatermarkPanel .watermark-panel-tabs{margin-top:12px;display:flex;align-items:center}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab{font-style:normal;font-weight:400;font-size:13px;border:1px solid #d0d4d9;width:50%;text-align:center;padding:7px 0;cursor:pointer}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab.active{background-color:var(--blue-2)}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab:first-child{border-top-left-radius:10px;border-bottom-left-radius:10px}.WatermarkPanel .watermark-panel-tabs .watermark-panel-tab:last-child{border-left:none;border-top-right-radius:10px;border-bottom-right-radius:10px}.WatermarkPanel .watermark-panel-sub-header{font-style:normal;font-weight:700;font-size:13px;margin-top:16px}.WatermarkPanel .add-watermark-button{font-style:normal;font-weight:400;font-size:13px;color:var(--blue-5);border:1px solid var(--blue-5);border-radius:4px;background:#fff;width:75px;margin-top:12px;padding:8px 16px;cursor:pointer}.WatermarkPanel .hidden{display:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./MobilePanelWrapper.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MobilePanelWrapper{border-radius:4px;box-shadow:0 0 3px 0 var(--document-box-shadow);background:var(--component-background);overflow-y:auto;max-height:100%}@media(max-height:500px){.App:not(.is-web-component) .MobilePanelWrapper{overflow:auto;max-height:100%}}@container (max-height: 500px){.App.is-web-component .MobilePanelWrapper{overflow:auto;max-height:100%}}.open.MobilePanelWrapper{visibility:visible}.closed.MobilePanelWrapper{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.MobilePanelWrapper{position:fixed;bottom:0;padding-bottom:10px;z-index:100;width:100%;height:100%;display:block;justify-content:center;align-items:center;overflow:hidden;background-color:var(--panel-background);transition:height,max-height .3s ease-out}.MobilePanelWrapper.full-size{max-height:100%}.MobilePanelWrapper.half-size{max-height:50%}.MobilePanelWrapper.small-size{max-height:140px;overflow:hidden}.MobilePanelWrapper .mobile-panel-body{top:-30px;position:relative}.MobilePanelWrapper .swipe-indicator-wrapper{position:relative;width:100%;height:60px;top:0;z-index:1}.MobilePanelWrapper .swipe-indicator-wrapper .swipe-indicator{background:var(--gray-6);border-radius:2px;height:4px;width:38px;position:absolute;margin:10px auto;left:0;right:0}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .MobilePanelWrapper .swipe-indicator-wrapper .swipe-indicator{display:none}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .MobilePanelWrapper .swipe-indicator-wrapper .swipe-indicator{display:none}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ModularHeaderItems.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ModularHeaderItems{display:flex;width:100%;height:100%;position:relative}.ModularHeaderItems.closed{padding:0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./CustomButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.CustomButton:hover{cursor:pointer;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6)}.CustomButton:active,.CustomButton:hover{border:none;background-color:var(--faded-component-background)}.CustomButton:active{box-shadow:inset 0 0 0 1px var(--blue-5);color:var(--blue-5)}.CustomButton:active .Icon{color:var(--blue-5)}.CustomButton{padding:5px;width:-moz-fit-content;width:fit-content;min-width:32px}.CustomButton:active{cursor:default}.CustomButton:active .Icon svg path{fill:var(--view-header-icon-active-fill)}.CustomButton.confirm-button{background-color:var(--primary-button);border:1px solid var(--primary-button);color:var(--primary-button-text);padding:7px 14px;width:-moz-fit-content;width:fit-content;border-radius:5px;height:30px;cursor:pointer}.CustomButton.confirm-button:hover{background:var(--primary-button-hover)!important;border:1px solid var(--primary-button-hover)!important;border-radius:5px!important}.CustomButton.cancel-button{color:var(--secondary-button-text);background-color:transparent;padding:7px 14px;width:-moz-fit-content;width:fit-content;border-radius:5px;height:30px;cursor:pointer}.CustomButton.cancel-button:hover{color:var(--secondary-button-hover);background:transparent}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./GroupedItems.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".GroupedItems{display:flex}\", \"\"]);\n\n// exports\n","var defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ToggleElementButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ToggleElementButton .Button:hover:not(:disabled){cursor:pointer;border:none;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6);background-color:var(--faded-component-background)}.ToggleElementButton .Button.active{border:none;box-shadow:inset 0 0 0 1px var(--blue-5);color:var(--blue-5);background-color:var(--faded-component-background)}.ToggleElementButton .Button.active .Icon{color:var(--blue-5)}.ToggleElementButton .Button{width:auto;min-width:32px;height:32px;padding:5px}.ToggleElementButton .Button.active{cursor:default}.ToggleElementButton .Button.active .Icon{color:var(--view-header-icon-active-fill)}.ToggleElementButton.legacy-ui .Button:hover:not(:disabled){border:none;box-shadow:none;background-color:var(--blue-1)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./Divider.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Divider{background:var(--divider)}.Divider.row{width:1px;height:20px;margin:4px 0;align-self:center}.Divider.column{width:auto;height:1px;margin:0 4px}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RibbonItem.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".RibbonItem{padding:0;border:none;background-color:transparent;cursor:pointer;color:var(--faded-text);white-space:nowrap;height:auto}.RibbonItem .Button{width:100%;padding:8px;grid-column-gap:8px;-moz-column-gap:8px;column-gap:8px;grid-row-gap:4px;row-gap:4px;color:var(--faded-text);border-color:transparent;border-style:solid}.RibbonItem .Button.active{background-color:transparent}.RibbonItem .Button.active,.RibbonItem .Button.active .Icon{color:var(--ribbon-active-color)}.RibbonItem .Button:hover{background-color:transparent}.RibbonItem .Button:hover,.RibbonItem .Button:hover .Icon{color:var(--ribbon-hover-color)}.RibbonItem:not(.vertical) .Button{border-width:2px 0}.RibbonItem:not(.vertical) .Button.active{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:var(--ribbon-active-color)}.RibbonItem:not(.vertical) .Button:hover{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:var(--ribbon-hover-color)}.RibbonItem.vertical{white-space:wrap}.RibbonItem.vertical .Button{flex-direction:column;height:100%;border-width:0 2px}.RibbonItem.vertical .Button.active{border-bottom-left-radius:0;border-top-left-radius:0;border-left-color:var(--ribbon-active-color)}.RibbonItem.vertical .Button:hover{border-bottom-left-radius:0;border-top-left-radius:0;border-left-color:var(--ribbon-hover-color)}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}:root{--blue-1:#e7edf3;--blue-2:#dde6ee;--blue-3:#cfd8e0;--blue-4:#c7d2dd;--blue-5:#2b73ab;--blue-6:#1a466b;--gray-0:#fff;--gray-1:#f8f9fa;--gray-2:#f1f3f5;--gray-3:#e7ebee;--gray-4:#cfd4da;--gray-5:#abb5bd;--gray-6:#818a92;--gray-7:#697077;--gray-8:#485056;--gray-9:#343a40;--gray-10:#21242a;--gray-11:#16181c;--gray-12:#101214;--gray-13:#000;--yellow-1:rgba(250,206,0,0.50196);--red:#d52a2a;--green:#006d41;--component-background:var(--gray-0);--mobile-presets-background:var(--gray-1);--faded-component-background:var(--gray-2);--toggle-zoom-overlay-background:var(--gray-2);--ribbons-background:var(--gray-3);--document-background-color:var(--gray-2);--error-text-color:var(--red);--error-border-color:var(--red);--panel-background:var(--gray-0);--slider-filled:var(--gray-9);--slider-background:var(--gray-6);--badge-fill:var(--gray-8);--badge-text-color:var(--gray-0);--view-header-icon-active-fill:var(--blue-5);--text-color:var(--gray-9);--faded-text:var(--gray-7);--placeholder-text:var(--gray-7);--ribbon-active-color:var(--blue-5);--ribbon-hover-color:var(--blue-6);--no-presets-text:var(--gray-6);--disabled-text:var(--gray-5);--disabled-icon:var(--gray-5);--scroll-chevron-color:var(--gray-6);--icon-color:var(--gray-6);--selected-icon-color:var(--gray-8);--view-header-button-hover:var(--gray-2);--view-header-button-active:var(--gray-2);--popup-button-hover:var(--gray-2);--popup-button-active:var(--gray-2);--dropdown-item-active-text:var(--gray-0);--dropdown-item-active-icon:var(--gray-0);--primary-button:var(--blue-5);--primary-button-text:var(--gray-0);--primary-button-hover:var(--blue-6);--secondary-button-border:var(--blue-5);--secondary-button-text:var(--blue-5);--secondary-button-hover:var(--blue-6);--box-shadow:var(--gray-6);--document-box-shadow:var(--gray-7);--divider:var(--gray-4);--reply-divider:var(--gray-3);--side-panel-border:var(--divider);--border:var(--gray-6);--lighter-border:var(--gray-4);--focus-border:var(--blue-5);--hover-border:var(--blue-6);--color-palette-border:var(--blue-5);--image-signature-drop-background:var(--blue-1);--image-signature-drop-border:var(--blue-5);--file-picker-drop-background:var(--blue-1);--file-picker-drop-border:var(--blue-5);--signature-draw-background:var(--gray-2);--modal-stroke-and-border:var(--gray-4);--modal-negative-space:rgba(0,0,0,0.3);--spinner-negative-space:rgba(0,0,0,0.3);--white-color-palette-border:var(--border);--list-separator-color:var(--gray-7);--scrollbar-color:var(--gray-6);--note-box-shadow:var(--gray-7);--note-box-shadow-expanded:rgba(134,142,150,0.24);--tools-header-background:var(--gray-2);--view-header-background:var(--gray-1);--tools-overlay-background:var(--gray-0);--tools-button-hover:var(--gray-2);--tools-button-active:var(--gray-2);--tools-overlay-button-hover:var(--blue-1);--tools-overlay-button-active:var(--blue-2);--fileAttachment-title-padding:0;--fileAttachment-list-padding:24px;--outline-color:var(--blue-5);--outline-hover:var(--gray-2);--outline-selected:var(--gray-2);--outline-selected-border:var(--blue-5);--preset-background:var(--gray-1);--scale-overlay-item-hover:var(--dropdown-item-hover);--oe-table-dropdown-highlight:var(--gray-5);--bookmark-outline-hover-border:var(--blue-5);--checked-option:var(--blue-5);--multi-tab-header-background:var(--tool-header-background);--multi-tab-active-tab-background:var(--gray-0);--multi-tab-divider:var(--gray-6);--multi-tab-hover-border:var(--blue-6);--multi-tab-border:1px solid var(--gray-6);--multi-tab-text-color:var(--gray-9);--multi-tab-active-text-color:var(--gray-9);--multi-tab-add-button-padding:8px;--multi-tab-border-radius:4px;--multi-tab-divider-height:22px;--multi-tab-header-height:36px;--multi-tab-divider-top:8px;--multi-tab-flyout-hover:var(--blue-6);--multi-tab-flyout-hover-text:var(--gray-0);--multi-tab-toggle-button-active:var(--blue-5);--file-preview-background:var(--gray-2);--tab-border-color:var(--border);--tab-border-color-hover:var(--blue-6);--tab-background-color-hover:var(--faded-component-background);--tab-border-color-selected:var(--blue-5);--tab-text-color-selected:var(--blue-5);--dropdown-item-hover:var(--blue-6);--dropdown-item-active:var(--blue-5);--dropdown-item-text-hover:var(--gray-0);--disabled-button-color:rgba(43,115,171,0.5);--tab-footer-button-color:var(--gray-0);--x-button-hover-color:var(--gray-2);--slider-filler:drop-shadow(0px 0px 1px hsla(0,0%,56.9%,0.7));--style-icon-color:var(--icon-color);--cell-border-size:30px;--cell-outer-border-size:30px;--button-icon-color-active:var(--blue-5);--slider-svg-hieght:25px;--slider-input-focus:var(--blue-5);--colorpicker-tool-shadow:inset 0 0 0 1px var(--blue-6);--colorpicker-tool-bg:var(--tools-button-hover);--input-switch-default-color:var(--gray-6);--focus-visible-outline:2px solid var(--gray-10);--change-list-old-bg:#fff2f2;--change-list-new-bg:#e8faf3;--swipe-indicator-bg:var(--gray-7)}.Flyout{z-index:90;position:absolute;display:flex;background:#fff;background:var(--gray-0);border-radius:4px}.Flyout .FlyoutContainer{overflow-y:auto;overflow-x:hidden;z-index:200;background-color:#fff;background-color:var(--component-background);min-width:140px;max-width:328px;padding:4px 0;margin:0;font-size:var(--font-size-default);font-family:var(--font-family);border:1px solid #cfd4da;border:1px solid var(--divider);border-radius:4px;text-overflow:ellipsis}.Flyout .FlyoutContainer .divider{margin:6px 0;width:100%;height:1px;background-color:#cfd4da;background-color:var(--divider)}.Flyout .FlyoutContainer .divider+.divider,.Flyout .FlyoutContainer .divider+.flyout-item-container:empty+.divider,.Flyout .FlyoutContainer .divider:first-child,.Flyout .FlyoutContainer .divider:last-child{display:none}.Flyout .FlyoutContainer .flyout-item-container{height:32px;margin:4px 0;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;min-width:-moz-max-content;min-width:max-content}.Flyout .FlyoutContainer .flyout-item-container:empty{display:none}.Flyout .FlyoutContainer .flyout-item-container.page-nav-display .flyout-item-label{text-transform:none;display:flex;height:25px}.Flyout .FlyoutContainer .flyout-item-container .menu-icon{width:24px;height:24px;margin-right:8px}.Flyout .FlyoutContainer .flyout-item-container .icon-open-submenu{cursor:pointer;justify-self:flex-end;width:16px;height:16px;margin-right:0;padding-top:2px;display:flex}.Flyout .FlyoutContainer .flyout-item-container .menu-icon.Icon svg path{justify-self:flex-start}.Flyout .FlyoutContainer .flyout-item-container .flyout-item,.Flyout .FlyoutContainer .flyout-item-container .menu-container{border:none;background-color:transparent;display:flex;flex-direction:row;align-items:center;width:100%;height:100%;min-width:-moz-max-content;min-width:max-content;box-sizing:border-box;padding:4px 8px;margin:0 2px;grid-gap:10px;gap:10px;white-space:nowrap;cursor:pointer}.Flyout .FlyoutContainer .flyout-item-container .flyout-item,:host(:not([data-tabbing=true])) .Flyout .FlyoutContainer .flyout-item-container .menu-container,html:not([data-tabbing=true]) .Flyout .FlyoutContainer .flyout-item-container .menu-container{outline:none}.Flyout .FlyoutContainer .flyout-item-container .flyout-item:not(.back-button),.Flyout .FlyoutContainer .flyout-item-container .menu-container:not(.back-button){justify-content:space-between}.Flyout .FlyoutContainer .flyout-item-container .flyout-item.focus-visible,.Flyout .FlyoutContainer .flyout-item-container .flyout-item:focus-visible,.Flyout .FlyoutContainer .flyout-item-container .menu-container.focus-visible,.Flyout .FlyoutContainer .flyout-item-container .menu-container:focus-visible{outline:2px solid #21242a;outline:var(--focus-visible-outline)}.Flyout .FlyoutContainer .flyout-item-container .flyout-item[disabled],.Flyout .FlyoutContainer .flyout-item-container .menu-container[disabled]{color:#abb5bd;color:var(--gray-5)}.Flyout .FlyoutContainer .flyout-item-container .flyout-item .icon-label-wrapper,.Flyout .FlyoutContainer .flyout-item-container .menu-container .icon-label-wrapper{display:flex;align-items:center}.Flyout .FlyoutContainer .flyout-item-container .flyout-item .flyout-item-label,.Flyout .FlyoutContainer .flyout-item-container .menu-container .flyout-item-label{text-transform:capitalize;justify-self:flex-start;font-size:var(--font-size-default);margin-right:10px}.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled){background-color:#1a466b;background-color:var(--blue-6)}.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled){background-color:#2b73ab;background-color:var(--blue-5)}.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled),.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled) .flyout-item-label,.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled) .hotkey-wrapper,.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled) .Icon,.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled) .Icon svg *,.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled) .ZoomText .label,.Flyout .FlyoutContainer .flyout-item-container.active:not(.disabled) .ZoomText .value,.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled),.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled) .flyout-item-label,.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled) .hotkey-wrapper,.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled) .Icon,.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled) .Icon svg *,.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled) .ZoomText .label,.Flyout .FlyoutContainer .flyout-item-container:hover:not(.disabled) .ZoomText .value{color:#fff;color:var(--gray-0)}.Flyout .FlyoutContainer .flyout-item-container .custom-element-wrapper{display:flex}.Flyout .FlyoutContainer .flyout-item-container .ZoomItem{padding:0}.Flyout .FlyoutContainer .flyout-item-container .ZoomItem:hover{background:transparent}.Flyout .FlyoutContainer .flyout-item-container .ZoomItem .Icon{margin-left:0}.Flyout .FlyoutContainer .flyout-item-container .hotkey-wrapper{color:#697077;color:var(--gray-7);margin-left:8px;margin-right:2px}.Flyout .FlyoutContainer .flyout-item-container.disabled{cursor:default}.Flyout .FlyoutContainer .flyout-item-container.disabled .Icon,.Flyout .FlyoutContainer .flyout-item-container.disabled .Icon svg *,.Flyout .FlyoutContainer .flyout-item-container.disabled button{color:#abb5bd;color:var(--gray-5)}.Flyout .FlyoutContainer .flyout-item-container.disabled .hotkey-wrapper{color:#abb5bd;color:var(--gray-5);pointer-events:none}.Flyout .FlyoutContainer .flyout-item-container.zoom-options .flyout-item{justify-content:space-between}.Flyout .FlyoutContainer .flyout-item-container button.back-button{padding:0;border:none;background-color:transparent;font-size:var(--font-size-default)!important}:host(:not([data-tabbing=true])) .Flyout .FlyoutContainer .flyout-item-container button.back-button,html:not([data-tabbing=true]) .Flyout .FlyoutContainer .flyout-item-container button.back-button{outline:none}.Flyout .FlyoutContainer .flyout-item-container button.back-button.focus-visible,.Flyout .FlyoutContainer .flyout-item-container button.back-button:focus-visible{outline:2px solid #21242a;outline:var(--focus-visible-outline)}.Flyout .FlyoutContainer .flyout-item-container button.back-button .Icon{width:16px;height:16px;margin-right:16px}.Flyout .FlyoutContainer .flyout-item-container button.back-button:hover,.Flyout .FlyoutContainer .flyout-item-container button.back-button:hover .hotkey-wrapper,.Flyout .FlyoutContainer .flyout-item-container button.back-button:hover .Icon,.Flyout .FlyoutContainer .flyout-item-container button.back-button:hover .Icon svg *,.Flyout .FlyoutContainer .flyout-item-container button.back-button:hover .ZoomText .label .value{color:#fff;color:var(--gray-0)}.Flyout .FlyoutContainer .flyout-label{padding:8px 18px 8px 12px;font-weight:700}.Flyout.legacy-ui .flyout-item-container:hover:not([disabled]):not(.disabled){background-color:#f1f3f5;background-color:var(--popup-button-hover)}.Flyout.legacy-ui .flyout-item-container:hover:not([disabled]):not(.disabled) .flyout-item-label{color:#343a40;color:var(--text-color)}.Flyout.legacy-ui .flyout-item-container:hover:not([disabled]):not(.disabled) .Icon svg *{color:#818a92;color:var(--icon-color)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./FlexDropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FlexDropdown{border-color:var(--border)}.FlexDropdown__wrapper{position:relative}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .FlexDropdown .Icon{font-size:var(--font-size-default)}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .FlexDropdown .Icon{font-size:var(--font-size-default)}}.FlexDropdown .Dropdown__items{z-index:72}.FlexDropdown .Dropdown__item-object{display:flex;align-items:center;grid-gap:4px;gap:4px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .FlexDropdown .Dropdown__item-object{font-size:var(--font-size-default)}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .FlexDropdown .Dropdown__item-object{font-size:var(--font-size-default)}}.FlexDropdown.column{height:auto;padding:0}.FlexDropdown.column .picked-option{flex-direction:column;grid-gap:4px;gap:4px;padding:4px}.FlexDropdown.column .Dropdown__items{z-index:72;width:100%;padding:0;grid-gap:12px;gap:12px}.FlexDropdown.column .Dropdown__item{min-height:28px;height:100%;padding:4px}.FlexDropdown.column .Dropdown__item-object{display:flex;flex-direction:column;max-width:100%;flex:1}.FlexDropdown .Dropdown__item-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RibbonGroup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".RibbonGroupContainer{max-width:100%;padding:auto 8px;position:relative}.RibbonGroup{display:flex;align-items:stretch}.RibbonGroup.hidden,.RibbonGroup__moreButton.hidden{display:none}.RibbonGroup__moreButton .ToggleElementButton .Button{padding:0 2px}.RibbonGroup__moreButton .ToggleElementButton .Button:hover{background-color:var(--blue-1)}.RibbonGroup__moreButton .ToggleElementButton .Button.active{background-color:var(--blue-2)!important}.RibbonGroup__moreButton .ToggleElementButton .Button.active .Icon{color:var(--blue-6)!important}.RibbonGroup__moreButton .ToggleElementButton .Button .Icon{color:var(--faded-text)!important}.RibbonGroup__moreButton .active{background-color:transparent!important}.RibbonGroup__dropdown.hidden{display:none}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ZoomControls.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ZoomContainerWrapper{display:flex;align-items:center;justify-content:center;background-color:var(--toggle-zoom-overlay-background);border-radius:4px;height:28px;min-width:28px;margin:2px}.ZoomContainerWrapper.size0{min-width:139px}.ZoomContainerWrapper .ZoomContainer{display:flex;align-items:center;justify-content:flex-end;min-width:68px;height:28px;border-radius:4px;cursor:pointer}.ZoomContainerWrapper .ZoomContainer:hover{background-color:var(--view-header-button-hover)}.ZoomContainerWrapper .ZoomContainer.active{background-color:var(--view-header-button-active)}.ZoomContainerWrapper .ZoomContainer .ToggleElementButton{width:32px;height:32px;font-size:13px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ZoomContainerWrapper .ZoomContainer .ToggleElementButton button{font-size:var(--font-size-default)}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ZoomContainerWrapper .ZoomContainer .ToggleElementButton button{font-size:var(--font-size-default)}}.ZoomContainerWrapper .ZoomContainer .ToggleElementButton .Icon{color:var(--icon-color);width:12px;height:12px}.ZoomContainerWrapper .ZoomContainer .ZoomText{border-radius:4px;align-items:center}.ZoomContainerWrapper .ZoomContainer .ZoomText input{resize:none;border:none;background-color:transparent;font-weight:700;min-width:28px;text-align:right}.ZoomContainerWrapper .ZoomContainer .ZoomText.focus-visible,.ZoomContainerWrapper .ZoomContainer .ZoomText:focus-visible{outline:var(--focus-visible-outline)!important}.ZoomContainerWrapper .Button.active,.ZoomContainerWrapper .Button.zoomButton,.ZoomContainerWrapper .Button:hover,.ZoomContainerWrapper.size1{background:none!important}.ZoomContainerWrapper.size1 .Button.active,.ZoomContainerWrapper.size1 .Button:hover{background-color:var(--view-header-button-active)!important}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ToolButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ToolButton{width:32px;height:32px}.ToolButton.button-with-label{width:-moz-min-content;width:min-content}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolButton:hover{background:var(--gray-3)}.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ToolButton.active{background:var(--tools-button-active)}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ToolButton:hover{background:var(--gray-3)}.App.is-web-component:not(.is-in-desktop-only-mode) .ToolButton.active{background:var(--tools-button-active)}}button[data-element=checkboxFieldButton] .Icon,button[data-element=radioFieldButton] .Icon,button[data-element=signatureFieldButton] .Icon{color:var(--gray-9)!important}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./PageControls.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PageControlsWrapper{display:flex;grid-gap:8px;gap:8px;flex-direction:row;justify-content:flex-start;flex-grow:0}.PageControlsWrapper .total-page{margin:auto}.PageControlsWrapper .paddingTop{padding-top:4px}.PageControlsWrapper .paddingLeft{padding-left:4px}.PageControlsWrapper form{height:100%}.PageControlsWrapper form input{height:100%;text-align:center;font-family:Lato,sans-serif;font-weight:700;background:var(--gray-0);cursor:pointer;outline:none;border-radius:3px;min-width:32px}.pageNavFlyoutMenu .page-nav-display .flyout-item-label>*{margin:auto}.pageNavFlyoutMenu form input{font-size:13px!important;width:17px;font-family:Lato,sans-serif;cursor:pointer;outline:none;margin:0 6px;padding:0;text-align:center;background:transparent;min-width:26px;min-height:22px}.pageNavFlyoutMenu form input:not(:focus){font-weight:700;border:none;border-bottom:1px solid var(--icon-color);border-radius:0}.pageNavFlyoutMenu .page-nav-display:hover form input:not(:focus){color:var(--gray-0)}.pageNavFlyoutMenu form input:focus{height:100%;background:var(--gray-0);border-radius:3px;border:1px solid var(--border);min-height:26px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./PresetButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.PresetButton:hover{background:var(--tools-button-hover)}.PresetButton.contentEditButton.active,.PresetButton.formFieldEditButton.active{background:var(--tools-button-active);color:var(--view-header-icon-active-fill);cursor:default}.PresetButton.contentEditButton.active .Icon,.PresetButton.formFieldEditButton.active .Icon{color:var(--view-header-icon-active-fill)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../../node_modules/sass-loader/dist/cjs.js!./ListToggleButton.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.office-editor-number-list-wrapper.modular-ui{display:flex;flex-direction:row}.office-editor-number-list-wrapper.modular-ui .list-style-button{margin-right:0!important}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown{background:transparent;border:none;width:12px!important;height:32px!important;margin-left:0!important}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown.Dropdown__wrapper:hover{border-radius:4px}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown{padding:0}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown svg rect{stroke:none}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .picked-option-text{display:none}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .arrow{padding-left:0}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items{overflow:hidden}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item{height:74px!important;padding:15px 0;margin:3px;cursor:pointer}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item .Icon,.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item .Icon svg *{color:transparent}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item.active,.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item:hover{background:var(--tools-button-hover)}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item.active .office-editor-list-style-item-border,.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item:hover .office-editor-list-style-item-border{stroke:var(--dropdown-item-active)}.office-editor-number-list-wrapper.modular-ui .list-style-dropdown .Dropdown__items .Dropdown__item .officeEditor-list-style-icon{width:60px!important;height:74px!important}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./OfficeEditorCreateTablePopup.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".office-editor-create-table{margin:8px;width:120px;height:150px;cursor:pointer}.office-editor-create-table table,.office-editor-create-table td{border:1px solid var(--gray-8);border-collapse:collapse}.office-editor-create-table td{width:12px;height:12px}.office-editor-create-table td.selected-cell{background-color:var(--oe-table-dropdown-highlight)}.office-editor-create-table .create-table-rows-columns{display:block;text-align:center;margin:10px auto}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../../node_modules/css-loader/index.js!../../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../../node_modules/sass-loader/dist/cjs.js!./CreateTableDropdown.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.insert-table-dropdown.modular-ui{margin:0 6px}.insert-table-dropdown.modular-ui.open{background-color:var(--tools-button-hover);border-radius:4px}.insert-table-dropdown.modular-ui .display-button{display:flex;align-items:center;grid-gap:4px;gap:4px;cursor:pointer}.insert-table-dropdown.modular-ui .display-button:hover{background-color:var(--tools-button-hover);border-radius:4px}.insert-table-dropdown.modular-ui .display-button .Button{background-color:transparent!important;width:auto;grid-gap:4px;gap:4px}.insert-table-dropdown.modular-ui .display-button .Button .Icon{min-width:22px}.insert-table-dropdown.modular-ui .display-button .Icon.arrow{width:12px;height:12px;margin:0 2px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./ModularHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ModularHeader{box-sizing:border-box;display:flex;flex-direction:column;align-items:baseline;min-height:32px;padding:8px 12px;background:var(--gray-0);z-index:72;touch-action:none}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.FloatingHeaderContainer{transition:all .3s ease-in-out;position:absolute;width:100%;box-sizing:border-box;display:flex;flex-direction:row;align-items:baseline;min-height:36px;padding:24px;z-index:72;pointer-events:none}.FloatingHeaderContainer.bottom{position:relative}.FloatingHeaderContainer.left{width:41px;padding:24px 0 24px 24px}.FloatingHeaderContainer.right{width:41px;align-items:end}.FloatingHeaderContainer.vertical{flex-direction:column}.FloatingHeaderContainer .FloatSection{display:flex;flex:1}.FloatingHeaderContainer .FloatSection.vertical{flex-direction:column}.FloatingHeaderContainer .FloatSection.center__bottom,.FloatingHeaderContainer .FloatSection.center__left,.FloatingHeaderContainer .FloatSection.center__right,.FloatingHeaderContainer .FloatSection.center__top{justify-content:center}.FloatingHeaderContainer .FloatSection.end__bottom,.FloatingHeaderContainer .FloatSection.end__left,.FloatingHeaderContainer .FloatSection.end__right,.FloatingHeaderContainer .FloatSection.end__top{justify-content:flex-end}.FloatingHeader{border-radius:4px;pointer-events:auto;transition:opacity .2s ease;padding:8px 12px;background:var(--gray-0)}.FloatingHeader.opacity-full{opacity:1}.FloatingHeader.opacity-low{opacity:.5}.FloatingHeader.opacity-low.isVisible{opacity:1}.FloatingHeader.opacity-none{opacity:0}.FloatingHeader.opacity-mode-dynamic:hover,.FloatingHeader.opacity-none.isVisible{opacity:1}.FloatingHeader.stroke{border:1px solid var(--gray-6)}.FloatingHeader.VerticalHeader{padding:12px 8px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./LeftHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LeftHeader{height:100%;width:41px;min-width:-moz-fit-content;min-width:fit-content;padding:12px 8px}.LeftHeader.closed{position:fixed;left:0;display:none}.LeftHeader.stroke{border-right:1px solid var(--gray-5)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RightHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.RightHeader{height:100%;width:41px;min-width:-moz-fit-content;min-width:fit-content;z-index:63;padding:12px 8px}.RightHeader.closed{display:none}.RightHeader.stroke{border-left:1px solid var(--gray-5)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./BottomHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".bottom-headers-wrapper{position:absolute;left:0;right:0;bottom:0;pointer-events:none}.BottomHeader{display:inline-block;width:100%;pointer-events:auto}.BottomHeader.closed{display:none}.BottomHeader.stroke{border-top:1px solid var(--gray-5)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./TopHeader.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TopHeader{width:100%}.TopHeader.start{background:var(--gray-0)}.TopHeader.end{background:var(--tools-header-background)}.TopHeader.closed{padding:0;display:none}.TopHeader.stroke{border-bottom:1px solid var(--gray-4)}.TopHeader:first-child{z-index:73}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ZoomText{display:flex}.ZoomText .label{font-size:var(--font-size-default)}.ZoomText .value{color:var(--gray-7)}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ZoomText input{font-size:var(--font-size-default)}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ZoomText input{font-size:var(--font-size-default)}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./RibbonOverflowFlyout.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Flyout .RibbonOverflowFlyout .RibbonItem{width:100%}.Flyout .RibbonOverflowFlyout .RibbonItem .Button{justify-content:left}.Flyout .RibbonOverflowFlyout .RibbonItem .Button:hover{background-color:transparent}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./ProgressModal.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".open.ProgressModal{visibility:visible}.closed.ProgressModal{visibility:hidden}:host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.ProgressModal .footer .modal-button.confirm:hover{background:var(--primary-button-hover);border-color:var(--primary-button-hover);color:var(--gray-0)}.ProgressModal .footer .modal-button.confirm{background:var(--primary-button);border-color:var(--primary-button);color:var(--primary-button-text)}.ProgressModal .footer .modal-button.confirm.disabled{cursor:default;background:var(--disabled-button-color);color:var(--primary-button-text)}.ProgressModal .footer .modal-button.confirm.disabled span{color:var(--primary-button-text)}.ProgressModal .footer .modal-button.cancel:hover,.ProgressModal .footer .modal-button.secondary-btn-custom:hover{border:none;box-shadow:inset 0 0 0 1px var(--blue-6);color:var(--blue-6)}.ProgressModal .footer .modal-button.cancel,.ProgressModal .footer .modal-button.secondary-btn-custom{border:none;box-shadow:inset 0 0 0 1px var(--primary-button);color:var(--primary-button)}.ProgressModal .footer .modal-button.cancel.disabled,.ProgressModal .footer .modal-button.secondary-btn-custom.disabled{cursor:default;border:none;box-shadow:inset 0 0 0 1px rgba(43,115,171,.5);color:rgba(43,115,171,.5)}.ProgressModal .footer .modal-button.cancel.disabled span,.ProgressModal .footer .modal-button.secondary-btn-custom.disabled span{color:rgba(43,115,171,.5)}.ProgressModal{position:fixed;left:0;bottom:0;z-index:100;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background:var(--modal-negative-space)}.ProgressModal .modal-container .wrapper .modal-content{padding:10px}.ProgressModal .footer{display:flex;flex-direction:row;justify-content:flex-end;width:100%;margin-top:13px}.ProgressModal .footer.modal-footer{padding:16px;margin:0;border-top:1px solid var(--divider)}.ProgressModal .footer .modal-button{display:flex;justify-content:center;align-items:center;padding:6px 18px;margin:8px 0 0;width:auto;width:-moz-fit-content;width:fit-content;border-radius:4px;height:30px;cursor:pointer}.ProgressModal .footer .modal-button.confirm{margin-left:4px}.ProgressModal .footer .modal-button.secondary-btn-custom{border-radius:4px;padding:2px 20px 4px;cursor:pointer}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ProgressModal .footer .modal-button{padding:23px 8px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ProgressModal .footer .modal-button{padding:23px 8px}}.ProgressModal .swipe-indicator{background:var(--swipe-indicator-bg);border-radius:2px;height:4px;width:38px;position:absolute;top:12px;margin-left:auto;margin-right:auto;left:0;right:0}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ProgressModal .swipe-indicator{display:none}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .ProgressModal .swipe-indicator{display:none}}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .ProgressModal .swipe-indicator{width:32px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .ProgressModal .swipe-indicator{width:32px}}.ProgressModal{background:var(--spinner-negative-space)}.ProgressModal.open{opacity:1;transition:opacity 1s 2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:999}.ProgressModal.closed{opacity:0}.ProgressModal .progress-ring__circle,.ProgressModal .progress-ring__fill{transition:stroke-dashoffset .35s;transform:rotate(-90deg);transform-origin:50% 50%}.ProgressModal svg circle{fill:transparent;stroke-width:4}.ProgressModal svg circle.progress-ring__fill{stroke:var(--slider-background)}.ProgressModal svg circle.progress-ring__circle{stroke:var(--slider-filled)}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var map = {\n\t\"./af.js\": [\n\t\t1244,\n\t\t87\n\t],\n\t\"./am.js\": [\n\t\t1245,\n\t\t88\n\t],\n\t\"./ar-dz.js\": [\n\t\t1246,\n\t\t89\n\t],\n\t\"./ar-iq.js\": [\n\t\t1247,\n\t\t90\n\t],\n\t\"./ar-kw.js\": [\n\t\t1248,\n\t\t91\n\t],\n\t\"./ar-ly.js\": [\n\t\t1249,\n\t\t92\n\t],\n\t\"./ar-ma.js\": [\n\t\t1250,\n\t\t93\n\t],\n\t\"./ar-sa.js\": [\n\t\t1251,\n\t\t94\n\t],\n\t\"./ar-tn.js\": [\n\t\t1252,\n\t\t95\n\t],\n\t\"./ar.js\": [\n\t\t1253,\n\t\t96\n\t],\n\t\"./az.js\": [\n\t\t1254,\n\t\t97\n\t],\n\t\"./be.js\": [\n\t\t1255,\n\t\t98\n\t],\n\t\"./bg.js\": [\n\t\t1256,\n\t\t99\n\t],\n\t\"./bi.js\": [\n\t\t1257,\n\t\t100\n\t],\n\t\"./bm.js\": [\n\t\t1258,\n\t\t101\n\t],\n\t\"./bn-bd.js\": [\n\t\t1259,\n\t\t102\n\t],\n\t\"./bn.js\": [\n\t\t1260,\n\t\t103\n\t],\n\t\"./bo.js\": [\n\t\t1261,\n\t\t104\n\t],\n\t\"./br.js\": [\n\t\t1262,\n\t\t105\n\t],\n\t\"./bs.js\": [\n\t\t1263,\n\t\t106\n\t],\n\t\"./ca.js\": [\n\t\t1264,\n\t\t107\n\t],\n\t\"./cs.js\": [\n\t\t1265,\n\t\t108\n\t],\n\t\"./cv.js\": [\n\t\t1266,\n\t\t109\n\t],\n\t\"./cy.js\": [\n\t\t1267,\n\t\t110\n\t],\n\t\"./da.js\": [\n\t\t1268,\n\t\t111\n\t],\n\t\"./de-at.js\": [\n\t\t1269,\n\t\t112\n\t],\n\t\"./de-ch.js\": [\n\t\t1270,\n\t\t113\n\t],\n\t\"./de.js\": [\n\t\t1271,\n\t\t114\n\t],\n\t\"./dv.js\": [\n\t\t1272,\n\t\t115\n\t],\n\t\"./el.js\": [\n\t\t1273,\n\t\t116\n\t],\n\t\"./en-au.js\": [\n\t\t1274,\n\t\t117\n\t],\n\t\"./en-ca.js\": [\n\t\t1275,\n\t\t118\n\t],\n\t\"./en-gb.js\": [\n\t\t1276,\n\t\t119\n\t],\n\t\"./en-ie.js\": [\n\t\t1277,\n\t\t120\n\t],\n\t\"./en-il.js\": [\n\t\t1278,\n\t\t121\n\t],\n\t\"./en-in.js\": [\n\t\t1279,\n\t\t122\n\t],\n\t\"./en-nz.js\": [\n\t\t1280,\n\t\t123\n\t],\n\t\"./en-sg.js\": [\n\t\t1281,\n\t\t124\n\t],\n\t\"./en-tt.js\": [\n\t\t1282,\n\t\t125\n\t],\n\t\"./en.js\": [\n\t\t1283,\n\t\t126\n\t],\n\t\"./eo.js\": [\n\t\t1284,\n\t\t127\n\t],\n\t\"./es-do.js\": [\n\t\t1285,\n\t\t128\n\t],\n\t\"./es-mx.js\": [\n\t\t1286,\n\t\t129\n\t],\n\t\"./es-pr.js\": [\n\t\t1287,\n\t\t130\n\t],\n\t\"./es-us.js\": [\n\t\t1288,\n\t\t131\n\t],\n\t\"./es.js\": [\n\t\t1289,\n\t\t132\n\t],\n\t\"./et.js\": [\n\t\t1290,\n\t\t133\n\t],\n\t\"./eu.js\": [\n\t\t1291,\n\t\t134\n\t],\n\t\"./fa.js\": [\n\t\t1292,\n\t\t135\n\t],\n\t\"./fi.js\": [\n\t\t1293,\n\t\t136\n\t],\n\t\"./fo.js\": [\n\t\t1294,\n\t\t137\n\t],\n\t\"./fr-ca.js\": [\n\t\t1295,\n\t\t138\n\t],\n\t\"./fr-ch.js\": [\n\t\t1296,\n\t\t139\n\t],\n\t\"./fr.js\": [\n\t\t1297,\n\t\t140\n\t],\n\t\"./fy.js\": [\n\t\t1298,\n\t\t141\n\t],\n\t\"./ga.js\": [\n\t\t1299,\n\t\t142\n\t],\n\t\"./gd.js\": [\n\t\t1300,\n\t\t143\n\t],\n\t\"./gl.js\": [\n\t\t1301,\n\t\t144\n\t],\n\t\"./gom-latn.js\": [\n\t\t1302,\n\t\t145\n\t],\n\t\"./gu.js\": [\n\t\t1303,\n\t\t146\n\t],\n\t\"./he.js\": [\n\t\t1304,\n\t\t147\n\t],\n\t\"./hi.js\": [\n\t\t1305,\n\t\t148\n\t],\n\t\"./hr.js\": [\n\t\t1306,\n\t\t149\n\t],\n\t\"./ht.js\": [\n\t\t1307,\n\t\t150\n\t],\n\t\"./hu.js\": [\n\t\t1308,\n\t\t151\n\t],\n\t\"./hy-am.js\": [\n\t\t1309,\n\t\t152\n\t],\n\t\"./id.js\": [\n\t\t1310,\n\t\t153\n\t],\n\t\"./is.js\": [\n\t\t1311,\n\t\t154\n\t],\n\t\"./it-ch.js\": [\n\t\t1312,\n\t\t155\n\t],\n\t\"./it.js\": [\n\t\t1313,\n\t\t156\n\t],\n\t\"./ja.js\": [\n\t\t1314,\n\t\t157\n\t],\n\t\"./jv.js\": [\n\t\t1315,\n\t\t158\n\t],\n\t\"./ka.js\": [\n\t\t1316,\n\t\t159\n\t],\n\t\"./kk.js\": [\n\t\t1317,\n\t\t160\n\t],\n\t\"./km.js\": [\n\t\t1318,\n\t\t161\n\t],\n\t\"./kn.js\": [\n\t\t1319,\n\t\t162\n\t],\n\t\"./ko.js\": [\n\t\t1320,\n\t\t163\n\t],\n\t\"./ku.js\": [\n\t\t1321,\n\t\t164\n\t],\n\t\"./ky.js\": [\n\t\t1322,\n\t\t165\n\t],\n\t\"./lb.js\": [\n\t\t1323,\n\t\t166\n\t],\n\t\"./lo.js\": [\n\t\t1324,\n\t\t167\n\t],\n\t\"./lt.js\": [\n\t\t1325,\n\t\t168\n\t],\n\t\"./lv.js\": [\n\t\t1326,\n\t\t169\n\t],\n\t\"./me.js\": [\n\t\t1327,\n\t\t170\n\t],\n\t\"./mi.js\": [\n\t\t1328,\n\t\t171\n\t],\n\t\"./mk.js\": [\n\t\t1329,\n\t\t172\n\t],\n\t\"./ml.js\": [\n\t\t1330,\n\t\t173\n\t],\n\t\"./mn.js\": [\n\t\t1331,\n\t\t174\n\t],\n\t\"./mr.js\": [\n\t\t1332,\n\t\t175\n\t],\n\t\"./ms-my.js\": [\n\t\t1333,\n\t\t176\n\t],\n\t\"./ms.js\": [\n\t\t1334,\n\t\t177\n\t],\n\t\"./mt.js\": [\n\t\t1335,\n\t\t178\n\t],\n\t\"./my.js\": [\n\t\t1336,\n\t\t179\n\t],\n\t\"./nb.js\": [\n\t\t1337,\n\t\t180\n\t],\n\t\"./ne.js\": [\n\t\t1338,\n\t\t181\n\t],\n\t\"./nl-be.js\": [\n\t\t1339,\n\t\t182\n\t],\n\t\"./nl.js\": [\n\t\t1340,\n\t\t183\n\t],\n\t\"./nn.js\": [\n\t\t1341,\n\t\t184\n\t],\n\t\"./oc-lnc.js\": [\n\t\t1342,\n\t\t185\n\t],\n\t\"./pa-in.js\": [\n\t\t1343,\n\t\t186\n\t],\n\t\"./pl.js\": [\n\t\t1344,\n\t\t187\n\t],\n\t\"./pt-br.js\": [\n\t\t1345,\n\t\t188\n\t],\n\t\"./pt.js\": [\n\t\t1346,\n\t\t189\n\t],\n\t\"./rn.js\": [\n\t\t1347,\n\t\t190\n\t],\n\t\"./ro.js\": [\n\t\t1348,\n\t\t191\n\t],\n\t\"./ru.js\": [\n\t\t1349,\n\t\t192\n\t],\n\t\"./rw.js\": [\n\t\t1350,\n\t\t193\n\t],\n\t\"./sd.js\": [\n\t\t1351,\n\t\t194\n\t],\n\t\"./se.js\": [\n\t\t1352,\n\t\t195\n\t],\n\t\"./si.js\": [\n\t\t1353,\n\t\t196\n\t],\n\t\"./sk.js\": [\n\t\t1354,\n\t\t197\n\t],\n\t\"./sl.js\": [\n\t\t1355,\n\t\t198\n\t],\n\t\"./sq.js\": [\n\t\t1356,\n\t\t199\n\t],\n\t\"./sr-cyrl.js\": [\n\t\t1357,\n\t\t200\n\t],\n\t\"./sr.js\": [\n\t\t1358,\n\t\t201\n\t],\n\t\"./ss.js\": [\n\t\t1359,\n\t\t202\n\t],\n\t\"./sv-fi.js\": [\n\t\t1360,\n\t\t203\n\t],\n\t\"./sv.js\": [\n\t\t1361,\n\t\t204\n\t],\n\t\"./sw.js\": [\n\t\t1362,\n\t\t205\n\t],\n\t\"./ta.js\": [\n\t\t1363,\n\t\t206\n\t],\n\t\"./te.js\": [\n\t\t1364,\n\t\t207\n\t],\n\t\"./tet.js\": [\n\t\t1365,\n\t\t208\n\t],\n\t\"./tg.js\": [\n\t\t1366,\n\t\t209\n\t],\n\t\"./th.js\": [\n\t\t1367,\n\t\t210\n\t],\n\t\"./tk.js\": [\n\t\t1368,\n\t\t211\n\t],\n\t\"./tl-ph.js\": [\n\t\t1369,\n\t\t212\n\t],\n\t\"./tlh.js\": [\n\t\t1370,\n\t\t213\n\t],\n\t\"./tr.js\": [\n\t\t1371,\n\t\t214\n\t],\n\t\"./tzl.js\": [\n\t\t1372,\n\t\t215\n\t],\n\t\"./tzm-latn.js\": [\n\t\t1373,\n\t\t216\n\t],\n\t\"./tzm.js\": [\n\t\t1374,\n\t\t217\n\t],\n\t\"./ug-cn.js\": [\n\t\t1375,\n\t\t218\n\t],\n\t\"./uk.js\": [\n\t\t1376,\n\t\t219\n\t],\n\t\"./ur.js\": [\n\t\t1377,\n\t\t220\n\t],\n\t\"./uz-latn.js\": [\n\t\t1378,\n\t\t221\n\t],\n\t\"./uz.js\": [\n\t\t1379,\n\t\t222\n\t],\n\t\"./vi.js\": [\n\t\t1380,\n\t\t223\n\t],\n\t\"./x-pseudo.js\": [\n\t\t1381,\n\t\t224\n\t],\n\t\"./yo.js\": [\n\t\t1382,\n\t\t225\n\t],\n\t\"./zh-cn.js\": [\n\t\t1383,\n\t\t226\n\t],\n\t\"./zh-hk.js\": [\n\t\t1384,\n\t\t227\n\t],\n\t\"./zh-tw.js\": [\n\t\t1385,\n\t\t228\n\t],\n\t\"./zh.js\": [\n\t\t1386,\n\t\t229\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1191;\nmodule.exports = webpackAsyncContext;","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./App.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}:root{--blue-1:#e7edf3;--blue-2:#dde6ee;--blue-3:#cfd8e0;--blue-4:#c7d2dd;--blue-5:#3183c8;--blue-6:#1a4971;--gray-0:#fff;--gray-1:#f8f9fa;--gray-2:#f1f3f5;--gray-3:#e7ebee;--gray-4:#dee2e6;--gray-5:#cfd4da;--gray-6:#adb5bd;--gray-7:#868e96;--gray-8:#485056;--gray-9:#343a40;--gray-10:#21242a;--gray-11:#101214;--gray-12:#000;--yellow-1:rgba(250,206,0,0.50196);--red:red;--green:#006d41;--component-background:var(--gray-0);--mobile-presets-background:var(--gray-1);--faded-component-background:var(--gray-2);--toggle-zoom-overlay-background:var(--gray-2);--ribbons-background:var(--gray-3);--document-background-color:var(--gray-2);--error-text-color:var(--red);--error-border-color:var(--red);--slider-filled:var(--blue-5);--slider-background:var(--gray-4);--badge-fill:var(--gray-8);--badge-text-color:var(--gray-0);--view-header-icon-active-fill:var(--blue-6);--text-color:var(--gray-8);--faded-text:var(--gray-7);--placeholder-text:var(--gray-6);--ribbon-active-color:var(--blue-5);--no-presets-text:var(--gray-6);--disabled-text:var(--gray-5);--disabled-icon:var(--gray-5);--scroll-chevron-color:var(--gray-6);--icon-color:var(--gray-7);--selected-icon-color:var(--gray-8);--view-header-button-hover:var(--blue-1);--view-header-button-active:var(--blue-2);--popup-button-hover:var(--blue-1);--popup-button-active:var(--blue-2);--dropdown-item-active:var(--popup-button-active);--dropdown-item-active-text:var(--text-color);--dropdown-item-active-icon:var(--icon-color);--primary-button:var(--blue-5);--primary-button-text:var(--gray-1);--primary-button-hover:var(--blue-6);--secondary-button-text:var(--blue-5);--secondary-button-hover:var(--blue-6);--box-shadow:var(--gray-6);--document-box-shadow:var(--gray-7);--panel-background:var(--gray-1);--divider:var(--gray-5);--reply-divider:var(--gray-3);--side-panel-border:var(--divider);--border:var(--gray-5);--lighter-border:var(--gray-4);--focus-border:var(--blue-5);--color-palette-border:var(--gray-8);--image-signature-drop-background:var(--blue-1);--image-signature-drop-border:var(--blue-5);--file-picker-drop-background:var(--blue-1);--file-picker-drop-border:var(--blue-5);--signature-draw-background:var(--gray-2);--modal-stroke-and-border:var(--gray-5);--modal-negative-space:rgba(0,0,0,0.3);--spinner-negative-space:rgba(0,0,0,0.3);--white-color-palette-border:var(--border);--list-separator-color:var(--gray-7);--scrollbar-color:var(--gray-6);--note-box-shadow:var(--gray-7);--note-box-shadow-expanded:rgba(134,142,150,0.24);--tools-header-background:var(--gray-3);--view-header-background:var(--gray-1);--tools-overlay-background:var(--gray-0);--tools-button-hover:var(--blue-3);--tools-button-active:var(--blue-4);--tools-overlay-button-hover:var(--blue-1);--tools-overlay-button-active:var(--blue-2);--fileAttachment-title-padding:16px;--fileAttachment-list-padding:40px;--outline-color:var(--blue-5);--outline-hover:var(--gray-2);--outline-selected:var(--blue-1);--preset-background:var(--gray-1);--scale-overlay-item-hover:var(--blue-4);--oe-table-dropdown-highlight:var(--blue-4);--bookmark-outline-hover-border:transparent;--checked-option:var(--blue-5);--multi-tab-header-background:var(--view-header-background);--multi-tab-active-tab-background:var(--gray-1);--multi-tab-divider:var(--divider);--multi-tab-hover-border:var(--divider);--multi-tab-border:1px solid var(--divider);--multi-tab-text-color:var(--gray-7);--multi-tab-active-text-color:var(--gray-8);--multi-tab-add-button-padding:0px;--multi-tab-border-radius:3px;--multi-tab-divider-height:25px;--multi-tab-header-height:auto;--multi-tab-divider-top:5px;--multi-tab-flyout-hover:var(--blue-1);--multi-tab-flyout-hover-text:var(--text-color);--multi-tab-toggle-button-active:var(--multi-tab-hover-border);--file-preview-background:var(--gray-5);--tab-border-color:var(--border);--tab-border-color-hover:var(--border);--tab-background-color-hover:var(--popup-button-hover);--tab-border-color-selected:var(--border);--tab-text-color-selected:var(--text-color);--dropdown-item-hover:var(--popup-button-hover);--dropdown-item-active:var(--popup-button-hover);--dropdown-item-text-hover:var(--text-color);--disabled-button-color:rgba(173,181,189,0.5);--tab-footer-button-color:var(--primary-button-text);--x-button-hover-color:var(--view-header-button-hover);--slider-filler:none;--style-icon-color:var(--selected-icon-color);--cell-border-size:28px;--cell-outer-border-size:26px;--button-icon-color-active:var(--blue-6);--slider-svg-hieght:18px;--slider-input-focus:var(--focus-border);--colorpicker-tool-shadow:none;--colorpicker-tool-bg:none;--input-switch-default-color:var(--gray-3);--focus-visible-outline:2px solid var(--gray-10);--change-list-old-bg:#fff2f2;--change-list-new-bg:#e8faf3}*{transition:background-color .25s ease}::-webkit-scrollbar{width:7px}::-webkit-scrollbar:horizontal{height:7px}::-webkit-scrollbar-track{width:10px;border-radius:10px;background:none}::-webkit-scrollbar-thumb{border-radius:10px;background-color:#adb5bd;background-color:var(--scrollbar-color);border-top:2px solid transparent}.DocumentContainer{border-right:3px solid transparent}#app,body,html{width:100%;max-width:100%;height:100%;margin:0;padding:0;overflow:hidden;visibility:visible!important}#app,#note-state-popup-portal,body,button,form,html,input,label,select,textarea{font-family:Lato,sans-serif;color:#485056;color:var(--text-color)}#app,button,form,input,label,select,textarea{font-size:13px}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) #app,.App:not(.is-in-desktop-only-mode):not(.is-web-component) button,.App:not(.is-in-desktop-only-mode):not(.is-web-component) form,.App:not(.is-in-desktop-only-mode):not(.is-web-component) input,.App:not(.is-in-desktop-only-mode):not(.is-web-component) label,.App:not(.is-in-desktop-only-mode):not(.is-web-component) select,.App:not(.is-in-desktop-only-mode):not(.is-web-component) textarea{font-size:16px}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) #app,.App.is-web-component:not(.is-in-desktop-only-mode) button,.App.is-web-component:not(.is-in-desktop-only-mode) form,.App.is-web-component:not(.is-in-desktop-only-mode) input,.App.is-web-component:not(.is-in-desktop-only-mode) label,.App.is-web-component:not(.is-in-desktop-only-mode) select,.App.is-web-component:not(.is-in-desktop-only-mode) textarea{font-size:16px}}input,select,textarea{border:1px solid #cfd4da;border:1px solid var(--border);border-radius:4px;background:#fff;background:var(--component-background);color:#485056;color:var(--text-color)}input:focus,select:focus,textarea:focus{outline:none;border:1px solid #3183c8;border:1px solid var(--outline-color)}.App{display:flex;flex-direction:column;position:static;width:100%;height:100%;margin:0;padding:0;background-color:#f1f3f5;background-color:var(--document-background-color);-webkit-font-smoothing:antialiased}.App>.content{display:flex;flex-direction:row;flex:1;overflow:auto}.App *,.App :after,.App :before{box-sizing:border-box}.App div{-webkit-tap-highlight-color:rgba(0,0,0,0)}.App canvas,.App div{-webkit-user-select:none;-moz-user-select:none;user-select:none}.App canvas.ql-clipboard,.App div.ql-clipboard{-webkit-user-select:text;-moz-user-select:text;user-select:text}.App input[type=text],.App textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:text!important;-moz-user-select:text!important;user-select:text!important}.App input[type=text]{font-family:Lato}.freetext-editor .ql-editor{padding:0}.justify-bottom .ql-editor>:first-child{margin-top:auto!important}.justify-bottom{display:flex;flex-direction:column-reverse}.ql-editor>p{margin:0;padding:0}.ql-editor>p span{line-height:normal}.ql-clipboard{width:0;height:1px}.visually-hidden{position:absolute!important;width:0!important;height:0!important;padding:0!important;margin:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.no-margin{margin:0}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./Layer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Layer{margin-top:12px}.Layer .content-container,.Layer .parent-layer{display:inline-flex;align-items:center}.Layer .parent-layer .ui__choice{margin-right:0}.Layer .parent-layer .ui__choice__label{margin-left:8px;margin-right:8px;padding:0}.Layer .arrow{margin-right:4px;display:inline-flex;align-items:center;border-radius:4px;width:18px;height:18px}.Layer .arrow:hover{cursor:pointer;background-color:var(--blue-1)}.Layer .arrow .Icon{width:18px;height:18px}.Layer .sub-layers{padding-left:25px}.Layer .lock-icon{display:inline-flex;align-items:center;width:10px;height:10px}.Layer .lock-icon svg{width:100%;height:100%}.Layer .lock-icon svg path{fill:var(--gray-8)}\", \"\"]);\n\n// exports\n","var api = require(\"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../node_modules/sass-loader/dist/cjs.js!./LayersPanel.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:inline-block;container-type:inline-size;width:100%;height:100%;overflow:hidden}@media(min-width:901px){.App:not(.is-web-component) .hide-in-desktop{display:none}}@container (min-width: 901px){.hide-in-desktop{display:none}}@media(min-width:641px)and (max-width:900px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .hide-in-tablet{display:none}}@container (min-width: 641px) and (max-width: 900px){.App.is-web-component:not(.is-in-desktop-only-mode) .hide-in-tablet{display:none}}@media(max-width:640px)and (min-width:431px){.App:not(.is-web-component) .hide-in-mobile{display:none}}@container (max-width: 640px) and (min-width: 431px){.App.is-web-component .hide-in-mobile{display:none}}@media(max-width:430px){.App:not(.is-web-component) .hide-in-small-mobile{display:none}}@container (max-width: 430px){.App.is-web-component .hide-in-small-mobile{display:none}}.always-hide{display:none}.LayersPanel{z-index:65;display:flex;flex-direction:column;transition:transform .3s ease,visibility 0s ease .3s}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LayersPanel{top:0;width:100%;height:100%}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .LayersPanel{top:0;width:100%;height:100%}}.open.LayersPanel{transform:none;visibility:visible;transition:transform .3s ease,visibility 0s ease 0s}.LayersPanel .empty-panel-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%;padding:36px;grid-gap:8px;gap:8px}.LayersPanel .empty-panel-container .empty-icon{width:60px;height:60px;color:var(--gray-6);fill:var(--gray-6)}.LayersPanel .empty-panel-container .empty-icon svg{width:60px;height:60px}.LayersPanel .empty-panel-container .empty-message{text-align:center;max-width:131px;font-size:13px}@media(min-width:641px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LayersPanel .empty-panel-container .empty-message{line-height:15px}}@container (min-width: 641px){.App.is-web-component:not(.is-in-desktop-only-mode) .LayersPanel .empty-panel-container .empty-message{line-height:15px}}.LayersPanel{padding-left:15px}.LayersPanel>.Layer:first-child{margin-top:0}@media(max-width:640px){.App:not(.is-in-desktop-only-mode):not(.is-web-component) .LayersPanel{width:auto;margin:16px;padding-left:0;overflow-y:auto}}@container (max-width: 640px){.App.is-web-component:not(.is-in-desktop-only-mode) .LayersPanel{width:auto;margin:16px;padding-left:0;overflow-y:auto}}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LEFT_HEADER_WIDTH\": \"41px\",\n\t\"RIGHT_HEADER_WIDTH\": \"41px\"\n};","var api = require(\"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../../../../node_modules/css-loader/index.js!../../../../../../node_modules/postcss-loader/src/index.js??postcss!../../../../../../node_modules/sass-loader/dist/cjs.js!./MultiViewerWrapper.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","let urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    let i = size\n    while (i--) {\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\nlet nanoid = (size = 21) => {\n  let id = ''\n  let i = size\n  while (i--) {\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\nexport { nanoid, customAlphabet }\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet tokenizer = require('./tokenize')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n  empty: true,\n  space: true\n}\n\nfunction findLastWithPosition(tokens) {\n  for (let i = tokens.length - 1; i >= 0; i--) {\n    let token = tokens[i]\n    let pos = token[3] || token[2]\n    if (pos) return pos\n  }\n}\n\nclass Parser {\n  constructor(input) {\n    this.input = input\n\n    this.root = new Root()\n    this.current = this.root\n    this.spaces = ''\n    this.semicolon = false\n\n    this.createTokenizer()\n    this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n  }\n\n  atrule(token) {\n    let node = new AtRule()\n    node.name = token[1].slice(1)\n    if (node.name === '') {\n      this.unnamedAtrule(node, token)\n    }\n    this.init(node, token[2])\n\n    let type\n    let prev\n    let shift\n    let last = false\n    let open = false\n    let params = []\n    let brackets = []\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n      type = token[0]\n\n      if (type === '(' || type === '[') {\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (type === '{' && brackets.length > 0) {\n        brackets.push('}')\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n      }\n\n      if (brackets.length === 0) {\n        if (type === ';') {\n          node.source.end = this.getPosition(token[2])\n          node.source.end.offset++\n          this.semicolon = true\n          break\n        } else if (type === '{') {\n          open = true\n          break\n        } else if (type === '}') {\n          if (params.length > 0) {\n            shift = params.length - 1\n            prev = params[shift]\n            while (prev && prev[0] === 'space') {\n              prev = params[--shift]\n            }\n            if (prev) {\n              node.source.end = this.getPosition(prev[3] || prev[2])\n              node.source.end.offset++\n            }\n          }\n          this.end(token)\n          break\n        } else {\n          params.push(token)\n        }\n      } else {\n        params.push(token)\n      }\n\n      if (this.tokenizer.endOfFile()) {\n        last = true\n        break\n      }\n    }\n\n    node.raws.between = this.spacesAndCommentsFromEnd(params)\n    if (params.length) {\n      node.raws.afterName = this.spacesAndCommentsFromStart(params)\n      this.raw(node, 'params', params)\n      if (last) {\n        token = params[params.length - 1]\n        node.source.end = this.getPosition(token[3] || token[2])\n        node.source.end.offset++\n        this.spaces = node.raws.between\n        node.raws.between = ''\n      }\n    } else {\n      node.raws.afterName = ''\n      node.params = ''\n    }\n\n    if (open) {\n      node.nodes = []\n      this.current = node\n    }\n  }\n\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens)\n    if (colon === false) return\n\n    let founded = 0\n    let token\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j]\n      if (token[0] !== 'space') {\n        founded += 1\n        if (founded === 2) break\n      }\n    }\n    // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n    // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n    // And because we need it after that one we do +1 to get the next one.\n    throw this.input.error(\n      'Missed semicolon',\n      token[0] === 'word' ? token[3] + 1 : token[2]\n    )\n  }\n\n  colon(tokens) {\n    let brackets = 0\n    let token, type, prev\n    for (let [i, element] of tokens.entries()) {\n      token = element\n      type = token[0]\n\n      if (type === '(') {\n        brackets += 1\n      }\n      if (type === ')') {\n        brackets -= 1\n      }\n      if (brackets === 0 && type === ':') {\n        if (!prev) {\n          this.doubleColon(token)\n        } else if (prev[0] === 'word' && prev[1] === 'progid') {\n          continue\n        } else {\n          return i\n        }\n      }\n\n      prev = token\n    }\n    return false\n  }\n\n  comment(token) {\n    let node = new Comment()\n    this.init(node, token[2])\n    node.source.end = this.getPosition(token[3] || token[2])\n    node.source.end.offset++\n\n    let text = token[1].slice(2, -2)\n    if (/^\\s*$/.test(text)) {\n      node.text = ''\n      node.raws.left = text\n      node.raws.right = ''\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n      node.text = match[2]\n      node.raws.left = match[1]\n      node.raws.right = match[3]\n    }\n  }\n\n  createTokenizer() {\n    this.tokenizer = tokenizer(this.input)\n  }\n\n  decl(tokens, customProperty) {\n    let node = new Declaration()\n    this.init(node, tokens[0][2])\n\n    let last = tokens[tokens.length - 1]\n    if (last[0] === ';') {\n      this.semicolon = true\n      tokens.pop()\n    }\n\n    node.source.end = this.getPosition(\n      last[3] || last[2] || findLastWithPosition(tokens)\n    )\n    node.source.end.offset++\n\n    while (tokens[0][0] !== 'word') {\n      if (tokens.length === 1) this.unknownWord(tokens)\n      node.raws.before += tokens.shift()[1]\n    }\n    node.source.start = this.getPosition(tokens[0][2])\n\n    node.prop = ''\n    while (tokens.length) {\n      let type = tokens[0][0]\n      if (type === ':' || type === 'space' || type === 'comment') {\n        break\n      }\n      node.prop += tokens.shift()[1]\n    }\n\n    node.raws.between = ''\n\n    let token\n    while (tokens.length) {\n      token = tokens.shift()\n\n      if (token[0] === ':') {\n        node.raws.between += token[1]\n        break\n      } else {\n        if (token[0] === 'word' && /\\w/.test(token[1])) {\n          this.unknownWord([token])\n        }\n        node.raws.between += token[1]\n      }\n    }\n\n    if (node.prop[0] === '_' || node.prop[0] === '*') {\n      node.raws.before += node.prop[0]\n      node.prop = node.prop.slice(1)\n    }\n\n    let firstSpaces = []\n    let next\n    while (tokens.length) {\n      next = tokens[0][0]\n      if (next !== 'space' && next !== 'comment') break\n      firstSpaces.push(tokens.shift())\n    }\n\n    this.precheckMissedSemicolon(tokens)\n\n    for (let i = tokens.length - 1; i >= 0; i--) {\n      token = tokens[i]\n      if (token[1].toLowerCase() === '!important') {\n        node.important = true\n        let string = this.stringFrom(tokens, i)\n        string = this.spacesFromEnd(tokens) + string\n        if (string !== ' !important') node.raws.important = string\n        break\n      } else if (token[1].toLowerCase() === 'important') {\n        let cache = tokens.slice(0)\n        let str = ''\n        for (let j = i; j > 0; j--) {\n          let type = cache[j][0]\n          if (str.trim().indexOf('!') === 0 && type !== 'space') {\n            break\n          }\n          str = cache.pop()[1] + str\n        }\n        if (str.trim().indexOf('!') === 0) {\n          node.important = true\n          node.raws.important = str\n          tokens = cache\n        }\n      }\n\n      if (token[0] !== 'space' && token[0] !== 'comment') {\n        break\n      }\n    }\n\n    let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n    if (hasWord) {\n      node.raws.between += firstSpaces.map(i => i[1]).join('')\n      firstSpaces = []\n    }\n    this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n    if (node.value.includes(':') && !customProperty) {\n      this.checkMissedSemicolon(tokens)\n    }\n  }\n\n  doubleColon(token) {\n    throw this.input.error(\n      'Double colon',\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    )\n  }\n\n  emptyRule(token) {\n    let node = new Rule()\n    this.init(node, token[2])\n    node.selector = ''\n    node.raws.between = ''\n    this.current = node\n  }\n\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.semicolon = false\n\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n    this.spaces = ''\n\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2])\n      this.current.source.end.offset++\n      this.current = this.current.parent\n    } else {\n      this.unexpectedClose(token)\n    }\n  }\n\n  endFile() {\n    if (this.current.parent) this.unclosedBlock()\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n    this.root.source.end = this.getPosition(this.tokenizer.position())\n  }\n\n  freeSemicolon(token) {\n    this.spaces += token[1]\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1]\n      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces\n        this.spaces = ''\n      }\n    }\n  }\n\n  // Helpers\n\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset)\n    return {\n      column: pos.col,\n      line: pos.line,\n      offset\n    }\n  }\n\n  init(node, offset) {\n    this.current.push(node)\n    node.source = {\n      input: this.input,\n      start: this.getPosition(offset)\n    }\n    node.raws.before = this.spaces\n    this.spaces = ''\n    if (node.type !== 'comment') this.semicolon = false\n  }\n\n  other(start) {\n    let end = false\n    let type = null\n    let colon = false\n    let bracket = null\n    let brackets = []\n    let customProperty = start[1].startsWith('--')\n\n    let tokens = []\n    let token = start\n    while (token) {\n      type = token[0]\n      tokens.push(token)\n\n      if (type === '(' || type === '[') {\n        if (!bracket) bracket = token\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (customProperty && colon && type === '{') {\n        if (!bracket) bracket = token\n        brackets.push('}')\n      } else if (brackets.length === 0) {\n        if (type === ';') {\n          if (colon) {\n            this.decl(tokens, customProperty)\n            return\n          } else {\n            break\n          }\n        } else if (type === '{') {\n          this.rule(tokens)\n          return\n        } else if (type === '}') {\n          this.tokenizer.back(tokens.pop())\n          end = true\n          break\n        } else if (type === ':') {\n          colon = true\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n        if (brackets.length === 0) bracket = null\n      }\n\n      token = this.tokenizer.nextToken()\n    }\n\n    if (this.tokenizer.endOfFile()) end = true\n    if (brackets.length > 0) this.unclosedBracket(bracket)\n\n    if (end && colon) {\n      if (!customProperty) {\n        while (tokens.length) {\n          token = tokens[tokens.length - 1][0]\n          if (token !== 'space' && token !== 'comment') break\n          this.tokenizer.back(tokens.pop())\n        }\n      }\n      this.decl(tokens, customProperty)\n    } else {\n      this.unknownWord(tokens)\n    }\n  }\n\n  parse() {\n    let token\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n\n      switch (token[0]) {\n        case 'space':\n          this.spaces += token[1]\n          break\n\n        case ';':\n          this.freeSemicolon(token)\n          break\n\n        case '}':\n          this.end(token)\n          break\n\n        case 'comment':\n          this.comment(token)\n          break\n\n        case 'at-word':\n          this.atrule(token)\n          break\n\n        case '{':\n          this.emptyRule(token)\n          break\n\n        default:\n          this.other(token)\n          break\n      }\n    }\n    this.endFile()\n  }\n\n  precheckMissedSemicolon(/* tokens */) {\n    // Hook for Safe Parser\n  }\n\n  raw(node, prop, tokens, customProperty) {\n    let token, type\n    let length = tokens.length\n    let value = ''\n    let clean = true\n    let next, prev\n\n    for (let i = 0; i < length; i += 1) {\n      token = tokens[i]\n      type = token[0]\n      if (type === 'space' && i === length - 1 && !customProperty) {\n        clean = false\n      } else if (type === 'comment') {\n        prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n        next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n        if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n          if (value.slice(-1) === ',') {\n            clean = false\n          } else {\n            value += token[1]\n          }\n        } else {\n          clean = false\n        }\n      } else {\n        value += token[1]\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i) => all + i[1], '')\n      node.raws[prop] = { raw, value }\n    }\n    node[prop] = value\n  }\n\n  rule(tokens) {\n    tokens.pop()\n\n    let node = new Rule()\n    this.init(node, tokens[0][2])\n\n    node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n    this.raw(node, 'selector', tokens)\n    this.current = node\n  }\n\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  // Errors\n\n  spacesAndCommentsFromStart(tokens) {\n    let next\n    let spaces = ''\n    while (tokens.length) {\n      next = tokens[0][0]\n      if (next !== 'space' && next !== 'comment') break\n      spaces += tokens.shift()[1]\n    }\n    return spaces\n  }\n\n  spacesFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  stringFrom(tokens, from) {\n    let result = ''\n    for (let i = from; i < tokens.length; i++) {\n      result += tokens[i][1]\n    }\n    tokens.splice(from, tokens.length - from)\n    return result\n  }\n\n  unclosedBlock() {\n    let pos = this.current.source.start\n    throw this.input.error('Unclosed block', pos.line, pos.column)\n  }\n\n  unclosedBracket(bracket) {\n    throw this.input.error(\n      'Unclosed bracket',\n      { offset: bracket[2] },\n      { offset: bracket[2] + 1 }\n    )\n  }\n\n  unexpectedClose(token) {\n    throw this.input.error(\n      'Unexpected }',\n      { offset: token[2] },\n      { offset: token[2] + 1 }\n    )\n  }\n\n  unknownWord(tokens) {\n    throw this.input.error(\n      'Unknown word',\n      { offset: tokens[0][2] },\n      { offset: tokens[0][2] + tokens[0][1].length }\n    )\n  }\n\n  unnamedAtrule(node, token) {\n    throw this.input.error(\n      'At-rule without name',\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    )\n  }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n  let css = input.css.valueOf()\n  let ignore = options.ignoreErrors\n\n  let code, next, quote, content, escape\n  let escaped, escapePos, prev, n, currentToken\n\n  let length = css.length\n  let pos = 0\n  let buffer = []\n  let returned = []\n\n  function position() {\n    return pos\n  }\n\n  function unclosed(what) {\n    throw input.error('Unclosed ' + what, pos)\n  }\n\n  function endOfFile() {\n    return returned.length === 0 && pos >= length\n  }\n\n  function nextToken(opts) {\n    if (returned.length) return returned.pop()\n    if (pos >= length) return\n\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n    code = css.charCodeAt(pos)\n\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED: {\n        next = pos\n        do {\n          next += 1\n          code = css.charCodeAt(next)\n        } while (\n          code === SPACE ||\n          code === NEWLINE ||\n          code === TAB ||\n          code === CR ||\n          code === FEED\n        )\n\n        currentToken = ['space', css.slice(pos, next)]\n        pos = next - 1\n        break\n      }\n\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES: {\n        let controlChar = String.fromCharCode(code)\n        currentToken = [controlChar, controlChar, pos]\n        break\n      }\n\n      case OPEN_PARENTHESES: {\n        prev = buffer.length ? buffer.pop()[1] : ''\n        n = css.charCodeAt(pos + 1)\n        if (\n          prev === 'url' &&\n          n !== SINGLE_QUOTE &&\n          n !== DOUBLE_QUOTE &&\n          n !== SPACE &&\n          n !== NEWLINE &&\n          n !== TAB &&\n          n !== FEED &&\n          n !== CR\n        ) {\n          next = pos\n          do {\n            escaped = false\n            next = css.indexOf(')', next + 1)\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos\n                break\n              } else {\n                unclosed('bracket')\n              }\n            }\n            escapePos = next\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1\n              escaped = !escaped\n            }\n          } while (escaped)\n\n          currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n          pos = next\n        } else {\n          next = css.indexOf(')', pos + 1)\n          content = css.slice(pos, next + 1)\n\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = ['(', '(', pos]\n          } else {\n            currentToken = ['brackets', content, pos, next]\n            pos = next\n          }\n        }\n\n        break\n      }\n\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE: {\n        quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n        next = pos\n        do {\n          escaped = false\n          next = css.indexOf(quote, next + 1)\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1\n              break\n            } else {\n              unclosed('string')\n            }\n          }\n          escapePos = next\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1\n            escaped = !escaped\n          }\n        } while (escaped)\n\n        currentToken = ['string', css.slice(pos, next + 1), pos, next]\n        pos = next\n        break\n      }\n\n      case AT: {\n        RE_AT_END.lastIndex = pos + 1\n        RE_AT_END.test(css)\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1\n        } else {\n          next = RE_AT_END.lastIndex - 2\n        }\n\n        currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      case BACKSLASH: {\n        next = pos\n        escape = true\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1\n          escape = !escape\n        }\n        code = css.charCodeAt(next + 1)\n        if (\n          escape &&\n          code !== SLASH &&\n          code !== SPACE &&\n          code !== NEWLINE &&\n          code !== TAB &&\n          code !== CR &&\n          code !== FEED\n        ) {\n          next += 1\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1\n            }\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1\n            }\n          }\n        }\n\n        currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      default: {\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf('*/', pos + 2) + 1\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length\n            } else {\n              unclosed('comment')\n            }\n          }\n\n          currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n          pos = next\n        } else {\n          RE_WORD_END.lastIndex = pos + 1\n          RE_WORD_END.test(css)\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1\n          } else {\n            next = RE_WORD_END.lastIndex - 2\n          }\n\n          currentToken = ['word', css.slice(pos, next + 1), pos, next]\n          buffer.push(currentToken)\n          pos = next\n        }\n\n        break\n      }\n    }\n\n    pos++\n    return currentToken\n  }\n\n  function back(token) {\n    returned.push(token)\n  }\n\n  return {\n    back,\n    endOfFile,\n    nextToken,\n    position\n  }\n}\n","'use strict'\n\nlet NoWorkResult = require('./no-work-result')\nlet LazyResult = require('./lazy-result')\nlet Document = require('./document')\nlet Root = require('./root')\n\nclass Processor {\n  constructor(plugins = []) {\n    this.version = '8.4.38'\n    this.plugins = this.normalize(plugins)\n  }\n\n  normalize(plugins) {\n    let normalized = []\n    for (let i of plugins) {\n      if (i.postcss === true) {\n        i = i()\n      } else if (i.postcss) {\n        i = i.postcss\n      }\n\n      if (typeof i === 'object' && Array.isArray(i.plugins)) {\n        normalized = normalized.concat(i.plugins)\n      } else if (typeof i === 'object' && i.postcssPlugin) {\n        normalized.push(i)\n      } else if (typeof i === 'function') {\n        normalized.push(i)\n      } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n        if (process.env.NODE_ENV !== 'production') {\n          throw new Error(\n            'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n              'one of the syntax/parser/stringifier options as outlined ' +\n              'in your PostCSS runner documentation.'\n          )\n        }\n      } else {\n        throw new Error(i + ' is not a PostCSS plugin')\n      }\n    }\n    return normalized\n  }\n\n  process(css, opts = {}) {\n    if (\n      !this.plugins.length &&\n      !opts.parser &&\n      !opts.stringifier &&\n      !opts.syntax\n    ) {\n      return new NoWorkResult(this, css, opts)\n    } else {\n      return new LazyResult(this, css, opts)\n    }\n  }\n\n  use(plugin) {\n    this.plugins = this.plugins.concat(this.normalize([plugin]))\n    return this\n  }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\nlet parse = require('./parse')\nconst Result = require('./result')\n\nclass NoWorkResult {\n  constructor(processor, css, opts) {\n    css = css.toString()\n    this.stringified = false\n\n    this._processor = processor\n    this._css = css\n    this._opts = opts\n    this._map = undefined\n    let root\n\n    let str = stringify\n    this.result = new Result(this._processor, root, this._opts)\n    this.result.css = css\n\n    let self = this\n    Object.defineProperty(this.result, 'root', {\n      get() {\n        return self.root\n      }\n    })\n\n    let map = new MapGenerator(str, root, this._opts, css)\n    if (map.isMap()) {\n      let [generatedCSS, generatedMap] = map.generate()\n      if (generatedCSS) {\n        this.result.css = generatedCSS\n      }\n      if (generatedMap) {\n        this.result.map = generatedMap\n      }\n    } else {\n      map.clearAnnotation()\n      this.result.css = map.css\n    }\n  }\n\n  async() {\n    if (this.error) return Promise.reject(this.error)\n    return Promise.resolve(this.result)\n  }\n\n  catch(onRejected) {\n    return this.async().catch(onRejected)\n  }\n\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally)\n  }\n\n  sync() {\n    if (this.error) throw this.error\n    return this.result\n  }\n\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!('from' in this._opts)) {\n        warnOnce(\n          'Without `from` option PostCSS could generate wrong source map ' +\n            'and will not find Browserslist config. Set it to CSS file path ' +\n            'or to `undefined` to prevent this warning.'\n        )\n      }\n    }\n\n    return this.async().then(onFulfilled, onRejected)\n  }\n\n  toString() {\n    return this._css\n  }\n\n  warnings() {\n    return []\n  }\n\n  get content() {\n    return this.result.css\n  }\n\n  get css() {\n    return this.result.css\n  }\n\n  get map() {\n    return this.result.map\n  }\n\n  get messages() {\n    return []\n  }\n\n  get opts() {\n    return this.result.opts\n  }\n\n  get processor() {\n    return this.result.processor\n  }\n\n  get root() {\n    if (this._root) {\n      return this._root\n    }\n\n    let root\n    let parser = parse\n\n    try {\n      root = parser(this._css, this._opts)\n    } catch (error) {\n      this.error = error\n    }\n\n    if (this.error) {\n      throw this.error\n    } else {\n      this._root = root\n      return root\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'NoWorkResult'\n  }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet PreviousMap = require('./previous-map')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Input = require('./input')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n  if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n  let { inputs: ownInputs, ...defaults } = json\n  if (ownInputs) {\n    inputs = []\n    for (let input of ownInputs) {\n      let inputHydrated = { ...input, __proto__: Input.prototype }\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap.prototype\n        }\n      }\n      inputs.push(inputHydrated)\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source\n    defaults.source = source\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId]\n    }\n  }\n  if (defaults.type === 'root') {\n    return new Root(defaults)\n  } else if (defaults.type === 'decl') {\n    return new Declaration(defaults)\n  } else if (defaults.type === 'rule') {\n    return new Rule(defaults)\n  } else if (defaults.type === 'comment') {\n    return new Comment(defaults)\n  } else if (defaults.type === 'atrule') {\n    return new AtRule(defaults)\n  } else {\n    throw new Error('Unknown node type: ' + json.type)\n  }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","var $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var descriptor, prototype;\n  if (anObject(target) === receiver) return target[propertyKey];\n  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n  if (descriptor) return isDataDescriptor(descriptor)\n    ? descriptor.value\n    : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n  get: get\n});\n","var hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\n};\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/index.js!../../../node_modules/postcss-loader/src/index.js??postcss!../../../node_modules/sass-loader/dist/cjs.js!./index.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = function (styleTag) {\n                function findNestedWebComponents(tagName, root = document) {\n                  const elements = [];\n\n                  // Check direct children\n                  root.querySelectorAll(tagName).forEach(el => elements.push(el));\n\n                  // Check shadow DOMs\n                  root.querySelectorAll('*').forEach(el => {\n                    if (el.shadowRoot) {\n                      elements.push(...findNestedWebComponents(tagName, el.shadowRoot));\n                    }\n                  });\n\n                  return elements;\n                }\n                if (!window.isApryseWebViewerWebComponent) {\n                  document.head.appendChild(styleTag);\n                  return;\n                }\n\n                let webComponents;\n                // First we see if the webcomponent is at the document level\n                webComponents = document.getElementsByTagName('apryse-webviewer');\n                // If not, we check have to check if it is nested in another webcomponent\n                if (!webComponents.length) {\n                  webComponents = findNestedWebComponents('apryse-webviewer');\n                }\n                // Now we append the style tag to each webcomponent\n                const clonedStyleTags = [];\n                for (let i = 0; i < webComponents.length; i++) {\n                  const webComponent = webComponents[i];\n                  if (i === 0) {\n                    webComponent.shadowRoot.appendChild(styleTag);\n                    styleTag.onload = function () {\n                      if (clonedStyleTags.length > 0) {\n                        clonedStyleTags.forEach((styleNode) => {\n                          // eslint-disable-next-line no-unsanitized/property\n                          styleNode.innerHTML = styleTag.innerHTML;\n                        });\n                      }\n                    };\n                  } else {\n                    const styleNode = styleTag.cloneNode(true);\n                    webComponent.shadowRoot.appendChild(styleNode);\n                    clonedStyleTags.push(styleNode);\n                  }\n                }\n              };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root{--color-theme-primary:#00a5e4;--color-theme-secondary:#242933;--color-font-primary:#232229;--color-font-secondary:#5b5c68;--color-gray-1:#fff;--color-gray-2:#f4f4f4;--color-gray-3:#e7ebee;--color-gray-4:#ddd;--color-gray-5:#cfd4da;--color-blue-gray-1:#dfe2ed;--color-blue-gray-2:#c3c6d4;--color-blue-gray-3:#abb0c4;--color-blue-gray-4:#8b92ab;--color-blue-gray-5:#6077bf;--color-blue-gray-6:#415797;--color-contrast-1:#fafafa;--color-contrast-2:#f0f0f0;--color-message-info:#2980b9;--color-message-success:#27ae60;--color-message-warning:#e67e22;--color-message-error:#e74c3c;--color-message-info-focus-shadow:rgba(41,128,185,0.4);--color-message-success-focus-shadow:rgba(39,174,96,0.4);--color-message-warning-focus-shadow:rgba(230,126,34,0.4);--color-message-error-focus-shadow:rgba(231,76,60,0.4);--color-background-canvas:#eee;--color-focus-shadow:rgba(20,110,170,0.4);--color-overlay-canvas:rgba(0,0,0,0.4);--font-size-tiny:9px;--font-size-small:11px;--font-size-default:13px;--font-size-medium:16px;--font-size-large:18px;--font-size-huge:24px;--font-weight-normal:400;--font-weight-bold:700;--padding-tiny:4px;--padding-small:8px;--padding-medium:12px;--padding:16px;--padding-large:24px;--padding-huge:32px;--border-radius-small:2px;--border-radius:4px;--border-radius-large:8px;--box-shadow-1:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--box-shadow-2:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--box-shadow-3:0 10px 20px rgba(0,0,0,0.19),0 6px 6px rgba(0,0,0,0.23);--z-index-local:0;--z-index-raised:100;--z-index-dragging:200;--z-index-overlay:300;--font-family:Lato,Tahoma,sans-serif;--focus-transition:box-shadow 0.1s cubic-bezier(0.4,1,0.75,0.9)}html[data-theme=dark]{--color-theme-primary:#00a5e4;--color-theme-secondary:#8fa5c7;--color-font-primary:#d7daeb;--color-font-secondary:#989ba3;--color-gray-1:#4a4a4a;--color-gray-2:#444;--color-gray-3:#424242;--color-gray-4:#3f3f3f;--color-gray-5:#3a3a3a;--color-blue-gray-1:#46506d;--color-blue-gray-2:#525e80;--color-blue-gray-3:#6d7485;--color-blue-gray-4:#9098b3;--color-blue-gray-5:#aab1cf;--color-blue-gray-6:#9098b3;--color-contrast-1:#101010;--color-contrast-2:#1a1a1a;--color-background-canvas:#333;--color-focus-shadow:rgba(32,162,255,0.4)}@keyframes timeline{0%{background-position:-200px 0}to{background-position:200px 0}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes slide{to{transform:translateY(0)}}.ui__base{\\n  /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */box-sizing:border-box;font-size:13px;font-size:var(--font-size-default);line-height:1.25;font-family:inherit;color:#232229;color:var(--color-font-primary);fill:#232229;fill:var(--color-font-primary);font-weight:400;font-weight:var(--font-weight-normal);font-family:Lato,Tahoma,sans-serif;font-family:var(--font-family);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.ui__base html{line-height:1.15;-webkit-text-size-adjust:100%}.ui__base body{margin:0}.ui__base main{display:block}.ui__base h1{font-size:2em;margin:.67em 0}.ui__base hr{box-sizing:content-box;height:0;overflow:visible}.ui__base pre{font-family:monospace,monospace;font-size:1em}.ui__base a{background-color:transparent}.ui__base abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.ui__base b,.ui__base strong{font-weight:bolder}.ui__base code,.ui__base kbd,.ui__base samp{font-family:monospace,monospace;font-size:1em}.ui__base small{font-size:80%}.ui__base sub,.ui__base sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.ui__base sub{bottom:-.25em}.ui__base sup{top:-.5em}.ui__base img{border-style:none}.ui__base button,.ui__base input,.ui__base optgroup,.ui__base select,.ui__base textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}.ui__base button,.ui__base input{overflow:visible}.ui__base button,.ui__base select{text-transform:none}.ui__base [type=button],.ui__base [type=reset],.ui__base [type=submit],.ui__base button{-webkit-appearance:button}.ui__base [type=button]::-moz-focus-inner,.ui__base [type=reset]::-moz-focus-inner,.ui__base [type=submit]::-moz-focus-inner,.ui__base button::-moz-focus-inner{border-style:none;padding:0}.ui__base [type=button]:-moz-focusring,.ui__base [type=reset]:-moz-focusring,.ui__base [type=submit]:-moz-focusring,.ui__base button:-moz-focusring{outline:1px dotted ButtonText}.ui__base fieldset{padding:.35em .75em .625em}.ui__base legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.ui__base progress{vertical-align:baseline}.ui__base textarea{overflow:auto}.ui__base [type=checkbox],.ui__base [type=radio]{box-sizing:border-box;padding:0}.ui__base [type=number]::-webkit-inner-spin-button,.ui__base [type=number]::-webkit-outer-spin-button{height:auto}.ui__base [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.ui__base [type=search]::-webkit-search-decoration{-webkit-appearance:none}.ui__base ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.ui__base details{display:block}.ui__base summary{display:list-item}.ui__base [hidden],.ui__base template{display:none}.ui__base *,.ui__base :after,.ui__base :before{box-sizing:inherit}.ui__button{cursor:pointer;outline:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__button,.ui__button__internal{display:flex;justify-content:center;align-items:center}.ui__button--disabled{cursor:default;opacity:.7}.ui__button--disabled>*{opacity:.7}.ui__button:focus.ui__button--tabbing{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__button::-moz-focus-inner{border:0}.ui__button--style-default{border:1px solid #6077bf;border:1px solid var(--color-blue-gray-5);background-color:#6077bf;background-color:var(--color-blue-gray-5);color:#fafafa;color:var(--color-contrast-1)}.ui__button--style-default i{fill:#fafafa;fill:var(--color-contrast-1)}.ui__button--style-default:active:not(.ui__button--disabled){border-color:#415797;border-color:var(--color-blue-gray-6);background-color:#415797;background-color:var(--color-blue-gray-6)}.ui__button--style-borderless{border:1px solid transparent;background-color:transparent;color:#6077bf;color:var(--color-blue-gray-5)}.ui__button--style-borderless i{fill:#6077bf;fill:var(--color-blue-gray-5)}.ui__button--style-borderless:active:not(.ui__button--disabled){color:#415797;color:var(--color-blue-gray-6)}.ui__button--style-borderless:active:not(.ui__button--disabled) i{fill:#415797;fill:var(--color-blue-gray-6)}.ui__button--style-outline{border:1px solid #6077bf;border:1px solid var(--color-blue-gray-5);background-color:transparent;color:#6077bf;color:var(--color-blue-gray-5);transition:background-color 75ms ease-in-out,color 75ms ease-in-out}.ui__button--style-outline i{fill:#6077bf;fill:var(--color-blue-gray-5)}.ui__button--style-outline:focus.ui__button--tabbing,.ui__button--style-outline:hover:not(.ui__button--disabled){background-color:#6077bf;background-color:var(--color-blue-gray-5);color:#fafafa;color:var(--color-contrast-1)}.ui__button--style-outline:focus.ui__button--tabbing i,.ui__button--style-outline:hover:not(.ui__button--disabled) i{fill:#fafafa;fill:var(--color-contrast-1)}.ui__button--style-outline:active:not(.ui__button--disabled){border-color:#415797;border-color:var(--color-blue-gray-6);background-color:#415797;background-color:var(--color-blue-gray-6)}.ui__button--size-small{font-size:11px;font-size:var(--font-size-small);padding:2px 4px;padding:2px var(--padding-tiny);min-height:24px}.ui__button--size-default,.ui__button--size-small{border-radius:4px;border-radius:var(--border-radius)}.ui__button--size-default{padding:4px 12px;padding:var(--padding-tiny) var(--padding-medium);min-width:88px;min-height:32px}.ui__button--size-large{border-radius:4px;border-radius:var(--border-radius);padding:4px 24px;padding:var(--padding-tiny) var(--padding-large);min-width:120px;min-height:40px}.ui__buttonGroup{margin:-4px;margin:calc(0px - var(--padding-tiny));display:flex;flex-wrap:wrap}.ui__buttonGroup>.ui__buttonGroup{margin:0}.ui__buttonGroup>button{margin:4px;margin:var(--padding-tiny)}.ui__buttonGroup--reverse{flex-wrap:wrap-reverse}@media (max-width:767px){.ui__buttonGroup--centerMobile.ui__buttonGroup{justify-content:center}}.ui__buttonGroup--position-left{justify-content:flex-start}.ui__buttonGroup--position-center{justify-content:center}.ui__buttonGroup--position-right{justify-content:flex-end}.ui__buttonGroup--position-space-between{justify-content:space-between}.ui__buttonGroup--position-space-around{justify-content:space-around}.ui__choice{display:flex;margin:4px 4px 4px 0;margin:var(--padding-tiny) var(--padding-tiny) var(--padding-tiny) 0}.ui__choice--center{align-items:center}.ui__choice--disabled .ui__choice__input>input,.ui__choice--disabled .ui__choice__label{cursor:default}.ui__choice--radio .ui__choice__input__check{border-radius:50%}.ui__choice--radio .ui__choice__input__check--checked{background-color:#fafafa;background-color:var(--color-contrast-1);border:5px solid #6077bf;border:5px solid var(--color-blue-gray-5)}.ui__choice--radio .ui__choice__input__check--checked.ui__choice__input__check--disabled{background-color:#fafafa;background-color:var(--color-contrast-1);border:5px solid #cfd4da;border:5px solid var(--color-gray-5)}.ui__choice__input{position:relative;height:15px;width:15px;flex-shrink:0}.ui__choice__input__check{position:absolute;width:15px;height:15px;padding:2px;border:1px solid #abb0c4;border:1px solid var(--color-blue-gray-3);border-radius:2px;border-radius:var(--border-radius-small);background-color:#fff;background-color:var(--color-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__choice__input__check--disabled{border-color:#e7ebee;border-color:var(--color-gray-3)}.ui__choice__input__check--checked{background-color:#6077bf;background-color:var(--color-blue-gray-5);border-color:#6077bf;border-color:var(--color-blue-gray-5)}.ui__choice__input__check--checked.ui__choice__input__check--disabled{background-color:#cfd4da;background-color:var(--color-gray-5);border-color:#cfd4da;border-color:var(--color-gray-5)}.ui__choice__input__check--focus{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__choice__input__switch{position:absolute;width:24px;height:10px;padding:2px;border:1px solid #abb0c4;border:1px solid var(--color-blue-gray-3);border-radius:5px;background-color:#fff;background-color:var(--color-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition);top:50%;transform:translateY(-50%)}.ui__choice__input__switch--disabled{border-color:#e7ebee;border-color:var(--color-gray-3)}.ui__choice__input__switch--disabled .ui__choice__input__toggle{background-color:#ddd;background-color:var(--color-gray-4)}.ui__choice__input__switch--checked .ui__choice__input__toggle{left:9px}.ui__choice__input__switch--focus .ui__choice__input__toggle{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__choice__input__toggle{position:absolute;height:14px;width:14px;border-radius:50%;background-color:#6077bf;background-color:var(--color-blue-gray-5);top:50%;left:-1px;transform:translateY(-50%);transition:left .25s ease}.ui__choice__input__icon{height:17px;width:17px;fill:#fafafa;fill:var(--color-contrast-1);position:absolute;top:-3px;left:-2px}.ui__choice__input>input{cursor:pointer;opacity:0;position:absolute;top:0;left:0;height:15px;width:15px}.ui__choice__input--switch{height:15px;width:24px}.ui__choice__input--switch>input{height:14px;width:24px}.ui__choice--leftLabel .ui__choice__label{padding-right:8px;padding-right:var(--padding-small);padding-left:0}.ui__choice__label{cursor:pointer;padding-left:8px;padding-left:var(--padding-small);-webkit-user-select:none;-moz-user-select:none;user-select:none}.ui__choice__label--disabled{color:#cfd4da;color:var(--color-gray-5)}.ui__clickableDiv{display:inline-block;outline:none;border:none;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__clickableDiv:focus.ui__clickableDiv--tabbing:not(.ui__clickableDiv--noFocusStyle):not(.ui__clickableDiv--disabled){box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__clickableDiv--usePointer{cursor:pointer}.ui__dragLayer{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0}.ui__draggable{display:inline-block}.ui__draggable__animated--inMotion{pointer-events:none}.ui__editableText--disabled .ui__editableText__button>span{opacity:.7}.ui__editableText--centerText .ui__editableText__button{justify-content:center}.ui__editableText--centerText .ui__editableText__field{text-align:center}.ui__editableText--bordered .ui__editableText__button{border:1px solid #c3c6d4;border:1px solid var(--color-blue-gray-2)}.ui__editableText--bordered:not(.ui__editableText--disabled) .ui__editableText__button:hover{background-color:#c3c6d4;background-color:var(--color-blue-gray-2)}.ui__editableText--bordered:not(.ui__editableText--disabled) .ui__editableText__button--placeholder{color:#abb0c4;color:var(--color-blue-gray-3)}.ui__editableText .ui__editableText__field{line-height:1}.ui__editableText__button,.ui__editableText__field{min-height:28px;min-width:100%;color:#232229;color:var(--color-font-primary);padding:4px;padding:var(--padding-tiny);border-radius:4px;border-radius:var(--border-radius);border:1px solid transparent}.ui__editableText__button{display:flex;align-items:center;transition:background-color .1s;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition);line-height:1.15}.ui__editableText__button>span{line-height:1.15rem;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ui__editableText__button--noFocusTransition{transition:none}.ui__editableText:not(.ui__editableText--disabled):not(.ui__editableText--locked) .ui__editableText__button:hover{border:1px solid #c3c6d4;border:1px solid var(--color-blue-gray-2)}.ui__editableText:not(.ui__editableText--disabled):not(.ui__editableText--locked) .ui__editableText__button--placeholder{color:#abb0c4;color:var(--color-blue-gray-3)}.ui__editableText__field{background-color:#c3c6d4;background-color:var(--color-blue-gray-2);outline:none;transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__editableText__field:focus.ui__editableText__field--tabbing{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow);transition:none}.ui__fileOrganizer{position:relative;outline:0;height:100%}.ui__fileOrganizer__draglayer{overflow:visible;display:flex;justify-content:center;align-items:center}.ui__filePicker__file{display:flex;align-items:center;min-height:28px}.ui__filePicker__file__text{flex:1 1 auto;overflow:hidden}.ui__filePicker__file__delete.ui__button.ui__iconButton{height:28px;width:28px;min-height:28px;min-width:28px;margin-left:4px;margin-left:var(--padding-tiny)}.ui__filePlaceholder{background-color:#fff;padding:10px;height:164px;width:128px;position:relative}.ui__filePlaceholder__block{background-color:#ccc}.ui__filePlaceholder__block--thumbnail{width:40px;height:40px;float:left}.ui__filePlaceholder__block--line-sm,.ui__filePlaceholder__block--line-xs{margin-left:50px;margin-top:10px;height:6px}.ui__filePlaceholder__block--line-xs{width:40px}.ui__filePlaceholder__block--line-df{margin-top:20px;width:90px;height:6px}.ui__filePlaceholder__block--line-lg{margin-top:10px;width:90px;height:6px}.ui__filePlaceholder__block--line-lgx{margin-top:10px;height:6px}.ui__filePlaceholder__extension{position:absolute;color:#ccc;text-align:center;font-size:18px;font-size:var(--font-size-large);right:10px;left:10px;bottom:10px}.ui__fileSkeleton{background-color:#fff;padding:10px;height:164px;width:128px}.ui__fileSkeleton__block{animation:timeline 2s linear infinite;background:linear-gradient(90deg,#eee,#ddd 10%,#eee 20%);background-size:600px auto}.ui__fileSkeleton__block--thumbnail{width:40px;height:40px;float:left}.ui__fileSkeleton__block--line-sm,.ui__fileSkeleton__block--line-xs{margin-left:50px;margin-top:10px;height:6px}.ui__fileSkeleton__block--line-xs{width:40px}.ui__fileSkeleton__block--line-df{margin-top:20px;width:90px;height:6px}.ui__fileSkeleton__block--line-lg{margin-top:10px;width:90px;height:6px}.ui__fileSkeleton__block--line-lgx{margin-top:10px;height:6px}.ui__focusTrap{color:#00f}.ui__focusTrap--disabled{color:red}.ui__icon{display:inline-flex;justify-content:center;align-items:center}.ui__button.ui__iconButton{width:auto;min-width:auto;padding:0 3px}.ui__image{max-width:100%;max-height:100%}.ui__input__wrapper{width:220px}.ui__input__wrapper--fill{width:100%}.ui__input__wrapper--pad{padding-bottom:20px}.ui__input{border-radius:4px;border-radius:var(--border-radius);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition);background-color:#fff;background-color:var(--color-gray-1);border:1px solid #ddd;border:1px solid var(--color-gray-4);display:inline-flex;align-items:center;width:100%}.ui__input--message-default.ui__input--focused{border:1px solid #00a5e4;border:1px solid var(--color-theme-primary);box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow)}.ui__input--message-warning{border-color:#e67e22;border-color:var(--color-message-warning)}.ui__input--message-warning i{fill:#e67e22;fill:var(--color-message-warning)}.ui__input--message-warning.ui__input--focused{box-shadow:0 0 0 2px rgba(230,126,34,.4);box-shadow:0 0 0 2px var(--color-message-warning-focus-shadow)}.ui__input--message-error{border-color:#e74c3c;border-color:var(--color-message-error)}.ui__input--message-error i{fill:#e74c3c;fill:var(--color-message-error)}.ui__input--message-error.ui__input--focused{box-shadow:0 0 0 2px rgba(231,76,60,.4);box-shadow:0 0 0 2px var(--color-message-error-focus-shadow)}.ui__input .ui__input__input{flex:1 1 auto;padding:4px;padding:var(--padding-tiny);height:28px;outline:none;border:none;background-color:transparent;color:#232229;color:var(--color-font-primary);min-height:24px}.ui__input .ui__input__input--disabled{opacity:.7}.ui__input__messageText{width:100%;font-size:11px;font-size:var(--font-size-small);margin-top:4px;margin-top:var(--padding-tiny)}.ui__input .ui__iconButton{border:none;padding:0;min-height:0}.ui__input .ui__icon{padding:0 2px}.ui__input svg{fill:#6077bf;fill:var(--color-blue-gray-5)}.ui__label--attached:after{height:2px;width:1px;content:\\\"\\\";display:block}.ui__label--disabled{opacity:.7}.ui__label__optional{font-size:11px;font-size:var(--font-size-small);margin-left:4px;margin-left:var(--padding-tiny);color:#5b5c68;color:var(--color-font-secondary);font-style:italic}.ui__modal__wrapper{position:absolute;top:0;right:0;bottom:0;left:0;transition:opacity .25s;opacity:1;background-color:rgba(0,0,0,.4);background-color:var(--color-overlay-canvas);overflow:auto;display:flex;padding:16px 16px 0;padding:var(--padding) var(--padding) 0}@media (min-width:768px){.ui__modal__wrapper{padding:32px 32px 0;padding:var(--padding-huge) var(--padding-huge) 0}}.ui__modal__wrapper--closed{opacity:0;pointer-events:none!important}.ui__modal__wrapper--fullWidth .ui__modal__paddingFix{max-width:none!important}.ui__modal__paddingFix{padding:0 0 16px;padding:0 0 var(--padding);margin:auto;width:100%}@media (min-width:768px){.ui__modal__paddingFix{padding:0 0 32px;padding:0 0 var(--padding-huge);max-width:500px}}.ui__modal{background-color:#f4f4f4;background-color:var(--color-gray-2);border-radius:4px;border-radius:var(--border-radius);overflow:hidden;width:100%}.ui__modal--hidden{pointer-events:none;visibility:hidden}.ui__modal__top{display:flex}.ui__modal__top__heading{font-size:18px;font-size:var(--font-size-large);flex:1 1 auto;padding:12px 16px;padding:var(--padding-medium) var(--padding)}.ui__modal__top__close.ui__button{padding:0 10px;padding:0 calc(var(--padding-medium) - 2px);margin:2px}.ui__modal__body{padding:12px 16px;padding:var(--padding-medium) var(--padding);background-color:#fff;background-color:var(--color-gray-1);border-top:1px solid #ddd;border-top:1px solid var(--color-gray-4);border-bottom:1px solid #ddd;border-bottom:1px solid var(--color-gray-4)}.ui__modal__body--noButton{border-bottom:none}.ui__modal__buttonGroup{padding:12px 16px;padding:var(--padding-medium) var(--padding)}.ui__overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;z-index:var(--z-index-overlay);pointer-events:none}.ui__overlay>*{pointer-events:all}.ui__spinner{display:inline-block}.ui__spinner__animated{animation:spin 1.2s cubic-bezier(.4,.2,.6,.8) infinite;width:100%;height:100%;border-radius:50%;border:solid;border-color:#8b92ab #dfe2ed #dfe2ed;border-color:var(--color-blue-gray-4) var(--color-blue-gray-1) var(--color-blue-gray-1)}.ui__spinner--size-tiny{width:12px;height:12px}.ui__spinner--size-tiny .ui__spinner__animated{border-width:1px}.ui__spinner--size-small{width:16px;height:16px}.ui__spinner--size-small .ui__spinner__animated{border-width:2px}.ui__spinner--size-default{width:24px;height:24px}.ui__spinner--size-default .ui__spinner__animated{border-width:2px}.ui__spinner--size-large{width:32px;height:32px}.ui__spinner--size-large .ui__spinner__animated{border-width:2px}.ui__thumbnail{padding:16px;padding:var(--padding);position:relative;outline:none;width:240px;height:240px;transition:background-color .1s;display:flex;flex-direction:column}.ui__thumbnail--selected:not(.ui__thumbnail--dragging){background-color:#dfe2ed;background-color:var(--color-blue-gray-1)}.ui__thumbnail--dragging{border:2px dashed #00a5e4;border:2px dashed var(--color-theme-primary);z-index:200;z-index:var(--z-index-dragging);margin:-1px;width:242px;height:242px}.ui__thumbnail--dragging .ui__thumbnail__controls,.ui__thumbnail--dragging .ui__thumbnail__image,.ui__thumbnail--dragging .ui__thumbnail__label{visibility:hidden}.ui__thumbnail--otherDragging{pointer-events:none}@media (max-width:767px){.ui__thumbnail .ui__thumbnail__controls{opacity:1}}.ui__thumbnail--focused.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled):not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging) .ui__thumbnail__controls,.ui__thumbnail:hover:not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging) .ui__thumbnail__controls{opacity:1}.ui__thumbnail--focused.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled):not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging):not(.ui__thumbnail--selected),.ui__thumbnail:hover:not(.ui__thumbnail--dragging):not(.ui__thumbnail--otherDragging):not(.ui__thumbnail--selected){background-color:#ddd;background-color:var(--color-gray-4)}.ui__thumbnail:focus.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled) .ui__thumbnail__image .ui__thumbnail__image__skeleton,.ui__thumbnail:focus.ui__thumbnail--tabbing:not(.ui__thumbnail--disabled) .ui__thumbnail__image img{box-shadow:0 0 0 2px rgba(20,110,170,.4);box-shadow:0 0 0 2px var(--color-focus-shadow);border-color:rgba(20,110,170,.4);border-color:var(--color-focus-shadow)}.ui__thumbnail__controls{transition:opacity .1s;position:absolute;top:4px;top:var(--padding-tiny);right:4px;right:var(--padding-tiny);opacity:0;display:flex;border-radius:4px;border-radius:var(--border-radius);background-color:#eee;background-color:var(--color-background-canvas)}.ui__thumbnail__selectedIcon{position:absolute;top:4px;top:var(--padding-tiny);left:4px;left:var(--padding-tiny)}.ui__thumbnail__image{display:flex;justify-content:center;align-items:center;flex-direction:column;height:0;flex:1 1 auto;pointer-events:none}.ui__thumbnail__image img{background-color:#fff}.ui__thumbnail__image .ui__thumbnail__image__placeholder,.ui__thumbnail__image .ui__thumbnail__image__skeleton,.ui__thumbnail__image img{border:1px solid #dfe2ed;border:1px solid var(--color-blue-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__thumbnail__label{text-align:center;margin-top:16px;margin-top:var(--padding)}.ui__thumbnailDragLayer{width:240px;height:240px;display:flex;justify-content:center;align-items:center}.ui__thumbnailDragLayer__icon{height:60px;width:60px;fill:#abb0c4;fill:var(--color-blue-gray-3)}.ui__thumbnailDragLayer__numFiles{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:flex-end;font-size:13px;font-size:var(--font-size-default)}.ui__thumbnailDragLayer__numFiles__wrapper{position:relative;top:-10px;right:-10px;padding:4px;padding:var(--padding-tiny);border-radius:8px;border-radius:var(--border-radius-large);background-color:#abb0c4;background-color:var(--color-blue-gray-3);min-width:20px;display:flex;justify-content:center;align-items:center}.ui__thumbnailDragLayer__wrapper{position:relative}.ui__thumbnailSkeleton{padding:16px;padding:var(--padding);position:relative;outline:none;width:240px;height:240px;transition:background-color .1s;display:flex;flex-direction:column}.ui__thumbnailSkeleton:hover{background-color:#ddd;background-color:var(--color-gray-4)}.ui__thumbnailSkeleton__image{display:flex;justify-content:center;align-items:center;flex-direction:column;height:0;flex:1 1 auto}.ui__thumbnailSkeleton__image .ui__thumbnailSkeleton__image__skeleton{border:1px solid #dfe2ed;border:1px solid var(--color-blue-gray-1);transition:box-shadow .1s cubic-bezier(.4,1,.75,.9);transition:var(--focus-transition)}.ui__thumbnailSkeleton__label{margin-top:16px;margin-top:var(--padding);height:28px}.ui__toast{display:grid;display:flex;background-color:#fff;background-color:var(--color-gray-1);border-radius:4px;border-radius:var(--border-radius);overflow:hidden;box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23);box-shadow:var(--box-shadow-3);padding-right:2px}@media (max-width:767px){.ui__toast{width:100%}}@media (min-width:768px){.ui__toast{max-width:500px}}.ui__toast--message-info .ui__toast__border,.ui__toast--message-loading .ui__toast__border{background-color:#2980b9;background-color:var(--color-message-info)}.ui__toast--message-info .ui__toast__icon,.ui__toast--message-loading .ui__toast__icon{fill:#2980b9;fill:var(--color-message-info)}.ui__toast--message-warning .ui__toast__border{background-color:#e67e22;background-color:var(--color-message-warning)}.ui__toast--message-warning .ui__toast__icon{fill:#e67e22;fill:var(--color-message-warning)}.ui__toast--message-error .ui__toast__border{background-color:#e74c3c;background-color:var(--color-message-error)}.ui__toast--message-error .ui__toast__icon{fill:#e74c3c;fill:var(--color-message-error)}.ui__toast--message-success .ui__toast__border{background-color:#27ae60;background-color:var(--color-message-success)}.ui__toast--message-success .ui__toast__icon{fill:#27ae60;fill:var(--color-message-success)}.ui__toast__border{width:4px;flex-shrink:0}.ui__toast__icon,.ui__toast__spinner{margin:0 12px;margin:0 var(--padding-medium);display:flex;justify-content:center;align-items:center;flex-shrink:0}.ui__toast__spinner{height:100%}.ui__toast__spinner>*{height:20px;width:20px}.ui__toast__copy{padding:8px 16px 8px 0;padding:var(--padding-small) var(--padding) var(--padding-small) 0;display:flex;flex-direction:column;justify-content:center;flex:1 1 auto}.ui__toast__copy__heading{flex-shrink:0;color:#232229;color:var(--color-font-primary);font-weight:700;font-weight:var(--font-weight-bold);padding:2px 0}.ui__toast__copy__body{flex-shrink:0;color:#5b5c68;color:var(--color-font-secondary);padding:2px 0}.ui__toast__action{display:flex;justify-content:flex-end;align-items:center;margin-left:4px;margin-left:var(--padding-tiny);flex-grow:0}.ui__toast__button{width:auto;min-width:auto;padding:0 4px;padding:0 var(--padding-tiny)}.ui__toastProvider__toast--position-bottom,.ui__toastProvider__toast--position-bottom-left,.ui__toastProvider__toast--position-bottom-right{position:absolute;bottom:0;left:0;right:0;transform:translateY(100%)}.ui__toastProvider{opacity:1;transition:opacity .25s;position:relative}.ui__toastProvider--closing{opacity:0}.ui__toastProvider__toast{display:flex;padding:16px;padding:var(--padding);pointer-events:none!important;animation:slide .25s forwards}.ui__toastProvider__toast>*{pointer-events:all}.ui__toastProvider__toast--position-top-left{transform:translateY(-100%);justify-content:flex-start}.ui__toastProvider__toast--position-top{transform:translateY(-100%);justify-content:center}.ui__toastProvider__toast--position-top-right{transform:translateY(-100%);justify-content:flex-end}.ui__toastProvider__toast--position-bottom-left{justify-content:flex-start}.ui__toastProvider__toast--position-bottom{justify-content:center}.ui__toastProvider__toast--position-bottom-right{justify-content:flex-end}.ui__toolButton__action:active:not(.ui__toolButton--disabled),.ui__toolButton__action:focus.ui__toolButton--tabbing:not(.ui__toolButton--disabled),.ui__toolButton__action:hover:not(.ui__toolButton--disabled),.ui__toolButton__expand.ui__button:active:not(.ui__toolButton--disabled),.ui__toolButton__expand.ui__button:focus.ui__toolButton--tabbing:not(.ui__toolButton--disabled),.ui__toolButton__expand.ui__button:hover:not(.ui__toolButton--disabled){background-color:hsla(0,0%,68.6%,.3)}.ui__toolButton{display:inline-flex;flex-direction:column}.ui__toolButton--expanded.ui__toolButton--right{flex-direction:row}.ui__toolButton--expanded.ui__toolButton--bottom{flex-direction:column}.ui__toolButton__action.ui__toolButton--expanded.ui__toolButton--right{border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius)}.ui__toolButton__action.ui__toolButton--expanded.ui__toolButton--bottom{border-radius:4px 4px 0 0;border-radius:var(--border-radius) var(--border-radius) 0 0}.ui__toolButton__action__internals{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ui__toolButton__expand.ui__button{padding:0;display:flex;justify-content:center;align-items:center;min-height:0}.ui__toolButton__expand.ui__button.ui__toolButton--right{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}.ui__toolButton__expand.ui__button.ui__toolButton--bottom{border-radius:0 0 4px 4px;border-radius:0 0 var(--border-radius) var(--border-radius)}:host{--color-theme-primary:#00a5e4;--color-theme-secondary:#242933;--color-font-primary:#232229;--color-font-secondary:#5b5c68;--color-gray-1:#fff;--color-gray-2:#f4f4f4;--color-gray-3:#e7ebee;--color-gray-4:#ddd;--color-gray-5:#cfd4da;--color-blue-gray-1:#dfe2ed;--color-blue-gray-2:#c3c6d4;--color-blue-gray-3:#abb0c4;--color-blue-gray-4:#8b92ab;--color-blue-gray-5:#6077bf;--color-blue-gray-6:#415797;--color-contrast-1:#fafafa;--color-contrast-2:#f0f0f0;--color-message-info:#2980b9;--color-message-success:#27ae60;--color-message-warning:#e67e22;--color-message-error:var(--red);--color-background-canvas:#eee;--color-message-info-focus-shadow:rgba(41,128,185,0.4);--color-message-success-focus-shadow:rgba(39,174,96,0.4);--color-message-warning-focus-shadow:rgba(230,126,34,0.4);--color-message-error-focus-shadow:rgba(231,76,60,0.4);--color-focus-shadow:rgba(20,110,170,0.4);--color-overlay-canvas:rgba(0,0,0,0.4);--font-size-tiny:9px;--font-size-small:11px;--font-size-default:13px;--font-size-medium:16px;--font-size-large:18px;--font-size-huge:24px;--font-weight-normal:400;--font-weight-bold:700;--padding-tiny:4px;--padding-small:8px;--padding-medium:12px;--padding:16px;--padding-large:24px;--padding-huge:32px;--border-radius-small:2px;--border-radius:4px;--border-radius-large:8px;--box-shadow-1:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--box-shadow-2:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--box-shadow-3:0 10px 20px rgba(0,0,0,0.19),0 6px 6px rgba(0,0,0,0.23);--z-index-local:0;--z-index-raised:100;--z-index-dragging:200;--z-index-overlay:300;--font-family:Lato,Tahoma,sans-serif;--focus-transition:box-shadow 0.1s cubic-bezier(0.4,1,0.75,0.9)}:host,:root,html[data-theme=dark]{--color-font-primary:var(--text-color);--color-gray-1:var(--component-background);--color-blue-gray-3:var(--border);--color-blue-gray-5:var(--primary-button)}@media(max-width:640px){.sb-main-padded.sb-show-main{padding:0}}\", \"\"]);\n\n// exports\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t  // reliably everywhere they are implemented.\n\t\t  // They are implemented in all modern browsers.\n\t\t  //\n\t\t  // - Android 4-4.3\n\t\t  // - Chrome 26-34\n\t\t  // - Firefox 14-29\n\t\t  // - Internet Explorer 11\n\t\t  // - iPad Safari 6-7.1\n\t\t  // - iPhone Safari 7-7.1\n\t\t  // - Safari 6-7\n\t\t  makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t  // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t  // 11-12, and in web workers in many engines.\n\t\t  // Although message channels yield to any queued rendering and IO tasks, they\n\t\t  // would be better than imposing the 4ms delay of timers.\n\t\t  // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t  // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t  // not have MutationObservers.\n\t\t  // Although setImmediate yields to the browser's renderer, it would be\n\t\t  // preferrable to falling back to setTimeout since it does not have\n\t\t  // the minimum 4ms penalty.\n\t\t  // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t  // Desktop to a lesser extent) that renders both setImmediate and\n\t\t  // MessageChannel useless for the purposes of ASAP.\n\t\t  // https://github.com/kriskowal/q/issues/396\n\n\t\t  // Timers are implemented universally.\n\t\t  // We fall back to timers in workers in most engines, and in foreground\n\t\t  // contexts in the following browsers.\n\t\t  // However, note that even this simple case requires nuances to operate in a\n\t\t  // broad spectrum of browsers.\n\t\t  //\n\t\t  // - Firefox 3-13\n\t\t  // - Internet Explorer 6-9\n\t\t  // - iPad Safari 4.3\n\t\t  // - Lynx 2.8.7\n\t\t  makeRequestCallFromTimer\n","// We wrap tasks with recyclable task objects.  A task object implements\n\nimport type { TaskFn, Task } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","export interface Task {\n\tcall(): void\n}\nexport type TaskFn = () => void\n","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context';\nexport function I18nextProvider(_ref) {\n  var i18n = _ref.i18n,\n      defaultNS = _ref.defaultNS,\n      children = _ref.children;\n  var value = useMemo(function () {\n    return {\n      i18n: i18n,\n      defaultNS: defaultNS\n    };\n  }, [i18n, defaultNS]);\n  return createElement(I18nContext.Provider, {\n    value: value\n  }, children);\n}","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n  // Standard Redux middleware definition pattern:\n  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n  var middleware = function middleware(_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n        // If this \"action\" is really a function, call it and return the result.\n        if (typeof action === 'function') {\n          // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n          return action(dispatch, getState, extraArgument);\n        } // Otherwise, pass the action down the middleware chain as usual\n\n\n        return next(action);\n      };\n    };\n  };\n\n  return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import React, { useState, useEffect } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport core from 'core';\nimport classNames from 'classnames';\n\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport ActionButton from 'components/ActionButton';\nimport { zoomTo, zoomIn, zoomOut } from 'helpers/zoom';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport zoomFactors from 'constants/zoomFactors';\nimport DataElements from 'constants/dataElement';\n\nimport './ToggleZoomOverlay.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst ToggleZoomOverlay = ({ documentViewerKey = undefined }) => {\n  const [t] = useTranslation();\n\n  const elementName = documentViewerKey ? `zoomOverlay${documentViewerKey}` : DataElements.ZOOM_OVERLAY;\n  const buttonName = documentViewerKey ? `zoomOverlayButton${documentViewerKey}` : DataElements.ZOOM_OVERLAY_BUTTON;\n\n  const isMobile = isMobileSize();\n\n  const [isActive, isMultiViewerMode] = useSelector(\n    (state) => [selectors.isElementOpen(state, elementName), selectors.isMultiViewerMode(state)],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n  const [value, setValue] = useState('100');\n\n  useEffect(() => {\n    const onDocumentLoaded = () => setValue(Math.ceil(core.getZoom(documentViewerKey) * 100).toString());\n    const onZoomUpdated = () => setValue(Math.ceil(core.getZoom(documentViewerKey) * 100).toString());\n    const onDocumentUnloaded = () => setValue('100');\n\n    core.addEventListener('documentLoaded', onDocumentLoaded, undefined, documentViewerKey);\n    core.addEventListener('zoomUpdated', onZoomUpdated, undefined, documentViewerKey);\n    core.addEventListener('documentUnloaded', onDocumentUnloaded, undefined, documentViewerKey);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded, documentViewerKey);\n      core.removeEventListener('zoomUpdated', onZoomUpdated, documentViewerKey);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded, documentViewerKey);\n    };\n  }, []);\n\n  const onKeyPress = (e) => {\n    if (e.nativeEvent.key === 'Enter' || e.nativeEvent.keyCode === 13) {\n      const zoom = Math.ceil(core.getZoom(documentViewerKey) * 100).toString();\n      if (e.target.value === zoom) {\n        return;\n      }\n      if (e.target.value === '') {\n        setValue(zoom);\n      } else {\n        let zoomValue = e.target.value / 100;\n        zoomValue = Math.max(zoomValue, zoomFactors.getMinZoomLevel());\n        zoomValue = Math.min(zoomValue, zoomFactors.getMaxZoomLevel());\n        zoomTo(zoomValue, isMultiViewerMode, documentViewerKey);\n      }\n    }\n  };\n\n  const onChange = (e) => {\n    const re = /^(\\d){0,4}$/;\n    if (re.test(e.target.value) || e.target.value === '') {\n      setValue(e.target.value);\n    }\n  };\n\n  const onBlur = (e) => {\n    window.getSelection().removeAllRanges(); // this is to prevent the selection of the text in the zoom input after blurring\n    const zoom = Math.ceil(core.getZoom(documentViewerKey) * 100).toString();\n    if (e.target.value === zoom) {\n      return;\n    }\n    if (e.target.value === '' || isNaN(Number(e.target.value))) {\n      setValue(zoom);\n    } else {\n      setValue(Number(e.target.value).toString());\n      zoomTo(e.target.value / 100, documentViewerKey);\n    }\n  };\n\n  const inputWidth = value ? (value.length + 1) * 8 : 0;\n\n  return (\n    <div className=\"zoom-overlay\">\n      {!isMobile && (\n        <div className=\"ToggleZoomOverlay\">\n          <div\n            className={classNames({\n              OverlayContainer: true,\n              active: isActive,\n            })}\n            onKeyDown={(e) => {\n              if (e.key === 'Enter') {\n                dispatch(actions.toggleElement(DataElements.ZOOM_OVERLAY));\n              }\n            }}\n            tabIndex={0}\n          >\n            <div className=\"OverlayText\" onClick={() => dispatch(actions.toggleElement(elementName))}>\n              <input\n                type=\"text\"\n                className=\"textarea\"\n                value={value}\n                onChange={onChange}\n                onKeyPress={onKeyPress}\n                onBlur={onBlur}\n                tabIndex={-1}\n                style={{ width: inputWidth }}\n                aria-label={t('action.zoomSet')}\n              />\n              <span>%</span>\n            </div>\n            <ToggleElementButton\n              className=\"OverlayButton\"\n              img={`icon-chevron-${isActive ? 'up' : 'down'}`}\n              element={elementName}\n              dataElement={buttonName}\n              ariaLabel={t('action.zoomControls')}\n              tabIndex={-1}\n            />\n          </div>\n        </div>\n      )}\n      <ActionButton\n        img=\"icon-header-zoom-out-line\"\n        onClick={() => zoomOut(isMultiViewerMode, documentViewerKey)}\n        title=\"action.zoomOut\"\n        dataElement=\"zoomOutButton\"\n      />\n      <span className=\"visually-hidden\">\n        <p aria-live=\"assertive\" role=\"status\">{t('action.zoomChanged')} {value}%</p>\n      </span>\n      <ActionButton\n        img=\"icon-header-zoom-in-line\"\n        onClick={() => zoomIn(isMultiViewerMode, documentViewerKey)}\n        title=\"action.zoomIn\"\n        dataElement=\"zoomInButton\"\n      />\n    </div>\n  );\n};\n\nexport default ToggleZoomOverlay;\n","import ToggleZoomOverlay from './ToggleZoomOverlay';\n\nexport default ToggleZoomOverlay;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport Dropdown from 'components/Dropdown';\nimport core from 'core';\nimport { OFFICE_EDITOR_EDIT_MODE } from 'constants/officeEditor';\n\nimport './TrackChangeOverlay.scss';\n\nconst items = [\n  {\n    key: OFFICE_EDITOR_EDIT_MODE.EDITING,\n    description: 'editingDescription',\n  },\n  {\n    key: OFFICE_EDITOR_EDIT_MODE.REVIEWING,\n    description: 'reviewingDescription',\n  },\n  {\n    key: OFFICE_EDITOR_EDIT_MODE.VIEW_ONLY,\n    description: 'viewOnlyDescription',\n  }\n];\nconst translationPrefix = 'officeEditor.';\n\nconst TrackChangeOverlay = () => {\n  const [t] = useTranslation();\n  const [\n    editMode,\n  ] = useSelector(\n    (state) => [\n      selectors.getOfficeEditorEditMode(state),\n    ],\n    shallowEqual\n  );\n\n  const renderDropdownItem = (item) => (\n    <div className='Dropdown__item-TrackChange'>\n      <div className='Dropdown__item-mode'>{t(`${translationPrefix}${item.key}`)}</div>\n      <div className='Dropdown__item-description'>{t(`${translationPrefix}${item.description}`)}</div>\n    </div>\n  );\n\n  const onClickItem = (mode) => {\n    core.getOfficeEditor().setEditMode(mode);\n  };\n\n  return (\n    <div className=\"track-change-overlay\">\n      <Dropdown\n        items={items}\n        getCustomItemStyle={() => ({ width: '144px', height: '48px' })}\n        applyCustomStyleToButton={false}\n        currentSelectionKey={(editMode === OFFICE_EDITOR_EDIT_MODE.PREVIEW) ? OFFICE_EDITOR_EDIT_MODE.REVIEWING : editMode}\n        onClickItem={onClickItem}\n        getDisplayValue={(item) => t(`${translationPrefix}${item.key}`)}\n        getKey={(item) => item.key}\n        renderItem={renderDropdownItem}\n      />\n    </div>\n  );\n};\n\nexport default TrackChangeOverlay;\n","import TrackChangeOverlay from './TrackChangeOverlay';\n\nexport default TrackChangeOverlay;\n","import React from 'react';\nimport Icon from 'components/Icon';\nimport ToolButton from 'components/ToolButton';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport './ToolButton.scss';\n\nconst PresetButton = ({\n  toolName,\n  isToolStyleOpen,\n}) => {\n  const [\n    isActive,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state) === toolName,\n    ],\n  );\n\n  const dispatch = useDispatch();\n  const getStylingDropdownButton = () => {\n    return (\n      <div\n        className=\"tool-button-arrow-container\"\n      >\n        {isActive &&\n          <div\n            className=\"tool-button-arrow-inner-container\"\n            onClick={() => dispatch(actions.toggleElement('toolStylePopup'))}\n          >\n            {(isToolStyleOpen ?\n              <Icon className=\"tool-button-arrow-up\" glyph=\"icon-chevron-up\" /> :\n              <Icon className=\"tool-button-arrow-down\" glyph=\"icon-chevron-down\" />)}\n          </div>}\n      </div>\n    );\n  };\n\n  return (\n    <div\n      className={classNames({\n        'tool-button-container': true,\n      })}\n    >\n      <ToolButton\n        toolName={toolName}\n      />\n      {getStylingDropdownButton()}\n    </div>\n  );\n};\n\nexport default PresetButton;\n","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n\n  _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // SVG <use/> elements do not technically reside in the rendered DOM, so\n  // they do not have classList directly, but they offer a link to their\n  // corresponding element, which can have classList. This extra check is for\n  // that case.\n  // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n  // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n  if (current.correspondingElement) {\n    return current.correspondingElement.classList.contains(ignoreClass);\n  }\n\n  return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // If source=local then this event came from 'somewhere'\n  // inside and should be ignored. We could handle this with\n  // a layered approach, too, but that requires going back to\n  // thinking in terms of Dom node nesting, running counter\n  // to React's 'you shouldn't care about the DOM' philosophy.\n  // Also cover shadowRoot node by checking current.host\n\n\n  while (current.parentNode || current.host) {\n    // Only check normal node without shadowRoot\n    if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n      return true;\n    }\n\n    current = current.parentNode || current.host;\n  }\n\n  return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n  return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n  if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n    return;\n  }\n\n  var passive = false;\n  var options = Object.defineProperty({}, 'passive', {\n    get: function get() {\n      passive = true;\n    }\n  });\n\n  var noop = function noop() {};\n\n  window.addEventListener('testPassiveEventSupport', noop, options);\n  window.removeEventListener('testPassiveEventSupport', noop, options);\n  return passive;\n};function autoInc(seed) {\n  if (seed === void 0) {\n    seed = 0;\n  }\n\n  return function () {\n    return ++seed;\n  };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n  var handlerOptions = null;\n  var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n  if (isTouchEvent && passiveEventSupport) {\n    handlerOptions = {\n      passive: !instance.props.preventDefault\n    };\n  }\n\n  return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n  var _class, _temp;\n\n  var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inheritsLoose(onClickOutside, _Component);\n\n    function onClickOutside(props) {\n      var _this;\n\n      _this = _Component.call(this, props) || this;\n\n      _this.__outsideClickHandler = function (event) {\n        if (typeof _this.__clickOutsideHandlerProp === 'function') {\n          _this.__clickOutsideHandlerProp(event);\n\n          return;\n        }\n\n        var instance = _this.getInstance();\n\n        if (typeof instance.props.handleClickOutside === 'function') {\n          instance.props.handleClickOutside(event);\n          return;\n        }\n\n        if (typeof instance.handleClickOutside === 'function') {\n          instance.handleClickOutside(event);\n          return;\n        }\n\n        throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n      };\n\n      _this.__getComponentNode = function () {\n        var instance = _this.getInstance();\n\n        if (config && typeof config.setClickOutsideRef === 'function') {\n          return config.setClickOutsideRef()(instance);\n        }\n\n        if (typeof instance.setClickOutsideRef === 'function') {\n          return instance.setClickOutsideRef();\n        }\n\n        return findDOMNode(instance);\n      };\n\n      _this.enableOnClickOutside = function () {\n        if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n          return;\n        }\n\n        if (typeof passiveEventSupport === 'undefined') {\n          passiveEventSupport = testPassiveEventSupport();\n        }\n\n        enabledInstances[_this._uid] = true;\n        var events = _this.props.eventTypes;\n\n        if (!events.forEach) {\n          events = [events];\n        }\n\n        handlersMap[_this._uid] = function (event) {\n          if (_this.componentNode === null) return;\n\n          if (_this.props.preventDefault) {\n            event.preventDefault();\n          }\n\n          if (_this.props.stopPropagation) {\n            event.stopPropagation();\n          }\n\n          if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n          var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n          if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n            return;\n          }\n\n          _this.__outsideClickHandler(event);\n        };\n\n        events.forEach(function (eventName) {\n          document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n        });\n      };\n\n      _this.disableOnClickOutside = function () {\n        delete enabledInstances[_this._uid];\n        var fn = handlersMap[_this._uid];\n\n        if (fn && typeof document !== 'undefined') {\n          var events = _this.props.eventTypes;\n\n          if (!events.forEach) {\n            events = [events];\n          }\n\n          events.forEach(function (eventName) {\n            return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n          });\n          delete handlersMap[_this._uid];\n        }\n      };\n\n      _this.getRef = function (ref) {\n        return _this.instanceRef = ref;\n      };\n\n      _this._uid = uid();\n      return _this;\n    }\n    /**\n     * Access the WrappedComponent's instance.\n     */\n\n\n    var _proto = onClickOutside.prototype;\n\n    _proto.getInstance = function getInstance() {\n      if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n        return this;\n      }\n\n      var ref = this.instanceRef;\n      return ref.getInstance ? ref.getInstance() : ref;\n    };\n\n    /**\n     * Add click listeners to the current document,\n     * linked to this component's state.\n     */\n    _proto.componentDidMount = function componentDidMount() {\n      // If we are in an environment without a DOM such\n      // as shallow rendering or snapshots then we exit\n      // early to prevent any unhandled errors being thrown.\n      if (typeof document === 'undefined' || !document.createElement) {\n        return;\n      }\n\n      var instance = this.getInstance();\n\n      if (config && typeof config.handleClickOutside === 'function') {\n        this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n        if (typeof this.__clickOutsideHandlerProp !== 'function') {\n          throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n        }\n      }\n\n      this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n      if (this.props.disableOnClickOutside) return;\n      this.enableOnClickOutside();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      this.componentNode = this.__getComponentNode();\n    }\n    /**\n     * Remove all document's event listeners for this component\n     */\n    ;\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.disableOnClickOutside();\n    }\n    /**\n     * Can be called to explicitly enable event listening\n     * for clicks and touches outside of this element.\n     */\n    ;\n\n    /**\n     * Pass-through render\n     */\n    _proto.render = function render() {\n      // eslint-disable-next-line no-unused-vars\n      var _this$props = this.props;\n          _this$props.excludeScrollbar;\n          var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n      if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n        props.ref = this.getRef;\n      } else {\n        props.wrappedRef = this.getRef;\n      }\n\n      props.disableOnClickOutside = this.disableOnClickOutside;\n      props.enableOnClickOutside = this.enableOnClickOutside;\n      return createElement(WrappedComponent, props);\n    };\n\n    return onClickOutside;\n  }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n    eventTypes: ['mousedown', 'touchstart'],\n    excludeScrollbar: config && config.excludeScrollbar || false,\n    outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n    preventDefault: false,\n    stopPropagation: false\n  }, _class.getClass = function () {\n    return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n  }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","import React from 'react';\nimport classNames from 'classnames';\n\nimport './SignatureRowContent.scss';\n\nconst SignatureRowContent = ({ onClick, imgSrc, isActive, altText }) => {\n  return (\n    <button\n      className={classNames({\n        'signature-row-content': true,\n        'interactable': onClick,\n        'active': isActive,\n      })}\n      onClick={onClick}\n    >\n      <img alt={altText} src={imgSrc} />\n    </button>\n  );\n};\n\nexport default SignatureRowContent;","import React from 'react';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport Icon from 'components/Icon';\nimport SignatureModes from 'constants/signatureModes';\n\nimport './SignatureStylePopup.scss';\n\nconst SignatureAddBtn = ({ t, disabled }) => {\n  const dispatch = useDispatch();\n\n  const openSignatureModal = () => {\n    if (!disabled) {\n      dispatch(actions.setSignatureMode(SignatureModes.FULL_SIGNATURE));\n      dispatch(actions.openElement('signatureModal'));\n      dispatch(actions.closeElement('toolStylePopup'));\n    }\n  };\n\n  const isInitialsModeEnabled = useSelector((state) => selectors.getIsInitialsModeEnabled(state));\n  const buttonText = isInitialsModeEnabled ? t('option.signatureOverlay.addSignatureOrInitials') : t('option.signatureOverlay.addSignature');\n\n  return (\n    <button\n      className={classNames(\n        'signature-row-content add-btn',\n        { disabled },\n      )}\n      onClick={openSignatureModal}\n    >\n      <Icon className=\"signature-button-icon\" glyph={disabled ? 'icon-signature-plus-disabled' : 'icon-signature-plus-sign'} />\n      <div className=\"btn-text\" title={buttonText}>{buttonText}</div>\n    </button>\n  );\n};\n\nexport default withTranslation()(SignatureAddBtn);","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation, withTranslation } from 'react-i18next';\nimport selectors from 'selectors';\nimport Icon from 'components/Icon';\nimport SignatureRowContent from './SignatureRowContent';\nimport SignatureAddBtn from './SignatureAddBtn';\nimport core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\nimport { Tabs, Tab, TabPanel } from 'components/Tabs';\nimport DataElements from 'constants/dataElement';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport SignatureModes from 'constants/signatureModes';\n\nimport './SignatureStylePopup.scss';\n\nconst SavedSignatures = (props) => {\n  const {\n    savedSignatures,\n    onSetHandler,\n    deleteHandler,\n    activeToolName,\n    currentlySelectedIndex,\n    isDeleteDisabled,\n  } = props;\n\n  const { t } = useTranslation();\n\n  return (\n    <>\n      {\n        savedSignatures\n          // Need to keep the index information from the original signature list\n          .map((signature, index) => [signature, index])\n          .map(([{ imgSrc }, savedSignatureIndex]) => <div\n            key={savedSignatureIndex}\n            className=\"signature-row\"\n          >\n            <SignatureRowContent\n              onClick={() => onSetHandler(savedSignatureIndex)}\n              imgSrc={imgSrc}\n              isActive={currentlySelectedIndex === savedSignatureIndex && activeToolName === 'AnnotationCreateSignature'}\n              altText={`${t('option.toolsOverlay.signatureAltText')} ${savedSignatureIndex + 1}`}\n            />\n            {!isDeleteDisabled && (\n              <button\n                className=\"icon-button\"\n                data-element=\"defaultSignatureDeleteButton\"\n                onClick={() => deleteHandler(savedSignatureIndex)}\n              >\n                <Icon glyph=\"icon-delete-line\" />\n              </button>\n            )}\n          </div>\n          )\n      }\n    </>\n  );\n};\n\nconst SignatureStylePopup = (props) => {\n  const { t } = props;\n  const [\n    activeToolName,\n    savedSignatures,\n    displayedSignatures,\n    selectedDisplayedSignatureIndex,\n    maxSignaturesCount,\n    displayedSignaturesFilterFunction,\n    isSignatureDeleteButtonDisabled,\n    savedInitials,\n    selectedDisplayedInitialsIndex,\n    signatureMode,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state),\n      selectors.getSavedSignatures(state),\n      selectors.getDisplayedSignatures(state),\n      selectors.getSelectedDisplayedSignatureIndex(state),\n      selectors.getMaxSignaturesCount(state),\n      selectors.getDisplayedSignaturesFilterFunction(state),\n      selectors.isElementDisabled(state, 'defaultSignatureDeleteButton'),\n      selectors.getSavedInitials(state),\n      selectors.getSelectedDisplayedInitialsIndex(state),\n      selectors.getSignatureMode(state),\n    ]\n  );\n\n  const signatureToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateSignature');\n  const dispatch = useDispatch();\n\n  const setSignature = async (index) => {\n    dispatch(actions.setSelectedDisplayedSignatureIndex(index));\n    const { annotation } = displayedSignatures[index];\n    core.setToolMode('AnnotationCreateSignature');\n    for (const signatureTool of signatureToolArray) {\n      await signatureTool.setSignature(annotation);\n      if (signatureTool.hasLocation()) {\n        await signatureTool.addSignature();\n      } else {\n        await signatureTool.showPreview();\n        dispatch(actions.setSignatureMode(SignatureModes.FULL_SIGNATURE));\n      }\n    }\n  };\n\n  const setInitials = async (index) => {\n    dispatch(actions.setSelectedDisplayedInitialsIndex(index));\n    const { annotation } = savedInitials[index];\n    core.setToolMode('AnnotationCreateSignature');\n    for (const signatureTool of signatureToolArray) {\n      await signatureTool.setInitials(annotation);\n      if (signatureTool.hasLocation()) {\n        await signatureTool.addInitials();\n        // Default mode is fullSignature. If we dont reset it here there can be a bug where\n        // we preview the initials, but apply the full signature\n        dispatch(actions.setSignatureMode(SignatureModes.FULL_SIGNATURE));\n      } else {\n        await signatureTool.showInitialsPreview();\n        dispatch(actions.setSignatureMode(SignatureModes.INITIALS));\n      }\n    }\n  };\n\n  const deleteSignatureAndInitials = async (index) => {\n    const isFullSignature = signatureMode === SignatureModes.FULL_SIGNATURE;\n    signatureToolArray[0].deleteSavedInitials(index);\n    signatureToolArray[0].deleteSavedSignature(index);\n    const isDeletingSelectedSignature = selectedDisplayedSignatureIndex === index;\n    const isDeletingSelectedInitials = selectedDisplayedInitialsIndex === index;\n    if (isDeletingSelectedSignature || isDeletingSelectedInitials) {\n      dispatch(actions[isDeletingSelectedSignature ? 'setSelectedDisplayedSignatureIndex' : 'setSelectedDisplayedInitialsIndex'](0));\n      for (const signatureTool of signatureToolArray) {\n        signatureTool.hidePreview();\n      }\n      core.setToolMode(defaultTool);\n      const isDeletingLast = (isFullSignature ? displayedSignatures : savedInitials).length === 1;\n      if (isDeletingLast) {\n        dispatch(actions.closeElements(['toolStylePopup']));\n      }\n    } else if (index < (isFullSignature ? selectedDisplayedSignatureIndex : selectedDisplayedInitialsIndex)) {\n      dispatch(actions.setSelectedDisplayedSignatureIndex(selectedDisplayedSignatureIndex - 1));\n    }\n  };\n\n  const signaturesToDisplay = savedSignatures.filter((signature, index) => displayedSignaturesFilterFunction(signature, index));\n\n  return (\n    <div\n      className=\"signature-style-popup\"\n    >\n      <Tabs id=\"savedSignatures\">\n        <DataElementWrapper\n          dataElement=\"savedSignatureAndInitialsTabs\"\n          className=\"tab-list\">\n          <Tab dataElement={DataElements.SAVED_SIGNATURES_PANEL_BUTTON}>\n            <button className=\"tab-options-button\">\n              {t('option.type.signature')}\n            </button>\n          </Tab>\n          <Tab dataElement={DataElements.SAVED_INTIALS_PANEL_BUTTON}>\n            <button className=\"tab-options-button\">\n              {t('option.type.initials')}\n            </button>\n          </Tab>\n        </DataElementWrapper>\n\n        <TabPanel dataElement={DataElements.SAVED_FULL_SIGNATURES_PANEL}>\n          <SavedSignatures\n            savedSignatures={signaturesToDisplay}\n            onSetHandler={(index) => setSignature(index)}\n            deleteHandler={(index) => deleteSignatureAndInitials(index)}\n            currentlySelectedIndex={selectedDisplayedSignatureIndex}\n            isDeleteDisabled={isSignatureDeleteButtonDisabled}\n            activeToolName={activeToolName} />\n        </TabPanel>\n        <TabPanel dataElement={DataElements.SAVED_INITIALS_PANEL}>\n          <SavedSignatures\n            savedSignatures={savedInitials}\n            onSetHandler={(index) => setInitials(index)}\n            deleteHandler={(index) => deleteSignatureAndInitials(index)}\n            currentlySelectedIndex={selectedDisplayedInitialsIndex}\n            isDeleteDisabled={isSignatureDeleteButtonDisabled}\n            activeToolName={activeToolName} />\n        </TabPanel>\n      </Tabs>\n      <SignatureAddBtn\n        disabled={savedSignatures.length >= maxSignaturesCount || savedInitials.length > maxSignaturesCount}\n      />\n    </div>\n  );\n};\n\nexport default withTranslation()(SignatureStylePopup);\n","import SignatureStylePopup from './SignatureStylePopup';\n\nexport default SignatureStylePopup;","/* eslint-disable */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { Tabs, Tab, TabPanel, TabHeader } from 'components/Tabs';\nimport Icon from 'components/Icon';\nimport DataElementWrapper from 'components/DataElementWrapper';\n\nimport { Swipeable } from 'react-swipeable';\n\nimport './RubberStampOverlay.scss';\nimport DataElements from 'constants/dataElement';\n\nconst TOOL_NAME = 'AnnotationCreateRubberStamp';\n\nconst propTypes = {\n  standardStamps: PropTypes.array.isRequired,\n  customStamps: PropTypes.array.isRequired,\n  setSelectedStampIndex: PropTypes.func.isRequired,\n};\n\nclass RubberStampOverlay extends React.Component {\n  static propTypes = {\n    activeToolName: PropTypes.string,\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    isMobile: PropTypes.bool,\n    isActive: PropTypes.bool,\n    t: PropTypes.func.isRequired,\n    i18n: PropTypes.any,\n    openElement: PropTypes.func.isRequired,\n    closeElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    dataElement: PropTypes.string.isRequired,\n    toggleElement: PropTypes.func.isRequired,\n  };\n\n  constructor(props) {\n    super(props);\n    this.stampToolArray = core.getToolsFromAllDocumentViewers(TOOL_NAME);\n  }\n\n  async setRubberStamp(annotation, index) {\n    core.setToolMode(TOOL_NAME);\n    this.props.closeElement('toolStylePopup');\n    for (let tool of this.stampToolArray) {\n      const text = this.props.t(`rubberStamp.${annotation['Icon']}`);\n      await tool.setRubberStamp(annotation, text);\n      tool.showPreview();\n      this.props.setSelectedStampIndex(index);\n    }\n  }\n\n  openCustomSampModal = () => {\n    const { openElement } = this.props;\n    openElement('customStampModal');\n  };\n\n  deleteCustomStamp = index => {\n    for (let tool of this.stampToolArray) {\n      const stamps = tool.getCustomStamps();\n      tool.deleteCustomStamps([stamps[index]]);\n    }\n  };\n\n  render() {\n    const { isMobile, standardStamps, customStamps } = this.props;\n\n    const rubberStamps = standardStamps.map(({ imgSrc, annotation }, index) => (\n      <button\n        key={index}\n        className=\"rubber-stamp\"\n        aria-label={`${this.props.t('annotation.stamp')} ${index + 1}`}\n        onClick={() => this.setRubberStamp(annotation, index)}\n      >\n        <img src={imgSrc} alt=\"\" />\n      </button>\n    ));\n\n    const customImgs = customStamps.map(({ imgSrc, annotation }, index) => (\n      <div key={index} className=\"stamp-row\">\n        <button\n          className=\"stamp-row-content custom-stamp\"\n          aria-label={`${this.props.t('annotation.rubberStamp')} ${index + 1}`}\n          onClick={() => this.setRubberStamp(annotation, standardStamps.length + index)}\n        >\n          <img src={imgSrc} alt=\"\" />\n        </button>\n        <DataElementWrapper\n          dataElement={DataElements.DELETE_CUSTOM_STAMP_BUTTON}\n          className=\"icon\"\n          onClick={() => this.deleteCustomStamp(index)}>\n          <Icon glyph=\"icon-delete-line\" />\n        </DataElementWrapper>\n      </div>\n    ));\n\n    return (\n      <div className=\"rubber-stamp-overlay\" data-element=\"rubberStampOverlay\">\n        <Tabs id=\"rubberStampTab\">\n          <TabHeader dataElement={DataElements.RUBBER_STAMP_TAB_HEADER}>\n            <div className=\"header tab-header\">\n              <div className=\"tab-list\">\n                <Tab dataElement={DataElements.STANDARD_STAMPS_PANEL_BUTTON}>\n                  <button className=\"tab-options-button\" title={this.props.t('tool.Standard')}>\n                    {this.props.t('tool.Standard')}\n                  </button>\n                </Tab>\n                <div className=\"tab-options-divider\" />\n                <Tab dataElement={DataElements.CUSTOM_STAMPS_PANEL_BUTTON}>\n                  <button className=\"tab-options-button\" title={this.props.t('tool.Custom')}>\n                    {this.props.t('tool.Custom')}\n                  </button>\n                </Tab>\n              </div>\n            </div>\n          </TabHeader>\n          <TabPanel dataElement={DataElements.STANDARD_STAMPS_PANEL}>\n            {/* Using Swipeable to stop the bubbling of swiping events when scrolling\n             * Don't know a better way of doing this\n             */}\n            <Swipeable\n              className=\"standard-stamp-panel\"\n              onSwiped={({ event }) => {\n                event.stopPropagation();\n              }}\n            >\n              {rubberStamps}\n            </Swipeable>\n          </TabPanel>\n          <TabPanel dataElement={DataElements.CUSTOM_STAMPS_PANEL}>\n            <div className=\"custom-stamp-panel\">{customImgs}</div>\n            <DataElementWrapper\n              dataElement={DataElements.CREATE_CUSTOM_STAMP_BUTTON}\n              className={classNames({\n                'stamp-row-content': true,\n                'add-btn': true,\n              })}\n              onClick={this.openCustomSampModal}\n            >\n              {this.props.t(`component.createStampButton`)}\n            </DataElementWrapper>\n          </TabPanel>\n        </Tabs>\n      </div>\n    );\n  }\n}\n\nRubberStampOverlay.propTypes = propTypes;\n\nconst mapStateToProps = state => ({\n  activeToolName: selectors.getActiveToolName(state),\n  isActive: selectors.getActiveToolName(state) === TOOL_NAME,\n  dataElement: selectors.getToolButtonObjects(state)[TOOL_NAME].dataElement,\n  standardStamps: selectors.getStandardStamps(state),\n  customStamps: selectors.getCustomStamps(state),\n});\n\nconst mapDispatchToProps = {\n  closeElements: actions.closeElements,\n  closeElement: actions.closeElement,\n  openElement: actions.openElement,\n  toggleElement: actions.toggleElement,\n  setSelectedStampIndex: actions.setSelectedStampIndex,\n  setStandardStamps: actions.setStandardStamps,\n  setCustomStamps: actions.setCustomStamps,\n};\n\nconst ConnectedRubberStampOverlay = connect(mapStateToProps, mapDispatchToProps)(withTranslation()(RubberStampOverlay));\n\nexport default props => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedRubberStampOverlay {...props} isMobile={isMobile} />;\n};\n","import RubberStampOverlay from './RubberStampOverlay';\n\nexport default RubberStampOverlay;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport onClickOutside from 'react-onclickoutside';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\n\nimport core from 'core';\nimport StylePopup from 'components/StylePopup';\nimport SignatureStylePopup from 'components/SignatureStylePopup';\nimport setToolStyles from 'helpers/setToolStyles';\nimport { getOpenedWarningModal, getOpenedColorPicker, getAllOpenedModals } from 'helpers/getElements';\nimport getTextDecoration from 'helpers/getTextDecoration';\nimport { mapToolNameToKey, getDataWithKey } from 'constants/map';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { isDesktopSize, isMobileSize, isTabletSize } from 'helpers/getDeviceSize';\nimport HorizontalDivider from 'components/HorizontalDivider';\nimport RubberStampStylePopup from 'components/RubberStampOverlay';\n\nimport './ToolStylePopup.scss';\nimport getToolStyles from 'helpers/getToolStyles';\nimport DataElements from 'constants/dataElement';\nimport getRootNode from 'helpers/getRootNode';\n\nclass ToolStylePopup extends React.PureComponent {\n  static propTypes = {\n    activeToolName: PropTypes.string,\n    activeToolStyle: PropTypes.object,\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    toolButtonObjects: PropTypes.object.isRequired,\n    colorMapKey: PropTypes.string,\n    closeElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool\n  };\n\n  constructor(props) {\n    super(props);\n    this.popup = React.createRef();\n    this.state = {\n      left: 0,\n      top: 0,\n    };\n  }\n\n  handleClickOutside = (e) => {\n    // can have multiple toolsOverlays because of mobile mode\n    const toolsOverlays = Array.from(getRootNode().querySelectorAll(\n      '[data-element=\"toolsOverlay\"]',\n    ));\n    const pageNavOverlays = Array.from(getRootNode().querySelectorAll(\n      '[data-element=\"pageNavOverlay\"]',\n    ));\n    const warningModal = getOpenedWarningModal();\n    const colorPicker = getOpenedColorPicker();\n    const openedModal = Array.from(getAllOpenedModals());\n\n    const target = e.composedPath()[0];\n\n    const clickedOnToolsOverlay = toolsOverlays.some((toolsOverlay) => {\n      return toolsOverlay?.contains(target);\n    });\n    const clickedOnPageNavOverlay = pageNavOverlays.some((pageNavOverlay) => {\n      return pageNavOverlay?.contains(target);\n    });\n    const clickedOnCreateStampModal = openedModal.some((pageModal) => {\n      return pageModal.classList.contains('CustomStampModal');\n    });\n\n    if (!clickedOnToolsOverlay && !clickedOnPageNavOverlay && !clickedOnCreateStampModal && !warningModal && !colorPicker) {\n      this.props.closeElement('toolStylePopup');\n    }\n  };\n\n  componentDidUpdate(prevProps) {\n    if (!prevProps.isOpen && this.props.isOpen && !this.props.isDisabled) {\n      this.props.closeElements([\n        DataElements.VIEW_CONTROLS_OVERLAY,\n        DataElements.MENU_OVERLAY,\n        DataElements.SIGNATURE_OVERLAY,\n        DataElements.ZOOM_OVERLAY,\n        DataElements.REDACTION_OVERLAY,\n      ]);\n    }\n  }\n\n  handleStyleChange = (property, value) => {\n    const { activeToolName } = this.props;\n    const tool = core.getTool(activeToolName);\n    if (typeof tool.complete === 'function') {\n      tool.complete();\n    }\n    setToolStyles(activeToolName, property, value, true);\n  };\n\n  handleRichTextStyleChange = (property, value) => {\n    const { activeToolName, activeToolStyle } = this.props;\n    const tool = core.getTool(activeToolName);\n    const activeToolRichTextStyle = activeToolStyle['RichTextStyle'][0];\n\n    if (typeof tool.complete === 'function') {\n      tool.complete();\n    }\n\n    if (property === 'underline' || property === 'line-through') {\n      value = getTextDecoration({ [property]: value }, activeToolRichTextStyle);\n      property = 'text-decoration';\n    }\n\n    const richTextStyle = {\n      0: {\n        ...activeToolRichTextStyle,\n        [property]: value,\n      }\n    };\n\n    setToolStyles(activeToolName, 'RichTextStyle', richTextStyle);\n  }\n\n  handleLineStyleChange = (section, value) => {\n    const { activeToolName } = this.props;\n    if (section === 'start') {\n      setToolStyles(activeToolName, 'StartLineStyle', value);\n    } else if (section === 'end') {\n      setToolStyles(activeToolName, 'EndLineStyle', value);\n    } else if (section === 'middle') {\n      setToolStyles(activeToolName, 'StrokeStyle', value);\n    }\n  };\n\n  handleAutoSize = () => {\n    const { activeToolName, activeToolStyle } = this.props;\n    setToolStyles(activeToolName, 'isAutoSizeFont', !activeToolStyle.isAutoSizeFont);\n  }\n\n  render() {\n    const { activeToolGroup, isDisabled, activeToolName, activeToolStyle } = this.props;\n    const isFreeText = activeToolName.includes('FreeText') || activeToolName.includes('Callout');\n    let properties = {};\n    const colorMapKey = mapToolNameToKey(activeToolName);\n    const isRedaction = activeToolName.includes('AnnotationCreateRedaction');\n    const isEllipse = activeToolName.includes('AnnotationCreateEllipse');\n\n    const showLineStyleOptions = getDataWithKey(colorMapKey).hasLineEndings;\n\n    if (isDisabled) {\n      return null;\n    }\n\n    if (activeToolStyle['StrokeStyle']) {\n      properties = {\n        StrokeStyle: activeToolStyle['StrokeStyle'],\n      };\n    }\n\n    if (isRedaction) {\n      properties = {\n        OverlayText: activeToolStyle['OverlayText'],\n        Font: activeToolStyle['Font'],\n        FontSize: activeToolStyle['FontSize'],\n        TextAlign: activeToolStyle['TextAlign']\n      };\n    }\n\n\n    if (isFreeText) {\n      properties = {\n        Font: activeToolStyle.Font,\n        FontSize: activeToolStyle.FontSize,\n        TextAlign: activeToolStyle.TextAlign,\n        TextVerticalAlign: activeToolStyle.TextVerticalAlign,\n        bold: activeToolStyle['RichTextStyle'][0]['font-weight'] === 'bold',\n        italic: activeToolStyle['RichTextStyle'][0]['font-style'] === 'italic',\n        underline: activeToolStyle['RichTextStyle'][0]['text-decoration']?.includes('underline') || activeToolStyle['text-decoration']?.includes('word'),\n        strikeout: activeToolStyle['RichTextStyle'][0]['text-decoration']?.includes('line-through'),\n        isAutosizeFont: activeToolStyle.isAutoSizeFont,\n        StrokeStyle: activeToolStyle['StrokeStyle']\n      };\n    }\n\n    if (showLineStyleOptions) {\n      const toolStyles = getToolStyles(activeToolName);\n      properties = {\n        StartLineStyle: toolStyles.StartLineStyle,\n        EndLineStyle: toolStyles.EndLineStyle,\n        StrokeStyle: toolStyles.StrokeStyle,\n      };\n    }\n\n    const isEllipseMeasurementTool = activeToolName.includes('AnnotationCreateEllipseMeasurement');\n\n    let Component = (\n      <StylePopup\n        key={activeToolName}\n        toolName={activeToolName}\n        colorMapKey={colorMapKey}\n        style={activeToolStyle}\n        isFreeText={isFreeText}\n        isEllipse={isEllipse}\n        isFreeTextAutoSize={properties.isAutosizeFont}\n        onFreeTextSizeToggle={this.handleAutoSize}\n        hideSnapModeCheckbox={isEllipseMeasurementTool || !core.isFullPDFEnabled()}\n        onPropertyChange={this.handleStyleChange}\n        onStyleChange={this.handleStyleChange}\n        onSliderChange={this.handleStyleChange}\n        onRichTextStyleChange={this.handleRichTextStyleChange}\n        onLineStyleChange={this.handleLineStyleChange}\n        properties={properties}\n        isRedaction={isRedaction}\n        showLineStyleOptions={showLineStyleOptions}\n      />\n    );\n\n    if (activeToolGroup === 'signatureTools') {\n      Component = (\n        <React.Fragment>\n          <HorizontalDivider />\n          <SignatureStylePopup />\n        </React.Fragment>\n      );\n    } else if (activeToolGroup === 'rubberStampTools') {\n      Component = (\n        <React.Fragment>\n          <HorizontalDivider />\n          <RubberStampStylePopup />\n        </React.Fragment>\n      );\n    }\n\n    return (\n      <div\n        className={classNames({\n          ToolStylePopup: true,\n        })}\n        data-element=\"toolStylePopup\"\n        ref={this.popup}\n      >\n        {/* {isMobile && <div className=\"swipe-indicator\" />} */}\n        {Component}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => {\n  const activeToolName = selectors.getActiveToolName(state);\n  const toolButtonDataElement = selectors.getToolButtonDataElement(state, activeToolName);\n\n  return {\n    activeToolName,\n    activeToolGroup: selectors.getActiveToolGroup(state),\n    toolButtonDataElement,\n    activeToolStyle: selectors.getActiveToolStyles(state),\n    isDisabled: selectors.isElementDisabled(state, 'toolStylePopup'),\n    isOpen: selectors.isElementOpen(state, 'toolStylePopup'),\n    toolButtonObjects: selectors.getToolButtonObjects(state),\n    isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state)\n  };\n};\n\nconst mapDispatchToProps = {\n  closeElement: actions.closeElement,\n  closeElements: actions.closeElements,\n};\n\nconst ConnectedToolStylePopup = connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(onClickOutside(ToolStylePopup));\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  const isTablet = isTabletSize();\n\n  const isDesktop = isDesktopSize();\n\n  return (\n    <ConnectedToolStylePopup {...props} isMobile={isMobile} isTablet={isTablet} isDesktop={isDesktop} />\n  );\n};\n\nexport default connectedComponent;\n","import connectedComponent from './ToolStylePopup';\n\nexport default connectedComponent;\n","import ToolsDropdown from './ToolsDropdown';\n\nexport default ToolsDropdown;\n","import React from 'react';\nimport Icon from 'components/Icon';\nimport classNames from 'classnames';\n\nimport './ToolsDropdown.scss';\n\n\nconst ToolsDropdown = ({ isActive, isDisabled, onClick, style }) => {\n  return (\n    <button\n      className={classNames({\n        'tools-dropdown-container': true,\n        active: isActive,\n        disabled: isDisabled,\n      })}\n      data-element=\"styling-button\"\n      onClick={onClick}\n      style={style}\n    >\n      {isActive ?\n        <Icon className=\"tools-arrow-up\" glyph=\"icon-chevron-up\" /> :\n        <Icon className=\"tools-arrow-down\" glyph=\"icon-chevron-down\" />}\n    </button>\n  );\n};\n\nexport default ToolsDropdown;","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport SignatureRowContent from 'components/SignatureStylePopup/SignatureRowContent';\nimport SignatureAddBtn from 'components/SignatureStylePopup/SignatureAddBtn';\nimport ToolsDropdown from 'components/ToolsDropdown';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport SignatureModes from 'constants/signatureModes';\nimport { useTranslation } from 'react-i18next';\n\nimport './SelectedSignatureRow.scss';\n\nconst SelectedSignatureRow = () => {\n  const [\n    activeToolName,\n    isToolStyleOpen,\n    displayedSignature,\n    displayedSignatures,\n    savedInitials,\n    displayedInitial,\n    signatureMode,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state),\n      selectors.isElementOpen(state, 'toolStylePopup'),\n      selectors.getSelectedDisplayedSignature(state),\n      selectors.getDisplayedSignatures(state),\n      selectors.getSavedInitials(state),\n      selectors.getDisplayedInitial(state),\n      selectors.getSignatureMode(state),\n    ],\n  );\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n\n  const onDropDownClick = () => {\n    if (displayedSignatures.length > 0 || savedInitials.length > 0) {\n      dispatch(actions.toggleElement('toolStylePopup'));\n    }\n  };\n\n  const setSignature = async () => {\n    const isFullSignature = signatureMode === SignatureModes.FULL_SIGNATURE;\n    const { annotation } = isFullSignature ? displayedSignature : displayedInitial;\n    core.setToolMode('AnnotationCreateSignature');\n    for (const signatureTool of signatureToolArray) {\n      await signatureTool[isFullSignature ? 'setSignature' : 'setInitials'](annotation);\n      if (signatureTool.hasLocation()) {\n        await signatureTool[isFullSignature ? 'addSignature' : 'addInitials']();\n      } else {\n        await signatureTool[isFullSignature ? 'showPreview' : 'showInitialsPreview']();\n      }\n    }\n  };\n\n  const signatureToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateSignature');\n  const selectedSignature = signatureMode === SignatureModes.INITIALS ? displayedInitial : displayedSignature;\n  return (\n    <div\n      className=\"selected-signature-row\"\n    >\n      {selectedSignature ?\n        <SignatureRowContent\n          imgSrc={selectedSignature.imgSrc}\n          onClick={setSignature}\n          isActive={activeToolName === 'AnnotationCreateSignature'}\n          altText={t('option.toolsOverlay.currentSignature')}\n        /> :\n        <SignatureAddBtn/>}\n      <ToolsDropdown\n        onClick={onDropDownClick}\n        isActive={isToolStyleOpen}\n        isDisabled={displayedSignatures.length === 0 && savedInitials.length === 0}\n      />\n    </div>\n  );\n};\n\nexport default SelectedSignatureRow;\n","import React, { useEffect, useRef, useReducer } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nimport SignatureRowContent from 'components/SignatureStylePopup/SignatureRowContent';\nimport ToolsDropdown from 'components/ToolsDropdown';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nimport './SelectedRubberStamp.scss';\n\n\nconst usePrevious = (value) => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\n\nconst SelectedRubberStamp = () => {\n  const dispatch = useDispatch();\n  const [t, i18n] = useTranslation();\n  const prevLanguage = usePrevious(i18n.language);\n  // https://legacy.reactjs.org/docs/hooks-faq.html#is-there-something-like-forceupdate\n  const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n  const [\n    activeToolName,\n    selectedStamp,\n  ] = useSelector((state) => [\n    selectors.getActiveToolName(state),\n    selectors.getSelectedStamp(state),\n  ]);\n\n  useEffect(() => {\n    dispatch(actions.setStandardStamps(t));\n    dispatch(actions.setCustomStamps(t));\n    // eslint-disable-next-line\n  }, []);\n\n  useEffect(() => {\n    const isLanguageChanged = prevLanguage !== i18n.language;\n    if (isLanguageChanged) {\n      dispatch(actions.setStandardStamps(t));\n      dispatch(actions.setCustomStamps(t));\n    }\n  });\n\n  const rubberStampToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateRubberStamp');\n  const onStampsModified = () => {\n    dispatch(actions.setStandardStamps(t));\n    dispatch(actions.setCustomStamps(t));\n  };\n\n  useEffect(() => {\n    rubberStampToolArray[0].addEventListener('stampsUpdated', onStampsModified);\n    rubberStampToolArray[0].addEventListener('customStampsDeleted', onStampsModified);\n    return () => {\n      rubberStampToolArray[0].removeEventListener('stampsUpdated', onStampsModified);\n      rubberStampToolArray[0].removeEventListener('customStampsDeleted', onStampsModified);\n    };\n  }, []);\n\n  const [isToolStyleOpen] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'toolStylePopup'),\n    ],\n  );\n\n  useEffect(() => {\n    // set the tool mode and active tool group when first selected\n    core.setToolMode(defaultTool);\n  }, []);\n\n  return (\n    <div\n      className=\"selected-rubber-stamp-container\"\n    >\n      <div\n        className=\"selected-rubber-stamp\"\n      >\n        {selectedStamp &&\n          <SignatureRowContent\n            imgSrc={selectedStamp.imgSrc}\n            onClick={async () => {\n              core.setToolMode('AnnotationCreateRubberStamp');\n              const text = t(`rubberStamp.${selectedStamp.annotation['Icon']}`);\n              for (const rubberStampTool of rubberStampToolArray) {\n                await rubberStampTool.setRubberStamp(selectedStamp.annotation, text);\n                rubberStampTool.showPreview();\n              }\n              forceUpdate();\n            }}\n            isActive={activeToolName === 'AnnotationCreateRubberStamp' && !rubberStampToolArray[0].isEmptyStamp()}\n            altText={t('option.toolsOverlay.currentStamp')}\n          />\n        }\n      </div>\n      <ToolsDropdown\n        onClick={() => dispatch(actions.toggleElement('toolStylePopup'))}\n        isActive={isToolStyleOpen}\n      />\n    </div>\n  );\n};\n\nexport default SelectedRubberStamp;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport core from 'core';\n\nimport './SelectedStamp.scss';\n\nconst SelectedStamp = ({ tReady, toolName }) => {\n  const [t] = useTranslation();\n  useEffect(() => {\n    const selectedStampArray = core.getToolsFromAllDocumentViewers(toolName);\n    core.setToolMode(toolName);\n    selectedStampArray.forEach((selectedStamp) => selectedStamp.showPreview());\n  }, [toolName]);\n\n  return (\n    <div\n      className=\"stamp-overlay\"\n    >\n      <div className=\"no-presets\">\n        {tReady ? t('message.toolsOverlayNoPresets') : ''}\n      </div>\n    </div>\n  );\n};\n\nexport default SelectedStamp;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport PresetButton from 'components/ToolButton/PresetButton';\nimport ToolStylePopup from 'components/ToolStylePopup';\nimport SelectedSignatureRow from 'components/SignatureStylePopup/SelectedSignatureRow';\nimport SelectedRubberStamp from 'components/RubberStampOverlay/SelectedRubberStamp';\nimport SelectedStamp from 'components/SelectedStamp/SelectedStamp';\nimport Icon from 'components/Icon';\nimport { withTranslation } from 'react-i18next';\n\nimport defaultTool from 'constants/defaultTool';\nimport DataElements from 'constants/dataElement';\nimport core from 'core';\nimport getOverlayPositionBasedOn from 'helpers/getOverlayPositionBasedOn';\nimport actions from 'actions';\nimport { isDesktopSize, isMobileSize, isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport selectors from 'selectors';\nimport { Swipeable } from 'react-swipeable';\nimport classNames from 'classnames';\n\nimport './ToolsOverlay.scss';\n\nclass ToolsOverlay extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    toolButtonObjects: PropTypes.object,\n    activeHeaderItems: PropTypes.arrayOf(PropTypes.object),\n    activeToolGroup: PropTypes.string,\n    closeElements: PropTypes.func.isRequired,\n    setActiveToolGroup: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n    showPresets: PropTypes.bool,\n    customizableUI: PropTypes.bool,\n  };\n\n  constructor() {\n    super();\n    this.overlay = React.createRef();\n    this.state = {\n      left: 0,\n      right: 'auto',\n      top: 'auto',\n      isStylingOpen: false,\n      siblingWidth: 0,\n    };\n  }\n\n  componentDidMount() {\n    window.addEventListener('resize', this.handleWindowResize);\n\n    // this component can be opened before mounting to the DOM if users call the setToolMode API\n    // in this case we need to set its position immediately after it's mounted\n    // otherwise its left is 0 instead of left-aligned with the tool group button\n    if (this.props.isOpen) {\n      this.setOverlayPosition();\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    const clickedOnAnotherToolGroupButton =\n      prevProps.activeToolGroup !== this.props.activeToolGroup;\n\n    if (!prevProps.isOpen && this.props.isOpen) {\n      this.props.closeElements([\n        DataElements.VIEW_CONTROLS_OVERLAY,\n        DataElements.MENU_OVERLAY,\n        DataElements.TOOL_STYLE_POPUP,\n        DataElements.SIGNATURE_OVERLAY,\n        DataElements.ZOOM_OVERLAY,\n        DataElements.REDACTION_OVERLAY,\n      ]);\n      this.setOverlayPosition();\n    }\n\n    if (clickedOnAnotherToolGroupButton) {\n      this.setOverlayPosition();\n    }\n\n    if (this.props.activeToolGroup === '') {\n      this.props.closeElements(['toolStylePopup']);\n    }\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('resize', this.handleWindowResize);\n  }\n\n  handleWindowResize = () => {\n    this.setOverlayPosition();\n    this.forceUpdate();\n  };\n\n  setOverlayPosition = () => {\n    const { activeToolGroup, activeHeaderItems } = this.props;\n    const element = activeHeaderItems.find(\n      (item) => item.toolGroup === activeToolGroup,\n    );\n\n    if (element) {\n      this.setState(\n        getOverlayPositionBasedOn(element.dataElement, this.overlay),\n      );\n    }\n  };\n\n  handleCloseClick = () => {\n    const { closeElements } = this.props;\n    closeElements([DataElements.TOOLS_OVERLAY]);\n  };\n\n  render() {\n    const {\n      t,\n      tReady,\n      isDisabled,\n      isOpen,\n      toolNames,\n      activeToolGroup,\n      isToolStyleOpen,\n      isMobile,\n      isInDesktopOnlyMode,\n      showPresets,\n      customizableUI,\n    } = this.props;\n\n    const isSmallComponent = window.isApryseWebViewerWebComponent ? isMobileSize() : isMobile;\n\n    const isVisible = (isOpen || true) && !isDisabled;\n    if (!isVisible) {\n      return null;\n    }\n\n    const toolsWithNoStylingPresets = [\n      'stampTools',\n      'cropTools',\n      'fileAttachmentTools',\n      'radioButtonFieldTools',\n      'checkBoxFieldTools',\n      'contentEditTools',\n      'addParagraphTools',\n      'calibrationTools',\n      'addImageContentTools'\n    ];\n    const noPresets = !activeToolGroup || toolsWithNoStylingPresets.includes(activeToolGroup);\n    let Component = (\n      <div\n        className=\"tool-buttons-container\"\n      >\n        {toolNames.map((toolName, i) => (\n          <PresetButton\n            key={`${toolName}-${i}`}\n            toolName={toolName}\n            isToolStyleOpen={isToolStyleOpen}\n          />\n        ))}\n      </div>\n    );\n\n    if (activeToolGroup === 'signatureTools') {\n      Component = (\n        <SelectedSignatureRow />\n      );\n    } else if (activeToolGroup === 'rubberStampTools') {\n      Component = (\n        <SelectedRubberStamp />\n      );\n    } else if (activeToolGroup === 'model3DTools') {\n      Component = (\n        <div className=\"model-3D-btn add-btn\" onClick={() => this.props.openElement('Model3DModal')}>\n          {t('Model3D.add3D')}\n        </div>\n      );\n    } else if (noPresets || !showPresets) {\n      Component = (\n        <div className=\"no-presets\">\n          {tReady ? t('message.toolsOverlayNoPresets') : ''}\n        </div>\n      );\n    } else if (['crossStampTools', 'checkStampTools', 'dotStampTools'].includes(activeToolGroup)) {\n      Component = (\n        <SelectedStamp tReady={tReady} toolName={toolNames[0]} />\n      );\n    }\n\n    if ((noPresets && (isSmallComponent && !isInDesktopOnlyMode)) || customizableUI) {\n      return null;\n    }\n\n    return (\n      <Swipeable\n        onSwipedUp={() => this.props.closeElements(['toolStylePopup'])}\n        onSwipedDown={() => this.props.closeElements(['toolStylePopup'])}\n        preventDefaultTouchmoveEvent\n        className={classNames({\n          ToolsOverlayContainer: true\n        })}\n      >\n        <div\n          className={classNames({\n            Overlay: true,\n            ToolsOverlay: true,\n            open: isOpen,\n            shadow: isToolStyleOpen || (isMobile && !isInDesktopOnlyMode)\n          })}\n          ref={this.overlay}\n          data-element={DataElements.TOOLS_OVERLAY}\n        >\n          <div\n            className={classNames({\n              'tools-container': true,\n              'is-styling-open': isToolStyleOpen\n            })}\n          >\n            {Component}\n            {(isSmallComponent && !isInDesktopOnlyMode) &&\n              <button\n                className=\"close-icon-container\"\n                onClick={() => {\n                  this.props.closeElements([DataElements.TOOLS_OVERLAY]);\n                  core.setToolMode(defaultTool);\n                  this.props.setActiveToolGroup('');\n                }}\n              >\n                <Icon\n                  glyph=\"ic_close_black_24px\"\n                  className=\"close-icon\"\n                />\n              </button>}\n          </div>\n          {isToolStyleOpen &&\n            <ToolStylePopup />}\n        </div>\n      </Swipeable>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  isDisabled: selectors.isElementDisabled(state, DataElements.TOOLS_OVERLAY),\n  isOpen: selectors.isElementOpen(state, DataElements.TOOLS_OVERLAY),\n  isToolStyleOpen: selectors.isElementOpen(state, 'toolStylePopup'),\n  toolNames: selectors.getActiveToolNamesForActiveToolGroup(state),\n  activeHeaderItems: selectors.getToolsHeaderItems(state),\n  activeToolGroup: selectors.getActiveToolGroup(state),\n  activeToolName: selectors.getActiveToolName(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n  showPresets: selectors.shouldShowPresets(state),\n  customizableUI: state.featureFlags.customizableUI,\n});\n\nconst mapDispatchToProps = {\n  toggleElement: actions.toggleElement,\n  openElement: actions.openElement,\n  closeElements: actions.closeElements,\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolsOverlay = connect(mapStateToProps, mapDispatchToProps)(withTranslation()(ToolsOverlay));\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  const isDesktop = isDesktopSize();\n\n  return (\n    <ConnectedToolsOverlay {...props} isMobile={isMobile} isTabletAndMobile={isTabletAndMobile} isDesktop={isDesktop} />\n  );\n};\n\nexport default connectedComponent;\n","import connectedComponent from './ToolsOverlay';\n\nexport default connectedComponent;","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport classNames from 'classnames';\nimport Dropdown from 'components/Dropdown';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport core from 'core';\nimport Measure from 'react-measure';\nimport { DISABLED_TOOL_GROUPS } from 'constants/multiViewerContants';\nimport DataElements from 'constants/dataElement';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\n\nimport './Ribbons.scss';\n\nconst FileName = () => {\n  const [isEditing, setIsEditing] = useState(false);\n  const [extension, setExtension] = useState('');\n  const [fileNameWithoutExtension, setFileNameWithoutExtension] = useState('');\n\n  const onClicked = () => {\n    const name = core.getDocument()?.getFilename();\n    const nameArray = name?.split('.');\n    const extension = `.${nameArray[nameArray.length - 1]}`;\n    setFileNameWithoutExtension(name.slice(0, -extension.length) || name);\n    setExtension(extension);\n    setIsEditing(true);\n  };\n\n  const finishEditing = () => {\n    if (fileNameWithoutExtension) {\n      core.getDocument()?.setFilename(`${fileNameWithoutExtension}${extension}`);\n    }\n    setIsEditing(false);\n  };\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter') {\n      finishEditing();\n    }\n    if (e.key === 'Escape') {\n      setIsEditing(false);\n    }\n  };\n\n  return (\n    <DataElementWrapper dataElement={DataElements.OFFICE_EDITOR_FILE_NAME}>\n      {isEditing ? (\n        <input\n          value={fileNameWithoutExtension}\n          onChange={(e) => setFileNameWithoutExtension(e.target.value)}\n          onBlur={finishEditing}\n          onKeyDown={handleKeyDown}\n          autoFocus\n        />\n      ) : (\n        <div className=\"editable-file-name\" onClick={onClicked}>{core.getDocument()?.getFilename()}</div>\n      )}\n    </DataElementWrapper>\n  );\n};\n\nconst Ribbons = () => {\n  const [\n    toolbarGroups,\n    currentToolbarGroup,\n    isMultiViewerMode,\n    customHeadersAdditionalProperties,\n  ] = useSelector((state) => [\n    selectors.getEnabledToolbarGroups(state),\n    selectors.getCurrentToolbarGroup(state),\n    selectors.isMultiViewerMode(state),\n    selectors.getCustomHeadersAdditionalProperties(state),\n  ]);\n  const { t, ready: tReady } = useTranslation();\n  const [ribbonsWidth, setRibbonsWidth] = useState(0);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [hasEnoughCenteredSpace, setHasEnoughCenteredSpace] = useState(false);\n  const ribbonsRef = useRef();\n  const containerRef = useRef();\n  const dispatch = useDispatch();\n\n  const setToolbarGroup = useCallback((group, pickTool) => {\n    dispatch(actions.setToolbarGroup(group, pickTool));\n  }, [dispatch]);\n\n  // don't pick tool for the edit group because the first button in the group is the form editing button,\n  // which is an action button that does not have an active background\n  const shouldPickTool = (toolbarGroup) => toolbarGroup !== 'toolbarGroup-Edit' && toolbarGroup !== 'toolbarGroup-EditText';\n\n  const toggleFormFieldCreationMode = (toolGroup) => {\n    const formFieldCreationManager = core.getFormFieldCreationManager();\n    if (toolGroup === 'toolbarGroup-Forms') {\n      if (!formFieldCreationManager.isInFormFieldCreationMode()) {\n        formFieldCreationManager.startFormFieldCreationMode();\n      }\n    } else if (formFieldCreationManager.isInFormFieldCreationMode()) {\n      formFieldCreationManager.endFormFieldCreationMode();\n    }\n  };\n\n  const toggleContentEditMode = (toolGroup) => {\n    const contentEditManager = core.getContentEditManager();\n    if (toolGroup === 'toolbarGroup-EditText') {\n      if (!contentEditManager.isInContentEditMode()) {\n        contentEditManager.startContentEditMode();\n      }\n    } else if (contentEditManager.isInContentEditMode()) {\n      contentEditManager.endContentEditMode();\n    }\n  };\n\n  useEffect(() => {\n    // When we initialize the Viewer we don't want to start off in the Forms tab as\n    // this may confuse users, since in Forms creation mode regular annotations are hidden.\n    // If for some reason we are in this mode on init, we default to switching to the Annotate tab\n\n    // We also don't want to start off in Edit Text mode since users could\n    // accidentially change something in their document irreversibly and may be confused by\n    // the appearance of the content edit warning without changing anything\n    if (currentToolbarGroup === 'toolbarGroup-Forms' || currentToolbarGroup === 'toolbarGroup-EditText') {\n      setToolbarGroup('toolbarGroup-Annotate', shouldPickTool('toolbarGroup-Annotate'));\n    }\n  }, []);\n\n  useEffect(() => {\n    if (ribbonsRef?.current && containerRef?.current) {\n      const ribbonsWidth = ribbonsRef.current.getBoundingClientRect().width + 4;\n      const containerWidth = containerRef.current.getBoundingClientRect().width;\n\n      const spaceLeftOfContainer = window.innerWidth / 2 - containerRef.current.getBoundingClientRect().left;\n      const spaceForLeftHalfOfRibbons = ribbonsWidth / 2;\n      // If there is enough space for the Ribbon to fit in half the screen, move it to the center\n      // otherwise keep it next to the buttons on the left\n      const spaceForRibbons = Math.max(spaceLeftOfContainer, spaceForLeftHalfOfRibbons);\n\n      ribbonsRef.current.style.left = `${spaceForRibbons}px`;\n\n      if (ribbonsWidth < containerWidth) {\n        setHasEnoughCenteredSpace(true);\n      } else {\n        setHasEnoughCenteredSpace(false);\n      }\n    }\n  }, [ribbonsWidth, containerWidth, ribbonsRef, containerRef]);\n\n  if (toolbarGroups.length === 0 || !tReady) {\n    return null;\n  }\n\n  const getToolbarTranslationString = (toolbarGroup) => {\n    const customHeaderProperties = customHeadersAdditionalProperties[toolbarGroup];\n    if (customHeaderProperties && customHeaderProperties.name) {\n      return customHeaderProperties.name;\n    }\n    return `option.toolbarGroup.${toolbarGroup}`;\n  };\n\n  const filteredToolBarGroup = isMultiViewerMode ?\n    toolbarGroups.filter((group) => !DISABLED_TOOL_GROUPS.includes(group)) : toolbarGroups;\n\n  if (isOfficeEditorMode()) {\n    return <FileName />;\n  }\n\n  return (\n    <Measure\n      bounds\n      innerRef={containerRef}\n      onResize={({ bounds }) => {\n        setContainerWidth(bounds.width);\n      }}\n    >\n      {({ measureRef }) => (\n        <DataElementWrapper\n          dataElement=\"ribbons\"\n          className={classNames('ribbons-container centered-on-empty-space')}\n          ref={measureRef}\n        >\n          <Measure\n            bounds\n            innerRef={ribbonsRef}\n            onResize={({ bounds }) => {\n              setRibbonsWidth(bounds.width);\n            }}\n          >\n            {({ measureRef }) => (\n              <div\n                ref={measureRef}\n                className={classNames({\n                  'ribbons': true,\n                  'is-hidden': !hasEnoughCenteredSpace,\n                })}\n              >\n                {filteredToolBarGroup.map((toolbarGroup) => (\n                  <button\n                    key={toolbarGroup}\n                    data-element={`${toolbarGroup}`}\n                    className={classNames({\n                      'ribbon-group': true,\n                      'active': toolbarGroup === currentToolbarGroup,\n                    })}\n                    onClick={() => {\n                      toggleFormFieldCreationMode(toolbarGroup);\n                      toggleContentEditMode(toolbarGroup);\n                      setToolbarGroup(toolbarGroup, shouldPickTool(toolbarGroup));\n                    }}\n                  >\n                    {t(getToolbarTranslationString(toolbarGroup))}\n                  </button>\n                ))\n                }\n              </div>\n            )}\n          </Measure>\n          <div\n            className={classNames({\n              'ribbons': true,\n              'is-hidden': hasEnoughCenteredSpace,\n            })}\n          >\n            <Dropdown\n              dataElement=\"ribbonsDropdown\"\n              items={filteredToolBarGroup}\n              getTranslationLabel={getToolbarTranslationString}\n              currentSelectionKey={currentToolbarGroup}\n              onClickItem={(toolbarGroup) => {\n                toggleFormFieldCreationMode(toolbarGroup);\n                toggleContentEditMode(toolbarGroup);\n                setToolbarGroup(toolbarGroup, shouldPickTool(toolbarGroup));\n              }}\n            />\n          </div>\n        </DataElementWrapper>\n      )}\n    </Measure>\n  );\n};\n\nexport default Ribbons;\n","import Ribbons from './Ribbons';\n\nexport default Ribbons;","import ApplyFormFieldButton from './ApplyFormFieldButton';\n\nexport default ApplyFormFieldButton;","import React, { useCallback } from 'react';\nimport Button from 'components/Button';\nimport core from 'core';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\nimport './ApplyFormFieldButton.scss';\n\nconst ApplyFormFieldButton = () => {\n  const dispatch = useDispatch();\n  const formFieldCreationManager = core.getFormFieldCreationManager();\n\n  const applyFormFields = useCallback(() => {\n    formFieldCreationManager.endFormFieldCreationMode();\n    dispatch(actions.setToolbarGroup('toolbarGroup-View'));\n  }, [formFieldCreationManager, dispatch]);\n\n  return (\n    <Button\n      dataElement=\"applyFormFieldButton\"\n      label=\"formField.apply\"\n      className=\"apply-form-field-button\"\n      onClick={applyFormFields}\n    />\n  );\n};\n\nexport default ApplyFormFieldButton;","import core from 'core';\n\nexport const undoButton = {\n  type: 'actionButton',\n  style: { 'marginLeft': '0px' },\n  dataElement: 'undoButton',\n  title: 'action.undo',\n  img: 'icon-operation-undo',\n  onClick: (activeDocumentViewerKey) => {\n    core.undo(activeDocumentViewerKey);\n  },\n  shouldPassActiveDocumentViewerKeyToOnClickHandler: true,\n  isNotClickableSelector: (state) => !state.viewer.canUndo[state.viewer.activeDocumentViewerKey]\n};\n\nexport const redoButton = {\n  type: 'actionButton',\n  dataElement: 'redoButton',\n  title: 'action.redo',\n  img: 'icon-operation-redo',\n  onClick: (activeDocumentViewerKey) => {\n    core.redo(activeDocumentViewerKey);\n  },\n  shouldPassActiveDocumentViewerKeyToOnClickHandler: true,\n  isNotClickableSelector: (state) => !state.viewer.canRedo[state.viewer.activeDocumentViewerKey]\n};\n","// web fonts from https://www.pdftron.com/webfonts/v2/fonts.json\n// that support bold, italic, and bold-italic\n// and can be used in content editing\nexport default [\n  'Arimo',\n  'Caladea',\n  'Carlito',\n  'Cousine',\n  'Liberation Serif',\n  'Open Sans',\n  'Roboto',\n  'Roboto Mono',\n  'Tinos',\n];\n","import localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\n\n// return true if user already seen the warning model and agree to hide it\nfunction isContentEditWarningHidden() {\n  const instanceId = getInstanceID();\n  if (localStorageManager.isLocalStorageEnabled() && window.localStorage.getItem(`${instanceId}-hideContentEditWarning`)) {\n    return JSON.parse(window.localStorage.getItem(`${instanceId}-hideContentEditWarning`));\n  }\n  return false;\n}\n\nexport default isContentEditWarningHidden;","// default annotations that have inline comment enabled on select\nexport default [\n  window.Core.Annotations.TextUnderlineAnnotation,\n  window.Core.Annotations.TextHighlightAnnotation,\n  window.Core.Annotations.FreeTextAnnotation,\n  window.Core.Annotations.CaretAnnotation,\n  window.Core.Annotations.StickyAnnotation,\n  window.Core.Annotations.TextSquigglyAnnotation,\n  window.Core.Annotations.TextStrikeoutAnnotation,\n];","/**\n * A namespace which contains APIs Modular UI components.\n * @namespace Components\n * @memberof UI\n * @example\n * webViewerInstance.UI.Components.someComponent\n * webViewerInstance.UI.Components.someAPI()\n */\nimport DataElements from 'constants/dataElement';\n\nconst defaultModularHeaders = {\n  'default-top-header': {\n    dataElement: 'default-top-header',\n    placement: 'top',\n    grow: 0,\n    gap: 12,\n    position: 'start',\n    'float': false,\n    stroke: true,\n    dimension: {\n      paddingTop: 8,\n      paddingBottom: 8,\n      borderWidth: 1\n    },\n    style: {},\n    items: [\n      'groupedLeftHeaderButtons',\n      'default-ribbon-group',\n      'searchPanelToggle',\n      'notesPanelToggle'\n    ]\n  },\n  'tools-header': {\n    dataElement: 'tools-header',\n    placement: 'top',\n    justifyContent: 'center',\n    grow: 0,\n    gap: 12,\n    position: 'end',\n    'float': false,\n    stroke: true,\n    dimension: {\n      paddingTop: 8,\n      paddingBottom: 8,\n      borderWidth: 1\n    },\n    style: {},\n    items: [\n      'annotateGroupedItems',\n      'shapesGroupedItems',\n      'insertGroupedItems',\n      'redactionGroupedItems',\n      'measureGroupedItems',\n      'editGroupedItems',\n      'contentEditGroupedItems',\n      'fillAndSignGroupedItems',\n      'formsGroupedItems'\n    ]\n  },\n  'page-nav-floating-header': {\n    dataElement: 'page-nav-floating-header',\n    placement: 'bottom',\n    grow: 0,\n    gap: 12,\n    position: 'center',\n    opacityMode: 'dynamic',\n    opacity: 'none',\n    'float': true,\n    stroke: true,\n    dimension: {\n      paddingTop: 8,\n      paddingBottom: 8,\n      borderWidth: 1\n    },\n    style: {\n      background: 'var(--gray-1)',\n      padding: '8px',\n      borderStyle: 'solid',\n      borderWidth: 1,\n      borderColor: 'var(--gray-5)'\n    },\n    items: [\n      'page-controls-container'\n    ]\n  }\n};\nconst defaultModularComponents = {\n  filePickerButton: {\n    dataElement: 'filePickerButton',\n    title: 'action.openFile',\n    label: 'action.openFile',\n    icon: 'icon-header-file-picker-line',\n    hidden: true,\n    type: 'presetButton',\n  },\n  downloadButton: {\n    dataElement: 'downloadButton',\n    title: 'action.download',\n    label: 'action.download',\n    icon: 'icon-download',\n    hidden: false,\n    type: 'presetButton',\n  },\n  saveAsButton: {\n    dataElement: 'saveAsButton',\n    title: 'saveModal.saveAs',\n    isActive: false,\n    label: 'saveModal.saveAs',\n    icon: 'icon-save',\n    hidden: false,\n    type: 'presetButton',\n  },\n  printButton: {\n    dataElement: 'printButton',\n    title: 'action.print',\n    isActive: false,\n    label: 'action.print',\n    icon: 'icon-header-print-line',\n    hidden: false,\n    type: 'presetButton',\n  },\n  undefined: {},\n  createPortfolioButton: {\n    dataElement: 'createPortfolioButton',\n    title: 'portfolio.createPDFPortfolio',\n    isActive: false,\n    label: 'portfolio.createPDFPortfolio',\n    icon: 'icon-pdf-portfolio',\n    hidden: false,\n    type: 'presetButton',\n  },\n  settingsButton: {\n    dataElement: 'settingsButton',\n    title: 'option.settings.settings',\n    isActive: false,\n    label: 'option.settings.settings',\n    icon: 'icon-header-settings-line',\n    hidden: false,\n    type: 'presetButton',\n  },\n  'divider-0.1': {\n    dataElement: 'divider-0.1',\n    type: 'divider'\n  },\n  'left-panel-toggle': {\n    dataElement: 'left-panel-toggle',\n    title: 'Left Panel',\n    type: 'toggleButton',\n    img: 'icon-header-sidebar-line',\n    toggleElement: 'tabPanel'\n  },\n  'view-controls': {\n    dataElement: 'view-controls',\n    type: 'viewControls'\n  },\n  'divider-0.3': {\n    dataElement: 'divider-0.3',\n    type: 'divider'\n  },\n  'zoom-container': {\n    dataElement: 'zoom-container',\n    type: 'zoom'\n  },\n  'divider-0.2': {\n    dataElement: 'divider-0.2',\n    type: 'divider'\n  },\n  panToolButton: {\n    dataElement: 'panToolButton',\n    type: 'toolButton',\n    toolName: 'Pan'\n  },\n  annotationEditToolButton: {\n    dataElement: 'annotationEditToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationEdit'\n  },\n  'menu-toggle-button': {\n    dataElement: 'menu-toggle-button',\n    img: 'ic-hamburger-menu',\n    title: 'component.menuOverlay',\n    toggleElement: 'MainMenuFlyout',\n    type: 'toggleButton',\n  },\n  groupedLeftHeaderButtons: {\n    dataElement: 'groupedLeftHeaderButtons',\n    items: [\n      'menu-toggle-button',\n      'divider-0.1',\n      'left-panel-toggle',\n      'view-controls',\n      'divider-0.3',\n      'zoom-container',\n      'divider-0.2',\n      'panToolButton',\n      'annotationEditToolButton',\n    ],\n    type: 'groupedItems',\n    grow: 1,\n    gap: 12,\n    alwaysVisible: true,\n    style: {}\n  },\n  'toolbarGroup-View': {\n    dataElement: 'toolbarGroup-View',\n    title: 'View',\n    type: 'ribbonItem',\n    label: 'View',\n    groupedItems: [],\n    toolbarGroup: 'toolbarGroup-View'\n  },\n  'toolbarGroup-Annotate': {\n    dataElement: 'toolbarGroup-Annotate',\n    title: 'Annotate',\n    type: 'ribbonItem',\n    label: 'Annotate',\n    groupedItems: [\n      'annotateGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-Annotate'\n  },\n  'toolbarGroup-Shapes': {\n    dataElement: 'toolbarGroup-Shapes',\n    title: 'Shapes',\n    type: 'ribbonItem',\n    label: 'Shapes',\n    groupedItems: [\n      'shapesGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-Shapes'\n  },\n  'toolbarGroup-Insert': {\n    dataElement: 'toolbarGroup-Insert',\n    title: 'Insert',\n    type: 'ribbonItem',\n    label: 'Insert',\n    groupedItems: [\n      'insertGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-Insert'\n  },\n  'toolbarGroup-Measure': {\n    dataElement: 'toolbarGroup-Measure',\n    title: 'Measure',\n    type: 'ribbonItem',\n    label: 'Measure',\n    groupedItems: [\n      'measureGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-Measure'\n  },\n  'toolbarGroup-Redact': {\n    dataElement: 'toolbarGroup-Redact',\n    title: 'Redact',\n    type: 'ribbonItem',\n    label: 'Redact',\n    groupedItems: [\n      'redactionGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-Redact'\n  },\n  'toolbarGroup-Edit': {\n    dataElement: 'toolbarGroup-Edit',\n    title: 'Edit',\n    type: 'ribbonItem',\n    label: 'Edit',\n    groupedItems: [\n      'editGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-Edit'\n  },\n  'toolbarGroup-EditText': {\n    dataElement: 'toolbarGroup-EditText',\n    title: 'Content Edit',\n    type: 'ribbonItem',\n    label: 'Content Edit',\n    groupedItems: [\n      'contentEditGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-EditText'\n  },\n  'toolbarGroup-FillAndSign': {\n    dataElement: 'toolbarGroup-FillAndSign',\n    title: 'Fill and Sign',\n    type: 'ribbonItem',\n    label: 'Fill and Sign',\n    groupedItems: [\n      'fillAndSignGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-FillAndSign'\n  },\n  'toolbarGroup-Forms': {\n    dataElement: 'toolbarGroup-Forms',\n    title: 'Forms',\n    type: 'ribbonItem',\n    label: 'Forms',\n    groupedItems: [\n      'formsGroupedItems'\n    ],\n    toolbarGroup: 'toolbarGroup-Forms'\n  },\n  'default-ribbon-group': {\n    dataElement: 'default-ribbon-group',\n    items: [\n      'toolbarGroup-View',\n      'toolbarGroup-Annotate',\n      'toolbarGroup-Shapes',\n      'toolbarGroup-Insert',\n      'toolbarGroup-Measure',\n      'toolbarGroup-Redact',\n      'toolbarGroup-Edit',\n      'toolbarGroup-EditText',\n      'toolbarGroup-FillAndSign',\n      'toolbarGroup-Forms'\n    ],\n    type: 'ribbonGroup',\n    justifyContent: 'start',\n    grow: 2,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  searchPanelToggle: {\n    dataElement: 'searchPanelToggle',\n    title: 'component.searchPanel',\n    type: 'toggleButton',\n    img: 'icon-header-search',\n    toggleElement: 'searchPanel'\n  },\n  notesPanelToggle: {\n    dataElement: 'notesPanelToggle',\n    title: 'component.notesPanel',\n    type: 'toggleButton',\n    img: 'icon-header-chat-line',\n    toggleElement: 'notesPanel'\n  },\n  highlightToolButton: {\n    dataElement: 'highlightToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateTextHighlight'\n  },\n  underlineToolButton: {\n    dataElement: 'underlineToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateTextUnderline'\n  },\n  strikeoutToolButton: {\n    dataElement: 'strikeoutToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateTextStrikeout'\n  },\n  squigglyToolButton: {\n    dataElement: 'squigglyToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateTextSquiggly'\n  },\n  freeTextToolButton: {\n    dataElement: 'freeTextToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateFreeText'\n  },\n  markInsertTextToolButton: {\n    dataElement: 'markInsertTextToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateMarkInsertText'\n  },\n  markReplaceTextToolButton: {\n    dataElement: 'markReplaceTextToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateMarkReplaceText'\n  },\n  freeHandToolButton: {\n    dataElement: 'freeHandToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateFreeHand'\n  },\n  freeHandHighlightToolButton: {\n    dataElement: 'freeHandHighlightToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateFreeHandHighlight'\n  },\n  stickyToolButton: {\n    dataElement: 'stickyToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateSticky'\n  },\n  calloutToolButton: {\n    dataElement: 'calloutToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateCallout'\n  },\n  'divider-0.4': {\n    dataElement: 'divider-0.4',\n    type: 'divider'\n  },\n  stylePanelToggle: {\n    dataElement: 'stylePanelToggle',\n    title: 'action.style',\n    type: 'toggleButton',\n    img: 'icon-style-panel-toggle',\n    toggleElement: 'stylePanel'\n  },\n  'divider-0.5': {\n    dataElement: 'divider-0.5',\n    type: 'divider'\n  },\n  undoButton: {\n    dataElement: 'undoButton',\n    type: 'presetButton',\n    buttonType: 'undoButton'\n  },\n  redoButton: {\n    dataElement: 'redoButton',\n    type: 'presetButton',\n    buttonType: 'redoButton'\n  },\n  eraserToolButton: {\n    dataElement: 'eraserToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationEraserTool'\n  },\n  defaultAnnotationUtilities: {\n    dataElement: 'defaultAnnotationUtilities',\n    items: [\n      'divider-0.5',\n      'undoButton',\n      'redoButton',\n      'eraserToolButton'\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  annotateToolsGroupedItems: {\n    dataElement: 'annotateToolsGroupedItems',\n    items: [\n      'highlightToolButton',\n      'underlineToolButton',\n      'strikeoutToolButton',\n      'squigglyToolButton',\n      'freeHandToolButton',\n      'freeHandHighlightToolButton',\n      'freeTextToolButton',\n      'markInsertTextToolButton',\n      'markReplaceTextToolButton',\n      'stickyToolButton',\n      'calloutToolButton',\n    ],\n    type: 'groupedItems',\n    justifyContent: 'center',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  annotateGroupedItems: {\n    dataElement: 'annotateGroupedItems',\n    items: [\n      'annotateToolsGroupedItems',\n      'divider-0.4',\n      'stylePanelToggle',\n      'defaultAnnotationUtilities',\n    ],\n    type: 'groupedItems',\n    justifyContent: 'center',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  rectangleToolButton: {\n    dataElement: 'rectangleToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateRectangle'\n  },\n  ellipseToolButton: {\n    dataElement: 'ellipseToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateEllipse'\n  },\n  arcToolButton: {\n    dataElement: 'arcToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateArc'\n  },\n  polygonToolButton: {\n    dataElement: 'polygonToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreatePolygon'\n  },\n  cloudToolButton: {\n    dataElement: 'cloudToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreatePolygonCloud'\n  },\n  lineToolButton: {\n    dataElement: 'lineToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateLine'\n  },\n  polylineToolButton: {\n    dataElement: 'polylineToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreatePolyline'\n  },\n  arrowToolButton: {\n    dataElement: 'arrowToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateArrow'\n  },\n  shapesToolsGroupedItems: {\n    dataElement: 'shapesToolsGroupedItems',\n    items: [\n      'rectangleToolButton',\n      'ellipseToolButton',\n      'arcToolButton',\n      'polygonToolButton',\n      'cloudToolButton',\n      'lineToolButton',\n      'polylineToolButton',\n      'arrowToolButton',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  shapesGroupedItems: {\n    dataElement: 'shapesGroupedItems',\n    items: [\n      'shapesToolsGroupedItems',\n      'divider-0.4',\n      'stylePanelToggle',\n      'defaultAnnotationUtilities'\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  rubberStampToolButton: {\n    dataElement: 'rubberStampToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateRubberStamp'\n  },\n  signatureCreateToolButton: {\n    dataElement: 'signatureCreateToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateSignature'\n  },\n  fileAttachmentButton: {\n    dataElement: 'fileAttachmentButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateFileAttachment'\n  },\n  stampToolButton: {\n    dataElement: 'stampToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateStamp'\n  },\n  insertToolsGroupedItems: {\n    dataElement: 'insertToolsGroupedItems',\n    items: [\n      'rubberStampToolButton',\n      'signatureCreateToolButton',\n      'fileAttachmentButton',\n      'stampToolButton',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  insertGroupedItems: {\n    dataElement: 'insertGroupedItems',\n    items: [\n      'insertToolsGroupedItems',\n      'divider-0.4',\n      'stylePanelToggle',\n      'defaultAnnotationUtilities',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  redactionToolButton: {\n    dataElement: 'redactionToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateRedaction'\n  },\n  pageRedactionToggleButton: {\n    dataElement: 'pageRedactionToggleButton',\n    title: 'action.redactPages',\n    type: 'toggleButton',\n    img: 'icon-tool-page-redact',\n    toggleElement: 'pageRedactionModal'\n  },\n  redactionPanelToggle: {\n    dataElement: 'redactionPanelToggle',\n    type: 'toggleButton',\n    img: 'icon-redact-panel',\n    toggleElement: 'redactionPanel'\n  },\n  redactionGroupedItems: {\n    dataElement: 'redactionGroupedItems',\n    items: [\n      'redactionToolButton',\n      'pageRedactionToggleButton',\n      'redactionPanelToggle',\n      'defaultAnnotationUtilities'\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  distanceMeasurementToolButton: {\n    dataElement: 'distanceMeasurementToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateDistanceMeasurement'\n  },\n  arcMeasurementToolButton: {\n    dataElement: 'arcMeasurementToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateArcMeasurement'\n  },\n  perimeterMeasurementToolButton: {\n    dataElement: 'perimeterMeasurementToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreatePerimeterMeasurement'\n  },\n  areaMeasurementToolButton: {\n    dataElement: 'areaMeasurementToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateAreaMeasurement'\n  },\n  ellipseMeasurementToolButton: {\n    dataElement: 'ellipseMeasurementToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateEllipseMeasurement'\n  },\n  rectangularAreaMeasurementToolButton: {\n    dataElement: 'rectangularAreaMeasurementToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateRectangularAreaMeasurement'\n  },\n  countMeasurementToolButton: {\n    dataElement: 'countMeasurementToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateCountMeasurement'\n  },\n  measureGroupedItems: {\n    dataElement: 'measureGroupedItems',\n    items: [\n      'distanceMeasurementToolButton',\n      'arcMeasurementToolButton',\n      'perimeterMeasurementToolButton',\n      'areaMeasurementToolButton',\n      'ellipseMeasurementToolButton',\n      'rectangularAreaMeasurementToolButton',\n      'countMeasurementToolButton',\n      'divider-0.4',\n      'stylePanelToggle',\n      'defaultAnnotationUtilities'\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  cropToolButton: {\n    dataElement: 'cropToolButton',\n    type: 'toolButton',\n    toolName: 'CropPage'\n  },\n  snippingToolButton: {\n    dataElement: 'snippingToolButton',\n    type: 'toolButton',\n    toolName: 'SnippingTool'\n  },\n  editGroupedItems: {\n    dataElement: 'editGroupedItems',\n    items: [\n      'cropToolButton',\n      'snippingToolButton',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  addParagraphToolGroupButton: {\n    dataElement: 'addParagraphToolGroupButton',\n    type: 'toolButton',\n    toolName: 'AddParagraphTool'\n  },\n  addImageContentToolGroupButton: {\n    dataElement: 'addImageContentToolGroupButton',\n    type: 'toolButton',\n    toolName: 'AddImageContentTool'\n  },\n  'divider-0.6': {\n    dataElement: 'divider-0.6',\n    type: 'divider'\n  },\n  contentEditButton: {\n    dataElement: 'contentEditButton',\n    type: 'presetButton',\n    buttonType: 'contentEditButton'\n  },\n  contentEditGroupedItems: {\n    dataElement: 'contentEditGroupedItems',\n    items: [\n      'addParagraphToolGroupButton',\n      'addImageContentToolGroupButton',\n      'divider-0.6',\n      'contentEditButton'\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  crossStampToolButton: {\n    dataElement: 'crossStampToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateCrossStamp'\n  },\n  checkStampToolButton: {\n    dataElement: 'checkStampToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateCheckStamp'\n  },\n  dotStampToolButton: {\n    dataElement: 'dotStampToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateDotStamp'\n  },\n  calendarToolButton: {\n    dataElement: 'calendarToolButton',\n    type: 'toolButton',\n    toolName: 'AnnotationCreateDateFreeText'\n  },\n  fillAndSignGroupedItems: {\n    dataElement: 'fillAndSignGroupedItems',\n    items: [\n      'signatureCreateToolButton',\n      'freeTextToolButton',\n      'crossStampToolButton',\n      'checkStampToolButton',\n      'dotStampToolButton',\n      'rubberStampToolButton',\n      'calendarToolButton',\n      'divider-0.4',\n      'stylePanelToggle',\n      'defaultAnnotationUtilities'\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  signatureFieldButton: {\n    dataElement: 'signatureFieldButton',\n    type: 'toolButton',\n    toolName: 'SignatureFormFieldCreateTool'\n  },\n  textFieldButton: {\n    dataElement: 'textFieldButton',\n    type: 'toolButton',\n    toolName: 'TextFormFieldCreateTool'\n  },\n  checkboxFieldButton: {\n    dataElement: 'checkboxFieldButton',\n    type: 'toolButton',\n    toolName: 'CheckBoxFormFieldCreateTool'\n  },\n  radioFieldButton: {\n    dataElement: 'radioFieldButton',\n    type: 'toolButton',\n    toolName: 'RadioButtonFormFieldCreateTool'\n  },\n  listBoxFieldButton: {\n    dataElement: 'listBoxFieldButton',\n    type: 'toolButton',\n    toolName: 'ListBoxFormFieldCreateTool'\n  },\n  comboBoxFieldButton: {\n    dataElement: 'comboBoxFieldButton',\n    type: 'toolButton',\n    toolName: 'ComboBoxFormFieldCreateTool'\n  },\n  'divider-0.7': {\n    dataElement: 'divider-0.7',\n    type: 'divider'\n  },\n  formFieldEditButton: {\n    dataElement: 'formFieldEditButton',\n    type: 'presetButton',\n    buttonType: 'formFieldEditButton'\n  },\n  'divider-0.8': {\n    dataElement: 'divider-0.8',\n    type: 'divider'\n  },\n  formsToolsGroupedItems: {\n    dataElement: 'formsToolsGroupedItems',\n    items: [\n      'signatureFieldButton',\n      'textFieldButton',\n      'freeTextToolButton',\n      'checkboxFieldButton',\n      'radioFieldButton',\n      'listBoxFieldButton',\n      'comboBoxFieldButton',\n      'divider-0.7',\n      'formFieldEditButton',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  formsGroupedItems: {\n    dataElement: 'formsGroupedItems',\n    items: [\n      'formsToolsGroupedItems',\n      'divider-0.8',\n      'stylePanelToggle'\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  'page-controls-container': {\n    dataElement: 'page-controls-container',\n    type: 'pageControls'\n  }\n};\nconst defaultPanels = [\n  {\n    dataElement: 'stylePanel',\n    render: 'stylePanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'thumbnailPanel',\n    render: 'thumbnailsPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'outlinePanel',\n    render: 'outlinesPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'bookmarkPanel',\n    render: 'bookmarksPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'layersPanel',\n    render: 'layersPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'signatureListPanel',\n    render: 'signatureListPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'fileAttachmentPanel',\n    render: 'fileAttachmentPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'rubberStampPanel',\n    render: 'rubberStampPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'textEditingPanel',\n    render: 'textEditingPanel',\n    location: 'right'\n  },\n  {\n    dataElement: 'signaturePanel',\n    render: 'signaturePanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'portfolioPanel',\n    render: 'portfolioPanel',\n    location: 'left'\n  },\n  {\n    render: 'tabPanel',\n    dataElement: 'tabPanel',\n    panelsList: [\n      {\n        render: 'thumbnailPanel'\n      },\n      {\n        render: 'outlinePanel'\n      },\n      {\n        render: 'bookmarkPanel'\n      },\n      {\n        render: 'layersPanel'\n      },\n      {\n        render: 'signaturePanel'\n      },\n      {\n        render: 'fileAttachmentPanel'\n      },\n      {\n        render: 'portfolioPanel'\n      }\n    ],\n    location: 'left'\n  },\n  {\n    dataElement: 'notesPanel',\n    render: 'notesPanel',\n    location: 'right'\n  },\n  {\n    dataElement: 'searchPanel',\n    render: 'searchPanel',\n    location: 'right'\n  },\n  {\n    dataElement: 'redactionPanel',\n    render: 'redactionPanel',\n    location: 'right'\n  }\n];\n\nconst defaultFlyoutMap = {\n  [DataElements.MAIN_MENU]: {\n    dataElement: DataElements.MAIN_MENU,\n    'items': [\n      {\n        'dataElement': 'newDocumentButton',\n        'presetDataElement': 'newDocumentPresetButton',\n        'icon': 'icon-plus-sign',\n        'label': 'action.newDocument',\n        'title': 'action.newDocument',\n        'isActive': false,\n        'hidden': true,\n        'type': 'presetButton',\n        'buttonType': 'newDocumentButton'\n      },\n      {\n        'dataElement': 'filePickerButton',\n        'presetDataElement': 'filePickerPresetButton',\n        'icon': 'icon-header-file-picker-line',\n        'label': 'action.openFile',\n        'title': 'action.openFile',\n        'hidden': false,\n        'type': 'presetButton',\n        'buttonType': 'filePickerButton'\n      },\n      {\n        'dataElement': 'downloadButton',\n        'presetDataElement': 'downloadPresetButton',\n        'icon': 'icon-download',\n        'label': 'action.download',\n        'title': 'action.download',\n        'hidden': false,\n        'type': 'presetButton',\n        'buttonType': 'downloadButton'\n      },\n      {\n        'dataElement': 'fullscreenButton',\n        'presetDataElement': 'fullscreenPresetButton',\n        'icon': 'icon-header-full-screen',\n        'label': 'action.enterFullscreen',\n        'title': 'action.enterFullscreen',\n        'hidden': false,\n        'type': 'presetButton',\n        'buttonType': 'fullscreenButton'\n      },\n      {\n        'dataElement': 'saveAsButton',\n        'presetDataElement': 'saveAsPresetButton',\n        'icon': 'icon-save',\n        'label': 'saveModal.saveAs',\n        'title': 'saveModal.saveAs',\n        'isActive': false,\n        'hidden': false,\n        'type': 'presetButton',\n        'buttonType': 'saveAsButton'\n      },\n      {\n        'dataElement': 'printButton',\n        'presetDataElement': 'printPresetButton',\n        'icon': 'icon-header-print-line',\n        'label': 'action.print',\n        'title': 'action.print',\n        'isActive': false,\n        'hidden': false,\n        'type': 'presetButton',\n        'buttonType': 'printButton'\n      },\n      'divider',\n      {\n        'dataElement': 'createPortfolioButton',\n        'presetDataElement': 'createPortfolioPresetButton',\n        'icon': 'icon-pdf-portfolio',\n        'label': 'portfolio.createPDFPortfolio',\n        'title': 'portfolio.createPDFPortfolio',\n        'isActive': false,\n        'hidden': false,\n        'type': 'presetButton',\n        'buttonType': 'createPortfolioButton'\n      },\n      'divider',\n      {\n        'dataElement': 'settingsButton',\n        'presetDataElement': 'settingsPresetButton',\n        'icon': 'icon-header-settings-line',\n        'label': 'option.settings.settings',\n        'title': 'option.settings.settings',\n        'isActive': false,\n        'hidden': false,\n        'type': 'presetButton',\n        'buttonType': 'settingsButton'\n      },\n      'divider',\n    ]\n  },\n};\n\nexport { defaultModularComponents, defaultModularHeaders, defaultPanels, defaultFlyoutMap };","import React from 'react';\nimport actions from 'actions';\nimport core from 'core';\nimport ToggleZoomOverlay from 'components/ToggleZoomOverlay';\nimport TrackChangeOverlay from 'components/TrackChangeOverlay';\nimport ToolsOverlay from 'components/ToolsOverlay';\nimport Ribbons from 'components/Ribbons';\nimport ApplyFormFieldButton from 'components/ApplyFormFieldButton';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\nimport { defaultZoomList } from 'constants/zoomFactors';\nimport { copyMapWithDataProperties } from 'constants/map';\nimport { defaultNoteDateFormat, defaultPrintedNoteDateFormat } from 'constants/defaultTimeFormat';\nimport getHashParameters from 'helpers/getHashParameters';\nimport localStorageManager from 'helpers/localStorageManager';\nimport { undoButton, redoButton } from 'helpers/commonToolbarElements';\nimport defaultFonts from 'constants/defaultFonts';\nimport webFonts from 'constants/webFonts';\nimport isContentEditWarningHidden from 'helpers/isContentEditWarningHidden';\nimport presetCropDimensions from 'constants/presetCropDimensions';\nimport presetNewPageDimensions from 'constants/presetNewPageDimensions';\nimport defaultDateTimeFormats from 'constants/defaultDateTimeFormats';\nimport { redactionTypeMap } from 'constants/redactionTypes';\nimport { getMeasurementScalePreset, initialScale } from 'constants/measurementScale';\nimport { availableFontFaces, cssFontValues } from 'constants/officeEditorFonts';\nimport { OFFICE_EDITOR_EDIT_MODE } from 'constants/officeEditor';\nimport SignatureModes from 'constants/signatureModes';\nimport { ShortcutKeys } from 'helpers/hotkeysManager';\nimport defaultToolsWithInlineComment from 'src/constants/defaultToolsWithInlineCommentOnAnnotationSelected';\nimport { SYNC_MODES } from 'constants/multiViewerContants';\nimport { getInstanceID } from 'helpers/getRootNode';\nimport { initialColors, initialTextColors } from 'helpers/initialColorStates';\nimport { defaultModularComponents, defaultModularHeaders, defaultFlyoutMap } from './modularComponents';\nimport { PANEL_SIZES } from 'constants/panel';\n\nconst { ToolNames } = window.Core.Tools;\nconst instanceId = getInstanceID();\n\nexport default {\n  viewer: {\n    initalsOffset: 0,\n    isInitialsModeEnabled: false,\n    isMultiViewerMode: false,\n    isMultiViewerReady: false,\n    multiViewerSyncScrollMode: SYNC_MODES.SKIP_UNMATCHED,\n    syncViewer: null,\n    isCompareStarted: false,\n    isComparisonOverlayEnabled: true,\n    activeDocumentViewerKey: 1,\n    zoomLevels: {\n      1: 1,\n      2: 1,\n    },\n    canUndo: {\n      1: false,\n      2: false,\n    },\n    canRedo: {\n      1: false,\n      2: false,\n    },\n    TabManager: null,\n    tabs: [],\n    activeTab: 0,\n    isMultiTab: false,\n    thumbnailSelectingPages: false,\n    isInDesktopOnlyMode: false,\n    toolbarGroup: DataElements.ANNOTATE_TOOLBAR_GROUP,\n    activeTheme: 'light',\n    currentLanguage: 'en',\n    disabledElements: {\n      [DataElements.MULTI_VIEWER_SAVE_DOCUMENT_BUTTON]: { disabled: true, priority: 2 },\n      [DataElements.SAVED_SIGNATURES_TAB]: { disabled: true, priorty: 2 },\n      [DataElements.CALIBRATION_POPUP_BUTTON]: { disabled: true, priorty: 2 },\n      [DataElements.LEGACY_RICH_TEXT_POPUP]: { disabled: true, priority: 2 },\n      [DataElements.LOGO_BAR]: { disabled: true, priority: 2 },\n    },\n    selectedScale: initialScale,\n    isAddingNewScale: false,\n    calibrationInfo: {\n      isCalibration: false,\n      tempScale: '',\n      previousToolName: '',\n      isFractionalUnit: false,\n      defaultUnit: '',\n    },\n    deleteScale: '',\n    openElements: {\n      header: true,\n      toolsHeader: true,\n      [DataElements.STYLE_POPUP_TEXT_STYLE_CONTAINER]: true,\n      [DataElements.STYLE_POPUP_LABEL_TEXT_CONTAINER]: true,\n      [DataElements.FORM_FIELD_INDICATOR_CONTAINER]: true,\n      [DataElements.CUSTOM_MODAL]: true,\n      [DataElements.RICH_TEXT_STYLE_CONTAINER]: true,\n    },\n    hiddenElements: {},\n    panelWidths: {\n      leftPanel: 264,\n      searchPanel: 293,\n      notesPanel: 293,\n      redactionPanel: 330,\n      textEditingPanel: 330,\n      wv3dPropertiesPanel: 307,\n      comparePanel: 330,\n      watermarkPanel: 330,\n      stylePanel: 330,\n      signatureListPanel: 330,\n      rubberStampPanel: 330,\n      tabPanel: 330\n    },\n    mobilePanelSize: PANEL_SIZES.SMALL_SIZE,\n    documentContainerWidth: null,\n    documentContainerHeight: null,\n    lastPickedToolForGroup: {},\n    lastPickedToolGroup: {},\n    lastPickedToolForGroupedItems: {},\n    lastPickedToolAndGroup: {\n      tool: 'AnnotationEdit',\n      group: [],\n    },\n    highContrastMode: getHashParameters('highContrastMode', false),\n    notesInLeftPanel: getHashParameters('notesInLeftPanel', false),\n    autoFocusNoteOnAnnotationSelection: getHashParameters('autoFocusNoteOnAnnotationSelection', true),\n    fadePageNavigationComponent: true,\n    pageDeletionConfirmationModalEnabled: true,\n    outlineControlVisibility: false,\n    autoExpandOutlines: getHashParameters('autoExpandOutlines', false),\n    isAnnotationNumberingEnabled: getHashParameters('enableAnnotationNumbering', false),\n    bookmarkIconShortcutVisibility: false,\n    hideContentEditWarning: isContentEditWarningHidden(),\n    contentEditWorkersLoaded: false,\n    currentContentBeingEdited: null,\n    pageManipulationOverlayAlternativePosition: null,\n    pageManipulationOverlayOpenByRightClick: true,\n    headers: {\n      default: [\n        {\n          type: 'toggleElementButton',\n          dataElement: DataElements.MENU_OVERLAY_BUTTON,\n          element: DataElements.MENU_OVERLAY,\n          img: 'ic-hamburger-menu',\n          title: 'component.menuOverlay',\n        },\n        {\n          type: 'divider',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-header-sidebar-line',\n          element: 'leftPanel',\n          dataElement: 'leftPanelButton',\n          title: 'component.leftPanel',\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-header-page-manipulation-line',\n          element: DataElements.VIEW_CONTROLS_OVERLAY,\n          dataElement: DataElements.VIEW_CONTROLS_OVERLAY_BUTTON,\n          title: 'component.viewControlsOverlay',\n        },\n        {\n          type: 'divider',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'customElement',\n          render: () => <ToggleZoomOverlay />,\n          dataElement: DataElements.ZOOM_OVERLAY_BUTTON,\n          element: DataElements.ZOOM_OVERLAY,\n          hiddenOnMobileDevice: true,\n        },\n        { type: 'divider', hidden: ['small-mobile', 'mobile', 'tablet'] },\n        { type: 'toolButton', toolName: 'Pan' },\n        { type: 'toolButton', toolName: 'TextSelect' }, // For mobile\n        { type: 'toolButton', toolName: 'AnnotationEdit', hidden: ['small-mobile', 'mobile'] },\n        {\n          type: 'customElement',\n          render: () => <Ribbons />,\n          className: 'custom-ribbons-container',\n        },\n        {\n          type: 'customElement',\n          render: () => <TrackChangeOverlay />,\n          dataElement: DataElements.TRACK_CHANGE_OVERLAY_BUTTON,\n          isOfficeEditorOnly: true,\n        },\n        {\n          type: 'divider',\n          hidden: ['small-mobile'],\n          isOfficeEditorOnly: true,\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'searchButton',\n          element: 'searchPanel',\n          img: 'icon-header-search',\n          title: 'component.searchPanel',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'toggleNotesButton',\n          img: 'icon-header-chat-line',\n          title: 'component.notesPanel',\n          element: 'notesPanel',\n          hidden: ['small-mobile'],\n        },\n        {\n          type: 'actionButton',\n          dataElement: 'moreButton',\n          title: 'action.more',\n          img: 'icon-tools-more',\n          onClick: (dispatch) => {\n            dispatch(actions.setActiveHeaderGroup('small-mobile-more-buttons'));\n            core.setToolMode(defaultTool);\n          },\n          hidden: ['mobile', 'tablet', 'desktop'],\n        },\n      ],\n      'small-mobile-more-buttons': [\n        {\n          type: 'toggleElementButton',\n          dataElement: 'searchButton',\n          element: 'searchPanel',\n          img: 'icon-header-search',\n          title: 'component.searchPanel',\n        },\n        {\n          type: 'toggleElementButton',\n          dataElement: 'toggleNotesButton',\n          element: 'notesPanel',\n          img: 'icon-header-chat-line',\n          title: 'component.notesPanel',\n        },\n        { type: 'spacer' },\n        {\n          type: 'actionButton',\n          dataElement: 'defaultHeaderButton',\n          titile: 'action.close',\n          img: 'ic_close_black_24px',\n          onClick: (dispatch) => {\n            dispatch(actions.setActiveHeaderGroup('default'));\n            core.setToolMode(defaultTool);\n          },\n        },\n      ],\n      [DataElements.VIEW_TOOLBAR_GROUP]: [],\n      [DataElements.ANNOTATE_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'underlineTools',\n          dataElement: 'underlineToolGroupButton',\n          title: 'annotation.underline',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'highlightTools',\n          dataElement: 'highlightToolGroupButton',\n          title: 'annotation.highlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandHighlightTools',\n          dataElement: 'freeHandHighlightToolGroupButton',\n          title: 'annotation.freeHandHighlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'stickyTools',\n          dataElement: 'stickyToolGroupButton',\n          title: 'annotation.stickyNote',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'squigglyTools',\n          dataElement: 'squigglyToolGroupButton',\n          title: 'annotation.squiggly',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'strikeoutTools',\n          dataElement: 'strikeoutToolGroupButton',\n          title: 'annotation.strikeout',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'markInsertTextTools',\n          dataElement: 'markInsertTextGroupButton',\n          title: 'annotation.markInsertText',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'markReplaceTextTools',\n          dataElement: 'markReplaceTextGroupButton',\n          title: 'annotation.markReplaceText',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          ...undoButton,\n          hideOnClick: true,\n        },\n        {\n          ...redoButton,\n          hideOnClick: true,\n        },\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.SHAPES_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandHighlightTools',\n          dataElement: 'freeHandHighlightToolGroupButton',\n          title: 'annotation.freeHandHighlight',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'lineTools',\n          dataElement: 'lineToolGroupButton',\n          title: 'annotation.line',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'polyLineTools',\n          dataElement: 'polyLineToolGroupButton',\n          title: 'annotation.polyline',\n        },\n\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arrowTools',\n          dataElement: 'arrowToolGroupButton',\n          title: 'annotation.arrow',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arcTools',\n          dataElement: 'arcToolGroupButton',\n          title: 'annotation.arc',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseTools',\n          dataElement: 'ellipseToolGroupButton',\n          title: 'annotation.ellipse',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'polygonTools',\n          dataElement: 'polygonToolGroupButton',\n          title: 'annotation.polygon',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cloudTools',\n          dataElement: 'polygonCloudToolGroupButton',\n          title: 'annotation.polygonCloud',\n        },\n\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.REDACT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'redactionTools',\n          dataElement: 'redactionToolGroupButton',\n          title: 'annotation.redact',\n        },\n        {\n          type: 'actionButton',\n          toolGroup: 'pageRedactionTools',\n          dataElement: 'pageRedactionToolGroupButton',\n          title: 'action.redactPages',\n          showColor: 'never',\n          img: 'icon-tool-page-redact',\n          onClick: (dispatch) => dispatch(actions.openElement(DataElements.PAGE_REDACT_MODAL)),\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-redact-panel',\n          element: DataElements.REDACTION_PANEL,\n          dataElement: DataElements.REDACTION_PANEL_TOGGLE,\n          title: 'component.redactionPanel',\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.INSERT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rubberStampTools',\n          img: 'icon-tool-stamp-line',\n          dataElement: 'rubberStampToolGroupButton',\n          title: 'annotation.rubberStamp',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'signatureTools',\n          img: 'icon-tool-signature',\n          dataElement: 'signatureToolGroupButton',\n          title: 'annotation.signature',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'stampTools',\n          img: 'icon-tool-image-line',\n          dataElement: 'stampToolGroupButton',\n          title: 'annotation.image',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'fileAttachmentTools',\n          img: 'ic_fileattachment_24px',\n          dataElement: 'fileAttachmentToolGroupButton',\n          title: 'annotation.fileattachment',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'calloutTools',\n          dataElement: 'calloutToolGroupButton',\n          title: 'annotation.callout',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'model3DTools',\n          img: 'icon-tool-model3d',\n          dataElement: 'threeDToolGroupButton',\n          title: 'annotation.3D',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'changeViewTools',\n          dataElement: 'changeViewToolGroupButton',\n          title: 'annotation.changeView',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.MEASURE_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        // @todo: add \"measurement\" to data-element names in 9.0. Note: do not rename arcMeasurementTools to arcTools as it is being used elsewhere.\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'distanceTools',\n          dataElement: 'distanceToolGroupButton',\n          title: 'annotation.distanceMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'arcMeasurementTools',\n          dataElement: 'arcMeasurementToolGroupButton',\n          title: 'annotation.arcMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'perimeterTools',\n          dataElement: 'perimeterToolGroupButton',\n          title: 'annotation.perimeterMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'areaTools',\n          dataElement: 'areaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseAreaTools',\n          dataElement: 'ellipseAreaToolGroupButton',\n          title: 'annotation.ellipseMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleAreaTools',\n          dataElement: 'rectangleAreaToolGroupButton',\n          title: 'annotation.rectangularAreaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cloudyRectangleAreaTools',\n          dataElement: 'cloudyRectangleAreaToolGroupButton',\n          title: 'annotation.areaMeasurement',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'countTools',\n          dataElement: 'countToolGroupButton',\n          title: 'annotation.countMeasurement',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.EDIT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'cropTools',\n          dataElement: 'cropToolGroupButton',\n          title: 'annotation.crop',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'snippingTools',\n          dataElement: 'snippingToolGroupButton',\n          title: 'annotation.snipping',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'contentEditTools',\n          dataElement: 'contentEditButton',\n          title: 'action.edit',\n        },\n        {\n          type: 'toggleElementButton',\n          img: 'icon-watermark-panel',\n          element: DataElements.WATERMARK_PANEL,\n          dataElement: DataElements.WATERMARK_PANEL_TOGGLE,\n          title: 'component.watermarkPanel',\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n      [DataElements.EDIT_TEXT_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'addParagraphTools',\n          dataElement: 'addParagraphToolGroupButton',\n          title: 'action.addParagraph',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'addImageContentTools',\n          dataElement: 'addImageContentToolGroupButton',\n          title: 'annotation.newImage',\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n      [DataElements.FILL_AND_SIGN_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rubberStampTools',\n          img: 'icon-tool-stamp-line',\n          dataElement: 'rubberStampToolGroupButton',\n          title: 'annotation.rubberStamp',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'signatureTools',\n          img: 'icon-tool-signature',\n          dataElement: 'signatureToolGroupButton',\n          title: 'annotation.signature',\n          showColor: 'never',\n        },\n\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'crossStampTools',\n          img: 'icon-tool-cross-stamp',\n          dataElement: 'crossStampToolButton',\n          title: 'annotation.formFillCross',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'checkStampTools',\n          img: 'icon-tool-check-stamp',\n          dataElement: 'checkStampToolButton',\n          title: 'annotation.formFillCheckmark',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'dotStampTools',\n          img: 'icon-tool-dot-stamp',\n          dataElement: 'dotStampToolButton',\n          title: 'annotation.formFillDot',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'dateFreeTextTools',\n          dataElement: 'dateFreeTextToolButton',\n          title: 'annotation.dateFreeText',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        undoButton,\n        redoButton,\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] },\n      ],\n      [DataElements.FORMS_TOOLBAR_GROUP]: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'sigFieldTools',\n          dataElement: 'signatureFieldToolGroupButton',\n          title: 'annotation.signatureFormField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'formFieldTools',\n          dataElement: 'textFieldToolGroupButton',\n          title: 'annotation.textField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeTextTools',\n          dataElement: 'freeTextToolGroupButton',\n          title: 'annotation.freetext',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'checkBoxFieldTools',\n          dataElement: 'checkBoxFieldToolGroupButton',\n          title: 'annotation.checkBoxFormField',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'radioButtonFieldTools',\n          dataElement: 'radioButtonFieldToolGroupButton',\n          title: 'annotation.radioButtonFormField',\n          showColor: 'never',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'listBoxFieldTools',\n          dataElement: 'listBoxFieldToolGroupButton',\n          title: 'annotation.listBoxFormField',\n          showColor: 'always',\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'comboBoxFieldTools',\n          dataElement: 'comboBoxFieldToolGroupButton',\n          title: 'annotation.comboBoxFormField',\n          showColor: 'always',\n        },\n        { type: 'divider' },\n        {\n          type: 'customElement',\n          render: () => <ToolsOverlay />,\n          dataElement: 'toolsOverlay',\n          hidden: ['small-mobile', 'mobile'],\n        },\n        {\n          type: 'customElement',\n          dataElement: 'applyFormFieldsButton',\n          render: () => <ApplyFormFieldButton />,\n        },\n        { type: 'spacer', hidden: ['mobile', 'small-mobile'] },\n      ],\n    },\n    customHeadersAdditionalProperties: {},\n    enableRightClickAnnotationPopup: false,\n    annotationPopup: [\n      { dataElement: 'viewFileButton' },\n      { dataElement: 'annotationCommentButton' },\n      { dataElement: 'annotationStyleEditButton' },\n      { dataElement: 'annotationDateEditButton' },\n      { dataElement: 'annotationRedactButton' },\n      { dataElement: 'annotationCropButton' },\n      { dataElement: 'annotationContentEditButton' },\n      { dataElement: 'annotationClearSignatureButton' },\n      { dataElement: 'annotationGroupButton' },\n      { dataElement: 'annotationUngroupButton' },\n      { dataElement: 'formFieldEditButton' },\n      { dataElement: DataElements.CALIBRATION_POPUP_BUTTON },\n      { dataElement: 'linkButton' },\n      { dataElement: 'fileAttachmentDownload' },\n      { dataElement: 'annotationDeleteButton' },\n      { dataElement: 'shortCutKeysFor3D' },\n      { dataElement: 'playSoundButton' },\n      { dataElement: 'openAlignmentButton' }\n    ],\n    textPopup: [\n      { dataElement: 'copyTextButton' },\n      { dataElement: 'textHighlightToolButton' },\n      { dataElement: 'textUnderlineToolButton' },\n      { dataElement: 'textSquigglyToolButton' },\n      { dataElement: 'textStrikeoutToolButton' },\n      { dataElement: 'textRedactToolButton' },\n      { dataElement: 'linkButton' },\n    ],\n    contextMenuPopup: [\n      { dataElement: 'panToolButton' },\n      { dataElement: 'stickyToolButton' },\n      { dataElement: 'highlightToolButton' },\n      { dataElement: 'freeHandToolButton' },\n      { dataElement: 'freeHandHighlightToolButton' },\n      { dataElement: 'freeTextToolButton' },\n      { dataElement: 'markInsertTextToolButton' },\n      { dataElement: 'markReplaceTextToolButton' },\n    ],\n    menuOverlay: [\n      { dataElement: 'newDocumentButton' },\n      { dataElement: 'filePickerButton' },\n      { dataElement: 'fullscreenButton' },\n      { dataElement: 'downloadButton' },\n      { dataElement: 'saveAsButton' },\n      { dataElement: 'printButton' },\n      { dataElement: 'themeChangeButton' },\n      { dataElement: 'languageButton' },\n    ],\n    pageManipulationOverlay: [\n      { dataElement: 'pageAdditionalControls' },\n      { type: 'divider' },\n      { dataElement: 'pageRotationControls' },\n      { type: 'divider' },\n      { dataElement: 'pageManipulationControls' },\n    ],\n    multiPageManipulationControls: [\n      { dataElement: 'leftPanelPageTabsRotate' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsMove' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsMore' },\n    ],\n    multiPageManipulationControlsLarge: [\n      { dataElement: 'leftPanelPageTabsRotate' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsMove' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsOperations' },\n    ],\n    multiPageManipulationControlsSmall: [\n      { dataElement: 'leftPanelPageTabsRotate' },\n      { type: 'divider' },\n      { dataElement: 'leftPanelPageTabsMoreSmall' },\n    ],\n    thumbnailControlMenu: [{ dataElement: 'thumbRotateClockwise' }, { dataElement: 'thumbDelete' }],\n    toolButtonObjects: {\n      AnnotationCreateCountMeasurement: {\n        dataElement: 'countMeasurementToolButton',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement2: {\n        dataElement: 'countMeasurementToolButton2',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement3: {\n        dataElement: 'countMeasurementToolButton3',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCountMeasurement4: {\n        dataElement: 'countMeasurementToolButton4',\n        title: 'annotation.countMeasurement',\n        img: 'ic_check_black_24px',\n        group: 'countTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement: {\n        dataElement: 'distanceMeasurementToolButton',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement2: {\n        dataElement: 'distanceMeasurementToolButton2',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement3: {\n        dataElement: 'distanceMeasurementToolButton3',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDistanceMeasurement4: {\n        dataElement: 'distanceMeasurementToolButton4',\n        title: 'annotation.distanceMeasurement',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'distanceTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement: {\n        dataElement: 'perimeterMeasurementToolButton',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement2: {\n        dataElement: 'perimeterMeasurementToolButton2',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement3: {\n        dataElement: 'perimeterMeasurementToolButton3',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePerimeterMeasurement4: {\n        dataElement: 'perimeterMeasurementToolButton4',\n        title: 'annotation.perimeterMeasurement',\n        img: 'icon-tool-measurement-perimeter',\n        group: 'perimeterTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement: {\n        dataElement: 'arcMeasurementToolButton',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement2: {\n        dataElement: 'arcMeasurementToolButton2',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement3: {\n        dataElement: 'arcMeasurementToolButton3',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArcMeasurement4: {\n        dataElement: 'arcMeasurementToolButton4',\n        title: 'annotation.arcMeasurement',\n        img: 'icon-tool-measurement-arc',\n        group: 'arcMeasurementTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement: {\n        dataElement: 'areaMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement2: {\n        dataElement: 'areaMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement3: {\n        dataElement: 'areaMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateAreaMeasurement4: {\n        dataElement: 'areaMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-area-polygon-line',\n        group: 'areaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement: {\n        dataElement: 'ellipseMeasurementToolButton',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement2: {\n        dataElement: 'ellipseMeasurementToolButton2',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement3: {\n        dataElement: 'ellipseMeasurementToolButton3',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipseMeasurement4: {\n        dataElement: 'ellipseMeasurementToolButton4',\n        title: 'annotation.ellipseMeasurement',\n        img: 'icon-tool-measurement-area-ellipse-line',\n        group: 'ellipseAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement: {\n        dataElement: 'rectangularAreaMeasurementToolButton',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement2: {\n        dataElement: 'rectangularAreaMeasurementToolButton2',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement3: {\n        dataElement: 'rectangularAreaMeasurementToolButton3',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangularAreaMeasurement4: {\n        dataElement: 'rectangularAreaMeasurementToolButton4',\n        title: 'annotation.rectangularAreaMeasurement',\n        img: 'icon-tool-measurement-area-line',\n        group: 'rectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement2: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton2',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement3: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton3',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCloudyRectangularAreaMeasurement4: {\n        dataElement: 'cloudyRectangularAreaMeasurementToolButton4',\n        title: 'annotation.areaMeasurement',\n        img: 'icon-tool-measurement-cloud-area-line',\n        group: 'cloudyRectangleAreaTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand: {\n        dataElement: 'freeHandToolButton',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand2: {\n        dataElement: 'freeHandToolButton2',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand3: {\n        dataElement: 'freeHandToolButton3',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHand4: {\n        dataElement: 'freeHandToolButton4',\n        title: 'annotation.freehand',\n        img: 'icon-tool-pen-line',\n        group: 'freeHandTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight: {\n        dataElement: 'freeHandHighlightToolButton',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight2: {\n        dataElement: 'freeHandHighlightToolButton2',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight3: {\n        dataElement: 'freeHandHighlightToolButton3',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeHandHighlight4: {\n        dataElement: 'freeHandHighlightToolButton4',\n        title: 'annotation.freeHandHighlight',\n        img: 'icon-tool-pen-highlight',\n        group: 'freeHandHighlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight: {\n        dataElement: 'highlightToolButton',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight2: {\n        dataElement: 'highlightToolButton2',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight3: {\n        dataElement: 'highlightToolButton3',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextHighlight4: {\n        dataElement: 'highlightToolButton4',\n        title: 'annotation.highlight',\n        img: 'icon-tool-text-manipulation-highlight',\n        group: 'highlightTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline: {\n        dataElement: 'underlineToolButton',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline2: {\n        dataElement: 'underlineToolButton2',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline3: {\n        dataElement: 'underlineToolButton3',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextUnderline4: {\n        dataElement: 'underlineToolButton4',\n        title: 'annotation.underline',\n        img: 'icon-tool-text-manipulation-underline',\n        group: 'underlineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly: {\n        dataElement: 'squigglyToolButton',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly2: {\n        dataElement: 'squigglyToolButton2',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly3: {\n        dataElement: 'squigglyToolButton3',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextSquiggly4: {\n        dataElement: 'squigglyToolButton4',\n        title: 'annotation.squiggly',\n        img: 'icon-tool-text-manipulation-squiggly',\n        group: 'squigglyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout: {\n        dataElement: 'strikeoutToolButton',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout2: {\n        dataElement: 'strikeoutToolButton2',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout3: {\n        dataElement: 'strikeoutToolButton3',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateTextStrikeout4: {\n        dataElement: 'strikeoutToolButton4',\n        title: 'annotation.strikeout',\n        img: 'icon-tool-text-manipulation-strikethrough',\n        group: 'strikeoutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText: {\n        dataElement: 'freeTextToolButton',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText2: {\n        dataElement: 'freeTextToolButton2',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText3: {\n        dataElement: 'freeTextToolButton3',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateFreeText4: {\n        dataElement: 'freeTextToolButton4',\n        title: 'annotation.freetext',\n        img: 'icon-tool-text-free-text',\n        group: 'freeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText: {\n        dataElement: 'dateFreeTextToolButton',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText2: {\n        dataElement: 'dateFreeTextToolButton2',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText3: {\n        dataElement: 'dateFreeTextToolButton3',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateDateFreeText4: {\n        dataElement: 'dateFreeTextToolButton4',\n        title: 'annotation.dateFreeText',\n        img: 'icon-tool-fill-and-sign-calendar',\n        group: 'dateFreeTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText: {\n        dataElement: 'markInsertTextToolButton',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText2: {\n        dataElement: 'markInsertTextToolButton2',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText3: {\n        dataElement: 'markInsertTextToolButton3',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkInsertText4: {\n        dataElement: 'markInsertTextToolButton4',\n        title: 'annotation.markInsertText',\n        img: 'ic-insert text',\n        group: 'markInsertTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText: {\n        dataElement: 'markReplaceToolButton',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText2: {\n        dataElement: 'markReplaceToolButton2',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText3: {\n        dataElement: 'markReplaceToolButton3',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateMarkReplaceText4: {\n        dataElement: 'markReplaceToolButton4',\n        title: 'annotation.markReplaceText',\n        img: 'ic-replace text',\n        group: 'markReplaceTextTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout: {\n        dataElement: 'calloutToolButton',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout2: {\n        dataElement: 'calloutToolButton2',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout3: {\n        dataElement: 'calloutToolButton3',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateCallout4: {\n        dataElement: 'calloutToolButton4',\n        title: 'annotation.callout',\n        img: 'icon-tool-callout-line',\n        group: 'calloutTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky: {\n        dataElement: 'stickyToolButton',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky2: {\n        dataElement: 'stickyToolButton2',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky3: {\n        dataElement: 'stickyToolButton3',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSticky4: {\n        dataElement: 'stickyToolButton4',\n        title: 'annotation.stickyNote',\n        img: 'icon-tool-comment-line',\n        group: 'stickyTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle: {\n        dataElement: 'rectangleToolButton',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle2: {\n        dataElement: 'rectangleToolButton2',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle3: {\n        dataElement: 'rectangleToolButton3',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRectangle4: {\n        dataElement: 'rectangleToolButton4',\n        title: 'annotation.rectangle',\n        img: 'icon-tool-shape-rectangle',\n        group: 'rectangleTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse: {\n        dataElement: 'ellipseToolButton',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse2: {\n        dataElement: 'ellipseToolButton2',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse3: {\n        dataElement: 'ellipseToolButton3',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateEllipse4: {\n        dataElement: 'ellipseToolButton4',\n        title: 'annotation.ellipse',\n        img: 'icon-tool-shape-oval',\n        group: 'ellipseTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc: {\n        dataElement: 'arcToolButton',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc2: {\n        dataElement: 'arcToolButton2',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc3: {\n        dataElement: 'arcToolButton3',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArc4: {\n        dataElement: 'arcToolButton4',\n        title: 'annotation.arc',\n        img: 'icon-tool-arc',\n        group: 'arcTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine: {\n        dataElement: 'lineToolButton',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine2: {\n        dataElement: 'lineToolButton2',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine3: {\n        dataElement: 'lineToolButton3',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreateLine4: {\n        dataElement: 'lineToolButton4',\n        title: 'annotation.line',\n        img: 'icon-tool-shape-line',\n        group: 'lineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline: {\n        dataElement: 'polylineToolButton',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline2: {\n        dataElement: 'polylineToolButton2',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline3: {\n        dataElement: 'polylineToolButton3',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolyline4: {\n        dataElement: 'polylineToolButton4',\n        title: 'annotation.polyline',\n        img: 'icon-tool-shape-polyline',\n        group: 'polyLineTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon: {\n        dataElement: 'polygonToolButton',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon2: {\n        dataElement: 'polygonToolButton2',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon3: {\n        dataElement: 'polygonToolButton3',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygon4: {\n        dataElement: 'polygonToolButton4',\n        title: 'annotation.polygon',\n        img: 'icon-tool-shape-polygon',\n        group: 'polygonTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud: {\n        dataElement: 'cloudToolButton',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud2: {\n        dataElement: 'cloudToolButton2',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud3: {\n        dataElement: 'cloudToolButton4',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      AnnotationCreatePolygonCloud4: {\n        dataElement: 'cloudToolButton5',\n        title: 'annotation.polygonCloud',\n        img: 'icon-tool-shape-cloud',\n        group: 'cloudTools',\n        showColor: 'always',\n      },\n      [ToolNames.CALIBRATION_MEASUREMENT]: {\n        dataElement: 'calibrationToolButton',\n        title: 'annotation.calibration',\n        img: 'icon-tool-measurement-distance-line',\n        group: 'calibrationTools',\n        showColor: 'never',\n      },\n      AnnotationCreateArrow: {\n        dataElement: 'arrowToolButton',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow2: {\n        dataElement: 'arrowToolButton2',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow3: {\n        dataElement: 'arrowToolButton3',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateArrow4: {\n        dataElement: 'arrowToolButton4',\n        title: 'annotation.arrow',\n        img: 'icon-tool-shape-arrow',\n        group: 'arrowTools',\n        showColor: 'always',\n      },\n      AnnotationCreateSignature: {\n        dataElement: 'signatureToolButton',\n        title: 'annotation.signature',\n        img: 'icon-tool-signature',\n        group: 'signatureTools',\n        showColor: 'never',\n      },\n      AnnotationCreateFileAttachment: {\n        dataElement: 'fileAttachmentToolButton',\n        title: 'annotation.fileattachment',\n        img: 'ic_fileattachment_24px',\n        group: 'fileAttachmentTools',\n        showColor: 'never',\n      },\n      AnnotationCreateThreeD: {\n        dataElement: 'threeDToolGroupButton',\n        title: 'annotation.3D',\n        img: 'icon-tool-model3d',\n        group: 'model3DTools',\n        showColor: 'never',\n      },\n      AnnotationCreateStamp: {\n        dataElement: 'stampToolButton',\n        title: 'annotation.stamp',\n        img: 'icon-tool-image-line',\n        group: 'stampTools',\n        showColor: 'active',\n      },\n      AnnotationCreateRubberStamp: {\n        dataElement: 'rubberStampToolButton',\n        title: 'annotation.rubberStamp',\n        img: 'icon-tool-stamp-line',\n        group: 'rubberStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_CROSS]: {\n        dataElement: 'crossStampToolButton',\n        title: 'annotation.formFillCross',\n        img: 'icon-tool-cross-stamp',\n        group: 'crossStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_CHECKMARK]: {\n        dataElement: 'checkStampToolButton',\n        title: 'annotation.formFillCheckmark',\n        img: 'icon-tool-check-stamp',\n        group: 'checkStampTools',\n        showColor: 'active',\n      },\n      [ToolNames.FORM_FILL_DOT]: {\n        dataElement: 'dotStampToolButton',\n        title: 'annotation.formFillDot',\n        img: 'icon-tool-dot-stamp',\n        group: 'dotStampTools',\n        showColor: 'active',\n      },\n      CropPage: {\n        dataElement: 'cropToolButton',\n        title: 'annotation.crop',\n        img: 'ic_crop_black_24px',\n        showColor: 'never',\n        group: 'cropTools',\n      },\n      SnippingTool: {\n        dataElement: 'snippingToolButton',\n        title: 'annotation.snipping',\n        img: 'ic_snipping_black_24px',\n        showColor: 'never',\n        group: 'snippingTools',\n      },\n      ContentEditTool: {\n        dataElement: 'contentEditToolButton',\n        title: 'action.edit',\n        img: 'ic_edit_page_24px',\n        showColor: 'never',\n        group: 'contentEditTools',\n      },\n      AddParagraphTool: {\n        dataElement: 'addParagraphToolButton',\n        title: 'action.addParagraph',\n        img: 'ic-paragraph',\n        showColor: 'never',\n        group: 'addParagraphTools',\n      },\n      [ToolNames.ADD_IMAGE_CONTENT]: {\n        dataElement: 'addImageContentToolButton',\n        title: 'annotation.newImage',\n        img: 'icon-tool-image-line',\n        showColor: 'never',\n        group: 'addImageContentTools',\n      },\n      AnnotationCreateRedaction: {\n        dataElement: 'redactionButton',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction2: {\n        dataElement: 'redactionButton2',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction3: {\n        dataElement: 'redactionButton3',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      AnnotationCreateRedaction4: {\n        dataElement: 'redactionButton4',\n        title: 'option.redaction.markForRedaction',\n        img: 'icon-tool-select-area-redaction',\n        group: 'redactionTools',\n        showColor: 'always',\n      },\n      Pan: { dataElement: 'panToolButton', title: 'tool.pan', img: 'icon-header-pan', showColor: 'never' },\n      AnnotationEdit: {\n        dataElement: 'selectToolButton',\n        title: 'tool.select',\n        img: 'multi select',\n        showColor: 'never',\n      },\n      TextSelect: { dataElement: 'textSelectButton', img: 'icon-header-select-line', showColor: 'never' },\n      OfficeEditorContentSelect: { dataElement: 'textSelectButton', img: 'icon-header-select-line', showColor: 'never' },\n      MarqueeZoomTool: {\n        dataElement: 'marqueeToolButton',\n        showColor: 'never',\n        img: 'icon-header-zoom-marquee',\n      },\n      AnnotationEraserTool: {\n        dataElement: 'eraserToolButton',\n        title: 'annotation.eraser',\n        img: 'icon-operation-eraser',\n        showColor: 'never',\n      },\n      TextFormFieldCreateTool: {\n        dataElement: 'textFieldToolButton',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool2: {\n        dataElement: 'textFieldToolButton2',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool3: {\n        dataElement: 'textFieldToolButton3',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      TextFormFieldCreateTool4: {\n        dataElement: 'textFieldToolButton4',\n        title: 'annotation.textField',\n        img: 'icon-form-field-text',\n        group: 'formFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool: {\n        dataElement: 'signatureFieldToolButton',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool2: {\n        dataElement: 'signatureFieldToolButton2',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool3: {\n        dataElement: 'signatureFieldToolButton3',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      SignatureFormFieldCreateTool4: {\n        dataElement: 'signatureFieldToolButton4',\n        title: 'annotation.signatureFormField',\n        img: 'icon-form-field-signature',\n        group: 'sigFieldTools',\n        showColor: 'always',\n      },\n      CheckBoxFormFieldCreateTool: {\n        dataElement: 'checkBoxFieldCreateToolButton',\n        title: 'annotation.checkBoxFormField',\n        img: 'icon-form-field-checkbox',\n        group: 'checkBoxFieldTools',\n        showColor: 'never',\n      },\n      RadioButtonFormFieldCreateTool: {\n        dataElement: 'radioButtonFieldCreateToolButton',\n        title: 'annotation.radioButtonFormField',\n        img: 'icon-form-field-radiobutton',\n        group: 'radioButtonFieldTools',\n        showColor: 'never',\n      },\n      ListBoxFormFieldCreateTool: {\n        dataElement: 'listBoxFieldCreateToolButton',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool2: {\n        dataElement: 'listBoxFieldCreateToolButton2',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool3: {\n        dataElement: 'listBoxFieldCreateToolButton3',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ListBoxFormFieldCreateTool4: {\n        dataElement: 'listBoxFieldCreateToolButton4',\n        title: 'annotation.listBoxFormField',\n        img: 'icon-form-field-listbox',\n        group: 'listBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool: {\n        dataElement: 'comboBoxFieldCreateToolButton',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool2: {\n        dataElement: 'comboBoxFieldCreateToolButton2',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool3: {\n        dataElement: 'comboBoxFieldCreateToolButton3',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      ComboBoxFormFieldCreateTool4: {\n        dataElement: 'comboBoxFieldCreateToolButton4',\n        title: 'annotation.comboBoxFormField',\n        img: 'icon-form-field-combobox',\n        group: 'comboBoxFieldTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool: {\n        dataElement: 'changeViewCreateToolButton',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool2: {\n        dataElement: 'changeViewCreateToolButton2',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool3: {\n        dataElement: 'changeViewCreateToolButton3',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      AnnotationCreateChangeViewTool4: {\n        dataElement: 'changeViewCreateToolButton4',\n        title: 'annotation.changeView',\n        img: 'icon-tool-changeview',\n        group: 'changeViewTools',\n        showColor: 'always',\n      },\n      [ToolNames.OUTLINE_DESTINATION]: {\n        group: '',\n      },\n    },\n    tab: {\n      signatureModal: 'inkSignaturePanelButton',\n      pageReplacementModal: 'urlInputPanelButton',\n      linkModal: 'URLPanelButton',\n      rubberStampTab: 'standardStampPanelButton',\n      filterAnnotModal: DataElements.ANNOTATION_USER_FILTER_PANEL_BUTTON,\n      [DataElements.SETTINGS_MODAL]: DataElements.SETTINGS_GENERAL_BUTTON,\n      savedSignatures: DataElements.SAVED_SIGNATURES_PANEL_BUTTON,\n      openFileModal: 'urlInputPanelButton',\n      insertPageModal: 'insertBlankPagePanelButton',\n      [DataElements.CREATE_PORTFOLIO_MODAL]: DataElements.PORTFOLIO_UPLOAD_FILES_TAB\n    },\n    customElementOverrides: {},\n    activeHeaderGroup: 'default',\n    activeToolName: 'AnnotationEdit',\n    activeToolStyles: {},\n    customColors:\n      localStorageManager.isLocalStorageEnabled() && window.localStorage.getItem(`${instanceId}-customColors`)\n        ? JSON.parse(window.localStorage.getItem(`${instanceId}-customColors`))\n        : [],\n    activeLeftPanel: 'thumbnailsPanel',\n    activeCustomPanel: '',\n    activeToolGroup: '',\n    notePopupId: '',\n    isNoteEditing: false,\n    fitMode: '',\n    rotation: 0,\n    displayMode: 'Single',\n    currentPage: 1,\n    sortStrategy: 'position',\n    isFullScreen: false,\n    isMultipleViewerMerging: false,\n    isThumbnailMerging: true,\n    isThumbnailReordering: true,\n    isThumbnailMultiselect: true,\n    isNotesPanelMultiSelectEnabled: true,\n    isOutlineEditingEnabled: true,\n    enableNotesPanelVirtualizedList: true,\n    notesShowLastUpdatedDate: false,\n    allowPageNavigation: true,\n    enableToolGroupReordering: true,\n    enableNoteSubmissionWithEnter: false,\n    isNotesPanelTextCollapsingEnabled: true,\n    isNotesPanelRepliesCollapsingEnabled: true,\n    isMeasurementAnnotationFilterEnabled: false,\n    isCommentThreadExpansionEnabled: false,\n    enableMouseWheelZoom: true,\n    doesAutoLoad: getHashParameters('auto_load', true),\n    isReadOnly: getHashParameters('readonly', false),\n    customModals: [],\n    customPanels: [],\n    genericPanels: [],\n    useEmbeddedPrint: false,\n    useClientSidePrint: false,\n    pageLabels: [],\n    selectedThumbnailPageIndexes: [],\n    shiftKeyThumbnailPivotIndex: null,\n    noteDateFormat: defaultNoteDateFormat,\n    printedNoteDateFormat: defaultPrintedNoteDateFormat,\n    colorMap: copyMapWithDataProperties('currentStyleTab', 'iconColor'),\n    warning: {},\n    customNoteFilter: null,\n    inlineCommentFilter: (annot) => {\n      const isAnnotationInstanceOf = defaultToolsWithInlineComment.some((annotationInstance) => annot instanceof annotationInstance);\n      return isAnnotationInstanceOf;\n    },\n    zoomList: defaultZoomList,\n    isAccessibleMode: getHashParameters('accessibleMode', false),\n    measurementUnits: {\n      from: ['in', 'mm', 'cm', 'pt'],\n      to: ['in', 'mm', 'cm', 'pt', 'ft', 'ft-in', 'm', 'yd', 'km', 'mi'],\n    },\n    measurementScalePreset: getMeasurementScalePreset(),\n    isMultipleScalesMode: true,\n    maxSignaturesCount: 10,\n    signatureFonts: ['Satisfy', 'Nothing-You-Could-Do', 'La-Belle-Aurore', 'Whisper'],\n    isReplyDisabledFunc: null,\n    userData: [],\n    customMeasurementOverlay: [],\n    noteTransformFunction: null,\n    standardStamps: [],\n    customStamps: [],\n    selectedStampIndex: 0,\n    lastSelectedStampIndex: 0,\n    signatureMode: SignatureModes.FULL_SIGNATURE,\n    savedSignatures: [],\n    savedInitials: [],\n    displayedSignaturesFilterFunction: () => true,\n    selectedDisplayedSignatureIndex: 0,\n    selectedDisplayedInitialsIndex: 0,\n    annotationContentOverlayHandler: null,\n    isSnapModeEnabled: false,\n    isReaderMode: false,\n    unreadAnnotationIdSet: new Set(),\n    watermarkModalOptions: null,\n    fonts: [...defaultFonts, ...webFonts],\n    shouldResetAudioPlaybackPosition: false,\n    activeSoundAnnotation: null,\n    embeddedJSPopupStyle: {},\n    shouldShowApplyCropWarning: true,\n    shouldShowApplySnippingWarning: true,\n    presetCropDimensions,\n    presetNewPageDimensions,\n    dateTimeFormats: defaultDateTimeFormats,\n    thumbnailSelectionMode: 'checkbox',\n    annotationFilters: {\n      includeReplies: true,\n      isDocumentFilterActive: false,\n      authorFilter: [],\n      colorFilter: [],\n      typeFilter: [],\n      statusFilter: [],\n    },\n    zoomStepFactors: [\n      {\n        step: 7.5,\n        startZoom: 0,\n      },\n      {\n        step: 25,\n        startZoom: 80,\n      },\n      {\n        step: 50,\n        startZoom: 150,\n      },\n      {\n        step: 100,\n        startZoom: 250,\n      },\n      {\n        step: 200,\n        startZoom: 400,\n      },\n      {\n        step: 400,\n        startZoom: 800,\n      },\n      {\n        step: 800,\n        startZoom: 3200,\n      },\n      {\n        step: 1600,\n        startZoom: 6400,\n      },\n    ],\n    contentBoxEditor: null,\n    notesPanelCustomHeaderOptions: null,\n    notesPanelCustomEmptyPanel: null,\n    replyAttachmentPreviewEnabled: true,\n    savedSignatureTabEnabled: false,\n    replyAttachmentHandler: null,\n    customSettings: [],\n    modularHeaders: defaultModularHeaders,\n    modularComponents: defaultModularComponents,\n    modularComponentFunctions: {},\n    activeGroupedItems: [],\n    activeCustomRibbon: '',\n    fixedGroupedItems: [],\n    modularHeadersHeight: {\n      topHeaders: 49,\n      bottomHeaders: 32\n    },\n    modularHeadersWidth: {\n      rightHeader: 0,\n      leftHeader: 0\n    },\n    customElementSizes: {},\n    floatingContainersDimensions: {\n      topFloatingContainerHeight: 0,\n      bottomFloatingContainerHeight: 0,\n    },\n    toolDefaultStyleUpdateFromAnnotationPopupEnabled: true,\n    annotationToolStyleSyncingEnabled: false,\n    shortcutKeyMap: { ...ShortcutKeys },\n    flyoutMap: defaultFlyoutMap,\n    flyoutPosition: { x: 0, y: 0 },\n    activeFlyout: null,\n    flyoutToggleElement: null,\n    textSignatureCanvasMultiplier: 1,\n    isShowComparisonButtonEnabled: false,\n    isMultiViewerModeAvailable: false,\n    isOfficeEditorMode: false,\n    colors: initialColors,\n    textColors: initialTextColors,\n    toolColorOverrides: {},\n    defaultPrintMargins: '0',\n    scaleOverlayPosition: 'top-right',\n    focusedElementsStack: [],\n    isKeyboardOpen: false,\n  },\n  search: {\n    value: '',\n    replaceValue: '',\n    nextResult: null,\n    isCaseSensitive: false,\n    isWholeWord: false,\n    isWildcard: false,\n    isRegex: false,\n    isSearchUp: false,\n    isAmbientString: false,\n    clearSearchPanelOnClose: false,\n    results: [],\n    redactionSearchPatterns: {\n      creditCards: {\n        label: 'redactionPanel.search.creditCards',\n        icon: 'redact-icons-credit-card',\n        type: redactionTypeMap['CREDIT_CARD'],\n        regex: /\\b(?:\\d[ -]*?){13,16}\\b/,\n      },\n      phoneNumbers: {\n        label: 'redactionPanel.search.phoneNumbers',\n        icon: 'redact-icons-phone-number',\n        type: redactionTypeMap['PHONE'],\n        regex: /\\d?(\\s?|-?|\\+?|\\.?)((\\(\\d{1,4}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)((\\(\\d{1,3}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)((\\(\\d{1,3}\\))|(\\d{1,3})|\\s?)(\\s?|-?|\\.?)\\d{3}(-|\\.|\\s)\\d{4,5}/,\n      },\n      emails: {\n        label: 'redactionPanel.search.emails',\n        icon: 'redact-icons-email',\n        type: redactionTypeMap['EMAIL'],\n        regex: /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}\\b/,\n      },\n    },\n  },\n  document: {\n    totalPages: {\n      1: 0,\n      2: 0,\n    },\n    outlines: [],\n    bookmarks: {},\n    portfolio: [],\n    layers: [],\n    printQuality: 1,\n    passwordAttempts: -1,\n    maxPasswordAttempts: 3,\n    loadingProgress: 0,\n  },\n  user: {\n    name: getHashParameters('user', 'Guest'),\n    isAdmin: getHashParameters('admin', false),\n  },\n  advanced: {\n    customCSS: getHashParameters('css', null),\n    defaultDisabledElements: getHashParameters('disabledElements', ''),\n    fullAPI: getHashParameters('pdfnet', false),\n    preloadWorker: getHashParameters('preloadWorker', false),\n    enableOptimizedWorkers: getHashParameters('enableOptimizedWorkers', true),\n    serverUrl: getHashParameters('server_url', ''),\n    serverUrlHeaders: JSON.parse(getHashParameters('serverUrlHeaders', '{}')),\n    useSharedWorker: getHashParameters('useSharedWorker', false),\n    disableI18n: getHashParameters('disableI18n', false),\n    pdfWorkerTransportPromise: null,\n    officeWorkerTransportPromise: null,\n    disableIndexedDB: getHashParameters('disableIndexedDB', false),\n    disableMultiViewerComparison:\n      getHashParameters('disableMultiViewerComparison', false) || !getHashParameters('pdfnet', false),\n  },\n  featureFlags: {\n    customizableUI: false,\n  },\n  wv3dPropertiesPanel: {\n    modelData: [],\n    schema: {\n      headerName: 'Name',\n      defaultValues: {},\n      groups: {},\n      groupOrder: [],\n      removeEmptyRows: false,\n      removeEmptyGroups: false,\n      createRawValueGroup: true,\n    },\n  },\n  officeEditor: {\n    cursorProperties: {\n      paragraphProperties: {},\n      locationProperties: {},\n    },\n    selectionProperties: {\n      paragraphProperties: {},\n    },\n    availableFontFaces,\n    cssFontValues,\n    editMode: OFFICE_EDITOR_EDIT_MODE.EDITING\n  },\n  digitalSignatureValidation: {\n    validationModalWidgetName: '',\n    verificationResult: {},\n    certificates: [],\n    trustLists: [],\n    isRevocationCheckingEnabled: false,\n    revocationProxyPrefix: null,\n  },\n};\n","// Websafe Fonts that should be available on all devices\nexport default [\n  'Helvetica',\n  'Times New Roman',\n];","export default {\n  'Letter': {\n    'yOffset': 0,\n    'height': 11,\n    'xOffset': 0,\n    'width': 8.5,\n  },\n  'Half letter': {\n    'yOffset': 0,\n    'height': 5.5,\n    'xOffset': 0,\n    'width': 8.5,\n  },\n  'Junior legal': {\n    'yOffset': 0,\n    'height': 5,\n    'xOffset': 0,\n    'width': 8,\n  },\n};\n","export default {\n  'Letter': {\n    'height': 11,\n    'width': 8.5,\n  },\n  'Half letter': {\n    'height': 5.5,\n    'width': 8.5,\n  },\n  'Junior legal': {\n    'height': 5,\n    'width': 8,\n  },\n};","/*\n* Default Date and Time Formats used in the Custom Stamp Modal\n* date and time will be joined with a space in between for the dropdown in the Modal\n* If timeFirst is set to true, the time will be added infront of the date instead of at the end\n*/\nexport default [\n  {\n    date: 'DD/MM/YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD/MM/YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'YYYY/MM/DD',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'YYYY/MM/DD',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'DD MMM YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'DD MMM YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'MMMM DD, YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n  {\n    date: 'MMMM DD, YYYY',\n    time: 'HH:mm',\n    timeFirst: false,\n  },\n  {\n    date: 'MMM DD YYYY',\n    time: 'h:mm A',\n    timeFirst: false,\n  },\n];","/* eslint-disable custom/no-hex-colors */\nconst initialColors = [\n  '#e44234',\n  '#ff8d00',\n  '#ffcd45',\n  '#5cc96e',\n  '#25d2d1',\n  '#597ce2',\n  '#c544ce',\n  '#7d2e25',\n  '#a84f1d',\n  '#e99e38',\n  '#347842',\n  '#167e7d',\n  '#354a87',\n  '#76287b',\n  '#ffffff',\n  '#cdcdcd',\n  '#9c9c9c',\n  '#696969',\n  '#272727',\n  '#000000'\n];\n\nconst initialTextColors = [\n  '#000000',\n  '#272727',\n  '#696969',\n  '#9c9c9c',\n  '#cdcdcd',\n  '#ffffff',\n  '#7d2e25',\n  '#a84f1d',\n  '#e99e38',\n  '#347842',\n  '#167e7d',\n  '#354a87',\n  '#76287b',\n  '#e44234',\n  '#ff8d00',\n  '#ffcd45',\n  '#5cc96e',\n  '#25d2d1',\n  '#597ce2',\n  '#c544ce'\n];\n/* eslint-enable custom/no-hex-colors */\n\nexport {\n  initialColors,\n  initialTextColors,\n};","export const availableFontFaces = [\n  'Arial',\n  'Arial Black',\n  'Arial Narrow',\n  'Arial Rounded MT Bold',\n  'Baskerville Old Face',\n  'Bookman Old Style',\n  'Bookshelf Symbol 7',\n  'Brush Script MT',\n  'Calibri',\n  'Calibri Light',\n  'Cambria',\n  'Cambria Math',\n  'Century',\n  'Century Schoolbook',\n  'Comic Sans MS',\n  'Consolas',\n  'Cooper Black',\n  'Copperplate Gothic Light',\n  'Courier',\n  'Courier New',\n  'Garamond',\n  'Georgia',\n  'Gill Sans MT',\n  'Gill Sans MT Condensed',\n  'Helvetica',\n  'Lucida Console',\n  'MS Outlook',\n  'Malgun Gothic',\n  'Meiryo',\n  'monospace',\n  'Myriad Pro',\n  'sans-serif',\n  'serif',\n  'SimSun',\n  'Symbol',\n  'Tahoma',\n  'Tahoma Bold',\n  'Times New Roman',\n  'Trebuchet MS',\n  'Verdana',\n];\n\nexport const cssFontValues = {\n  'Arial': {\n    fontFamily: 'Arial, Helvetica, sans-serif',\n  },\n  'Arial Black': {\n    fontFamily: '\"Arial Black\", Gadget, sans-serif',\n  },\n  'Arial Italic': {\n    fontFamily: 'Arial, Helvetica, sans-serif',\n    fontStyle: 'italic',\n  },\n  'Arial Narrow': {\n    fontFamily: '\"Arial Narrow\", sans-serif',\n  },\n  'Arial Rounded MT Bold': {\n    fontFamily: '\"Arial Rounded MT Bold\", sans-serif',\n  },\n  'Baskerville Old Face': {\n    fontFamily: '\"Baskerville Old Face\", \"Book Antiqua\", Palatino, serif',\n  },\n  'Bookman Old Style': {\n    fontFamily: '\"Bookman Old Style\", serif',\n  },\n  'Bookshelf Symbol 7': {\n    fontFamily: '\"Bookshelf Symbol 7\", sans-serif',\n  },\n  'Brush Script MT': {\n    fontFamily: '\"Brush Script MT\", cursive',\n  },\n  'Calibri': {\n    fontFamily: 'Calibri, Candara, Segoe, \"Segoe UI\", Optima, Arial, sans-serif',\n  },\n  'Calibri Light': {\n    fontFamily: 'Calibri, Candara, Segoe, \"Segoe UI\", Optima, Arial, sans-serif',\n  },\n  'Cambria': {\n    fontFamily: 'Cambria, Georgia, serif',\n  },\n  'Cambria Math': {\n    fontFamily: '\"Cambria Math\", serif',\n  },\n  'Century': {\n    fontFamily: 'Century, sans-serif',\n  },\n  'Century Schoolbook': {\n    fontFamily: '\"Century Schoolbook\", serif',\n  },\n  'Comic Sans MS': {\n    fontFamily: '\"Comic Sans MS\", cursive, sans-serif',\n  },\n  'Consolas': {\n    fontFamily: 'Consolas, monaco, monospace',\n  },\n  'Consolas Italic': {\n    fontFamily: 'Consolas, monaco, monospace',\n    fontStyle: 'italic',\n  },\n  'Cooper Black': {\n    fontFamily: '\"Cooper Black\", sans-serif',\n  },\n  'Copperplate Gothic Light': {\n    fontFamily: '\"Copperplate Gothic Light\", sans-serif',\n  },\n  'Courier': {\n    fontFamily: 'Courier, monospace',\n  },\n  'Courier New': {\n    fontFamily: '\"Courier New\", Courier, monospace',\n  },\n  'Garamond': {\n    fontFamily: 'Garamond, serif',\n  },\n  'Georgia': {\n    fontFamily: 'Georgia, serif',\n  },\n  'Gill Sans MT': {\n    fontFamily: '\"Gill Sans MT\", sans-serif',\n  },\n  'Gill Sans MT Condensed': {\n    fontFamily: '\"Gill Sans MT Condensed\", sans-serif',\n  },\n  'Helvetica': {\n    fontFamily: 'Helvetica, Arial, sans-serif',\n  },\n  'Lucida Console': {\n    fontFamily: '\"Lucida Console\", Monaco, monospace',\n  },\n  'MS Outlook': {\n    fontFamily: '\"MS Outlook\", sans-serif',\n  },\n  'Malgun Gothic': {\n    fontFamily: '\"Malgun Gothic\", sans-serif',\n  },\n  'Meiryo': {\n    fontFamily: 'Meiryo, sans-serif',\n  },\n  'monospace': {\n    fontFamily: 'monospace',\n  },\n  'Myriad Pro': {\n    fontFamily: '\"Myriad Pro\", Myriad, sans-serif',\n  },\n  'sans-serif': {\n    fontFamily: 'sans-serif',\n  },\n  'serif': {\n    fontFamily: 'serif',\n  },\n  'Symbol': {\n    fontFamily: 'Symbol, sans-serif',\n  },\n  'SimSun': {\n    fontFamily: '\"SimSun\", sans-serif',\n  },\n  'Tahoma': {\n    fontFamily: 'Tahoma, Geneva, sans-serif',\n  },\n  'Times New Roman': {\n    fontFamily: '\"Times New Roman\", Times, serif',\n  },\n  'Trebuchet MS': {\n    fontFamily: '\"Trebuchet MS\", Helvetica, sans-serif',\n  },\n  'Verdana': {\n    fontFamily: 'Verdana, Geneva, sans-serif',\n  },\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'ENABLE_FEATURE_FLAG':\n      return { ...state, [payload.featureFlag]: true };\n    case 'DISABLE_FEATURE_FLAG':\n      return { ...state, [payload.featureFlag]: false };\n    default:\n      return state;\n  }\n};","export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n  autoMergeLevel1: \n    - merges 1 level of substate\n    - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n  var debug = _ref.debug;\n\n  var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n  if (inboundState && _typeof(inboundState) === 'object') {\n    Object.keys(inboundState).forEach(function (key) {\n      // ignore _persist data\n      if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n      if (originalState[key] !== reducedState[key]) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n        return;\n      } // otherwise hard set the new value\n\n\n      newState[key] = inboundState[key];\n    });\n  }\n\n  if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n  return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n  // defaults\n  var blacklist = config.blacklist || null;\n  var whitelist = config.whitelist || null;\n  var transforms = config.transforms || [];\n  var throttle = config.throttle || 0;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var serialize;\n\n  if (config.serialize === false) {\n    serialize = function serialize(x) {\n      return x;\n    };\n  } else if (typeof config.serialize === 'function') {\n    serialize = config.serialize;\n  } else {\n    serialize = defaultSerialize;\n  }\n\n  var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n  var lastState = {};\n  var stagedState = {};\n  var keysToProcess = [];\n  var timeIterator = null;\n  var writePromise = null;\n\n  var update = function update(state) {\n    // add any changed keys to the queue\n    Object.keys(state).forEach(function (key) {\n      if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n      if (lastState[key] === state[key]) return; // value unchanged? noop\n\n      if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n      keysToProcess.push(key); // add key to queue\n    }); //if any key is missing in the new state which was present in the lastState,\n    //add it for processing too\n\n    Object.keys(lastState).forEach(function (key) {\n      if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n        keysToProcess.push(key);\n      }\n    }); // start the time iterator if not running (read: throttle)\n\n    if (timeIterator === null) {\n      timeIterator = setInterval(processNextKey, throttle);\n    }\n\n    lastState = state;\n  };\n\n  function processNextKey() {\n    if (keysToProcess.length === 0) {\n      if (timeIterator) clearInterval(timeIterator);\n      timeIterator = null;\n      return;\n    }\n\n    var key = keysToProcess.shift();\n    var endState = transforms.reduce(function (subState, transformer) {\n      return transformer.in(subState, key, lastState);\n    }, lastState[key]);\n\n    if (endState !== undefined) {\n      try {\n        stagedState[key] = serialize(endState);\n      } catch (err) {\n        console.error('redux-persist/createPersistoid: error serializing state', err);\n      }\n    } else {\n      //if the endState is undefined, no need to persist the existing serialized content\n      delete stagedState[key];\n    }\n\n    if (keysToProcess.length === 0) {\n      writeStagedState();\n    }\n  }\n\n  function writeStagedState() {\n    // cleanup any removed keys just before write.\n    Object.keys(stagedState).forEach(function (key) {\n      if (lastState[key] === undefined) {\n        delete stagedState[key];\n      }\n    });\n    writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n  }\n\n  function passWhitelistBlacklist(key) {\n    if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n    if (blacklist && blacklist.indexOf(key) !== -1) return false;\n    return true;\n  }\n\n  function onWriteFail(err) {\n    // @TODO add fail handlers (typically storage full)\n    if (writeFailHandler) writeFailHandler(err);\n\n    if (err && process.env.NODE_ENV !== 'production') {\n      console.error('Error storing data', err);\n    }\n  }\n\n  var flush = function flush() {\n    while (keysToProcess.length !== 0) {\n      processNextKey();\n    }\n\n    return writePromise || Promise.resolve();\n  }; // return `persistoid`\n\n\n  return {\n    update: update,\n    flush: flush\n  };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n  return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n  var transforms = config.transforms || [];\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var debug = config.debug;\n  var deserialize;\n\n  if (config.deserialize === false) {\n    deserialize = function deserialize(x) {\n      return x;\n    };\n  } else if (typeof config.deserialize === 'function') {\n    deserialize = config.deserialize;\n  } else {\n    deserialize = defaultDeserialize;\n  }\n\n  return storage.getItem(storageKey).then(function (serialized) {\n    if (!serialized) return undefined;else {\n      try {\n        var state = {};\n        var rawState = deserialize(serialized);\n        Object.keys(rawState).forEach(function (key) {\n          state[key] = transforms.reduceRight(function (subState, transformer) {\n            return transformer.out(subState, key, rawState);\n          }, deserialize(rawState[key]));\n        });\n        return state;\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n        throw err;\n      }\n    }\n  });\n}\n\nfunction defaultDeserialize(serial) {\n  return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n  var storage = config.storage;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n  if (err && process.env.NODE_ENV !== 'production') {\n    console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n  }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n  @TODO add validation / handling for:\n  - persisting a reducer which has nested _persist\n  - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!config) throw new Error('config is required for persistReducer');\n    if (!config.key) throw new Error('key is required in persistor config');\n    if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n  }\n\n  var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n  var debug = config.debug || false;\n  var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n  var getStoredState = config.getStoredState || defaultGetStoredState;\n  var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n  var _persistoid = null;\n  var _purge = false;\n  var _paused = true;\n\n  var conditionalUpdate = function conditionalUpdate(state) {\n    // update the persistoid only if we are rehydrated and not paused\n    state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n    return state;\n  };\n\n  return function (state, action) {\n    var _ref = state || {},\n        _persist = _ref._persist,\n        rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n    var restState = rest;\n\n    if (action.type === PERSIST) {\n      var _sealed = false;\n\n      var _rehydrate = function _rehydrate(payload, err) {\n        // dev warning if we are already sealed\n        if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n        if (!_sealed) {\n          action.rehydrate(config.key, payload, err);\n          _sealed = true;\n        }\n      };\n\n      timeout && setTimeout(function () {\n        !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n      }, timeout); // @NOTE PERSIST resumes if paused.\n\n      _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n      if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n      if (_persist) {\n        // We still need to call the base reducer because there might be nested\n        // uses of persistReducer which need to be aware of the PERSIST action\n        return _objectSpread({}, baseReducer(restState, action), {\n          _persist: _persist\n        });\n      }\n\n      if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n      action.register(config.key);\n      getStoredState(config).then(function (restoredState) {\n        var migrate = config.migrate || function (s, v) {\n          return Promise.resolve(s);\n        };\n\n        migrate(restoredState, version).then(function (migratedState) {\n          _rehydrate(migratedState);\n        }, function (migrateErr) {\n          if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n          _rehydrate(undefined, migrateErr);\n        });\n      }, function (err) {\n        _rehydrate(undefined, err);\n      });\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: {\n          version: version,\n          rehydrated: false\n        }\n      });\n    } else if (action.type === PURGE) {\n      _purge = true;\n      action.result(purgeStoredState(config));\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === FLUSH) {\n      action.result(_persistoid && _persistoid.flush());\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === PAUSE) {\n      _paused = true;\n    } else if (action.type === REHYDRATE) {\n      // noop on restState if purging\n      if (_purge) return _objectSpread({}, restState, {\n        _persist: _objectSpread({}, _persist, {\n          rehydrated: true\n        }) // @NOTE if key does not match, will continue to default else below\n\n      });\n\n      if (action.key === config.key) {\n        var reducedState = baseReducer(restState, action);\n        var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n        var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n        var _newState = _objectSpread({}, reconciledRest, {\n          _persist: _objectSpread({}, _persist, {\n            rehydrated: true\n          })\n        });\n\n        return conditionalUpdate(_newState);\n      }\n    } // if we have not already handled PERSIST, straight passthrough\n\n\n    if (!_persist) return baseReducer(state, action); // run base reducer:\n    // is state modified ? return original : return updated\n\n    var newState = baseReducer(restState, action);\n    if (newState === restState) return state;\n    return conditionalUpdate(_objectSpread({}, newState, {\n      _persist: _persist\n    }));\n  };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n  registry: [],\n  bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case REGISTER:\n      return _objectSpread({}, state, {\n        registry: [].concat(_toConsumableArray(state.registry), [action.key])\n      });\n\n    case REHYDRATE:\n      var firstIndex = state.registry.indexOf(action.key);\n\n      var registry = _toConsumableArray(state.registry);\n\n      registry.splice(firstIndex, 1);\n      return _objectSpread({}, state, {\n        registry: registry,\n        bootstrapped: registry.length === 0\n      });\n\n    default:\n      return state;\n  }\n};\n\nexport default function persistStore(store, options, cb) {\n  // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n  if (process.env.NODE_ENV !== 'production') {\n    var optionsToTest = options || {};\n    var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n    bannedKeys.forEach(function (k) {\n      if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n    });\n  }\n\n  var boostrappedCb = cb || false;\n\n  var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n  var register = function register(key) {\n    _pStore.dispatch({\n      type: REGISTER,\n      key: key\n    });\n  };\n\n  var rehydrate = function rehydrate(key, payload, err) {\n    var rehydrateAction = {\n      type: REHYDRATE,\n      payload: payload,\n      err: err,\n      key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n    };\n    store.dispatch(rehydrateAction);\n\n    _pStore.dispatch(rehydrateAction);\n\n    if (boostrappedCb && persistor.getState().bootstrapped) {\n      boostrappedCb();\n      boostrappedCb = false;\n    }\n  };\n\n  var persistor = _objectSpread({}, _pStore, {\n    purge: function purge() {\n      var results = [];\n      store.dispatch({\n        type: PURGE,\n        result: function result(purgeResult) {\n          results.push(purgeResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    flush: function flush() {\n      var results = [];\n      store.dispatch({\n        type: FLUSH,\n        result: function result(flushResult) {\n          results.push(flushResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    pause: function pause() {\n      store.dispatch({\n        type: PAUSE\n      });\n    },\n    persist: function persist() {\n      store.dispatch({\n        type: PERSIST,\n        register: register,\n        rehydrate: rehydrate\n      });\n    }\n  });\n\n  if (!(options && options.manualPersist)) {\n    persistor.persist();\n  }\n\n  return persistor;\n}","import localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\nimport { defaultPanels } from '../modularComponents';\n\nexport default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_SCALE_OVERLAY_POSITION':\n      return {\n        ...state,\n        scaleOverlayPosition: payload.position,\n      };\n    case 'SET_DEFAULT_PRINT_MARGINS':\n      return {\n        ...state,\n        defaultPrintMargins: payload.margins,\n      };\n    case 'SET_COLORS':\n      return {\n        ...state,\n        colors: payload.tool || !payload.colors ? state.colors : [...payload.colors],\n        textColors: payload.textColors ? [...payload.textColors] : state.textColors,\n        toolColorOverrides: payload.tool ? {\n          ...state.toolColorOverrides,\n          [payload.tool]: [...payload.colors],\n        } : state.toolColorOverrides,\n      };\n    case 'SET_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          [payload.dataElement]: payload.width,\n        },\n      };\n    case 'SET_CUSTOM_ELEMENT_SIZE':\n      return {\n        ...state,\n        customElementSizes: {\n          ...state.customElementSizes,\n          [payload.dataElement]: payload.size,\n        }\n      };\n    case 'SET_FLYOUTS': {\n      const { flyoutMap } = payload;\n      return {\n        ...state,\n        flyoutMap: { ...flyoutMap },\n      };\n    }\n    case 'SET_ACTIVE_FLYOUT':\n      return {\n        ...state,\n        activeFlyout: payload.dataElement,\n      };\n    case 'REMOVE_FLYOUT':\n      const flyoutMap = state.flyoutMap;\n      delete flyoutMap[payload.dataElement];\n      return {\n        ...state,\n        flyoutMap,\n      };\n    case 'ADD_FLYOUT':\n    case 'UPDATE_FLYOUT':\n      return {\n        ...state,\n        flyoutMap: {\n          ...state.flyoutMap,\n          [payload.dataElement]: payload.flyout\n        }\n      };\n    case 'SET_FLYOUT_POSITION':\n      return {\n        ...state,\n        flyoutPosition: payload.newPosition,\n      };\n    case 'SET_FLYOUT_TOGGLE_ELEMENT':\n      return {\n        ...state,\n        flyoutToggleElement: payload.toggleElement,\n      };\n    case 'SET_FLYOUT_ITEMS': {\n      const { dataElement, items } = payload;\n      const flyout = state.flyoutMap[dataElement];\n      // Handle the case where the flyout is not yet registered with the UI\n      if (!flyout) {\n        return state;\n      }\n      const updatedFlyout = {\n        ...flyout,\n        items,\n      };\n      return {\n        ...state,\n        flyoutMap: {\n          ...state.flyoutMap,\n          [dataElement]: updatedFlyout,\n        },\n      };\n    }\n    case 'SET_INITIALS_OFFSET':\n      return {\n        ...state,\n        initalsOffset: payload.initalsOffset,\n      };\n    case 'SET_SAVED_SIGNATURES_TAB_ENABLED':\n      return {\n        ...state,\n        savedSignatureTabEnabled: payload.enabled,\n      };\n    case 'SET_SYNC_VIEWERS':\n      return {\n        ...state,\n        syncViewer: payload.syncViewer,\n      };\n    case 'SET_IS_COMPARE_STARTED':\n      return {\n        ...state,\n        isCompareStarted: payload.isCompareStarted,\n      };\n    case 'SET_COMPARE_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          comparePanel: payload.width,\n        }\n      };\n    case 'SET_WATERMARK_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          watermarkPanel: payload.width,\n        }\n      };\n    case 'SET_COMPARISON_OVERLAY_ENABLED':\n      return {\n        ...state,\n        isComparisonOverlayEnabled: payload.isComparisonOverlayEnabled,\n      };\n    case 'SET_ACTIVE_DOCUMENT_VIEWER_KEY':\n      return {\n        ...state,\n        activeDocumentViewerKey: payload.activeDocumentViewerKey,\n      };\n    case 'SET_IS_MULTI_VIEWER_READY':\n      return {\n        ...state,\n        isMultiViewerReady: payload.isMultiViewerReady,\n      };\n    case 'SET_IS_MULTI_VIEWER_MODE':\n      return {\n        ...state,\n        isMultiViewerMode: payload.isMultiViewerMode,\n      };\n    case 'SET_IS_MULTI_VIEWER_MODE_AVAILABLE':\n      return {\n        ...state,\n        isMultiViewerModeAvailable: payload.isMultiViewerModeAvailable,\n      };\n    case 'SET_IS_OFFICE_EDITOR_MODE':\n      return {\n        ...state,\n        isOfficeEditorMode: payload.isOfficeEditorMode,\n      };\n    case 'SET_COMPARE_PAGES_BUTTON_ENABLED':\n      return {\n        ...state,\n        isShowComparisonButtonEnabled: payload.isShowComparisonButtonEnabled,\n      };\n    case 'SHOW_APPLY_CROP_WARNING':\n      return {\n        ...state,\n        shouldShowApplyCropWarning: payload.shouldShowApplyCropWarning,\n      };\n    case 'SHOW_APPLY_SNIPPING_WARNING':\n      return {\n        ...state,\n        shouldShowApplySnippingWarning: payload.shouldShowApplySnippingWarning,\n      };\n    case 'SET_PRESET_CROP_DIMENSIONS':\n      return {\n        ...state,\n        presetCropDimensions: payload.presetCropDimensions,\n      };\n    case 'SET_PRESET_NEW_PAGE_DIMENSIONS':\n      return {\n        ...state,\n        presetNewPageDimensions: payload.presetNewPageDimensions,\n      };\n    case 'SET_DATE_TIME_FORMATS':\n      return {\n        ...state,\n        dateTimeFormats: payload.dateTimeFormats,\n      };\n    case 'SET_THUMBNAIL_SELECTION_MODE':\n      return {\n        ...state,\n        thumbnailSelectionMode: payload.thumbnailSelectionMode,\n      };\n    case 'SET_FONTS':\n      return {\n        ...state,\n        fonts: payload.fonts,\n      };\n    case 'SET_ACTIVE_TAB':\n      return {\n        ...state,\n        activeTab: payload.activeTab,\n      };\n    case 'SET_TABS':\n      return {\n        ...state,\n        tabs: payload.tabs,\n      };\n    case 'SET_IS_MULTI_TAB':\n      return {\n        ...state,\n        isMultiTab: payload.isMultiTab,\n      };\n    case 'SET_TAB_MANAGER':\n      return {\n        ...state,\n        TabManager: payload.TabManager,\n      };\n    case 'SET_THUMBNAIL_PAGE_SELECT':\n      return {\n        ...state,\n        thumbnailSelectingPages: payload.isSelecting,\n      };\n    case 'SET_HIGH_CONTRAST_MODE':\n      return {\n        ...state,\n        highContrastMode: payload.useHighContrastMode,\n      };\n    case 'SET_CAN_UNDO':\n      return {\n        ...state,\n        canUndo: {\n          ...state.canUndo,\n          [payload.documentViewerKey]: payload.canUndo\n        },\n      };\n    case 'SET_CAN_REDO':\n      return {\n        ...state,\n        canRedo: {\n          ...state.canRedo,\n          [payload.documentViewerKey]: payload.canRedo\n        }\n      };\n    case 'SET_LAST_PICKED_TOOL_FOR_GROUP':\n      return {\n        ...state,\n        lastPickedToolForGroup: {\n          ...state.lastPickedToolForGroup,\n          [payload.group]: payload.toolName,\n        },\n      };\n    case 'SET_ACTIVE_GROUPED_ITEMS':\n      return {\n        ...state,\n        activeGroupedItems: payload.groupedItems,\n      };\n    case 'SET_FIXED_GROUPED_ITEMS':\n      return {\n        ...state,\n        fixedGroupedItems: [...state.fixedGroupedItems, payload.groupedItems]\n      };\n    case 'SET_TOOLBAR_GROUP':\n      return {\n        ...state,\n        toolbarGroup: payload.toolbarGroup,\n      };\n    case 'SET_SELECTED_STAMP_INDEX':\n      return {\n        ...state,\n        selectedStampIndex: payload.index,\n      };\n    case 'SET_LAST_SELECTED_STAMP_INDEX':\n      return {\n        ...state,\n        lastSelectedStampIndex: payload.index,\n      };\n    case 'SET_SELECTED_DISPLAYED_SIGNATURE_INDEX':\n      return {\n        ...state,\n        selectedDisplayedSignatureIndex: payload.index,\n      };\n    case 'SET_SELECTED_DISPLAYED_INITIALS_INDEX':\n      return {\n        ...state,\n        selectedDisplayedInitialsIndex: payload.index,\n      };\n    case 'SET_STANDARD_STAMPS':\n      return {\n        ...state,\n        standardStamps: payload.standardStamps,\n      };\n    case 'SET_CUSTOM_STAMPS':\n      return {\n        ...state,\n        customStamps: payload.customStamps,\n      };\n    case 'SET_SAVED_SIGNATURES':\n      return {\n        ...state,\n        savedSignatures: payload.savedSignatures,\n      };\n    case 'SET_SAVED_INITIALS':\n      return {\n        ...state,\n        savedInitials: payload.savedInitials,\n      };\n    case 'SET_LEFT_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          leftPanel: payload.width,\n        },\n      };\n    case 'SET_SEARCH_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          searchPanel: payload.width,\n        },\n      };\n    case 'SET_NOTES_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          notesPanel: payload.width,\n        },\n      };\n    case 'SET_REDACTION_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          redactionPanel: payload.width,\n        },\n      };\n    case 'SET_TEXT_EDITING_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          textEditingPanel: payload.width,\n        },\n      };\n    case 'SET_WV3D_PROPERTIES_PANEL_WIDTH':\n      return {\n        ...state,\n        panelWidths: {\n          ...state.panelWidths,\n          wv3dPropertiesPanel: payload.width,\n        },\n      };\n    case 'SET_SELECTED_SCALE':\n      return {\n        ...state,\n        selectedScale: payload.selectedScale\n      };\n    case 'SET_DOCUMENT_CONTAINER_WIDTH':\n      return {\n        ...state,\n        documentContainerWidth: payload.width,\n      };\n    case 'SET_DOCUMENT_CONTAINER_HEIGHT':\n      return {\n        ...state,\n        documentContainerHeight: payload.height,\n      };\n    case 'SET_ACTIVE_THEME':\n      return {\n        ...state,\n        activeTheme: payload.theme,\n      };\n    case 'DISABLE_ELEMENT':\n      return {\n        ...state,\n        disabledElements: {\n          ...state.disabledElements,\n          [payload.dataElement]: { disabled: true, priority: payload.priority },\n        },\n      };\n    case 'DISABLE_ELEMENTS': {\n      const disabledElements = {};\n      payload.dataElements.forEach((dataElement) => {\n        disabledElements[dataElement] = {};\n        disabledElements[dataElement].disabled = true;\n        disabledElements[dataElement].priority = payload.priority;\n      });\n\n      return {\n        ...state,\n        disabledElements: { ...state.disabledElements, ...disabledElements },\n      };\n    }\n    case 'ENABLE_ELEMENT':\n      return {\n        ...state,\n        disabledElements: {\n          ...state.disabledElements,\n          [payload.dataElement]: {\n            disabled: false,\n            priority: payload.priority,\n          },\n        },\n      };\n    case 'ENABLE_ELEMENTS': {\n      const disabledElements = {};\n      payload.dataElements.forEach((dataElement) => {\n        disabledElements[dataElement] = {};\n        disabledElements[dataElement].disabled = false;\n        disabledElements[dataElement].priority = payload.priority;\n      });\n\n      return {\n        ...state,\n        disabledElements: { ...state.disabledElements, ...disabledElements },\n      };\n    }\n    case 'ENABLE_ALL_ELEMENTS':\n      return {\n        ...state,\n        disabledElements: { ...initialState.disabledElements },\n      };\n    case 'OPEN_ELEMENT':\n      return {\n        ...state,\n        openElements: { ...state.openElements, [payload.dataElement]: true },\n      };\n    case 'CLOSE_ELEMENT':\n      return {\n        ...state,\n        openElements: { ...state.openElements, [payload.dataElement]: false },\n      };\n    case 'SET_IS_ELEMENT_HIDDEN':\n      return {\n        ...state,\n        hiddenElements: { ...state.hiddenElements, [payload.dataElement]: payload.isHidden }\n      };\n    case 'ENABLE_TOOL_GROUP_REORDERING':\n      return { ...state, enableToolGroupReordering: payload.enableToolGroupReordering };\n    case 'SET_ACTIVE_HEADER_GROUP':\n      return { ...state, activeHeaderGroup: payload.headerGroup };\n    case 'SET_ACTIVE_TOOL_NAME':\n      return { ...state, activeToolName: payload.toolName };\n    case 'SET_ACTIVE_TOOL_STYLES':\n      return { ...state, activeToolStyles: { ...payload.toolStyles } };\n    case 'SET_CUSTOM_COLOR':\n      return { ...state, customColor: payload.customColor };\n    case 'SET_CUSTOM_COLORS':\n      if (localStorageManager.isLocalStorageEnabled()) {\n        const instanceId = getInstanceID();\n        window.localStorage.setItem(`${instanceId}-customColors`, JSON.stringify(payload.customColors));\n      } else {\n        console.error('localStorage is disabled, customColors cannot be restored');\n      }\n      return { ...state, customColors: payload.customColors };\n    case 'SET_ACTIVE_TOOL_NAME_AND_STYLES':\n      return {\n        ...state,\n        activeToolName: payload.toolName,\n        activeToolStyles: payload.toolStyles,\n      };\n    case 'SET_ACTIVE_LEFT_PANEL':\n      return { ...state, activeLeftPanel: payload.dataElement };\n    case 'SET_ACTIVE_TOOL_GROUP':\n      return {\n        ...state,\n        activeToolGroup: payload.toolGroup,\n        lastPickedToolGroup: {\n          ...state.lastPickedToolGroup,\n          [payload.toolbarGroup]: payload.toolGroup,\n        },\n      };\n    case 'SET_LAST_PICKED_TOOL_FOR_GROUPED_ITEMS':\n      return {\n        ...state,\n        lastPickedToolForGroupedItems: {\n          ...state.lastPickedToolForGroupedItems,\n          [payload.groupedItem]: payload.toolName,\n        }\n      };\n    case 'SET_LAST_PICKED_TOOL_AND_GROUP':\n      return {\n        ...state,\n        lastPickedToolAndGroup: payload,\n      };\n    case 'SET_ACTIVE_CUSTOM_RIBBON':\n      return { ...state, activeCustomRibbon: payload.customRibbon };\n    case 'SET_OUTLINE_CONTROL_VISIBILITY':\n      return { ...state, outlineControlVisibility: payload.outlineControlVisibility };\n    case 'SET_AUTO_EXPAND_OUTLINES':\n      return { ...state, autoExpandOutlines: payload.autoExpandOutlines };\n    case 'SET_ANNOTATION_NUMBERING':\n      return { ...state, isAnnotationNumberingEnabled: payload.isAnnotationNumberingEnabled };\n    case 'SET_BOOKMARK_ICON_SHORTCUT_VISIBILITY':\n      return { ...state, bookmarkIconShortcutVisibility: payload.bookmarkIconShortcutVisibility };\n    case 'SET_OUTLINE_EDITING':\n      return { ...state, isOutlineEditingEnabled: payload.isOutlineEditingEnabled };\n    case 'SET_NOTE_POPUP_ID':\n      return { ...state, notePopupId: payload.id };\n    case 'SET_NOTE_EDITING':\n      return { ...state, isNoteEditing: payload.isNoteEditing };\n    case 'SET_FIT_MODE':\n      return { ...state, fitMode: payload.fitMode };\n    case 'SET_ZOOM':\n      return {\n        ...state,\n        zoomLevels: {\n          ...state.zoomLevels,\n          [payload.documentViewerKey]: payload.zoom,\n        }\n      };\n    case 'SET_TIMEZONE':\n      return { ...state, timezone: payload.timezone };\n    case 'SET_ROTATION':\n      return { ...state, rotation: payload.rotation };\n    case 'SET_DISPLAY_MODE':\n      return { ...state, displayMode: payload.displayMode };\n    case 'SET_CURRENT_PAGE':\n      return { ...state, currentPage: payload.currentPage };\n    case 'SET_NOTES_PANEL_SORT_STRATEGY':\n      return { ...state, sortStrategy: payload.sortStrategy };\n    case 'SET_NOTE_DATE_FORMAT':\n      return { ...state, noteDateFormat: payload.noteDateFormat };\n    case 'SET_PRINTED_NOTE_DATE_FORMAT':\n      return { ...state, printedNoteDateFormat: payload.noteDateFormat };\n    case 'SET_FULL_SCREEN':\n      return { ...state, isFullScreen: payload.isFullScreen };\n    case 'SET_HEADER_ITEMS':\n      return {\n        ...state,\n        headers: { ...state.headers, [payload.header]: payload.headerItems },\n      };\n    case 'SET_CUSTOM_HEADERS_ADDITIONAL_PROPERTIES':\n      return {\n        ...state,\n        customHeadersAdditionalProperties: { ...state.customHeadersAdditionalProperties, [payload.customHeader]: payload.additionalProperties },\n      };\n    case 'SET_POPUP_ITEMS':\n      return {\n        ...state,\n        [payload.dataElement]: payload.items,\n      };\n    case 'SET_MENUOVERLAY_ITEMS':\n      return {\n        ...state,\n        menuOverlay: payload.items,\n      };\n    case 'REGISTER_TOOL':\n      return {\n        ...state,\n        toolButtonObjects: {\n          ...state.toolButtonObjects,\n          [payload.toolName]: {\n            dataElement: payload.buttonName,\n            title: payload.tooltip,\n            group: payload.buttonGroup,\n            img: payload.buttonImage,\n            showColor: payload.showColor || 'active',\n            showPresets: payload.showPresets ?? true,\n          },\n        },\n      };\n    case 'UNREGISTER_TOOL': {\n      const newToolButtonObjects = { ...state.toolButtonObjects };\n      delete newToolButtonObjects[payload.toolName];\n      return { ...state, toolButtonObjects: newToolButtonObjects };\n    }\n    case 'UPDATE_TOOL': {\n      const { toolName, properties } = payload;\n      const { buttonName, tooltip, buttonGroup, buttonImage } = properties;\n      return {\n        ...state,\n        toolButtonObjects: {\n          ...state.toolButtonObjects,\n          [toolName]: {\n            ...state.toolButtonObjects[toolName],\n            dataElement: buttonName || state.toolButtonObjects[toolName].dataElement,\n            title: tooltip || state.toolButtonObjects[toolName].title,\n            group: buttonGroup !== undefined ? buttonGroup : state.toolButtonObjects[toolName].group,\n            img: buttonImage || state.toolButtonObjects[toolName].img,\n          },\n        },\n      };\n    }\n    case 'SET_THUMBNAIL_MERGING':\n      return { ...state, isThumbnailMerging: payload.useThumbnailMerging };\n    case 'SET_THUMBNAIL_REORDERING':\n      return { ...state, isThumbnailReordering: payload.useThumbnailReordering };\n    case 'SET_THUMBNAIL_MULTISELECT':\n      return { ...state, isThumbnailMultiselect: payload.useThumbnailMultiselect };\n    case 'SET_MULTI_VIEWER_MERGING':\n      return { ...state, isMultipleViewerMerging: payload.isMultipleViewerMerging };\n    case 'SET_ENABLE_NOTE_PANEL_VIRTUALIZED_LIST':\n      return { ...state, enableNotesPanelVirtualizedList: payload.enableNotesPanelVirtualizedList };\n    case 'SET_NOTES_SHOW_LAST_UPDATED_DATE':\n      return { ...state, notesShowLastUpdatedDate: payload.notesShowLastUpdatedDate };\n    case 'SET_ALLOW_PAGE_NAVIGATION':\n      return { ...state, allowPageNavigation: payload.allowPageNavigation };\n    case 'SET_READ_ONLY':\n      return { ...state, isReadOnly: payload.isReadOnly };\n    case 'SET_CUSTOM_PANEL':\n      return {\n        ...state,\n        customPanels: [...state.customPanels, payload.newPanel],\n      };\n    case 'ADD_PANEL':\n      return {\n        ...state,\n        genericPanels: [...state.genericPanels, payload.newPanel],\n      };\n    case 'SET_GENERIC_PANELS':\n      return {\n        ...state,\n        genericPanels: [...payload.genericPanels],\n      };\n    case 'SET_MOBILE_PANEL_SIZE':\n      return {\n        ...state,\n        mobilePanelSize: payload.panelSize,\n      };\n    case 'USE_EMBEDDED_PRINT':\n      return { ...state, useEmbeddedPrint: payload.useEmbeddedPrint };\n    case 'USE_CLIENT_SIDE_PRINT':\n      return { ...state, useClientSidePrint: payload.useClientSidePrint };\n    case 'SET_PAGE_LABELS':\n      return { ...state, pageLabels: [...payload.pageLabels] };\n    case 'SET_SELECTED_THUMBNAIL_PAGE_INDEXES':\n      return { ...state, selectedThumbnailPageIndexes: payload.selectedThumbnailPageIndexes };\n    case 'SET_SHIFT_KEY_THUMBNAIL_PIVOT_INDEX':\n      return { ...state, shiftKeyThumbnailPivotIndex: payload.shiftKeyThumbnailPivotIndex };\n    case 'SET_ACTIVE_PALETTE': {\n      const { colorMapKey, colorPalette } = payload;\n      return {\n        ...state,\n        colorMap: {\n          ...state.colorMap,\n          [colorMapKey]: {\n            ...state.colorMap[colorMapKey],\n            currentStyleTab: colorPalette,\n          },\n        },\n      };\n    }\n    case 'SET_REPLY_DISABLED_FUNC': {\n      const { func } = payload;\n      return {\n        ...state,\n        isReplyDisabledFunc: func,\n      };\n    }\n    case 'SET_ICON_COLOR': {\n      const { colorMapKey, color } = payload;\n      return {\n        ...state,\n        colorMap: {\n          ...state.colorMap,\n          [colorMapKey]: { ...state.colorMap[colorMapKey], iconColor: color },\n        },\n      };\n    }\n    case 'SET_COLOR_MAP':\n      return { ...state, colorMap: payload.colorMap };\n    case 'SET_WARNING_MESSAGE':\n      return { ...state, warning: payload };\n    case 'ENABLE_DELETE_TAB_WARNING':\n      return { ...state, warning: payload };\n    case 'DISABLE_DELETE_TAB_WARNING':\n      return { ...state, warning: payload };\n    case 'SET_ERROR_MESSAGE':\n      return { ...state, errorMessage: payload.message, errorTitle: payload.title };\n    case 'SET_CUSTOM_NOTE_FILTER':\n      return { ...state, customNoteFilter: payload.customNoteFilter };\n    case 'SET_INLINE_COMMENT_FILTER':\n      return { ...state, inlineCommentFilter: payload.inlineCommentFilter };\n    case 'SET_ZOOM_LIST':\n      return { ...state, zoomList: payload.zoomList };\n    case 'SET_MEASUREMENT_UNITS': {\n      return { ...state, measurementUnits: payload };\n    }\n    case 'SET_MAX_SIGNATURES_COUNT':\n      return { ...state, maxSignaturesCount: payload.maxSignaturesCount };\n    case 'SET_USER_DATA':\n      return { ...state, userData: payload.userData };\n    case 'SET_CUSTOM_MEASUREMENT_OVERLAY':\n      return { ...state, customMeasurementOverlay: payload.customMeasurementOverlay };\n    case 'SET_SIGNATURE_FONTS':\n      return { ...state, signatureFonts: payload.signatureFonts };\n    case 'SET_SELECTED_TAB':\n      return { ...state, tab: { ...state.tab, [payload.id]: payload.dataElement } };\n    case 'SET_CUSTOM_ELEMENT_OVERRIDES':\n      return {\n        ...state,\n        customElementOverrides: { ...state.customElementOverrides, [payload.dataElement]: payload.overrides },\n      };\n    case 'SET_PAGE_REPLACEMENT_FILE_LIST':\n      return { ...state, pageReplacementFileList: payload.list };\n\n    case 'SET_NOTE_TRANSFORM_FUNCTION':\n      return { ...state, noteTransformFunction: payload.noteTransformFunction };\n    case 'SET_CUSTOM_NOTE_SELECTION_FUNCTION':\n      return { ...state, customNoteFunction: payload.customNoteFunction };\n    case 'SET_CUSTOM_APPLY_REDACTIONS_HANDLER':\n      return { ...state, customApplyRedactionsHandler: payload.customApplyRedactionsHandler };\n    case 'SET_ANNOTATION_CONTENT_OVERLAY_HANDLER':\n      return { ...state, annotationContentOverlayHandler: payload.annotationContentOverlayHandler };\n    case 'SET_CUSTOM_MULTI_VIEWER_SYNC_HANDLER':\n      return { ...state, customMultiViewerSyncHandler: payload.customMultiViewerSyncHandler };\n    case 'SET_CUSTOM_MULTI_VIEWER_ACCEPTED_FILE_FORMATS':\n      return { ...state, customMultiViewerAcceptedFileFormats: payload.customMultiViewerAcceptedFileFormats };\n    case 'ADD_CUSTOM_MODAL': {\n      const existingDataElementFiltered = state.customModals.filter(function(modal) {\n        return modal.dataElement !== payload.dataElement;\n      });\n      return {\n        ...state,\n        customModals: [...existingDataElementFiltered, payload],\n      };\n    }\n    case 'UPDATE_MODULAR_HEADER': {\n      const { dataElement, property, value } = payload;\n      const existingModularHeader = state.modularHeaders[dataElement];\n\n      // This is to prevent the case where the header is not yet initialized\n      if (!existingModularHeader) {\n        return state;\n      }\n\n      // Create a new updatedModularHeader object with the updated property value\n      const updatedModularHeader = {\n        ...existingModularHeader,\n        [property]: value\n      };\n\n      return {\n        ...state,\n        modularHeaders: {\n          ...state.modularHeaders,\n          [dataElement]: updatedModularHeader,\n        },\n      };\n    }\n    case 'SET_MODULAR_COMPONENT_PROPERTY': {\n      const { dataElement, property, value } = payload;\n      const existingModularComponent = state.modularComponents[dataElement];\n      if (!existingModularComponent) {\n        return state;\n      }\n      const updatedModularComponent = {\n        ...existingModularComponent,\n        [property]: value,\n      };\n      return {\n        ...state,\n        modularComponents: {\n          ...state.modularComponents,\n          [dataElement]: updatedModularComponent,\n        },\n      };\n    }\n    case 'SET_ALL_GROUPED_ITEMS_PROPERTY': {\n      const { property, value } = payload;\n      // Clone the existing modularComponents to avoid direct mutation\n      const newModularComponents = { ...state.modularComponents };\n\n      // Iterate over modularComponents and update grouped items directly\n      Object.keys(newModularComponents).forEach((key) => {\n        if (newModularComponents[key].type === ITEM_TYPE.GROUPED_ITEMS) {\n          newModularComponents[key] = {\n            ...newModularComponents[key],\n            [property]: value,\n          };\n        }\n      });\n      return {\n        ...state,\n        modularComponents: newModularComponents,\n      };\n    }\n    case 'ADD_MODULAR_HEADERS_AND_COMPONENTS': {\n      const { headersMap, componentsMap } = payload;\n      return {\n        ...state,\n        modularHeaders: { ...state.modularHeaders, ...headersMap },\n        modularComponents: { ...state.modularComponents, ...componentsMap }\n      };\n    }\n    case 'SET_MODULAR_HEADERS_AND_COMPONENTS': {\n      const { headersMap, componentsMap } = payload;\n      return {\n        ...state,\n        modularHeaders: { ...headersMap },\n        modularComponents: { ...componentsMap }\n      };\n    }\n    case 'SET_MODULAR_HEADER_ITEMS': {\n      const { headerDataElement, normalizedItems, itemsDataElements } = payload;\n      const existingModularHeader = state.modularHeaders[headerDataElement];\n\n      // This is to prevent the case where the header is not yet initialized\n      if (!existingModularHeader) {\n        return state;\n      }\n\n      // Remove existing items and replace with new one\n      if (itemsDataElements) {\n        itemsDataElements.forEach((key) => {\n          delete state.modularComponents[key];\n        });\n      }\n\n      const updatedModularHeader = {\n        ...existingModularHeader,\n        items: [...itemsDataElements]\n      };\n\n      return {\n        ...state,\n        modularHeaders: {\n          ...state.modularHeaders,\n          [headerDataElement]: updatedModularHeader,\n        },\n        modularComponents: {\n          ...state.modularComponents,\n          ...normalizedItems,\n        },\n      };\n    }\n    case 'UPDATE_GROUPED_ITEMS': {\n      const { groupedItemsDataElement, normalizedItems, componentsMap } = payload;\n      const existingGroupedItem = state.modularComponents[groupedItemsDataElement];\n      // This is to prevent the case where the header is not yet initialized\n      if (!existingGroupedItem) {\n        return state;\n      }\n      // How do we handle \"dangling\" components? i.e. components that are no longer referenced anywhere\n      const updatedGroupedItem = {\n        ...existingGroupedItem,\n        items: normalizedItems,\n      };\n      return {\n        ...state,\n        modularComponents: {\n          ...state.modularComponents,\n          [groupedItemsDataElement]: updatedGroupedItem,\n          ...componentsMap,\n        },\n      };\n    }\n    case 'SET_MODULAR_COMPONENT_FUNCTIONS': {\n      const { functionMap } = payload;\n      return {\n        ...state,\n        modularComponentFunctions: { ...functionMap },\n      };\n    }\n    case 'RESET_MODULAR_UI_STATE': {\n      return {\n        ...state,\n        modularHeaders: initialState.modularHeaders,\n        modularComponents: initialState.modularComponents,\n        modularComponentFunctions: initialState.modularComponentFunctions,\n        activeCustomRibbon: initialState.activeCustomRibbon,\n        activeFlyout: initialState.activeFlyout,\n        flyoutToggleElement: initialState.flyoutToggleElement,\n        openElements: initialState.openElements,\n        lastPickedToolAndGroup: initialState.lastPickedToolAndGroup,\n        lastPickedToolForGroupedItems: initialState.lastPickedToolForGroupedItems,\n        flyoutPosition: initialState.flyoutPosition,\n        genericPanels: defaultPanels,\n      };\n    }\n    case 'SET_ACTIVE_CUSTOM_PANEL':\n      return {\n        ...state,\n        activeCustomPanel: {\n          ...state.activeCustomPanel,\n          [payload.wrapperPanel]: payload.tabPanel\n        },\n      };\n    case 'SET_RIGHT_HEADER_WIDTH':\n      return {\n        ...state,\n        modularHeadersWidth: {\n          ...state.modularHeadersWidth,\n          rightHeader: payload,\n        }\n      };\n    case 'SET_LEFT_HEADER_WIDTH':\n      return {\n        ...state,\n        modularHeadersWidth: {\n          ...state.modularHeadersWidth,\n          leftHeader: payload,\n        }\n      };\n    case 'SET_TOP_FLOATING_CONTAINER_HEIGHT':\n      return {\n        ...state,\n        floatingContainersDimensions: {\n          ...state.floatingContainersDimensions,\n          topFloatingContainerHeight: payload,\n        }\n      };\n    case 'SET_BOTTOM_FLOATING_CONTAINER_HEIGHT':\n      return {\n        ...state,\n        floatingContainersDimensions: {\n          ...state.floatingContainersDimensions,\n          bottomFloatingContainerHeight: payload,\n        }\n      };\n    case 'SET_MOUSE_WHEEL_ZOOM':\n      return { ...state, enableMouseWheelZoom: payload.enableMouseWheelZoom };\n    case 'SET_ENABLE_SNAP_MODE':\n      return { ...state, isSnapModeEnabled: payload.enable };\n    case 'SET_READER_MODE':\n      return { ...state, isReaderMode: payload.isReaderMode };\n    case 'SET_SUBMIT_COMMENT_MODE':\n      return {\n        ...state,\n        enableNoteSubmissionWithEnter: payload.enableNoteSubmissionWithEnter,\n      };\n    case 'SET_NOTES_PANEL_TEXT_COLLAPSING':\n      return {\n        ...state,\n        isNotesPanelTextCollapsingEnabled: payload.enableNotesPanelTextCollapsing,\n      };\n    case 'SET_NOTES_PANEL_REPLIES_COLLAPSING':\n      return {\n        ...state,\n        isNotesPanelRepliesCollapsingEnabled: payload.enableNotesPanelRepliesCollapsing,\n      };\n    case 'SET_COMMENT_THREAD_EXPANSION':\n      return {\n        ...state,\n        isCommentThreadExpansionEnabled: payload.enableCommentThreadExpansion,\n      };\n    case 'SET_DISPLAYED_SIGNATURES_FILTER_FUNCTION':\n      return { ...state, displayedSignaturesFilterFunction: payload.filterFunction };\n    case 'SET_ANNOTATION_READ_STATE':\n      const { unreadAnnotationIdSet } = state;\n      const { annotationId, isRead } = payload;\n      if (isRead) {\n        unreadAnnotationIdSet.delete(annotationId);\n      } else {\n        unreadAnnotationIdSet.add(annotationId);\n      }\n      return { ...state, unreadAnnotationIdSet: new Set(unreadAnnotationIdSet) };\n    case 'SET_LANGUAGE':\n      return { ...state, currentLanguage: payload.language };\n    case 'SET_FADE_PAGE_NAVIGATION_COMPONENT':\n      return {\n        ...state,\n        fadePageNavigationComponent: payload.fadePageNavigationComponent,\n      };\n    case 'SET_HIDE_CONTENT_EDIT_WARNING':\n      if (localStorageManager.isLocalStorageEnabled()) {\n        const instanceId = getInstanceID();\n        window.localStorage.setItem(`${instanceId}-hideContentEditWarning`, JSON.stringify(payload.hideWarning));\n      } else {\n        console.error('localStorage is disabled, hideContentEditWarning cannot be restored');\n      }\n      return { ...state, hideContentEditWarning: payload.hideWarning };\n    case 'SET_CONTENT_EDIT_WORKERS_LOADED':\n      return { ...state, contentEditWorkersLoaded: payload.contentEditWorkersLoaded };\n    case 'SET_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: payload,\n      };\n    case 'UPDATE_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: {\n          ...state.currentContentBeingEdited,\n          content: payload.content,\n        },\n      };\n    case 'UPDATE_CALIBRATION_INFO':\n      return {\n        ...state,\n        calibrationInfo: {\n          isCalibration: payload.isCalibration,\n          tempScale: payload.tempScale,\n          previousToolName: payload.previousToolName || state.calibrationInfo.previousToolName,\n          isFractionalUnit: payload.isFractionalUnit,\n          defaultUnit: payload.defaultUnit\n        }\n      };\n    case 'SET_IS_ADDING_NEW_SCALE':\n      return {\n        ...state,\n        isAddingNewScale: payload.isAddingNewScale,\n      };\n    case 'UPDATE_DELETE_SCALE':\n      return {\n        ...state,\n        deleteScale: payload.deleteScale,\n      };\n    case 'CLEAR_CURRENT_CONTENT_BEING_EDITED':\n      return {\n        ...state,\n        currentContentBeingEdited: null,\n      };\n    case 'SET_ENABLE_DESKTOP_ONLY_MODE':\n      return {\n        ...state,\n        isInDesktopOnlyMode: payload.enableDesktopOnlyMode,\n      };\n    case 'PAGE_DELETION_CONFIRMATION_MODAL_POPUP':\n      return {\n        ...state,\n        pageDeletionConfirmationModalEnabled: payload.pageDeletionConfirmationModalEnabled,\n      };\n    case 'SET_PAGE_MANIPULATION_OVERLAY_ITEMS':\n      return {\n        ...state,\n        pageManipulationOverlay: payload.items,\n      };\n    case 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS':\n      return {\n        ...state,\n        multiPageManipulationControls: payload.items,\n      };\n    case 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_SMALL':\n      return {\n        ...state,\n        multiPageManipulationControlsSmall: payload.items,\n      };\n    case 'SET_MULTI_PAGE_MANIPULATION_CONTROLS_ITEMS_LARGE':\n      return {\n        ...state,\n        multiPageManipulationControlsLarge: payload.items,\n      };\n    case 'SET_PAGE_MANIPULATION_OVERLAY_ALTERNATIVE_POSITION':\n      return {\n        ...state,\n        pageManipulationOverlayAlternativePosition: payload?.position,\n      };\n    case 'SET_PAGE_MANIPULATION_OVERLAY_OPEN_BY_RIGHT_CLICK':\n      return {\n        ...state,\n        pageManipulationOverlayOpenByRightClick: payload,\n      };\n    case 'SET_THUMBNAIL_CONTROL_MENU_ITEMS':\n      return {\n        ...state,\n        thumbnailControlMenu: payload.items,\n      };\n    case 'SET_WATERMARK_MODAL_OPTIONS':\n      return { ...state, watermarkModalOptions: payload.watermarkModalOptions };\n    case 'SET_RESET_AUDIO_PLAYBACK_POSITION':\n      return { ...state, shouldResetAudioPlaybackPosition: payload.shouldResetAudioPlaybackPosition };\n    case 'SET_ACTIVE_SOUND_ANNOTATION':\n      return { ...state, activeSoundAnnotation: payload.activeSoundAnnotation };\n    case 'SET_EMBEDDED_JS_POPUP_MENU_STYLE':\n      return {\n        ...state,\n        embeddedJSPopupStyle: payload.embeddedJSPopupStyle,\n      };\n    case 'SET_ANNOTATION_FILTERS':\n      return { ...state, annotationFilters: payload.annotationFilters };\n    case 'SET_ZOOM_STEP_FACTORS':\n      return { ...state, zoomStepFactors: payload.zoomStepFactors };\n    case 'SET_CONTENTBOX_EDITOR':\n      return { ...state, contentBoxEditor: payload.contentBoxEditor };\n    case 'SET_NOTES_PANEL_CUSTOM_HEADER_OPTIONS':\n      return { ...state, notesPanelCustomHeaderOptions: payload.notesPanelCustomHeaderOptions };\n    case 'SET_NOTES_PANEL_CUSTOM_EMPTY_PANEL':\n      return { ...state, notesPanelCustomEmptyPanel: payload.notesPanelCustomEmptyPanel };\n    case 'ADD_MEASUREMENT_SCALE_PRESET': {\n      const updatedState = { ...state };\n      const addIndex = payload.index || updatedState.measurementScalePreset[payload.measurementSystem].length;\n      updatedState.measurementScalePreset[payload.measurementSystem].splice(addIndex, 0, payload.newPreset);\n      return updatedState;\n    }\n    case 'REMOVE_MEASUREMENT_SCALE_PRESET': {\n      const updatedState = { ...state };\n      updatedState.measurementScalePreset[payload.measurementSystem].splice(payload.index, 1);\n      return updatedState;\n    }\n    case 'SET_IS_MULTIPLE_SCALE_MODE':\n      return {\n        ...state,\n        isMultipleScalesMode: payload.isMultipleScalesMode,\n      };\n    case 'SET_NOTES_PANEL_MULTI_SELECT':\n      return {\n        ...state,\n        isNotesPanelMultiSelectEnabled: payload.isNotesPanelMultiSelectEnabled,\n      };\n    case 'SET_SIGNATURE_MODE':\n      return {\n        ...state,\n        signatureMode: payload.signatureMode,\n      };\n    case 'SET_INITIALS_MODE':\n      return {\n        ...state,\n        isInitialsModeEnabled: payload.isEnabled,\n      };\n    case 'SET_REPLY_ATTACHMENT_PREVIEW':\n      return { ...state, replyAttachmentPreviewEnabled: payload.replyAttachmentPreviewEnabled };\n    case 'SET_REPLY_ATTACHMENT_HANDLER':\n      return { ...state, replyAttachmentHandler: payload.replyAttachmentHandler };\n    case 'SET_CUSTOM_SETTINGS':\n      return { ...state, customSettings: payload };\n    case 'SET_ENABLE_RIGHT_CLICK_ANNOTATION_POPUP':\n      return { ...state, enableRightClickAnnotationPopup: payload.isEnabled };\n    case 'SET_TOOL_DEFAULT_STYLE_UPDATE_FROM_ANNOTATION_POPUP_ENABLED':\n      return { ...state, toolDefaultStyleUpdateFromAnnotationPopupEnabled: payload };\n    case 'SET_ANNOTATION_TOOL_STYLE_SYNCING_ENABLED':\n      return {\n        ...state,\n        annotationToolStyleSyncingEnabled: payload,\n      };\n    case 'SET_SHORTCUT_KEY_MAP':\n      return { ...state, shortcutKeyMap: payload };\n    case 'SET_MULTI_VIEWER_SYNC_SCROLLING_MODE':\n      return { ...state, multiViewerSyncScrollMode: payload };\n    case 'SET_TEXT_SIGNATURE_CANVAS_MULTIPLIER':\n      return { ...state, textSignatureCanvasMultiplier: payload.multiplier };\n    case 'SET_ENABLE_MEASUREMENT_ANNOTATIONS_FILTER':\n      return { ...state, isMeasurementAnnotationFilterEnabled: payload.isEnabled };\n    case 'SET_NOTES_IN_LEFT_PANEL':\n      return { ...state, notesInLeftPanel: payload };\n    case 'PUSH_FOCUSED_ELEMENT': {\n      return {\n        ...state,\n        focusedElementsStack: [...state.focusedElementsStack, payload],\n      };\n    }\n    case 'SET_FOCUSED_ELEMENTS_STACK': {\n      return {\n        ...state,\n        focusedElementsStack: payload,\n      };\n\n    }\n    case 'SET_KEYBOARD_OPEN': {\n      return { ...state, isKeyboardOpen: payload };\n    }\n    default:\n      return state;\n  }\n};\n","import { combineReducers } from 'redux';\n\nimport initialState from 'src/redux/initialState';\nimport viewerReducer from 'reducers/viewerReducer';\nimport searchReducer from 'reducers/searchReducer';\nimport userReducer from 'reducers/userReducer';\nimport documentReducer from 'reducers/documentReducer';\nimport wv3dPropertiesPanelReducer from 'src/redux/reducers/wv3dPropertiesPanelReducer';\nimport officeEditorReducer from 'src/redux/reducers/officeEditorReducer';\nimport digitalSignatureValidationReducer from 'src/redux/reducers/digitalSignatureValidationReducer';\nimport featureFlagsReducer from './featureFlagsReducer';\nimport { getInstanceID } from 'helpers/getRootNode';\nimport { persistReducer } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage';\n\nconst instanceId = getInstanceID();\n\nconst viewerPersistConfig = {\n  key: `viewer-${instanceId}`,\n  storage,\n  whitelist: [\n    'toolbarGroup',\n    'lastPickedToolForGroup',\n    'lastPickedToolGroup',\n    'activeGroupedItems',\n    'lastPickedToolForGroupedItems',\n    'lastPickedToolAndGroup',\n    'activeCustomRibbon',\n    'currentLanguage',\n    'activeTheme',\n    'fadePageNavigationComponent',\n    'toolDefaultStyleUpdateFromAnnotationPopupEnabled',\n    'enableNoteSubmissionWithEnter',\n    'isCommentThreadExpansionEnabled',\n    'isNotesPanelRepliesCollapsingEnabled',\n    'isNotesPanelTextCollapsingEnabled',\n    'pageDeletionConfirmationModalEnabled',\n    'thumbnailSelectingPages',\n    'shortcutKeyMap'\n  ]\n};\n\nconst searchPersistConfig = {\n  key: `search-${instanceId}`,\n  storage,\n  whitelist: ['clearSearchPanelOnClose']\n};\n\nexport default combineReducers({\n  viewer: persistReducer(viewerPersistConfig, viewerReducer(initialState.viewer)),\n  search: persistReducer(searchPersistConfig, searchReducer(initialState.search)),\n  user: userReducer(initialState.user),\n  document: documentReducer(initialState.document),\n  // TODO: refactor in another PR to remove state.advanced. It's not necessary to have this because those states never change.\n  advanced: () => initialState.advanced,\n  featureFlags: featureFlagsReducer(initialState.featureFlags),\n  wv3dPropertiesPanel: wv3dPropertiesPanelReducer(initialState.wv3dPropertiesPanel),\n  officeEditor: officeEditorReducer(initialState.officeEditor),\n  digitalSignatureValidation: digitalSignatureValidationReducer(initialState.digitalSignatureValidation),\n});\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SEARCH_TEXT': {\n      const { searchValue, replaceValue, options = {} } = payload;\n      const { caseSensitive, wholeWord, wildcard, regex, searchUp, ambientString } = options;\n      return {\n        ...state,\n        value: searchValue,\n        replaceValue: replaceValue,\n        nextResult: null,\n        nextResultIndex: null,\n        isCaseSensitive: caseSensitive || false,\n        isWholeWord: wholeWord || false,\n        isWildcard: wildcard || false,\n        isRegex: regex || false,\n        isSearchUp: searchUp || false,\n        isAmbientString: ambientString || false,\n      };\n    }\n    case 'SEARCH_TEXT_FULL': {\n      const { searchValue, options = {} } = payload;\n      const { caseSensitive, wholeWord, wildcard, regex } = options;\n      return {\n        ...state,\n        value: searchValue,\n        isCaseSensitive: caseSensitive || false,\n        isWholeWord: wholeWord || false,\n        isWildcard: wildcard || false,\n        isRegex: regex || false,\n        isSearchUp: false,\n        isAmbientString: true,\n      };\n    }\n    case 'SET_SEARCH_VALUE': {\n      return {\n        ...state,\n        value: payload.value,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_REPLACE_VALUE': {\n      return {\n        ...state,\n        replaceValue: payload.replaceText,\n      };\n    }\n    case 'SET_NEXT_RESULT': {\n      return {\n        ...state,\n        nextResult: payload.nextResult,\n        nextResultIndex: payload.nextResultIndex,\n      };\n    }\n    case 'ADD_RESULT': {\n      return {\n        ...state,\n        results: [...state.results, payload.result],\n      };\n    }\n    case 'SET_CASE_SENSITIVE': {\n      return {\n        ...state,\n        isCaseSensitive: payload.isCaseSensitive,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_WHOLE_WORD': {\n      return {\n        ...state,\n        isWholeWord: payload.isWholeWord,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_WILD_CARD': {\n      return {\n        ...state,\n        isWildcard: payload.isWildcard,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_SEARCH_ERROR': {\n      return {\n        ...state,\n        errorMessage: payload.errorMessage,\n      };\n    }\n    case 'RESET_SEARCH': {\n      return {\n        ...initialState,\n        value: state.value,\n        isCaseSensitive: state.isCaseSensitive,\n        isWholeWord: state.isWholeWord,\n        isWildcard: state.isWildcard,\n        nextResult: null,\n        nextResultIndex: null,\n      };\n    }\n    case 'SET_SEARCH_RESULTS': {\n      return {\n        ...state,\n        results: payload,\n      };\n    }\n    case 'SET_CLEAR_SEARCH_ON_PANEL_CLOSE': {\n      return {\n        ...state,\n        clearSearchPanelOnClose: payload,\n      };\n    }\n    case 'SET_PROCESSING_SEARCH_RESULTS': {\n      return {\n        ...state,\n        isProcessingSearchResults: payload.isProcessingSearchResults,\n      };\n    }\n    case 'REPLACE_REDACTION_SEARCH_PATTERN': {\n      return {\n        ...state,\n        redactionSearchPatterns: {\n          ...state.redactionSearchPatterns,\n          [payload.searchPattern]: {\n            ...state.redactionSearchPatterns[payload.searchPattern],\n            regex: payload.regex,\n          }\n        }\n      };\n    }\n    case 'ADD_REDACTION_SEARCH_PATTERN': {\n      return {\n        ...state,\n        redactionSearchPatterns: {\n          ...state.redactionSearchPatterns,\n          [payload.searchPattern.type]: payload.searchPattern,\n        }\n      };\n    }\n    case 'REMOVE_REDACTION_SEARCH_PATTERN': {\n      const updatedRedactionSearchPatterns = { ...state.redactionSearchPatterns };\n      delete updatedRedactionSearchPatterns[payload.searchPatternType];\n      return {\n        ...state,\n        redactionSearchPatterns: updatedRedactionSearchPatterns,\n      };\n    }\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_USER_NAME':\n      return { ...state, name: payload.userName };\n    case 'SET_ADMIN_USER':\n      return { ...state, isAdmin: payload.isAdminUser };\n    default:\n      return state;\n  }\n};","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_DOCUMENT_FILE':\n      return { ...state, file: payload.documentFile, path: payload.documentFile.name, pdfDoc: null };\n    case 'SET_PAGE_NUMBER':\n      return { ...state, pageNumber: payload.documentPageNumber };\n    case 'SET_TOTAL_PAGES':\n      return {\n        ...state,\n        totalPages: {\n          ...state.totalPages,\n          [payload.documentViewerKey]: payload.totalPages,\n        }\n      };\n    case 'SET_OUTLINES':\n      return { ...state, outlines: payload.outlines };\n    case 'SET_BOOKMARKS':\n    {\n      return { ...state, bookmarks: payload.bookmarks };\n    }\n    case 'ADD_BOOKMARK':\n    case 'EDIT_BOOKMARK':\n    {\n      const newBookmarks = { ...state.bookmarks };\n      newBookmarks[payload.pageIndex] = payload.text;\n      return { ...state, bookmarks: newBookmarks };\n    }\n    case 'REMOVE_BOOKMARK':\n    {\n      const newBookmarks = { ...state.bookmarks };\n      delete newBookmarks[payload.pageIndex];\n\n      return { ...state, bookmarks: newBookmarks };\n    }\n    case 'SET_PORTFOLIO':\n      return { ...state, portfolio: payload.portfolio };\n    case 'SET_LAYERS':\n      return { ...state, layers: payload.layers };\n    case 'SET_PASSWORD_ATTEMPTS':\n      return { ...state, passwordAttempts: payload.attempt };\n    case 'SET_PRINT_QUALITY':\n      return { ...state, printQuality: payload.quality };\n    case 'SET_DEFAULT_PRINT_OPTIONS':\n      return { ...state, defaultPrintOptions: payload.options };\n    case 'SET_LOADING_PROGRESS':\n      return { ...state, loadingProgress: payload.progress };\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_WV3D_PROPERTIES_PANEL_MODEL_DATA': {\n      const { modelData } = payload;\n\n      return {\n        ...state,\n        modelData,\n      };\n    }\n\n    case 'SET_WV3D_PROPERTIES_PANEL_SCHEMA': {\n      const { schema } = payload;\n\n      return {\n        ...state,\n        schema,\n      };\n    }\n\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_OFFICE_EDITOR_CURSOR_PROPERTIES': {\n      const { cursorProperties } = payload;\n\n      return {\n        ...state,\n        cursorProperties,\n      };\n    }\n    case 'SET_OFFICE_EDITOR_SELECTION_PROPERTIES': {\n      const { selectionProperties } = payload;\n      return {\n        ...state,\n        selectionProperties,\n      };\n    }\n    case 'ADD_OFFICE_EDITOR_AVAILABLE_FONT_FACE': {\n      const { fontFace } = payload;\n      const fontFaces = state.availableFontFaces.slice();\n      fontFaces.push(fontFace);\n      return {\n        ...state,\n        availableFontFaces: fontFaces.sort(),\n      };\n    }\n    case 'SET_OFFICE_EDITOR_EDIT_MODE':\n      return {\n        ...state,\n        editMode: payload.editMode,\n      };\n    default:\n      return state;\n  }\n};\n","export default (initialState) => (state = initialState, action) => {\n  const { type, payload } = action;\n\n  switch (type) {\n    case 'SET_VALIDATION_MODAL_WIDGET_NAME':\n      return {\n        ...state,\n        validationModalWidgetName: payload.validationModalWidgetName,\n      };\n    case 'SET_VERIFICATION_RESULT':\n      return { ...state, verificationResult: payload.result };\n    case 'ADD_TRUSTED_CERTIFICATES':\n      /**\n       * To mimic the behavior of the Core implementation, where certificates\n       * can only be added but not removed, only allow this action to append\n       * to the existing array\n       */\n      return {\n        ...state,\n        certificates: [...state.certificates, ...payload.certificates],\n      };\n    case 'ADD_TRUST_LIST':\n      /**\n       * The Core implementation only allows a single Trust List to be passed\n       * as a parameter, but in order to allow flexibility of future potential\n       * requirements where a developer may want to add multiple Trust Lists,\n       * we are storing an Array of Trust Lists\n       */\n      return {\n        ...state,\n        trustLists: [...state.trustLists, payload.trustList],\n      };\n    case 'SET_IS_REVOCATION_CHECKING_ENABLED':\n      return {\n        ...state,\n        isRevocationCheckingEnabled: payload.isRevocationCheckingEnabled,\n      };\n    case 'SET_REVOCATION_PROXY_PREFIX':\n      return {\n        ...state,\n        revocationProxyPrefix: payload.revocationProxyPrefix,\n      };\n    default:\n      return state;\n  }\n};\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { PureComponent } from 'react'; // eslint-disable-line import/no-unresolved\n\nexport var PersistGate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inherits(PersistGate, _PureComponent);\n\n  function PersistGate() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, PersistGate);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PersistGate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      bootstrapped: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_unsubscribe\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePersistorState\", function () {\n      var persistor = _this.props.persistor;\n\n      var _persistor$getState = persistor.getState(),\n          bootstrapped = _persistor$getState.bootstrapped;\n\n      if (bootstrapped) {\n        if (_this.props.onBeforeLift) {\n          Promise.resolve(_this.props.onBeforeLift()).finally(function () {\n            return _this.setState({\n              bootstrapped: true\n            });\n          });\n        } else {\n          _this.setState({\n            bootstrapped: true\n          });\n        }\n\n        _this._unsubscribe && _this._unsubscribe();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(PersistGate, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._unsubscribe = this.props.persistor.subscribe(this.handlePersistorState);\n      this.handlePersistorState();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this._unsubscribe && this._unsubscribe();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof this.props.children === 'function' && this.props.loading) console.error('redux-persist: PersistGate expects either a function child or loading prop, but not both. The loading prop will be ignored.');\n      }\n\n      if (typeof this.props.children === 'function') {\n        return this.props.children(this.state.bootstrapped);\n      }\n\n      return this.state.bootstrapped ? this.props.children : this.props.loading;\n    }\n  }]);\n\n  return PersistGate;\n}(PureComponent);\n\n_defineProperty(PersistGate, \"defaultProps\", {\n  children: null,\n  loading: null\n});","import './LogoBar.scss';\nimport React from 'react';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport { useSelector } from 'react-redux';\nimport packageConfig from '../../../package.json';\nimport Button from '../Button';\nimport { isMobileSize } from 'src/helpers/getDeviceSize';\n\nconst LogoBar = () => {\n  const [\n    isDisabled,\n  ] = useSelector((state) => [\n    selectors.isElementDisabled(state, DataElements.LOGO_BAR),\n  ]);\n\n  const logoText = isMobileSize() ? 'Apryse' : 'Powered by Apryse';\n  const versionText = isMobileSize() ? packageConfig.version : `Version ${packageConfig.version}`;\n  const apryseURL = 'https://apryse.com/products/webviewer';\n  const apryseRedirect = () => {\n    window.top.location.href = apryseURL;\n  };\n\n  return isDisabled ? null : (\n    <div className=\"LogoBar\" data-element={DataElements.LOGO_BAR}>\n      <div className=\"logo-container\">\n        <Button\n          className=\"logo-button\"\n          img=\"apryse-logo\"\n          dataElement=\"apryseLogoButton\"\n          label={logoText}\n          onClick={apryseRedirect}\n        />\n      </div>\n      <div className=\"version-container\">\n        <a href={apryseURL} target=\"_top\" className=\"version\">{versionText}</a>\n      </div>\n    </div>\n  );\n};\n\nexport default LogoBar;\n","import LogoBar from './LogoBar';\n\nexport default LogoBar;\n","import React, { useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport './Accessibility.scss';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport getRootNode from 'helpers/getRootNode';\n\nfunction Accessibility() {\n  const dispatch = useDispatch();\n  const [\n    pageNumber,\n    isAccessibleMode,\n    isNotesPanelOpen,\n    isNotesPanelDisabled,\n    isSearchPanelOpen,\n    isSearchPanelDisabled,\n  ] = useSelector((state) => [\n    selectors.getCurrentPage(state),\n    selectors.isAccessibleMode(state),\n    selectors.isElementOpen(state, 'notesPanel'),\n    selectors.isElementDisabled(state, 'notesPanel'),\n    selectors.isElementOpen(state, 'searchPanel'),\n    selectors.isElementDisabled(state, 'searchPanel'),\n  ]);\n  const [isVisible, setIsVisible] = useState(false);\n\n  const onFocus = () => setIsVisible(true);\n  const onBlur = () => setIsVisible(false);\n\n  const onSkipToDocument = () => {\n    getRootNode().querySelector(`#pageText${pageNumber}`).focus();\n  };\n\n  const onSkipToSearch = () => {\n    if (isSearchPanelOpen) {\n      const searchEl = getRootNode().querySelector('#SearchPanel__input');\n      searchEl && searchEl.focus();\n    } else {\n      dispatch(actions.openElement('searchPanel'));\n    }\n  };\n\n  const onSkipToNotes = () => {\n    if (isNotesPanelOpen) {\n      const noteEl = getRootNode().querySelector('#NotesPanel__input');\n      noteEl && noteEl.focus();\n    } else {\n      dispatch(actions.openElement('notesPanel'));\n    }\n  };\n\n  if (!isAccessibleMode) {\n    return null;\n  }\n\n  const a11yClass = classNames('Accessibility', isVisible ? 'visible' : 'hidden');\n\n  return (\n    <div className={a11yClass} data-element=\"accessibility\" onFocus={onFocus} onBlur={onBlur}>\n      <div>Skip to: </div>\n\n      <button onClick={onSkipToDocument}>Document</button>\n      {isSearchPanelDisabled ? null : <button onClick={onSkipToSearch}>Search</button>}\n      {isNotesPanelDisabled ? null : <button onClick={onSkipToNotes}>Notes</button>}\n    </div>\n  );\n}\n\nexport default Accessibility;\n","import Accessibility from './Accessibility';\n\nexport default Accessibility;","import React, { useRef, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport Measure from 'react-measure';\nimport { useTranslation } from 'react-i18next';\n\nconst ScrollGroup = ({ children }) => {\n  const [t] = useTranslation();\n  const scrollRef = useRef();\n  const [isScrolledToEnd, setIsScrolledToEnd] = useState(false);\n  const [isScrolledToStart, setIsScrolledToStart] = useState(false);\n\n  const checkScrollPosition = () => {\n    if (scrollRef.current) {\n      const {\n        scrollWidth,\n        scrollLeft,\n        offsetWidth,\n      } = scrollRef.current;\n\n      if (scrollLeft >= (scrollWidth - offsetWidth)) {\n        setIsScrolledToEnd(true);\n      } else {\n        setIsScrolledToEnd(false);\n      }\n\n      if (scrollLeft === 0) {\n        setIsScrolledToStart(true);\n      } else {\n        setIsScrolledToStart(false);\n      }\n    }\n  };\n\n  useEffect(() => {\n    checkScrollPosition();\n  });\n\n  return (\n    <Measure\n      onResize={() => {\n        checkScrollPosition();\n      }}\n    >\n      {({ measureRef }) => (\n        <div\n          ref={measureRef}\n          className=\"tool-group-buttons-container\"\n        >\n          {!isScrolledToStart &&\n            <div\n              className={classNames(\n                'chevron-scroll',\n                'left',\n              )}\n            >\n              <div\n                className={classNames(\n                  'scroll-edge',\n                  'left',\n                )}\n              />\n              <button\n                className={classNames(\n                  'tool-group-button',\n                )}\n                onClick={() => {\n                  // Move two tools over\n                  // don't use scrollTo as it doesn't work in IE11\n                  scrollRef.current.scrollTop = 0;\n                  scrollRef.current.scrollLeft -= 54 * 2;\n                }}\n                aria-label={t('action.prev')}\n              >\n                <Icon glyph=\"icon-chevron-left\" />\n              </button>\n            </div>}\n          {!isScrolledToEnd &&\n            <div\n              className={classNames(\n                'chevron-scroll',\n                'right',\n              )}\n            >\n              <button\n                className={classNames(\n                  'tool-group-button',\n                )}\n                onClick={() => {\n                  // Move two tools over\n                  // don't use scrollTo as it doesn't work in IE11\n                  scrollRef.current.scrollTop = 0;\n                  scrollRef.current.scrollLeft += 54 * 2;\n                }}\n                aria-label={t('action.next')}\n              >\n                <Icon glyph=\"icon-chevron-right\" />\n              </button>\n            </div>}\n          <div\n            className=\"tool-group-buttons-scroll\"\n            ref={scrollRef}\n            onScroll={checkScrollPosition}\n          >\n            {\n              children\n            }\n          </div>\n        </div>\n      )}\n    </Measure>\n  );\n};\n\nexport default ScrollGroup;\n","import React from 'react';\nimport ToolGroupButton from 'components/ToolGroupButton';\nimport ScrollGroup from './ScrollGroup';\n\nconst ToolGroupButtonsScroll = ({ toolGroupButtonsItems }) => {\n  return <ScrollGroup>\n    {\n      toolGroupButtonsItems.map((toolBtn, i) => {\n        const { type, dataElement, hidden } = toolBtn;\n        const mediaQueryClassName = hidden ? hidden.map((screen) => `hide-in-${screen}`).join(' ') : '';\n        const innerKey = `${type}-${dataElement || i}`;\n\n        return (\n          <React.Fragment key={innerKey}>\n            {\n              <ToolGroupButton key={innerKey} mediaQueryClassName={mediaQueryClassName} {...toolBtn} />\n            }\n          </React.Fragment>\n        );\n      })}\n  </ScrollGroup>;\n};\n\nexport default ToolGroupButtonsScroll;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolButton from 'components/ToolButton';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport ToolGroupButton from 'components/ToolGroupButton';\nimport ActionButton from 'components/ActionButton';\nimport StatefulButton from 'components/StatefulButton';\nimport CustomElement from 'components/CustomElement';\nimport ToolGroupButtonsScroll from './ToolGroupButtonsScroll';\nimport ScrollGroup from './ScrollGroup';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { isMobileDeviceFunc } from 'helpers/device';\n\nimport './HeaderItems.scss';\n\nclass HeaderItems extends React.PureComponent {\n  static propTypes = {\n    isToolGroupReorderingEnabled: PropTypes.bool.isRequired,\n    items: PropTypes.arrayOf(PropTypes.object).isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n    isOfficeEditorMode: PropTypes.bool,\n  };\n\n  render() {\n    const { items, isToolGroupReorderingEnabled, isInDesktopOnlyMode, isOfficeEditorMode } = this.props;\n    let handledToolGroupButtons = false;\n\n    const headers = items.map((item, i) => {\n      const { type, dataElement, hidden, hiddenOnMobileDevice, isOfficeEditorOnly } = item;\n      if (isOfficeEditorOnly && !isOfficeEditorMode) {\n        return null;\n      }\n      let mediaQueryClassName = hidden\n        ? hidden\n          .map((screen) => {\n            let result = '';\n            if (isInDesktopOnlyMode) {\n              // if in desktop only mode and if it should hide in desktop\n              // append style to always make it hidden\n              if (screen === 'desktop') {\n                result = `always-hide hide-in-${screen}`;\n              }\n            } else {\n              result = `hide-in-${screen}`;\n            }\n            return result;\n          })\n          .join(' ')\n        : '';\n      if (hiddenOnMobileDevice && isMobileDeviceFunc()) {\n        mediaQueryClassName += ' hide-in-mobile hide-in-small-mobile';\n      }\n      const key = `${type}-${dataElement || i}`;\n\n      switch (type) {\n        case 'toolButton':\n          return <ToolButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'scrollGroup':\n          return (\n            <ScrollGroup key={key}>\n              <HeaderItems\n                items={item.children}\n                isToolGroupReorderingEnabled={isToolGroupReorderingEnabled}\n                isInDesktopOnlyMode={isInDesktopOnlyMode}\n              />\n            </ScrollGroup>\n          );\n        case 'toolGroupButton':\n          if (!isToolGroupReorderingEnabled) {\n            return <ToolGroupButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n          }\n          if (!handledToolGroupButtons) {\n            handledToolGroupButtons = true;\n            const toolGroupButtonsItems = items.filter(({ type }) => type === 'toolGroupButton');\n            return <ToolGroupButtonsScroll key={key} toolGroupButtonsItems={toolGroupButtonsItems} />;\n          }\n          return null;\n        case 'toggleElementButton':\n          return <ToggleElementButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'actionButton':\n          return <ActionButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'statefulButton':\n          return <StatefulButton key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'customElement':\n          return <CustomElement key={key} mediaQueryClassName={mediaQueryClassName} {...item} />;\n        case 'spacer':\n        case 'divider':\n          return <div key={key} className={`${type} ${mediaQueryClassName}`}></div>;\n        default:\n          console.warn(`${type} is not a valid header item type.`);\n          return null;\n      }\n    });\n\n    return <div className=\"HeaderItems\">{headers}</div>;\n  }\n}\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <HeaderItems {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import connectedComponent from './HeaderItems';\n\nexport default connectedComponent;","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport './Tab.scss';\nimport Button from 'components/Button';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nconst propTypes = {\n  tab: PropTypes.any.isRequired,\n  isActive: PropTypes.bool,\n  isToLeftOfActive: PropTypes.bool,\n  closeTab: PropTypes.func,\n  setActive: PropTypes.func,\n  onDragStart: PropTypes.func,\n  onDragOver: PropTypes.func,\n  onDragLeave: PropTypes.func,\n  id: PropTypes.string,\n};\n\nconst Tab = ({ tab, setActive, onDragLeave, onDragStart, onDragOver, isActive, closeTab, id, isToLeftOfActive }) => {\n  const [disabled, setDisabled] = useState(tab?.disabled);\n  const removeExtension = true;\n  const name = removeExtension ? tab.options.filename.split('.')[0] : tab.options.filename;\n  const { t } = useTranslation();\n\n  useEffect(() => {\n    if (tab && tab.disabled !== disabled) {\n      setDisabled(tab.disabled);\n    }\n  }, [tab]);\n\n  return (\n    <div className={'draggable-tab'}\n      onDragOver={onDragOver} onDragStart={onDragStart} onDragLeave={onDragLeave} draggable id={id}\n    >\n      <div className={classNames({ Tab: true, active: isActive })} onClick={setActive}>\n        <div className={classNames({ 'file-text': true, disabled })} >\n          <p>{name}</p>\n        </div>\n        <div className={'close-button-wrapper'}>\n          <Button\n            img=\"icon-close\"\n            title=\"action.close\"\n            onClick={closeTab}\n            ariaLabel={`${t('action.close')} ${name}`}\n          />\n          {!isActive && !isToLeftOfActive && <div className=\"divider\"/>}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nTab.propTypes = propTypes;\n\nexport default Tab;","import React from 'react';\nimport './HoverTab.scss';\nimport Icon from 'components/Icon';\n\nconst HoverTab = ({ onDragOver, onDragLeave }) => {\n  return (\n    <div className=\"HoverTab\" onDragOver={onDragOver} onDragLeave={onDragLeave}>\n      <Icon glyph=\"icon-download\" />\n    </div>\n  );\n};\n\nexport default HoverTab;","import React, { useEffect, useState } from 'react';\nimport './CollapsedTab.scss';\nimport Button from 'components/Button';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst propTypes = {\n  tab: PropTypes.any.isRequired,\n  isActive: PropTypes.bool,\n  closeTab: PropTypes.func,\n  setActive: PropTypes.func,\n  onDragStart: PropTypes.func,\n  onDragOver: PropTypes.func,\n  onDragLeave: PropTypes.func,\n  id: PropTypes.string,\n};\n\nconst Tab = ({ tab, setActive, onDragStart, closeTab, id }) => {\n  const [disabled, setDisabled] = useState(tab?.disabled);\n  const removeExtension = true;\n  const name = removeExtension ? tab.options.filename.split('.')[0] : tab.options.filename;\n  const [isHovering, setIsHovering] = useState(false);\n\n  useEffect(() => {\n    setDisabled(tab?.disabled);\n  }, [tab]);\n\n  return (\n    <div className={'draggable-collapsed-tab'}\n      onDragStart={onDragStart}\n      draggable\n      id={id}\n      onMouseEnter={() => setIsHovering(true)}\n      onMouseLeave={() => setIsHovering(false)}>\n      <div className={'CollapsedTab'}>\n        <div className={classNames({ 'file-text': true, disabled })} onClick={setActive}>\n          <p>{name}</p>\n        </div>\n        <Button\n          img=\"icon-close\"\n          title=\"action.close\"\n          onClick={closeTab}\n          className={classNames({ 'hidden-button': !isHovering })}\n        />\n      </div>\n    </div>\n  );\n};\n\nTab.propTypes = propTypes;\n\nexport default Tab;","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n  const { innerWidth: width, innerHeight: height } = window;\n  return {\n    width,\n    height\n  };\n}\n\nexport default function useWindowDimensions() {\n  const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n  useEffect(() => {\n    function handleResize() {\n      setWindowDimensions(getWindowDimensions());\n    }\n\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  return windowDimensions;\n}\n","import React, { useEffect, useRef, useState, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport './TabsHeader.scss';\nimport Tab from 'components/TabsHeader/Tab/Tab';\nimport Button from 'components/Button';\nimport HoverTab from 'components/TabsHeader/HoverTab/HoverTab';\nimport FlyoutMenu from 'components/FlyoutMenu/FlyoutMenu';\nimport CollapsedTab from 'components/TabsHeader/CollapsedTab/CollapsedTab';\nimport classNames from 'classnames';\nimport useWindowDimensions from 'helpers/useWindowsDimensions';\nimport getRootNode from 'helpers/getRootNode';\nimport ToggleElementButton from 'components/ToggleElementButton';\nimport useFocusHandler from 'hooks/useFocusHandler';\n\n\nconst TabsHeader = () => {\n  const dispatch = useDispatch();\n  const [isDragging, setDragging] = useState(false);\n  const [dragIndex, setDragIndex] = useState();\n  const [dropTarget, setDropTarget] = useState();\n  const [hovering, setHovering] = useState();\n  const hoveredTab = useRef();\n  const [isMultiTab, tabManager, currTabs, activeTab, isEmptyPageOpen] = useSelector((state) => [\n    selectors.getIsMultiTab(state),\n    selectors.getTabManager(state),\n    selectors.getTabs(state),\n    selectors.getActiveTab(state),\n    selectors.getIsMultiTab(state) && selectors.getTabs(state).length === 0\n  ]);\n  const { width } = useWindowDimensions();\n\n  useEffect(() => {\n    const div = document.createElement('div');\n    div.id = '0';\n    ReactDOM.render(<HoverTab onDragOver={onDragOverHoverTab} onDragLeave={onDragLeave} />, div);\n    hoveredTab.current = div;\n  }, []);\n\n  const breakpoint = Math.floor((width - 80) / 180); // Browser width minus a space for the add button, divided by max-width of tab\n  const activeIndex = currTabs?.findIndex((t) => t.id === activeTab);\n\n  useEffect(() => {\n    if (activeIndex >= breakpoint && breakpoint > 0 && tabManager) {\n      tabManager.moveTab(activeIndex, breakpoint - 1);\n    }\n  }, [breakpoint, activeIndex, tabManager]);\n\n  const onDragStart = (e, index) => {\n    if (isDragging) {\n      return;\n    }\n    setDragging(true);\n    setDragIndex(index);\n    setDropTarget(index);\n    e.dataTransfer.setData('text', '');\n    e.dataTransfer.dropEffect = 'move';\n    e.dataTransfer.effectAllowed = 'move';\n  };\n\n  const onDragOver = (e, index, id) => {\n    e.preventDefault();\n    e.stopPropagation();\n    const element = getRootNode().querySelector(`#tab-${id}`);\n    const centerX = element.offsetLeft + element.offsetWidth / 2;\n    const moveLeft = centerX >= e.pageX;\n    if (index === dragIndex ||\n      (index + 1 === dragIndex && !moveLeft) ||\n      (index - 1 === dragIndex && moveLeft)) {\n      return; // End because moving to same spot\n    }\n    hoveredTab.current.id = id;\n    if (moveLeft && index > dragIndex && index !== 0) {\n      setDropTarget(index - 1);\n    } else if (!moveLeft && index < dragIndex && index !== currTabs.length - 1) {\n      setDropTarget(index + 1);\n    } else {\n      setDropTarget(index);\n    }\n    moveLeft ? element.prepend(hoveredTab.current) : element.append(hoveredTab.current);\n    setHovering(true);\n  };\n\n  const onDragOverHoverTab = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!hovering) {\n      setHovering(true);\n    }\n  };\n\n  const onDragLeave = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    if (!getRootNode().querySelectorAll('.TabsHeader')[0]?.contains(e.target)) {\n      hoveredTab.current.remove();\n    }\n    setHovering(false);\n  };\n\n  const onDrop = () => {\n    setHovering(false);\n    if (!isDragging || dragIndex === dropTarget) {\n      return;\n    }\n    tabManager.moveTab(dragIndex, dropTarget);\n    hoveredTab.current.remove();\n  };\n\n  const onDragEnd = () => {\n    hoveredTab.current.remove();\n    setDragging(false);\n    setDragIndex(null);\n  };\n\n  const [tabs, additionalTabs] = useMemo(() => {\n    if (!isMultiTab) {\n      return [null, null];\n    }\n    const activeIndex = currTabs?.findIndex((t) => t.id === activeTab);\n    if (activeIndex >= breakpoint && breakpoint > 0 && tabManager) {\n      tabManager.moveTab(activeIndex, breakpoint - 1);\n    }\n    const renderedTabs = currTabs.map((tab, index) => {\n      if (index < breakpoint) {\n        return <Tab\n          onDragStart={(e) => onDragStart(e, index)}\n          onDragOver={(e) => onDragOver(e, index, tab.id)}\n          onDragLeave={onDragLeave}\n          setActive={() => setActiveTab(tab.id)}\n          key={tab.id}\n          id={`tab-${tab.id}`}\n          isActive={tab.id === activeTab}\n          closeTab={(e) => {\n            e.stopPropagation();\n            deleteTab(tab.id);\n          }}\n          tab={tab}\n          isToLeftOfActive={index === activeIndex - 1}\n        />;\n      }\n      return <CollapsedTab\n        onDragStart={(e) => onDragStart(e, index)}\n        tab={tab}\n        key={tab.id}\n        id={`tab-${tab.id}`}\n        closeTab={() => deleteTab(tab.id)}\n        setActive={() => setActiveTab(tab.id)}\n      />;\n    });\n    return [renderedTabs?.slice(0, breakpoint), renderedTabs?.slice(breakpoint, renderedTabs.length)];\n  }, [tabManager, currTabs, breakpoint, setActiveTab, deleteTab, onDragEnd, onDragStart, onDragOver, onDragLeave]);\n\n  async function setActiveTab(id) {\n    const tabIndex = currTabs.findIndex((t) => t.id === id);\n    if (tabIndex >= breakpoint) {\n      tabManager.moveTab(tabIndex, breakpoint - 1);\n    }\n    activeTab !== id && await tabManager.setActiveTab(id, true);\n  }\n\n  function deleteTab(id) {\n    tabManager.deleteTab(id, dispatch);\n  }\n\n  const openFile = useFocusHandler(() => dispatch(actions.openElement('OpenFileModal')));\n\n  if (!isMultiTab) {\n    return null;\n  }\n  return (\n    <div className=\"TabsHeader\" onDrop={onDrop} onDragEnd={onDragEnd}>\n      {tabs}\n      <div className={classNames({\n        'add-button': true,\n        'add-button-with-label': isEmptyPageOpen,\n      })}>\n        {additionalTabs?.length > 0 && <ToggleElementButton\n          className=\"dropdown-menu tab-dropdown-button\"\n          dataElement=\"tabTrigger\"\n          element=\"tabMenu\"\n          label={additionalTabs.length.toString()}\n        />}\n        <Button\n          title=\"action.openFile\"\n          img=\"icon-menu-add\"\n          onClick={openFile}\n          dataElement={'addTabButton'}\n          label={isEmptyPageOpen ? 'action.openFile' : ''}\n        />\n        {additionalTabs?.length > 0 && <FlyoutMenu\n          menu=\"tabMenu\"\n          trigger=\"tabTrigger\"\n          onClose={undefined}\n        >\n          {additionalTabs}\n        </FlyoutMenu>}\n      </div>\n    </div>\n  );\n};\n\nexport default TabsHeader;\n","import TabsHeader from './TabsHeader';\n\nexport default TabsHeader;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport HeaderItems from 'components/HeaderItems';\nimport TabsHeader from 'components/TabsHeader';\n\nimport selectors from 'selectors';\nimport classNames from 'classnames';\n\nimport './Header.scss';\n\nclass Header extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    activeHeaderItems: PropTypes.array.isRequired,\n    isToolGroupReorderingEnabled: PropTypes.bool,\n    isInDesktopOnlyMode: PropTypes.bool,\n    isToolsHeaderOpen: PropTypes.bool,\n    isMultiTab: PropTypes.bool,\n    isOfficeEditorMode: PropTypes.bool,\n    currentToolbarGroup: PropTypes.string,\n  }\n\n  render() {\n    const {\n      isDisabled,\n      activeHeaderItems,\n      isOpen,\n      isToolsHeaderOpen,\n      currentToolbarGroup,\n      isMultiTab,\n      isToolGroupReorderingEnabled,\n      isInDesktopOnlyMode,\n      isOfficeEditorMode,\n    } = this.props;\n\n    if (isDisabled || !isOpen) {\n      return null;\n    }\n\n    return (\n      <>\n        <TabsHeader />\n        <div\n          className={classNames({\n            Header: true,\n            MainHeader: true,\n          })}\n          data-element=\"header\"\n        >\n          <HeaderItems\n            items={activeHeaderItems}\n            isToolGroupReorderingEnabled={isToolGroupReorderingEnabled}\n            isInDesktopOnlyMode={isInDesktopOnlyMode}\n            isOfficeEditorMode={isOfficeEditorMode}\n          />\n          {(!isToolsHeaderOpen || currentToolbarGroup === 'toolbarGroup-View') && !isMultiTab\n          && <div className=\"view-header-border\" />}\n        </div>\n      </>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  isMultiTab: selectors.getIsMultiTab(state),\n  currentToolbarGroup: selectors.getCurrentToolbarGroup(state),\n  isToolsHeaderOpen: selectors.isElementOpen(state, 'toolsHeader'),\n  isDisabled: selectors.isElementDisabled(state, 'header'),\n  isOpen: selectors.isElementOpen(state, 'header'),\n  activeHeaderItems: selectors.getActiveHeaderItems(state),\n  isToolGroupReorderingEnabled: selectors.isToolGroupReorderingEnabled(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n  isOfficeEditorMode: selectors.getIsOfficeEditorMode(state),\n});\n\nexport default connect(mapStateToProps)(Header);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport HeaderItems from 'components/HeaderItems';\nimport { isMobileSize, isTabletAndMobileSize } from 'helpers/getDeviceSize';\n\nimport selectors from 'selectors';\n\nimport './Header.scss';\n\nclass ToolsHeader extends React.PureComponent {\n  static propTypes = {\n    isDisabled: PropTypes.bool,\n    isHeaderDisabled: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    activeHeaderItems: PropTypes.array.isRequired,\n    isToolGroupReorderingEnabled: PropTypes.bool,\n    isInDesktopOnlyMode: PropTypes.bool\n  }\n\n  render() {\n    const { isDisabled, isHeaderDisabled, activeHeaderItems, isOpen, currentToolbarGroup, isToolGroupReorderingEnabled, isInDesktopOnlyMode } = this.props;\n    const isVisible = !(isDisabled || isHeaderDisabled) && isOpen && currentToolbarGroup !== 'toolbarGroup-View';\n\n    return (\n      <div\n        className={classNames({\n          'HeaderToolsContainer': true,\n          'closed': !isVisible,\n        })}\n        data-element=\"toolsHeader\"\n      >\n        <div\n          className=\"MainHeader Tools\"\n        >\n          <HeaderItems items={activeHeaderItems} isToolGroupReorderingEnabled={isToolGroupReorderingEnabled} isInDesktopOnlyMode={isInDesktopOnlyMode} />\n        </div>\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  currentToolbarGroup: selectors.getCurrentToolbarGroup(state),\n  isDisabled: selectors.isElementDisabled(state, 'toolsHeader'),\n  isHeaderDisabled: selectors.isElementDisabled(state, 'header'),\n  isOpen: selectors.isElementOpen(state, 'toolsHeader'),\n  activeHeaderItems: selectors.getToolsHeaderItems(state),\n  isToolsOverlayOpen: selectors.isElementOpen(state, 'toolsOverlay'),\n  isToolsOverlayDisabled: selectors.isElementDisabled(state, 'toolsOverlay'),\n  isSignatureOverlayOpen: selectors.isElementOpen(state, 'signatureOverlay'),\n  isSignatureOverlayDisabled: selectors.isElementDisabled(state, 'signatureOverlay'),\n  isToolGroupReorderingEnabled: selectors.isToolGroupReorderingEnabled(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state)\n});\n\nconst mapDispatchToProps = {\n  setActiveToolGroup: actions.setActiveToolGroup,\n};\n\nconst ConnectedToolsHeader = connect(mapStateToProps, mapDispatchToProps)(ToolsHeader);\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  const isTabletAndMobile = isTabletAndMobileSize();\n\n  return (\n    <ConnectedToolsHeader {...props} isMobile={isMobile} isTabletAndMobile={isTabletAndMobile} />\n  );\n};\n\nexport default connectedComponent;\n","import React from 'react';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport Header from './Header';\nimport ToolsHeader from './ToolsHeader';\n\nfunction HeaderContainer() {\n  const [\n    featureFlags,\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n    ], shallowEqual);\n  const { customizableUI } = featureFlags;\n\n  if (!customizableUI) {\n    return (\n      <>\n        <Header />\n        <ToolsHeader />\n      </>\n    );\n  }\n\n  return null;\n}\n\nexport default HeaderContainer;","import HeaderContainer from './HeaderContainer';\n\nexport default HeaderContainer;","import { isIEEdge, isIE11 } from 'helpers/device';\n\n// When a panel opens/closes, we want to shift the container accordingly\n// The normal way to do this is through css\n// For example, when left panel opens, we add 'left-panel' to the className, make the container width become calc(100%-#{$left-panel-width})\n// and use css transition to achieve a smooth panel opening animation\n// However, IE11 and Edge haven't supported using transition and calc(...) together,\n// So we have to calculate the width manually.\nexport const updateContainerWidth = (prevProps, props, container) => {\n  const { leftPanelWidth = 300 } = props;\n  const rightPanelWidth = 300;\n\n  const leftPanelClosed = prevProps.isLeftPanelOpen && !props.isLeftPanelOpen;\n  if (leftPanelClosed) {\n    expandContainerWidthBy(leftPanelWidth, container);\n    container.style.marginLeft = '0px';\n  }\n\n  const rightPanelClosed = prevProps.isRightPanelOpen && !props.isRightPanelOpen;\n  if (rightPanelClosed) {\n    expandContainerWidthBy(rightPanelWidth, container);\n  }\n\n  const leftPanelOpened = !prevProps.isLeftPanelOpen && props.isLeftPanelOpen;\n  if (leftPanelOpened) {\n    shrinkContainerWidthBy(leftPanelWidth, container);\n    container.style.marginLeft = `${leftPanelWidth}px`;\n  }\n\n  const leftPanelResized = props.isLeftPanelOpen && prevProps.leftPanelWidth !== props.leftPanelWidth;\n  if (leftPanelResized) {\n    container.style.width = `${window.innerWidth - leftPanelWidth}px`;\n    container.style.marginLeft = `${leftPanelWidth}px`;\n  }\n\n  const rightPanelOpened = !prevProps.isRightPanelOpen && props.isRightPanelOpen;\n  if (rightPanelOpened) {\n    shrinkContainerWidthBy(rightPanelWidth, container);\n  }\n};\n\nconst getWidthAfterTransition = (container) => {\n  const oldTransition = container.style.transition;\n  container.style.transition = 'none';\n  const containerWidth = parseInt(window.getComputedStyle(container).width, 10);\n  container.style.transition = oldTransition;\n\n  return containerWidth;\n};\n\nconst expandContainerWidthBy = (panelWidth, container) => {\n  const containerWidth = getWidthAfterTransition(container);\n\n  if (isIEEdge) {\n    container.style.width = `${containerWidth + panelWidth}px`;\n  }\n\n  if (isIE11) {\n    // need to add 'scrollBarWidth' or it breaks after \"npm run build\", this isn't needed for npm run start\n    const scrollBarWidth = 17;\n    container.style.width = `${containerWidth + panelWidth + scrollBarWidth}px`;\n  }\n};\n\nconst shrinkContainerWidthBy = (panelWidth, container) => {\n  const containerWidth = getWidthAfterTransition(container);\n\n  if (isIEEdge) {\n    container.style.width = `${containerWidth - panelWidth}px`;\n  }\n\n  if (isIE11) {\n    const scrollBarWidth = 17;\n    container.style.width = `${containerWidth - panelWidth + scrollBarWidth}px`;\n  }\n};\n\nexport const getClassNameInIE = ({ isHeaderOpen, isSearchOverlayOpen }) => [\n  'DocumentContainer',\n  isHeaderOpen ? '' : 'no-header',\n  isSearchOverlayOpen ? 'search-overlay' : '',\n].join(' ').trim();\n\nexport const handleWindowResize = ({ isLeftPanelOpen, isRightPanelOpen, leftPanelWidth = 300 }, container) => {\n  const rightPanelWidth = 300;\n  let width = window.innerWidth;\n\n  if (isLeftPanelOpen) {\n    width -= leftPanelWidth;\n  }\n\n  if (isRightPanelOpen) {\n    width -= rightPanelWidth;\n  }\n\n  container.style.width = `${width}px`;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\n\nimport core from 'core';\nimport classNames from 'classnames';\nimport selectors from 'selectors';\nimport { isIOS } from 'helpers/device';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport Button from 'components/Button';\n\nimport './PageNavOverlay.scss';\n\nclass PageNavOverlay extends React.PureComponent {\n  static propTypes = {\n    isLeftPanelDisabled: PropTypes.bool,\n    isLeftPanelOpen: PropTypes.bool,\n    isOpen: PropTypes.bool,\n    currentPage: PropTypes.number,\n    totalPages: PropTypes.number,\n    pageLabels: PropTypes.array.isRequired,\n    allowPageNavigation: PropTypes.bool.isRequired,\n    enableFadePageNavigation: PropTypes.bool.isRequired,\n    isLogoBarEnabled: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n    this.textInput = React.createRef();\n    this.state = {\n      input: this.props.pageLabels?.[this.props.currentPage - 1] ?? '',\n      isCustomPageLabels: false,\n      isFocused: false,\n    };\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.pageLabels !== this.props.pageLabels) {\n      const isCustomPageLabels = this.props.pageLabels.some((label, index) => label !== `${index + 1}`);\n      this.setState({ isCustomPageLabels });\n    }\n\n    if (prevProps.currentPage !== this.props.currentPage || prevProps.pageLabels !== this.props.pageLabels) {\n      this.setState({\n        input: this.props.pageLabels[this.props.currentPage - 1],\n      });\n    }\n  }\n\n  onClick = () => {\n    if (isIOS) {\n      setTimeout(() => {\n        this.textInput.current.setSelectionRange(0, 9999);\n      }, 0);\n    } else {\n      this.textInput.current.select();\n    }\n  };\n\n  onChange = (e) => {\n    if (!this.props.pageLabels?.some((p) => p.startsWith(e.target.value))) {\n      return;\n    }\n\n    this.setState({ input: e.target.value });\n  };\n\n  onSubmit = (e) => {\n    e.preventDefault();\n\n    const { input } = this.state;\n    const isValidInput = input === '' || this.props.pageLabels.includes(input);\n\n    if (isValidInput) {\n      const pageToGo = this.props.pageLabels.indexOf(input) + 1;\n      core.setCurrentPage(pageToGo);\n    } else {\n      this.textInput.current.blur();\n    }\n  };\n\n  onBlur = () => {\n    const { currentPage, pageLabels } = this.props;\n\n    this.setState({ input: pageLabels[currentPage - 1], isFocused: false });\n  };\n\n  onFocus = () => {\n    this.setState({ isFocused: true });\n  };\n\n  goToPrevPage = () => {\n    const documentViewer = core.getDocumentViewer();\n    if (documentViewer.getCurrentPage() - 1 > 0) {\n      documentViewer.setCurrentPage(Math.max(documentViewer.getCurrentPage() - 1, 1));\n    }\n  };\n\n  goToNextPage = () => {\n    const documentViewer = core.getDocumentViewer();\n    if (documentViewer.getCurrentPage() + 1 <= documentViewer.getPageCount()) {\n      documentViewer.setCurrentPage(Math.min(documentViewer.getCurrentPage() + 1, documentViewer.getPageCount()));\n    }\n  };\n\n  render() {\n    const {\n      currentPage,\n      totalPages,\n      allowPageNavigation,\n      isMobile,\n      t,\n      dataElement,\n      enableFadePageNavigation,\n    } = this.props;\n\n    const documentViewer = core.getDocumentViewer();\n    const inputWidth = this.state.input ? this.state.input.length * (isMobile ? 10 : 8) : 0;\n    const isFirstPage = documentViewer.getCurrentPage() === 1;\n    const isLastPage = documentViewer.getCurrentPage() === documentViewer.getPageCount();\n\n    return (\n      <DataElementWrapper\n        className={classNames({\n          Overlay: true,\n          PageNavOverlay: true,\n          FadeOut: enableFadePageNavigation && !this.props.showNavOverlay && !this.state.isFocused,\n          'logo-bar-enabled': this.props.isLogoBarEnabled,\n        })}\n        dataElement={dataElement || 'pageNavOverlay'}\n        onMouseEnter={this.props.onMouseEnter}\n        onMouseLeave={this.props.onMouseLeave}\n      >\n        <Button\n          className=\"side-arrow-container\"\n          img=\"icon-chevron-left\"\n          title={isFirstPage ? null : t('action.pagePrev')} // Don't show tooltip on a disabled button\n          ariaLabel={t('action.pagePrev')}\n          onClick={this.goToPrevPage}\n          iconClassName=\"side-arrow\"\n          forceTooltipPosition=\"top\"\n          disabled={isFirstPage}\n        />\n        <div className=\"formContainer\" onClick={this.onClick}>\n          <form onSubmit={this.onSubmit} onBlur={this.onBlur} onFocus={this.onFocus}>\n            <input\n              ref={this.textInput}\n              type=\"text\"\n              value={this.state.input}\n              onChange={this.onChange}\n              tabIndex={-1}\n              disabled={!allowPageNavigation}\n              style={{ width: inputWidth }}\n              aria-label={t('action.pageSet')}\n            />\n            {\n              this.state.isCustomPageLabels\n                ? ` (${currentPage}/${totalPages})`\n                : ` / ${totalPages}`\n            }\n          </form>\n        </div>\n        <Button\n          className=\"side-arrow-container\"\n          img=\"icon-chevron-right\"\n          title={isLastPage ? null : t('action.pageNext')}\n          ariaLabel={t('action.pageNext')}\n          onClick={this.goToNextPage}\n          iconClassName=\"side-arrow\"\n          forceTooltipPosition=\"top\"\n          disabled={isLastPage}\n        />\n      </DataElementWrapper>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  currentPage: selectors.getCurrentPage(state),\n  totalPages: selectors.getTotalPages(state),\n  pageLabels: selectors.getPageLabels(state),\n  allowPageNavigation: selectors.getAllowPageNavigation(state),\n  enableFadePageNavigation: selectors.shouldFadePageNavigationComponent(state),\n});\n\nconst ConnectedPageNavOverlay = connect(mapStateToProps)(withTranslation()(PageNavOverlay));\n\nconst connectedComponent = (props) => {\n  const isMobile = isMobileSize();\n\n  return <ConnectedPageNavOverlay {...props} isMobile={isMobile} />;\n};\n\nexport default connectedComponent;\n","import connectedComponent from './PageNavOverlay';\n\nexport default connectedComponent;\n","export default (arg) => {\n  let zoomLevel;\n\n  if (typeof arg === 'string') {\n    zoomLevel = Number.parseFloat(arg) / 100;\n\n    const endsWithPercentage = arg.indexOf('%') === arg.length - 1;\n    if (endsWithPercentage) {\n      console.warn(`Zoom level in string format will be treated as percentage, ${arg} will be converted to ${zoomLevel}`);\n    }\n  } else if (typeof arg === 'number') {\n    zoomLevel = arg;\n  }\n\n  return zoomLevel;\n};","import actions from 'actions';\nimport zoomFactors, { defaultZoomList } from 'constants/zoomFactors';\nimport getActualZoomLevel from './getActualZoomLevel';\n\nexport default (dispatch) => (zoomLevel) => {\n  const maxZoom = getActualZoomLevel(zoomLevel);\n  if (maxZoom) {\n    const minZoom = zoomFactors.getMinZoomLevel();\n    const zoomList = defaultZoomList.filter((zoom) => zoom <= maxZoom && zoom >= minZoom);\n    zoomFactors.setMaxZoomLevel(maxZoom);\n    dispatch(actions.setZoomList(zoomList));\n    window.Core.Tools.MarqueeZoomTool.setMaxZoomLevel(maxZoom);\n  } else {\n    console.warn('Type of the argument for setMaxZoomLevel must be either string or number');\n  }\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport StylePopup from 'components/StylePopup';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport Draggable from 'react-draggable';\nimport { getReaderModePopupPositionBasedOn } from 'helpers/getPopupPosition';\nimport { getOpenedWarningModal, getOpenedColorPicker } from 'helpers/getElements';\n\nimport './ReaderModeStylePopup.scss';\n\nconst ReaderModeStylePopup = (props) => {\n  const [position, setPosition] = useState({});\n  const popupRef = useRef(null);\n\n  useEffect(() => {\n    setPosition(getReaderModePopupPositionBasedOn(props.annotPosition, popupRef, props.viewer));\n  }, []);\n\n  useOnClickOutside(popupRef, () => {\n    const warningModal = getOpenedWarningModal();\n    const colorPicker = getOpenedColorPicker();\n    if (!warningModal && !colorPicker) {\n      props.onClose();\n    }\n  });\n\n  return (\n    <Draggable cancel=\".Button, .cell, .sliders-container svg, select\">\n      <div\n        className=\"ReaderModeStylePopup\"\n        style={position}\n        ref={popupRef}\n      >\n        <StylePopup\n          {...props}\n          disableSeparator\n        />\n      </div>\n    </Draggable>\n  );\n};\n\nexport default ReaderModeStylePopup;\n","import ReaderModeStylePopup from './ReaderModeStylePopup';\n\nexport default ReaderModeStylePopup;","import React from 'react';\nimport core from 'core';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport zoomFactors from 'constants/zoomFactors';\nimport { connect } from 'react-redux';\nimport setMaxZoomLevel from 'helpers/setMaxZoomLevel';\nimport ReaderModeStylePopup from 'components/ReaderModeStylePopup';\nimport getRootNode from 'helpers/getRootNode';\n\nclass ReaderModeViewer extends React.PureComponent {\n  static propTypes = {\n    containerWidth: PropTypes.number.isRequired,\n    enableFadePageNavigation: PropTypes.bool.isRequired\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.viewer = React.createRef();\n    this.originalMaxZoom = zoomFactors.getMaxZoomLevel();\n    this.setAnnotStyleCb = undefined;\n    this.doneSetAnnotColorCb = undefined;\n    this.originalEnableFadePageNavigation = props.enableFadePageNavigation;\n\n    this.state = {\n      colorMapKey: undefined,\n      showStylePopup: false,\n      style: undefined,\n      annotPosition: undefined\n    };\n  }\n\n  componentDidMount() {\n    if (this.props.containerWidth > 0) {\n      this.updateMaxZoom();\n    }\n    this.props.dispatch(actions.disableFadePageNavigationComponent());\n\n    this.renderDocument();\n\n    core.addEventListener('documentLoaded', this.renderDocument);\n    core.addEventListener('pageNumberUpdated', this.goToPage);\n    core.addEventListener('zoomUpdated', this.setZoom);\n    core.addEventListener('toolUpdated', this.setAddAnnotConfig);\n    core.addEventListener('toolModeUpdated', this.setAddAnnotConfig);\n  }\n\n  componentWillUnmount() {\n    core.removeEventListener('documentLoaded', this.renderDocument);\n    core.removeEventListener('pageNumberUpdated', this.goToPage);\n    core.removeEventListener('zoomUpdated', this.setZoom);\n    core.removeEventListener('toolUpdated', this.setAddAnnotConfig);\n    core.removeEventListener('toolModeUpdated', this.setAddAnnotConfig);\n\n    this.wvReadingMode?.unmount();\n\n    setMaxZoomLevel(this.props.dispatch)(this.originalMaxZoom);\n    if (this.originalEnableFadePageNavigation) {\n      this.props.dispatch(actions.enableFadePageNavigationComponent());\n    } else {\n      this.props.dispatch(actions.disableFadePageNavigationComponent());\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.containerWidth > 0 && prevProps.containerWidth !== this.props.containerWidth) {\n      this.updateMaxZoom();\n    }\n  }\n\n  render() {\n    return (\n      <>\n        <div\n          className=\"reader-mode-viewer\"\n          ref={this.viewer}\n          style={{ height: '100%', width: '100%' }}\n        >\n        </div>\n        {this.state.showStylePopup && (\n          <ReaderModeStylePopup\n            colorMapKey={this.state.colorMapKey}\n            style={this.state.style}\n            onStyleChange={this.handleColorChange}\n            onSliderChange={this.handleOpacityChange}\n            onClose={this.handleStylePopupClose}\n            annotPosition={this.state.annotPosition}\n            viewer={this.viewer}\n          />\n        )}\n      </>\n    );\n  }\n\n  renderDocument = () => {\n    import('@pdftron/webviewer-reading-mode').then(({ default: WebViewerReadingMode }) => {\n      if (!this.wvReadingMode) {\n        // eslint-disable-next-line no-undef\n        this.wvReadingMode = WebViewerReadingMode.initialize(window.Core.PDFNet);\n      } else {\n        this.wvReadingMode.unmount();\n      }\n\n      this.wvReadingMode.render(\n        core.getDocumentViewer().getDocument().getPDFDoc(),\n        this.viewer.current,\n        {\n          pageNumberUpdateHandler: core.setCurrentPage,\n          pageNum: core.getCurrentPage(),\n          editStyleHandler: this.onEditStyle,\n          rootNode: getRootNode(),\n        }\n      );\n      this.setZoom(core.getZoom());\n      this.setAddAnnotConfig();\n    });\n  }\n\n  goToPage = (pageNum) => {\n    this.wvReadingMode?.goToPage(pageNum);\n  }\n\n  setZoom = (zoom) => {\n    if (!this.wvReadingMode) {\n      return;\n    }\n    this.wvReadingMode.setZoom(zoom);\n    const pageWidth = core.getDocumentViewer().getPageWidth(1);\n    const readerModeElement = this.viewer.current.firstChild;\n    if (pageWidth && readerModeElement) {\n      readerModeElement.style.padding = `0 ${(this.props.containerWidth - pageWidth * zoom) / 2}px`;\n    }\n  }\n\n  updateMaxZoom() {\n    // Calling the FitWidth function to get the calculated fit width zoom level for normal page rendering\n    const maxZoomLevel = core.getDocumentViewer().FitMode.FitWidth.call(core.getDocumentViewer());\n    setMaxZoomLevel(this.props.dispatch)(maxZoomLevel);\n    if (maxZoomLevel < core.getZoom()) {\n      core.fitToWidth();\n    }\n    this.setZoom(core.getZoom());\n  }\n\n  getAnnotTypeFromToolMode = (toolMode) => {\n    // eslint-disable-next-line no-undef\n    const annotationTypes = WebViewerReadingMode.AnnotationType;\n    if (toolMode instanceof window.Core.Tools.TextHighlightCreateTool) {\n      return annotationTypes.Highlight;\n    }\n    if (toolMode instanceof window.Core.Tools.TextUnderlineCreateTool) {\n      return annotationTypes.Underline;\n    }\n    if (toolMode instanceof window.Core.Tools.TextStrikeoutCreateTool) {\n      return annotationTypes.Strikeout;\n    }\n    if (toolMode instanceof window.Core.Tools.TextSquigglyCreateTool) {\n      return annotationTypes.Squiggly;\n    }\n    return undefined;\n  }\n\n  setAddAnnotConfig = () => {\n    if (!this.wvReadingMode) {\n      return;\n    }\n    const toolMode = core.getToolMode();\n    const annotType = this.getAnnotTypeFromToolMode(toolMode);\n    if (annotType) {\n      this.wvReadingMode.setAddAnnotConfig({\n        type: annotType,\n        color: toolMode['defaults']['StrokeColor'].toHexString(),\n        opacity: toolMode['defaults']['Opacity']\n      });\n    } else {\n      this.wvReadingMode.setAddAnnotConfig({\n        type: undefined\n      });\n    }\n  }\n\n  onEditStyle = ({ color, opacity, type, position }, setAnnotStyleCb, doneSetAnnotColorCb) => {\n    this.setAnnotStyleCb = setAnnotStyleCb;\n    this.doneSetAnnotColorCb = doneSetAnnotColorCb;\n    this.setState({\n      colorMapKey: this.getColorMapKey(type),\n      style: {\n        StrokeColor: new window.Core.Annotations.Color(color),\n        Opacity: opacity\n      },\n      showStylePopup: true,\n      annotPosition: position\n    });\n  }\n\n  getColorMapKey(annotType) {\n    // eslint-disable-next-line no-undef\n    const annotationTypes = WebViewerReadingMode.AnnotationType;\n    if (annotType === annotationTypes.Highlight) {\n      return 'highlight';\n    }\n    if (annotType === annotationTypes.Underline) {\n      return 'underline';\n    }\n    if (annotType === annotationTypes.Strikeout) {\n      return 'strikeout';\n    }\n    if (annotType === annotationTypes.Squiggly) {\n      return 'squiggly';\n    }\n    return '';\n  }\n\n  handleColorChange = (property, color) => {\n    if (property === 'StrokeColor' && this.setAnnotStyleCb) {\n      this.setAnnotStyleCb({\n        color: color.toHexString(),\n        opacity: this.state.style.Opacity\n      });\n      this.setState({\n        style: {\n          ...this.state.style,\n          StrokeColor: color\n        }\n      });\n    }\n  }\n\n  handleOpacityChange = (property, opacity) => {\n    if (property === 'Opacity' && this.setAnnotStyleCb) {\n      this.setAnnotStyleCb({\n        color: this.state.style.StrokeColor.toHexString(),\n        opacity\n      });\n      this.setState({\n        style: {\n          ...this.state.style,\n          Opacity: opacity\n        }\n      });\n    }\n  }\n\n  handleStylePopupClose = () => {\n    this.setState({\n      showStylePopup: false\n    });\n    this.doneSetAnnotColorCb();\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  containerWidth: selectors.getDocumentContainerWidth(state),\n  enableFadePageNavigation: selectors.shouldFadePageNavigationComponent(state)\n});\n\nexport default connect(mapStateToProps)(ReaderModeViewer);\n","import ReaderModeViewer from './ReaderModeViewer';\n\nexport default ReaderModeViewer;\n","import React, { Suspense, useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\n\n// Map that tracks if the element has been opened before\nconst openedElementsMap = new Map();\n// Elements in this list will stay in the DOM after opened for the first time\n// So the status of these elements will not be discarded when closed\nconst elementsList = [DataElements.SEARCH_PANEL];\nelementsList.forEach((dataElement) => {\n  openedElementsMap.set(dataElement, false);\n});\nconst elementWasOpened = (dataElement) => openedElementsMap.has(dataElement) && openedElementsMap.get(dataElement);\n\nconst LazyLoadWrapper = ({\n  Component,\n  dataElement,\n  onOpenHook = () => { },\n  ...passedInProps\n}) => {\n  const onOpenProps = onOpenHook();\n  const isOpen = useSelector((state) => selectors.isElementOpen(state, dataElement));\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n\n  useEffect(() => {\n    if (isOpen && openedElementsMap.has(dataElement) && !openedElementsMap.get(dataElement)) {\n      openedElementsMap.set(dataElement, true);\n    }\n  }, [isOpen]);\n\n  return (isDisabled || !(isOpen || elementWasOpened(dataElement))) ? null : (\n    <Suspense fallback={<></>}>\n      <Component\n        dataElement={dataElement}\n        {...onOpenProps}\n        {...passedInProps}\n      />\n    </Suspense>\n  );\n};\n\nexport default LazyLoadWrapper;\n","import { lazy } from 'react';\n\n// Overlays\nconst ScaleOverlayContainer = lazy(() => import('components/ScaleOverlay/ScaleOverlayContainer'));\nconst MeasurementOverlay = lazy(() => import('components/MeasurementOverlay'));\nconst ViewControlsOverlay = lazy(() => import('components/ViewControlsOverlay'));\nconst MenuOverlay = lazy(() => import('components/MenuOverlay'));\nconst ZoomOverlay = lazy(() => import('components/ZoomOverlay'));\nconst PageManipulationOverlay = lazy(() => import('components/PageManipulationOverlay'));\nconst AnnotationContentOverlay = lazy(() => import('components/AnnotationContentOverlay'));\nconst ThumbnailMoreOptionsPopup = lazy(() => import('src/components/LeftPanelOverlay/ThumbnailMoreOptionsPopup'));\nconst ThumbnailMoreOptionsPopupSmall = lazy(() => import('src/components/LeftPanelOverlay/ThumbnailMoreOptionsPopupSmall'));\n\n// Popups\nconst AnnotationPopup = lazy(() => import('components/AnnotationPopup'));\nconst FormFieldEditPopup = lazy(() => import('components/FormFieldEditPopup'));\nconst TextPopup = lazy(() => import('components/TextPopup'));\nconst ContextMenuPopup = lazy(() => import('components/ContextMenuPopup'));\nconst RichTextPopup = lazy(() => import('components/RichTextPopup'));\nconst RichTextStyleEditor = lazy(() => import('components/RichTextStyleEditor'));\nconst AudioPlaybackPopup = lazy(() => import('components/AudioPlaybackPopup'));\nconst DocumentCropPopup = lazy(() => import('components/DocumentCropPopup'));\nconst InlineCommentingPopup = lazy(() => import('components/InlineCommentingPopup'));\nconst LinkAnnotationPopup = lazy(() => import('components/LinkAnnotationPopup'));\nconst AlignmentPopup = lazy(() => import('components/AlignmentPopup'));\n\n// Modals\nconst ContentEditLinkModal = lazy(() => import('components/ContentEditLinkModal'));\nconst SignatureModal = lazy(() => import('components/SignatureModal'));\nconst ScaleModal = lazy(() => import('components/ScaleModal'));\nconst PrintModal = lazy(() => import('components/PrintModal'));\nconst ErrorModal = lazy(() => import('components/ErrorModal'));\nconst PasswordModal = lazy(() => import('components/PasswordModal'));\nconst CreateStampModal = lazy(() => import('components/CreateStampModal'));\nconst PageReplacementModal = lazy(() => import('components/PageReplacementModal'));\nconst LinkModal = lazy(() => import('components/LinkModal'));\nconst FilterAnnotModal = lazy(() => import('components/FilterAnnotModal'));\nconst PageRedactionModal = lazy(() => import('components/PageRedactionModal'));\nconst CalibrationModal = lazy(() => import('components/CalibrationModal'));\nconst SettingsModal = lazy(() => import('components/SettingsModal'));\nconst SaveModal = lazy(() => import('components/SaveModal'));\nconst InsertPageModal = lazy(() => import('components/InsertPageModal'));\nconst LoadingModal = lazy(() => import('components/LoadingModal'));\nconst ProgressModal = lazy(() => import('components/ProgressModal'));\nconst WarningModal = lazy(() => import('components/WarningModal'));\nconst Model3DModal = lazy(() => import('components/Model3DModal'));\nconst ColorPickerModal = lazy(() => import('components/ColorPickerModal'));\nconst OpenFileModal = lazy(() => import('components/OpenFileModal'));\nconst SignatureValidationModal = lazy(() => import('components/SignatureValidationModal'));\nconst CustomModal = lazy(() => import('components/CustomModal'));\nconst CreatePortfolioModal = lazy(() => import('components/CreatePortfolioModal'));\n\n// Panels\nconst OutlinesPanel = lazy(() => import('components/OutlinesPanel'));\nconst SignaturePanel = lazy(() => import('components/SignaturePanel'));\nconst BookmarksPanel = lazy(() => import('components/BookmarksPanel'));\nconst FileAttachmentPanel = lazy(() => import('components/FileAttachmentPanel'));\nconst ThumbnailsPanel = lazy(() => import('components/ThumbnailsPanel'));\nconst StylePanel = lazy(() => import('components/StylePanel'));\nconst NotesPanel = lazy(() => import('components/NotesPanel'));\nconst SearchPanel = lazy(() => import('components/SearchPanel'));\nconst TabPanel = lazy(() => import('components/ModularComponents/TabPanel'));\nconst SignatureListPanel = lazy(() => import('components/SignatureListPanel'));\nconst LeftPanel = lazy(() => import('components/LeftPanel'));\nconst RubberStampPanel = lazy(() => import('components/RubberStampPanel'));\nconst RedactionPanel = lazy(() => import('components/RedactionPanel'));\nconst PortfolioPanel = lazy(() => import('components/PortfolioPanel'));\n\n\nconst OfficeEditorToolsHeader = lazy(() => import('components/Header/OfficeEditorToolsHeader'));\n\nconst LazyLoadComponents = {\n  AnnotationPopup,\n  FormFieldEditPopup,\n  TextPopup,\n  ContextMenuPopup,\n  InlineCommentingPopup,\n  RichTextPopup,\n  RichTextStyleEditor,\n  AudioPlaybackPopup,\n  AlignmentPopup,\n  DocumentCropPopup,\n  MeasurementOverlay,\n  ScaleOverlayContainer,\n  ViewControlsOverlay,\n  MenuOverlay,\n  ZoomOverlay,\n  PageManipulationOverlay,\n  AnnotationContentOverlay,\n  ThumbnailMoreOptionsPopup,\n  ThumbnailMoreOptionsPopupSmall,\n  ContentEditLinkModal,\n  SignatureModal,\n  ScaleModal,\n  PrintModal,\n  ErrorModal,\n  PasswordModal,\n  CreateStampModal,\n  PageReplacementModal,\n  LinkModal,\n  FilterAnnotModal,\n  PageRedactionModal,\n  CalibrationModal,\n  SettingsModal,\n  SaveModal,\n  InsertPageModal,\n  LoadingModal,\n  ProgressModal,\n  WarningModal,\n  Model3DModal,\n  ColorPickerModal,\n  OpenFileModal,\n  SignatureValidationModal,\n  CustomModal,\n  OutlinesPanel,\n  SignaturePanel,\n  BookmarksPanel,\n  FileAttachmentPanel,\n  ThumbnailsPanel,\n  StylePanel,\n  NotesPanel,\n  SearchPanel,\n  TabPanel,\n  LeftPanel,\n  RedactionPanel,\n  PortfolioPanel,\n  OfficeEditorToolsHeader,\n  CreatePortfolioModal,\n  LinkAnnotationPopup,\n  SignatureListPanel,\n  RubberStampPanel,\n};\n\nexport default LazyLoadComponents;\n","import LazyLoadWrapper from './LazyLoadWrapper';\n\nexport { default as LazyLoadComponents } from './LazyLoadComponents';\n\nexport default LazyLoadWrapper;\n","import { useEffect, useState } from 'react';\nimport throttle from 'lodash/throttle';\nimport { mapAnnotationToKey, annotationMapKeys } from 'constants/map';\nimport selectors from 'selectors';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport { isMeasurementTool } from 'helpers/getMeasurementTools';\nimport core from 'core';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\n\nconst { ToolNames } = window.Core.Tools;\n\nconst isMeasurementExcludeCalibration = (measurement) => !!isMeasurementTool(measurement) &&\n  ![measurement.name, measurement.ToolName].includes(ToolNames.CALIBRATION_MEASUREMENT);\n\nexport default function useOnMeasurementToolOrAnnotationSelected() {\n  const dispatch = useDispatch();\n\n  const [activeToolName] = useSelector((state) => [selectors.getActiveToolName(state)], shallowEqual);\n  const [annotations, setAnnotations] = useState([]);\n  const [selectedTool, setSelectedTool] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annots, action) => {\n      const selectedAnnotations = core.getSelectedAnnotations();\n      const measuredAnnotations = selectedAnnotations.filter(isMeasurementExcludeCalibration);\n      if (measuredAnnotations.length && action === 'selected') {\n        setAnnotations(measuredAnnotations);\n      } else if (action === 'deselected') {\n        setAnnotations([]);\n      }\n    };\n\n    const onScaleUpdated = (tool) => {\n      if (tool?.name === selectedTool?.name && tool?.Measure) {\n        setSelectedTool(tool);\n      }\n    };\n\n    const onAnnotationChanged = (changedAnnotations, action) => {\n      if (action === 'add' && isMeasurementExcludeCalibration(changedAnnotations[0])) {\n        setAnnotations([]);\n      }\n      if (action === 'delete') {\n        setAnnotations([]);\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    core.addEventListener('toolUpdated', onScaleUpdated);\n\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('toolUpdated', onScaleUpdated);\n    };\n  }, []);\n\n  const onMouseMove = throttle(() => {\n    const tool = core.getTool(activeToolName);\n    if (isMeasurementToolWithInfo(tool) && !isSmallAnnotation(tool.annotation)) {\n      setAnnotations([tool.annotation]);\n    }\n  }, 100);\n\n  useEffect(() => {\n    core.addEventListener('mouseMove', onMouseMove);\n\n    return () => {\n      core.removeEventListener('mouseMove', onMouseMove);\n    };\n  }, [activeToolName]);\n\n  // This helps ensure we don't show an overlay for small annotations\n  const isSmallAnnotation = (annotation) => {\n    if (!annotation) {\n      return true;\n    }\n    const w = annotation.getWidth();\n    const h = annotation.getHeight();\n    const minSize = (annotation.getRectPadding() + 1) * 2;\n\n    return w <= minSize && h <= minSize;\n  };\n\n  const isMeasurementToolWithInfo = (tool) => {\n    return isMeasurementExcludeCalibration(tool) && tool.annotation && shouldShowInfo(tool.annotation);\n  };\n\n  const shouldShowInfo = (annotation) => {\n    const key = mapAnnotationToKey(annotation);\n\n    let showInfo;\n    if (\n      [\n        annotationMapKeys.PERIMETER_MEASUREMENT,\n        annotationMapKeys.AREA_MEASUREMENT,\n        annotationMapKeys.RECTANGULAR_AREA_MEASUREMENT,\n        annotationMapKeys.CLOUDY_RECTANGULAR_AREA_MEASUREMENT,\n        annotationMapKeys.ARC_MEASUREMENT,\n      ].includes(key)\n    ) {\n      // for polyline and polygon, there's no useful information we can show if it has no vertices or only one vertex.\n      showInfo = annotation.getPath().length > 1;\n    } else if ([annotationMapKeys.DISTANCE_MEASUREMENT, annotationMapKeys.ELLIPSE_MEASUREMENT].includes(key)) {\n      showInfo = true;\n    }\n\n    return showInfo;\n  };\n\n  useEffect(() => {\n    if (activeToolName) {\n      const tool = core.getTool(activeToolName);\n      if (tool?.Measure) {\n        setSelectedTool(tool);\n        setAnnotations([]);\n      } else {\n        setSelectedTool(null);\n      }\n    }\n  }, [activeToolName]);\n\n  useEffect(() => {\n    if (annotations.length || selectedTool) {\n      dispatch(actions.openElements([DataElements.SCALE_OVERLAY_CONTAINER]));\n    } else {\n      dispatch(actions.closeElements([DataElements.SCALE_OVERLAY_CONTAINER]));\n    }\n  }, [annotations, selectedTool]);\n\n  return { annotations, selectedTool };\n}\n","import useOnMeasurementToolOrAnnotationSelected from './useOnMeasurementToolOrAnnotationSelected';\n\nexport default useOnMeasurementToolOrAnnotationSelected;","import useOnCountMeasurementAnnotationSelected from './useOnCountMeasurementAnnotationSelected';\n\nexport default useOnCountMeasurementAnnotationSelected;","import { useEffect, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\nimport { mapAnnotationToKey, mapToolNameToKey } from 'constants/map';\nimport usePrevious from 'hooks/usePrevious';\nimport { isMeasurementTool } from 'src/helpers/getMeasurementTools';\n\nexport default function useOnCountMeasurementAnnotationSelected() {\n  const dispatch = useDispatch();\n  const [\n    activeToolName,\n    customMeasurementOverlay,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state),\n      selectors.getCustomMeasurementOverlay(state),\n    ],\n    shallowEqual,\n  );\n\n  const prevActiveToolName = usePrevious(activeToolName);\n  const [annotation, setAnnotation] = useState(null);\n\n  const isCountMeasurementAnnotation = (annotation) => {\n    return ['countMeasurement'].includes(mapAnnotationToKey(annotation));\n  };\n\n  const isCountMeasurementTool = (toolName) => [\n    'countMeasurement'\n  ].includes(mapToolNameToKey(toolName));\n\n  const shouldShowCustomOverlay = (annotation) => {\n    return (\n      !isCountMeasurementAnnotation(annotation) &&\n      customMeasurementOverlay.some((overlay) => overlay.validate(annotation))\n    );\n  };\n\n  useEffect(() => {\n    if (prevActiveToolName !== activeToolName) {\n      const tool = core.getTool(activeToolName);\n      if (!isCountMeasurementTool(activeToolName) && isMeasurementTool(tool)) {\n        dispatch(actions.openElement(DataElements.MEASUREMENT_OVERLAY));\n      } else {\n        dispatch(actions.closeElement(DataElements.MEASUREMENT_OVERLAY));\n      }\n    }\n  }, [prevActiveToolName, activeToolName]);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (\n        action === 'selected' &&\n        annotations.length === 1 &&\n        (isCountMeasurementAnnotation(annotations[0]) || shouldShowCustomOverlay(annotations[0]))\n      ) {\n        setAnnotation(annotations[0]);\n        dispatch(actions.openElement(DataElements.MEASUREMENT_OVERLAY));\n      } else if (action === 'deselected' && !core.isAnnotationSelected(annotation)) {\n        dispatch(actions.closeElement(DataElements.MEASUREMENT_OVERLAY));\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => core.removeEventListener('annotationSelected', onAnnotationSelected);\n  }, [dispatch]);\n\n  return { annotation };\n}","import { useEffect, useRef } from 'react';\n\nexport default function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  const ref = useRef();\n  // Store current value in ref\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n  // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n  return ref.current;\n}","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { connect } from 'react-redux';\nimport Measure from 'react-measure';\nimport throttle from 'lodash/throttle';\nimport debounce from 'lodash/debounce';\nimport core from 'core';\nimport { isIE, isIE11 } from 'helpers/device';\nimport { updateContainerWidth, getClassNameInIE, handleWindowResize } from 'helpers/documentContainerHelper';\nimport loadDocument from 'helpers/loadDocument';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport setCurrentPage from 'helpers/setCurrentPage';\nimport { getStep } from 'helpers/zoom';\nimport { getMinZoomLevel, getMaxZoomLevel } from 'constants/zoomFactors';\nimport PageNavOverlay from 'components/PageNavOverlay';\nimport ToolsOverlay from 'components/ToolsOverlay';\nimport ReaderModeViewer from 'components/ReaderModeViewer';\nimport LazyLoadWrapper, { LazyLoadComponents } from 'components/LazyLoadWrapper';\nimport useOnMeasurementToolOrAnnotationSelected from 'hooks/useOnMeasurementToolOrAnnotationSelected';\nimport useOnCountMeasurementAnnotationSelected from 'hooks/useOnCountMeasurementAnnotationSelected';\n\nimport './DocumentContainer.scss';\nimport DataElements from 'src/constants/dataElement';\n\nconst PAGE_NAVIGATION_OVERLAY_FADEOUT = 4000;\n\nclass DocumentContainer extends React.PureComponent {\n  static propTypes = {\n    isLeftPanelOpen: PropTypes.bool,\n    isRightPanelOpen: PropTypes.bool,\n    isSearchOverlayOpen: PropTypes.bool,\n    doesDocumentAutoLoad: PropTypes.bool,\n    zoom: PropTypes.number.isRequired,\n    currentPage: PropTypes.number,\n    totalPages: PropTypes.number,\n    isHeaderOpen: PropTypes.bool,\n    dispatch: PropTypes.func.isRequired,\n    openElement: PropTypes.func.isRequired,\n    closeElements: PropTypes.func.isRequired,\n    displayMode: PropTypes.string.isRequired,\n    leftPanelWidth: PropTypes.number,\n    allowPageNavigation: PropTypes.bool.isRequired,\n    isMouseWheelZoomEnabled: PropTypes.bool.isRequired,\n    isReaderMode: PropTypes.bool,\n    setDocumentContainerWidth: PropTypes.func.isRequired,\n    setDocumentContainerHeight: PropTypes.func.isRequired,\n    isInDesktopOnlyMode: PropTypes.bool,\n    isRedactionPanelOpen: PropTypes.bool,\n    isTextEditingPanelOpen: PropTypes.bool,\n    isWv3dPropertiesPanelOpen: PropTypes.bool,\n    featureFlags: PropTypes.object,\n    bottomHeaderHeight: PropTypes.number,\n    activeDocumentViewerKey: PropTypes.number,\n    isLogoBarEnabled: PropTypes.bool,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.document = React.createRef();\n    this.container = React.createRef();\n    this.wheelToNavigatePages = throttle(this.wheelToNavigatePages.bind(this), 300, { trailing: false });\n    this.wheelToZoom = throttle(this.wheelToZoom.bind(this), 30, { trailing: false });\n    this.handleResize = throttle(this.handleResize.bind(this), 200);\n    this.debouncedHidePageNavigationOverlay = debounce(\n      this.hidePageNavigationOverlay,\n      PAGE_NAVIGATION_OVERLAY_FADEOUT,\n    );\n    this.state = {\n      showNavOverlay: true,\n    };\n  }\n\n  componentDidUpdate(prevProps) {\n    if (isIE11) {\n      updateContainerWidth(prevProps, this.props, this.container.current);\n    }\n  }\n\n  componentDidMount() {\n    touchEventManager.initialize(this.document.current, this.container.current);\n    core.setScrollViewElement(this.container.current);\n    core.setViewerElement(this.document.current);\n    this.props.closeElements([DataElements.MULTITABS_EMPTY_PAGE]);\n\n    if (isIE) {\n      window.addEventListener('resize', this.handleWindowResize);\n    }\n\n    if (process.env.NODE_ENV === 'development') {\n      this.container.current.addEventListener('dragover', this.preventDefault);\n      this.container.current.addEventListener('drop', this.onDrop);\n    }\n\n    this.container.current.addEventListener('wheel', this.onWheel, { passive: false });\n    this.updateContainerSize();\n    core.addEventListener('documentLoaded', this.showAndFadeNavigationOverlay);\n  }\n\n  componentWillUnmount() {\n    touchEventManager.terminate();\n    if (isIE) {\n      window.removeEventListener('resize', this.handleWindowResize);\n    }\n\n    if (process.env.NODE_ENV === 'development') {\n      this.container.current.addEventListener('dragover', this.preventDefault);\n      this.container.current.removeEventListener('drop', this.onDrop);\n    }\n\n    this.container.current.removeEventListener('wheel', this.onWheel, { passive: false });\n    core.removeEventListener('documentLoaded', this.showAndFadeNavigationOverlay);\n    this.props.closeElements([DataElements.MULTITABS_EMPTY_PAGE]);\n  }\n\n  preventDefault = (e) => e.preventDefault();\n\n  onDrop = (e) => {\n    e.preventDefault();\n\n    const { files } = e.dataTransfer;\n    if (files.length) {\n      loadDocument(this.props.dispatch, files[0]);\n    }\n  };\n\n  handleWindowResize = () => {\n    handleWindowResize(this.props, this.container.current);\n  };\n\n  onWheel = (e) => {\n    const { isMouseWheelZoomEnabled } = this.props;\n    if (isMouseWheelZoomEnabled && (e.metaKey || e.ctrlKey)) {\n      e.preventDefault();\n      this.wheelToZoom(e);\n    } else if (\n      !core.isContinuousDisplayMode() &&\n      this.props.allowPageNavigation &&\n      !this.props.isReaderMode &&\n      core.isScrollableDisplayMode()\n    ) {\n      const { currentPage, totalPages } = this.props;\n      const { scrollTop, scrollHeight, clientHeight } = this.container.current;\n      const reachedTop = scrollTop === 0;\n      const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n\n      // depending on the track pad used (see this on MacBooks), deltaY can be between -1 and 1 when doing horizontal scrolling which cause page to change\n      const scrollingUp = e.deltaY < 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n      const scrollingDown = e.deltaY > 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n\n      const shouldGoUp = scrollingUp && reachedTop && currentPage > 1;\n      const shouldGoDown = scrollingDown && reachedBottom && currentPage < totalPages;\n\n      const shouldPreventParentScrolling =\n        scrollHeight === clientHeight &&\n        ((e.deltaY < 0 && currentPage > 1) || (e.deltaY > 0 && currentPage < totalPages));\n\n      if (shouldPreventParentScrolling) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      this.wheelToNavigatePages(e, shouldGoUp, shouldGoDown);\n      this.props.closeElements(['annotationPopup', 'textPopup', 'annotationNoteConnectorLine', 'inlineCommentPopup']);\n    }\n  };\n\n  wheelToNavigatePages = (e, shouldGoUp, shouldGoDown) => {\n    if (shouldGoUp) {\n      this.pageUp();\n    } else if (shouldGoDown) {\n      this.pageDown();\n    }\n\n    this.showPageNavigationOverlay();\n    this.debouncedHidePageNavigationOverlay();\n  };\n\n  pageUp = () => {\n    const { currentPage } = this.props;\n    const { scrollHeight, clientHeight } = this.container.current;\n\n    setCurrentPage(currentPage - getNumberOfPagesToNavigate());\n    this.container.current.scrollTop = scrollHeight - clientHeight;\n  };\n\n  pageDown = () => {\n    const { currentPage } = this.props;\n\n    setCurrentPage(currentPage + getNumberOfPagesToNavigate());\n  };\n\n  wheelToZoom = (e) => {\n    const { zoom: currentZoomFactor, activeDocumentViewerKey } = this.props;\n    let newZoomFactor = currentZoomFactor;\n    if (e.deltaY < 0) {\n      newZoomFactor = Math.min(currentZoomFactor + getStep(currentZoomFactor), getMaxZoomLevel());\n    } else if (e.deltaY > 0) {\n      newZoomFactor = Math.max(currentZoomFactor - getStep(currentZoomFactor), getMinZoomLevel());\n    }\n    core.zoomToMouse(newZoomFactor, activeDocumentViewerKey, e);\n  };\n\n  handleScroll = () => {\n    this.props.closeElements(['annotationPopup', 'textPopup', 'inlineCommentPopup', 'annotationNoteConnectorLine']);\n\n    // Show overlay and then hide it, but the hide call is debounced\n    this.showPageNavigationOverlay();\n    this.debouncedHidePageNavigationOverlay();\n  };\n\n  showAndFadeNavigationOverlay = () => {\n    this.showPageNavigationOverlay();\n    setTimeout(this.hidePageNavigationOverlay, PAGE_NAVIGATION_OVERLAY_FADEOUT);\n  };\n\n  hidePageNavigationOverlay = () => {\n    this.setState({ showNavOverlay: false });\n  };\n\n  showPageNavigationOverlay = () => {\n    this.setState({ showNavOverlay: true });\n  };\n\n  pageNavOnMouseEnter = () => {\n    this.showPageNavigationOverlay();\n  };\n\n  pageNavOnMouseLeave = () => {\n    this.hidePageNavigationOverlay();\n  };\n\n  getClassName = (props) => {\n    const { isSearchOverlayOpen } = props;\n\n    return classNames({\n      DocumentContainer: true,\n      'search-overlay': isSearchOverlayOpen,\n    });\n  };\n\n  handleResize() {\n    this.updateContainerSize();\n\n    if (!this.props.isReaderMode) {\n      // Skip when in reader mode, otherwise will cause error.\n      core.setScrollViewElement(this.container.current);\n      core.scrollViewUpdated();\n    }\n  }\n\n  updateContainerSize() {\n    const { clientWidth, clientHeight } = this.container.current;\n    this.props.setDocumentContainerWidth(clientWidth);\n    this.props.setDocumentContainerHeight(clientHeight);\n  }\n\n  onTransitionEnd(event) {\n    // I don't know if this is needed. But better safe than sorry.\n    const transitionProperiesToIgnore = ['background-color', 'opacity'];\n    if (!transitionProperiesToIgnore.includes(event.propertyName)) {\n      // We have a corner case where if you have 1st and 2nd page different size and you are in fit page mode\n      // if you have callout (freetext) annotation on second page. If you open notes panel then click annotation and click\n      // edit on it. This will cause our document container to re-render. We also have background-color transition\n      // set to all our elements (I believe for having smooth transition to dark mode, not sure though).\n      // All this is causing document to run fit page logic and zoom level of this second page jumps out.\n      // This is such a corner case, but reported by a customer, we decided do this check here and skip update if\n      // background color is the one that causes this transition.\n      // This effect is still happening in above case but if instead of clicking edit, user changes width of the notes panel\n      // It is currently expected behaviour\n      // Note Update after fading page nav was added:\n      // This also causes a doc container re-render as we fire the opacity transition when we fade the page nav\n      // we must skip updating the scrollViewUpdated call as well or it causes re-renders on docs with different page sizes\n      core.scrollViewUpdated();\n    }\n  }\n\n  render() {\n    const {\n      isMultiTabEmptyPageOpen,\n      isMobile,\n      documentContentContainerWidthStyle,\n      totalPages,\n      isInDesktopOnlyMode,\n      featureFlags,\n      bottomHeaderHeight,\n      leftHeaderWidth,\n      documentContainerLeftMargin,\n    } = this.props;\n\n    const style = {\n      width: documentContentContainerWidthStyle,\n      // we animate with margin-left. For some reason it looks nicer than transform.\n      // Using transform makes a clunky animation because the panels are using transform already.\n      marginLeft: `${documentContainerLeftMargin}px`,\n    };\n    const documentContainerClassName = isIE ? getClassNameInIE(this.props) : this.getClassName(this.props);\n    const documentClassName = classNames({\n      document: true,\n      hidden: this.props.isReaderMode,\n    });\n    const showPageNav = totalPages > 1;\n\n    const { customizableUI } = featureFlags;\n    const footerStyle = {\n      ...style,\n      left: customizableUI ? `${leftHeaderWidth}px` : undefined,\n      bottom: `${customizableUI ? bottomHeaderHeight : 0}px`,\n    };\n    // Calculating its height according to the existing horizontal modular headers\n    if (customizableUI) {\n      style['height'] = `calc(100% - ${bottomHeaderHeight}px)`;\n    }\n    return (\n      <div\n        style={style}\n        className={classNames({\n          'document-content-container': true,\n          'closed': isMultiTabEmptyPageOpen,\n        })}\n        onTransitionEnd={this.onTransitionEnd}\n      >\n        <Measure onResize={this.handleResize}>\n          {({ measureRef }) => (\n            <div className=\"measurement-container\" ref={measureRef}>\n              <div\n                className={documentContainerClassName}\n                ref={this.container}\n                data-element=\"documentContainer\"\n                onScroll={this.handleScroll}\n              >\n                {/* tabIndex=\"-1\" to keep document focused when in single page mode */}\n                <div className={documentClassName} ref={this.document} tabIndex=\"-1\" />\n              </div>\n              {this.props.isReaderMode && <ReaderModeViewer />}\n              <LazyLoadWrapper\n                Component={LazyLoadComponents.ScaleOverlayContainer}\n                dataElement={DataElements.SCALE_OVERLAY_CONTAINER}\n                onOpenHook={useOnMeasurementToolOrAnnotationSelected}\n              />\n              <LazyLoadWrapper\n                Component={LazyLoadComponents.MeasurementOverlay}\n                dataElement={DataElements.MEASUREMENT_OVERLAY}\n                onOpenHook={useOnCountMeasurementAnnotationSelected}\n              />\n              <div\n                className=\"footer\"\n                style={footerStyle}\n              >\n                {showPageNav && (\n                  <PageNavOverlay\n                    showNavOverlay={this.state.showNavOverlay}\n                    onMouseEnter={this.pageNavOnMouseEnter}\n                    onMouseLeave={this.pageNavOnMouseLeave}\n                    isLogoBarEnabled={this.props.isLogoBarEnabled}\n                  />\n                )}\n\n                {isMobile && !isInDesktopOnlyMode && <ToolsOverlay />}\n              </div>\n            </div>\n          )}\n        </Measure>\n        <div className=\"custom-container\" />\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state) => ({\n  documentContentContainerWidthStyle: selectors.getDocumentContentContainerWidthStyle(state),\n  documentContainerLeftMargin: selectors.getDocumentContainerLeftMargin(state),\n  isRightPanelOpen: selectors.isElementOpen(state, 'searchPanel') || selectors.isElementOpen(state, 'notesPanel'),\n  isMultiTabEmptyPageOpen: selectors.getIsMultiTab(state) && selectors.getTabs(state).length === 0,\n  isSearchOverlayOpen: selectors.isElementOpen(state, DataElements.SEARCH_OVERLAY),\n  doesDocumentAutoLoad: selectors.doesDocumentAutoLoad(state),\n  zoom: selectors.getZoom(state),\n  currentPage: selectors.getCurrentPage(state),\n  isHeaderOpen: selectors.isElementOpen(state, 'header') && !selectors.isElementDisabled(state, 'header'),\n  displayMode: selectors.getDisplayMode(state),\n  totalPages: selectors.getTotalPages(state),\n  allowPageNavigation: selectors.getAllowPageNavigation(state),\n  isMouseWheelZoomEnabled: selectors.getEnableMouseWheelZoom(state),\n  isReaderMode: selectors.isReaderMode(state),\n  isInDesktopOnlyMode: selectors.isInDesktopOnlyMode(state),\n  isRedactionPanelOpen: selectors.isElementOpen(state, 'redactionPanel'),\n  isTextEditingPanelOpen: selectors.isElementOpen(state, 'textEditingPanel'),\n  isWv3dPropertiesPanelOpen: selectors.isElementOpen(state, 'wv3dPropertiesPanel'),\n  featureFlags: selectors.getFeatureFlags(state),\n  bottomHeaderHeight: selectors.getBottomHeadersHeight(state),\n  activeDocumentViewerKey: selectors.getActiveDocumentViewerKey(state),\n  isLogoBarEnabled: !selectors.isElementDisabled(state, DataElements.LOGO_BAR),\n  leftHeaderWidth: selectors.getLeftHeaderWidth(state),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n  dispatch,\n  openElement: (dataElement) => dispatch(actions.openElement(dataElement)),\n  closeElements: (dataElements) => dispatch(actions.closeElements(dataElements)),\n  setDocumentContainerWidth: (width) => dispatch(actions.setDocumentContainerWidth(width)),\n  setDocumentContainerHeight: (height) => dispatch(actions.setDocumentContainerHeight(height)),\n});\n\nconst ConnectedDocumentContainer = connect(mapStateToProps, mapDispatchToProps)(DocumentContainer);\n\nconst ConnectedComponent = (props) => {\n  const [isMobile, setIsMobile] = useState(isMobileSize());\n\n  useEffect(() => {\n    const onDocumentLoaded = () => {\n      if (window.isApryseWebViewerWebComponent) {\n        // For the 2nd viewer in multi-webcomponents, we need to delay updating isMobile until the document is loaded\n        // A better solution is to elevate useMedia hook but that requires refactoring DocumentContainer into a functional component\n        setIsMobile(isMobileSize());\n      }\n    };\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => core.removeEventListener('documentLoaded', onDocumentLoaded);\n  }, []);\n\n  return <ConnectedDocumentContainer {...props} isMobile={isMobile} />;\n};\n\nexport default ConnectedComponent;\n","import ConnectedComponent from './DocumentContainer';\n\nexport default ConnectedComponent;","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport ResizeBar from 'components/ResizeBar';\nimport selectors from 'selectors';\nimport { isTabletAndMobileSize } from 'helpers/getDeviceSize';\nimport classNames from 'classnames';\nimport DataElements from 'constants/dataElement';\n\nimport './RightPanel.scss';\n\nconst RightPanel = ({ children, dataElement, onResize }) => {\n  const [\n    currentToolbarGroup,\n    isHeaderOpen,\n    isToolsHeaderOpen,\n    isOfficeEditorToolsHeaderOpen,\n    isOpen,\n    isDisabled,\n    isInDesktopOnlyMode,\n    isMultiTabActive,\n    topHeaders,\n    featureFlags = {},\n    topHeadersHeight,\n    bottomHeadersHeight,\n    isLogoBarEnabled,\n  ] = useSelector(\n    (state) => [\n      selectors.getCurrentToolbarGroup(state),\n      selectors.isElementOpen(state, 'header'),\n      selectors.isElementOpen(state, 'toolsHeader'),\n      selectors.isElementOpen(state, 'officeEditorToolsHeader'),\n      selectors.isElementOpen(state, dataElement),\n      selectors.isElementDisabled(state, dataElement),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getIsMultiTab(state),\n      selectors.getTopHeaders(state),\n      selectors.getFeatureFlags(state),\n      selectors.getTopHeadersHeight(state),\n      selectors.getBottomHeadersHeight(state),\n      !selectors.isElementDisabled(state, DataElements.LOGO_BAR)\n    ],\n    shallowEqual,\n  );\n\n  const isTabletAndMobile = isTabletAndMobileSize();\n  const isVisible = isOpen && !isDisabled;\n\n  // TODO: For whoever is refactoring the RightPanel to make it generic, review if this is the best approach\n  // Once we move to the new modular UI we can remove the legacy stuff\n  const legacyToolsHeaderOpen = isToolsHeaderOpen && currentToolbarGroup !== 'toolbarGroup-View';\n  const legacyAllHeadersHidden = !isHeaderOpen && !legacyToolsHeaderOpen;\n  const { customizableUI } = featureFlags;\n  const style = {\n    // prevent panel from appearing until scss is loaded\n    display: 'none',\n  };\n  // Calculating its height according to the existing horizontal modular headers\n  if (customizableUI) {\n    const horizontalHeadersHeight = topHeadersHeight + bottomHeadersHeight;\n    style['height'] = `calc(100% - ${horizontalHeadersHeight}px)`;\n  }\n\n  return (\n    <div\n      className={classNames({\n        'right-panel': true,\n        'closed': !isVisible,\n        'tools-header-open': (customizableUI ? topHeaders.length === 2 : legacyToolsHeaderOpen) || isOfficeEditorToolsHeaderOpen,\n        'tools-header-and-header-hidden': customizableUI ? topHeaders.length === 0 : legacyAllHeadersHidden,\n        'multi-tab-active': isMultiTabActive,\n        'logo-bar-enabled': isLogoBarEnabled,\n      })}\n      style={style}\n    >\n      {(isInDesktopOnlyMode || !isTabletAndMobile) &&\n        <ResizeBar\n          dataElement={`${dataElement}ResizeBar`}\n          minWidth={293}\n          onResize={onResize}\n          leftDirection\n        />}\n      {children}\n    </div>\n  );\n};\n\nexport default RightPanel;\n","import RightPanel from './RightPanel';\n\nexport default RightPanel;","import React from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\n\nimport getHashParameters from 'helpers/getHashParameters';\nimport loadDocument from 'helpers/loadDocument';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\n\nimport './FilePickerHandler.scss';\n\nconst FilePickerHandler = () => {\n  const [isDisabled, isMultiTab, TabManager] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, 'filePickerHandler'),\n      selectors.getIsMultiTab(state),\n      selectors.getTabManager(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n\n  const openDocument = (e) => {\n    const file = e.target.files[0];\n    if (file) {\n      dispatch(actions.openElement(DataElements.PROGRESS_MODAL));\n      dispatch(actions.closeElement(DataElements.MENU_OVERLAY));\n      if (isMultiTab) {\n        return TabManager.addTab(file, { saveCurrentActiveTabState: true, load: true });\n      }\n      loadDocument(dispatch, file);\n    }\n  };\n\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const acceptFormats = wvServer ? window.Core.SupportedFileFormats.SERVER : window.Core.SupportedFileFormats.CLIENT;\n\n  return isDisabled ? null : (\n    <div className=\"FilePickerHandler\">\n      <input\n        id=\"file-picker\"\n        type=\"file\"\n        accept={acceptFormats.map(\n          (format) => `.${format}`,\n        ).join(', ')}\n        onChange={openDocument}\n      />\n    </div>\n  );\n};\n\nexport default FilePickerHandler;\n","import FilePickerHandler from './FilePickerHandler';\n\nexport default FilePickerHandler;\n","import CopyTextHandler from './CopyTextHandler';\n\nexport default CopyTextHandler;\n","import React from 'react';\nimport './CopyTextHandler.scss';\n\nconst CopyTextHandler = () => (\n  <div className=\"CopyTextHandler\">\n    <textarea id=\"copy-textarea\" tabIndex={-1} aria-hidden />\n  </div>\n);\n\nexport default CopyTextHandler;\n","import React, { useState, useEffect } from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\n\nimport core from 'core';\nimport { workerTypes } from 'constants/types';\nimport { isIOS } from 'helpers/device';\nimport selectors from 'selectors';\n\nimport './PrintHandler.scss';\nimport getRootNode from 'helpers/getRootNode';\n\nconst PrintHandler = () => {\n  const [isDisabled, isEmbedPrintSupported, printMargins] = useSelector(\n    (state) => [\n      selectors.isElementDisabled(state, 'printHandler'),\n      selectors.isEmbedPrintSupported(state),\n      selectors.getDefaultPrintMargins(state),\n    ],\n    shallowEqual,\n  );\n  const [documentType, setDocumentType] = useState('');\n  const [canEmbeddedPrintServer, setCanEmbeddedPrintServer] = useState(false);\n\n  useEffect(() => {\n    const onDocumentLoaded = () => {\n      // check if WebViewer server is enables and if the document is a PDF\n      core.getPrintablePDF() ? setCanEmbeddedPrintServer(true) : setCanEmbeddedPrintServer(false);\n      const type = core.getDocument().getType();\n      setDocumentType(type);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => core.removeEventListener('documentLoaded', onDocumentLoaded);\n  });\n\n  useEffect(() => {\n    const rootElement = window.isApryseWebViewerWebComponent ? getRootNode() : document.head;\n    if (rootElement) {\n      const marginStyleID = 'margin-style';\n      let element = rootElement.querySelector(`#${marginStyleID}`);\n      if (!element) {\n        element = document.createElement('style');\n        element.id = marginStyleID;\n        rootElement.appendChild(element);\n      }\n      element.textContent = `\n        @page {\n          margin: ${printMargins};\n        }\n      `;\n    }\n  }, [printMargins]);\n\n  return isDisabled ? null : (\n    <div\n      className={classNames({\n        PrintHandler,\n        'ios-print': isIOS,\n      })}\n    >\n      {isEmbedPrintSupported && (documentType !== workerTypes.XOD || canEmbeddedPrintServer) ? (\n        <iframe id=\"print-handler\" tabIndex={-1}></iframe>\n      ) : (\n        <div id=\"print-handler\"></div>\n      )}\n    </div>\n  );\n};\n\nexport default PrintHandler;\n","import PrintHandler from './PrintHandler';\n\nexport default PrintHandler;\n","let fontPath = null;\n/**\n * Set the path of fonts used in UI\n * @name setFontPath\n * @memberof Core\n * @function\n * @param {string} path the prefix url for font path.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setFontPath('path/to/font');\n  });\n */\nexport const setFontPath = (path) => {\n  if (!path.endsWith('/')) {\n    path += '/';\n  }\n  fontPath = path;\n};\n\n/**\n * Get the path of the font used in UI.\n * @name getFontPath\n * @memberof Core\n * @function\n * @returns {string} the prefix url for font path.\n */\nexport const getFontPath = () => {\n  return fontPath;\n};","import { getFontPath } from '../apis/fontPathHandler';\n\nconst defaultFonts = {\n  'Lato-Regular': {\n    type: 'woff',\n    style: {\n      family: 'Lato',\n    }\n  },\n  'Lato-Italic': {\n    type: 'woff',\n    style: {\n      family: 'Lato',\n      style: 'italic',\n    }\n  },\n  'Lato-Bold': {\n    type: 'woff',\n    style: {\n      family: 'Lato',\n      weight: 'bold'\n    }\n  },\n  'Lato-BoldItalic': {\n    type: 'woff',\n    style: {\n      family: 'Lato',\n      style: 'italic',\n      weight: 'bold'\n    }\n  },\n  'GreatVibes-Regular': {\n    type: ['woff2', 'woff'],\n    style: {\n      family: 'GreatVibes-Regular',\n    }\n  },\n  'Satisfy': {\n    type: 'woff',\n    style: {\n      family: 'Satisfy',\n    }\n  },\n  'Nothing-You-Could-Do': {\n    type: 'woff',\n    style: {\n      family: 'Nothing-You-Could-Do',\n    }\n  },\n  'La-Belle-Aurore': {\n    type: 'woff',\n    style: {\n      family: 'La-Belle-Aurore',\n    }\n  },\n  'Whisper': {\n    type: 'woff',\n    style: {\n      family: 'Whisper',\n    }\n  },\n};\n\nconst loadFont = (font, fontType, isWebFont = false, fileName = null, style = {}) => {\n  const fontDirectoryPaht = getFontPath() || 'assets/fonts/';\n\n  const fontTypes = {\n    ttf: 'truetype',\n    woff: 'woff',\n    woff2: 'woff2',\n  };\n  const fontName = font.replace(/\\s/g, '');\n  if (!fileName) {\n    fileName = fontName;\n  }\n  const isWebComponent = window.isApryseWebViewerWebComponent;\n  const fontStyle = { style: 'normal', weight: 'normal', ...style };\n\n  let url = '';\n\n  if (Array.isArray(fontType)) {\n    const urls = fontType.map((type) => {\n      // eslint-disable-next-line no-undef, camelcase\n      const fontPath = `${isWebComponent ? __webpack_public_path__ : './'}${fontDirectoryPaht}${isWebFont ? 'webfonts/' : ''}${fileName}.${type}`;\n      return `url(${fontPath}) format(${fontTypes[type]})`;\n    });\n    url = urls.join();\n  } else {\n    // eslint-disable-next-line no-undef, camelcase\n    const fontPath = `${isWebComponent ? __webpack_public_path__ : './'}${fontDirectoryPaht}${isWebFont ? 'webfonts/' : ''}${fileName}.${fontType}`;\n    url = `url(${fontPath}) format(${fontTypes[fontType]})`;\n  }\n\n  const fontFace = new FontFace(font, url, fontStyle);\n  fontFace.load().then(function(loadedFace) {\n    document.fonts.add(loadedFace);\n  });\n};\n\nexport default loadFont;\n\nexport const loadDefaultFonts = () => {\n  Object.keys(defaultFonts).forEach((fontName) => {\n    const item = defaultFonts[fontName];\n    loadFont(item.style.family, item.type, false, fontName, item.style);\n  });\n};\n","import FontHandler from './FontHandler';\n\nexport default FontHandler;","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport webFonts from 'constants/webFonts';\nimport loadFont from 'src/helpers/loadFont';\nimport selectors from 'selectors';\n\n// this component is used to preload the font(s) that are used in Annotations and the SignatureModal(TextSignature)\n// if the font(s) isn't loaded in advanced, we will see the signature text filled with the sans-serif font\n// we could use <link rel=\"preload\" href=\"/path/some.woff2\" as=\"font\"> to preload a font but this hasn't been supported in all the browsers\nconst FontHandler = () => {\n  const signatureFonts = useSelector((state) => selectors.getSignatureFonts(state));\n  const isWebComponent = window.isApryseWebViewerWebComponent;\n\n  // load webfonts and if using web component load default font and signature fonts.\n  useEffect(() => {\n    if (isWebComponent) {\n      const defaultFonts = {\n        'Lato-Regular': {\n          'style': 'normal',\n          'weight': 'normal',\n        },\n        'Lato-Italic': {\n          'style': 'italic',\n          'weight': 'normal',\n        },\n        'Lato-Bold': {\n          'style': 'normal',\n          'weight': 'bold',\n        },\n        'Lato-BoldItalic': {\n          'style': 'italic',\n          'weight': 'bold',\n        },\n      };\n\n      Object.keys(defaultFonts).forEach((font) => {\n        loadFont('Lato', 'woff', false, font, defaultFonts[font]);\n      });\n\n      signatureFonts.forEach((font) => {\n        loadFont(font, 'woff');\n      });\n\n      loadFont('GreatVibes-Regular', 'woff2');\n    }\n\n    webFonts.forEach((font) => {\n      loadFont(font, 'ttf', true);\n    });\n  }, []);\n\n  return isWebComponent ? null : (\n    <div style={{ opacity: 0 }}>\n      {signatureFonts.map((font) => (\n        <span key={font} style={{ fontFamily: font }}></span>\n      ))}\n    </div>\n  );\n};\nexport default FontHandler;\n","import React from 'react';\nimport './PropertyKeyValuePair.scss';\n\nconst PropertyKeyValuePair = (props) => {\n  const { name, value } = props;\n\n  return (\n    <div data-element=\"propertyKeyValuePair\" className=\"property-pair\" key={name}>\n      <span className=\"property-key\">{name}</span>\n      <span className=\"property-value\">{value}</span>\n    </div>\n  );\n};\n\nexport default PropertyKeyValuePair;\n","import React from 'react';\nimport PropertyKeyValuePair from '../PropertyKeyValuePair/PropertyKeyValuePair';\n\nconst GeneralValuesSection = (props) => {\n  const { entities } = props;\n\n  const elements = [];\n\n  for (const entity in entities) {\n    elements.push(<PropertyKeyValuePair key={entity} name={entity} value={entities[entity]} />);\n  }\n\n  return <div data-element=\"generalValues\">{elements}</div>;\n};\n\nexport default GeneralValuesSection;\n","import React, { useState, useMemo } from 'react';\nimport Icon from 'components/Icon';\nimport PropertyKeyValuePair from '../PropertyKeyValuePair/PropertyKeyValuePair';\nimport './Group.scss';\n\nconst Group = (props) => {\n  const { name, data, open } = props;\n\n  const [isActive, setIsActive] = useState(open);\n  const downArrow = 'ic_chevron_down_black_24px';\n  const rightArrow = 'ic_chevron_right_black_24px';\n\n  const onClick = () => {\n    setIsActive(!isActive);\n  };\n\n  const elements = useMemo(() => {\n    return Object.entries(data).map((entity) => (\n      <PropertyKeyValuePair key={entity[0]} name={entity[0]} value={entity[1]} />\n    ));\n  }, [data]);\n\n  return (\n    <div data-element=\"Group\">\n      <div className=\"group-title\">\n        <div onClick={onClick}>\n          <Icon glyph={`${isActive ? downArrow : rightArrow}`} />\n        </div>\n        <span>{name}</span>\n      </div>\n\n      <div className={`dropdown ${isActive ? 'active' : 'inactive'}`}>{elements}</div>\n    </div>\n  );\n};\n\nexport default React.memo(Group);\n","import React from 'react';\nimport Group from '../Group/Group';\n\nfunction addOrderedGroups(orderedGroup, groups) {\n  const orderArray = [];\n  for (const group in orderedGroup) {\n    const groupName = orderedGroup[group];\n\n    if (groupName in groups) {\n      orderArray.push(<Group name={groupName} key={groupName} data={groups[groupName]} open />);\n    }\n  }\n\n  return orderArray;\n}\n\nconst GroupsContainer = (props) => {\n  const { groups, groupOrder } = props;\n\n  let combinedGroups = [];\n\n  if (groupOrder && groupOrder.length > 0) {\n    combinedGroups = addOrderedGroups(groupOrder, groups);\n\n    for (const group in groups) {\n      if (!groupOrder.includes(group)) {\n        combinedGroups.push(<Group name={group} key={group} data={groups[group]} open />);\n      }\n    }\n  } else {\n    for (const group in groups) {\n      combinedGroups.push(<Group name={group} key={group} data={groups[group]} open />);\n    }\n  }\n\n  return <div data-element=\"groupsContainer\">{combinedGroups}</div>;\n};\n\nexport default GroupsContainer;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport './HeaderTitle.scss';\n\nconst HeaderTitle = (attributes) => {\n  const { title } = attributes;\n  const { t } = useTranslation();\n\n  return (\n    <h1 data-element=\"headerTitle\" className=\"header-title\">\n      <span>{t('wv3dPropertiesPanel.propertiesHeader')}</span>\n      <span> </span>\n      <span className=\"header-value\">{title}</span>\n    </h1>\n  );\n};\n\nexport default HeaderTitle;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport GeneralValuesSection from '../GeneralValuesSection/GeneralValuesSection';\nimport GroupsContainer from '../GroupsContainer/GroupsContainer';\nimport Group from '../Group/Group';\nimport HeaderTitle from '../HeaderTitle/HeaderTitle';\n\nfunction createDataSet(dataMap, propertySet, removeEmptyRows) {\n  const combinedMap = {};\n\n  if (removeEmptyRows) {\n    for (const item in dataMap) {\n      const dataPoint = propertySet[dataMap[item]];\n      if (dataPoint !== undefined && dataPoint !== '') {\n        combinedMap[item] = dataPoint;\n      }\n    }\n  } else {\n    for (const item in dataMap) {\n      combinedMap[item] = propertySet[dataMap[item]];\n    }\n  }\n\n  return combinedMap;\n}\n\nfunction checkForEmptyKeys(data) {\n  for (const key in data) {\n    const value = data[key];\n    if (value !== undefined && value !== '') {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction generateGroupDataSet(dataMap, propertySet, removeEmptyRows, removeEmptyGroups) {\n  const combinedGroupMap = {};\n\n  if (removeEmptyGroups) {\n    for (const group in dataMap) {\n      const dataset = createDataSet(dataMap[group], propertySet, removeEmptyRows);\n      if (Object.keys(dataset).length > 0) {\n        if (!checkForEmptyKeys(dataset)) {\n          combinedGroupMap[group] = dataset;\n        }\n      }\n    }\n  } else {\n    for (const group in dataMap) {\n      combinedGroupMap[group] = createDataSet(dataMap[group], propertySet, removeEmptyRows);\n    }\n  }\n\n  return combinedGroupMap;\n}\n\nconst PropertiesElement = (props) => {\n  const { element, schema } = props;\n\n  const {\n    headerName,\n    defaultValues,\n    groups,\n    groupOrder,\n    removeEmptyRows,\n    removeEmptyGroups,\n    createRawValueGroup,\n  } = schema;\n\n  const { t } = useTranslation();\n\n  const defaultItems = createDataSet(defaultValues, element, removeEmptyRows);\n  const groupsItems = generateGroupDataSet(groups, element, removeEmptyRows, removeEmptyGroups);\n  const name = element[headerName];\n\n  return (\n    <section data-element=\"propertiesElement\">\n      <HeaderTitle title={name} />\n      <GeneralValuesSection entities={defaultItems} />\n      <GroupsContainer groups={groupsItems} groupOrder={groupOrder} />\n      {createRawValueGroup ? (\n        <Group data-element=\"Group\" name={t('wv3dPropertiesPanel.miscValuesHeader')} data={element} open={true} />\n      ) : null}\n    </section>\n  );\n};\n\nexport default PropertiesElement;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport DataElementWrapper from '../DataElementWrapper';\nimport { v4 as uuidv4 } from 'uuid';\nimport './Wv3dPropertiesPanel.scss';\nimport '../Panel/Panel.scss';\nimport PropertiesElement from './PropertiesElement/PropertiesElement';\n\nconst Wv3dPropertiesPanel = (props) => {\n  const { currentWidth, isInDesktopOnlyMode, isMobile = false, closeWv3dPropertiesPanel, schema, modelData } = props;\n\n  const { t } = useTranslation();\n  const style = !isInDesktopOnlyMode && isMobile ? {} : { width: `${currentWidth}px`, minWidth: `${currentWidth}px` };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeWv3dPropertiesPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  let propertiesCollection = modelData.map((element) => (\n    <PropertiesElement key={`${element.handle}-${uuidv4()}`} element={element} schema={schema} />\n  ));\n\n  const emptyPanelPlaceholder = () => {\n    return (\n      <div className=\"no-selections\">\n        <div>\n          <Icon className=\"empty-icon\" glyph=\"ic-wv3d-properties-panel-menu\" />\n        </div>\n        <div className=\"empty-text\">{t('wv3dPropertiesPanel.emptyPanelMessage')}</div>\n      </div>\n    );\n  };\n\n  if (modelData.length < 1) {\n    propertiesCollection = emptyPanelPlaceholder();\n  }\n\n  return (\n    <DataElementWrapper dataElement=\"wv3dPropertiesPanel\" className=\"Panel wv3d-properties-panel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      {propertiesCollection}\n    </DataElementWrapper>\n  );\n};\n\nexport default Wv3dPropertiesPanel;\n","import React, { useEffect, useState } from 'react';\nimport Wv3dPropertiesPanel from './Wv3dPropertiesPanel';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\nconst Wv3dPropertiesPanelContainer = () => {\n  const [isOpen, isDisabled, wv3dPropertiesPanelWidth, isInDesktopOnlyMode, modelData, schema] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'wv3dPropertiesPanel'),\n      selectors.isElementDisabled(state, 'wv3dPropertiesPanel'),\n      selectors.getWv3dPropertiesPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.getWv3dPropertiesPanelModelData(state),\n      selectors.getWv3dPropertiesPanelSchema(state),\n    ],\n    shallowEqual,\n  );\n\n  const isMobile = isMobileSize();\n\n  const dispatch = useDispatch();\n\n  const closeWv3dPropertiesPanel = () => {\n    dispatch(actions.closeElement('wv3dPropertiesPanel'));\n  };\n\n  const [renderNull, setRenderNull] = useState(false);\n\n  useEffect(() => {\n    const timeout = setTimeout(() => {\n      setRenderNull(!isOpen);\n    }, 500);\n    return () => {\n      clearTimeout(timeout);\n    };\n  }, [isOpen]);\n\n  if (isDisabled || (!isOpen && renderNull)) {\n    return null;\n  }\n\n  return (\n    <Wv3dPropertiesPanel\n      isInDesktopOnlyMode={isInDesktopOnlyMode}\n      isMobile={isMobile}\n      currentWidth={wv3dPropertiesPanelWidth}\n      closeWv3dPropertiesPanel={closeWv3dPropertiesPanel}\n      modelData={modelData}\n      schema={schema}\n    />\n  );\n};\n\nexport default Wv3dPropertiesPanelContainer;\n","import Wv3dPropertiesPanelContainer from './Wv3dPropertiesPanelContainer';\n\nexport default Wv3dPropertiesPanelContainer;\n","import React from 'react';\nimport classNames from 'classnames';\nimport Icon from 'components/Icon';\nimport { useTranslation } from 'react-i18next';\nimport { Choice } from '@pdftron/webviewer-react-toolkit';\nimport Dropdown from 'components/Dropdown';\nimport actions from 'actions';\nimport { useDispatch } from 'react-redux';\nimport DataElements from 'constants/dataElement';\n\nimport './SnippingToolPopup.scss';\nimport Button from 'components/Button';\n\nconst SnippingToolPopup = ({\n  snippingMode,\n  onSnippingModeChange,\n  closeSnippingPopup,\n  applySnipping,\n  isSnipping,\n  isInDesktopOnlyMode,\n  isMobile,\n  shouldShowApplySnippingWarning,\n}) => {\n  const { t } = useTranslation();\n\n  const snippingNames = {\n    'CLIPBOARD': t('snippingPopUp.clipboard'),\n    'DOWNLOAD': t('snippingPopUp.download'),\n    'CROP_AND_REMOVE': t('snippingPopUp.cropAndRemove'),\n  };\n\n  const className = classNames({\n    Popup: true,\n    SnippingToolPopup: true,\n    mobile: isMobile,\n  });\n\n  const handleButtonPressed = (button) => {\n    switch (button) {\n      case 'apply':\n        shouldShowApplySnippingWarning && snippingMode === 'CROP_AND_REMOVE' ? openSnippingConfirmationWarning() : applySnipping();\n        break;\n      case 'cancel':\n        isSnipping ? openSnippingCancellationWarning() : closeSnippingPopup();\n        break;\n    }\n  };\n\n  const dispatch = useDispatch();\n\n  const openSnippingConfirmationWarning = () => {\n    const title = t('snippingPopUp.snippingModal.applyTitle');\n    const message = t('snippingPopUp.snippingModal.applyMessage');\n    const confirmationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        applySnipping();\n      },\n    };\n    dispatch(actions.showWarningMessage(confirmationWarning));\n  };\n\n  const openSnippingCancellationWarning = () => {\n    const title = t('snippingPopUp.snippingModal.cancelTitle');\n    const message = t('snippingPopUp.snippingModal.cancelMessage');\n    const cancellationWarning = {\n      message,\n      title,\n      onConfirm: () => {\n        closeSnippingPopup();\n      },\n    };\n    dispatch(actions.showWarningMessage(cancellationWarning));\n  };\n\n  if (isMobile && !isInDesktopOnlyMode) {\n    return (\n      <div className={className} data-element={DataElements.SNIPPING_TOOL_POPUP}>\n        <div className=\"snipping-mobile-section\">\n          <div className=\"snipping-mobile-container\">\n            <div className=\"custom-select snipping-selector\">\n              <Dropdown\n                items={Object.values(snippingNames)}\n                onClickItem={(e) => onSnippingModeChange(Object.keys(snippingNames).find((key) => snippingNames[key] === e))}\n                currentSelectionKey={snippingNames[snippingMode]}\n              />\n            </div>\n            <button\n              className=\"save-button\"\n              data-element=\"snippingApplyButton\"\n              onClick={() => handleButtonPressed('apply')}\n              disabled={!isSnipping}\n            >\n              {t('action.apply')}\n            </button>\n          </div>\n          <button\n            className=\"cancel-button\"\n            data-element=\"snippingCancelButton\"\n            onClick={() => handleButtonPressed('cancel')}\n          >\n            <Icon glyph=\"icon-close\" />\n          </button>\n        </div>\n      </div>\n    );\n  }\n  return (\n    <div className={className} data-element={DataElements.SNIPPING_TOOL_POPUP}>\n      <div className=\"snipping-section\">\n        <span className=\"menu-title\">{t('snippingPopUp.title')}</span>\n        <Choice\n          label={t('snippingPopUp.clipboard')}\n          name=\"CLIPBOARD\"\n          data-element=\"copyToClipboardRadioButton\"\n          onChange={() => onSnippingModeChange('CLIPBOARD')}\n          checked={snippingMode === 'CLIPBOARD'}\n          radio\n        />\n        <Choice\n          label={t('snippingPopUp.download')}\n          name=\"DOWNLOAD\"\n          data-element=\"downloadSnippingRadioButton\"\n          onChange={() => onSnippingModeChange('DOWNLOAD')}\n          checked={snippingMode === 'DOWNLOAD'}\n          radio\n        />\n        <Choice\n          label={t('snippingPopUp.cropAndRemove')}\n          name=\"CROP_AND_REMOVE\"\n          data-element=\"cropAndRemoveRadioButton\"\n          onChange={() => onSnippingModeChange('CROP_AND_REMOVE')}\n          checked={snippingMode === 'CROP_AND_REMOVE'}\n          radio\n        />\n      </div>\n      <div className=\"divider\" />\n      <div className=\"buttons\">\n        <Button\n          className=\"cancel-button\"\n          dataElement=\"snippingCancelButton\"\n          onClick={() => handleButtonPressed('cancel')}\n          label={t('action.cancel')} />\n\n        <Button\n          className=\"save-button\"\n          dataElement=\"snippingApplyButton\"\n          onClick={() => handleButtonPressed('apply')}\n          disabled={!isSnipping}\n          label={t('action.apply')}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default SnippingToolPopup;\n","import useOnSnippingAnnotationChangedOrSelected from './useOnSnippingAnnotationChangedOrSelected';\n\nexport default useOnSnippingAnnotationChangedOrSelected;","import { useEffect, useState } from 'react';\nimport core from 'core';\n\nexport default function useOnCropAnnotationChangedOrSelected(openSnippingPopup) {\n  const [snippingAnnotation, setSnippingAnnotation] = useState(null);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'add' && annotation.ToolName === window.Core.Tools.ToolNames['SNIPPING'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setSnippingAnnotation(annotation);\n        openSnippingPopup();\n      }\n      if (action === 'delete' && annotation.ToolName === window.Core.Tools.ToolNames['SNIPPING'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setSnippingAnnotation(null);\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      const annotation = annotations[0];\n      if (action === 'selected' && annotation.ToolName === window.Core.Tools.ToolNames['SNIPPING'] && annotation instanceof window.Core.Annotations.RectangleAnnotation) {\n        setSnippingAnnotation(annotation);\n        openSnippingPopup();\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, []);\n\n  return snippingAnnotation;\n}\n","import React, { useEffect, useState, useRef, useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport SnippingToolPopup from './SnippingToolPopup';\nimport './SnippingToolPopup.scss';\nimport Draggable from 'react-draggable';\nimport useOnSnippingAnnotationChangedOrSelected from '../../hooks/useOnSnippingAnnotationChangedOrSelected';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport getRootNode from 'helpers/getRootNode';\nimport DataElements from 'constants/dataElement';\n\nfunction SnippingToolPopupContainer() {\n  const snippingToolName = window.Core.Tools.ToolNames['SNIPPING'];\n  const snippingCreateTool = core.getTool(snippingToolName);\n  const [\n    isOpen,\n    isInDesktopOnlyMode,\n    shouldShowApplySnippingWarning,\n  ] = useSelector((state) => [\n    selectors.getActiveToolName(state) === snippingToolName && selectors.isElementOpen(state, DataElements.SNIPPING_TOOL_POPUP),\n    selectors.isInDesktopOnlyMode(state),\n    selectors.shouldShowApplySnippingWarning(state),\n  ]);\n  const dispatch = useDispatch();\n  const [isSnipping, setIsSnipping] = useState(snippingCreateTool.getIsSnipping());\n\n  const elementsToClose = ['leftPanel', 'searchPanel', 'notesPanel', 'redactionPanel', 'textEditingPanel'];\n\n  const openSnippingPopup = () => {\n    dispatch(actions.openElement(DataElements.SNIPPING_TOOL_POPUP));\n    // eslint-disable-next-line no-undef\n    dispatch(actions.closeElements(elementsToClose));\n    setIsSnipping(snippingCreateTool.getIsSnipping());\n  };\n\n  useEffect(() => {\n    const handleSnippingCancellation = () => setIsSnipping(false);\n\n    const handleToolModeChange = (newTool, oldTool) => {\n      if (newTool instanceof Core.Tools.SnippingCreateTool) { // eslint-disable-line no-undef\n        newTool.addEventListener(window.Core.Tools.SnippingCreateTool.Events['SNIPPING_CANCELLED'], handleSnippingCancellation);\n        openSnippingPopup();\n      } else if (oldTool instanceof Core.Tools.SnippingCreateTool) { // eslint-disable-line no-undef\n        newTool.removeEventListener(window.Core.Tools.SnippingCreateTool.Events['SNIPPING_CANCELLED'], handleSnippingCancellation);\n        setIsSnipping(false);\n        snippingCreateTool.reset();\n        reenableHeader();\n      }\n    };\n\n    core.addEventListener('toolModeUpdated', handleToolModeChange);\n\n    return () => {\n      core.removeEventListener('toolModeUpdated', handleToolModeChange);\n    };\n  });\n\n  const disableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = 'none';\n      header.style.opacity = '0.5';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = 'none';\n      toolsHeader.style.opacity = '0.5';\n    }\n  };\n\n  const reenableHeader = () => {\n    const header = getRootNode().querySelector('[data-element=header]');\n    if (header) {\n      header.style.pointerEvents = '';\n      header.style.opacity = '1';\n    }\n\n    const toolsHeader = getRootNode().querySelector('[data-element=toolsHeader]');\n    if (toolsHeader) {\n      toolsHeader.style.pointerEvents = '';\n      toolsHeader.style.opacity = '1';\n    }\n  };\n\n  const snippingAnnotation = useOnSnippingAnnotationChangedOrSelected(openSnippingPopup);\n\n  // re-enable other tools and panels while not snipping\n  useEffect(() => {\n    if (!isSnipping) {\n      reenableHeader();\n    } else {\n      disableHeader();\n    }\n  }, [isSnipping]);\n\n  const [snippingMode, setSnippingMode] = useState(null);\n\n  useEffect(() => {\n    snippingCreateTool.setSnippingMode('CLIPBOARD');\n    setSnippingMode('CLIPBOARD');\n  }, []);\n\n  const onSnippingModeChange = (option) => {\n    snippingCreateTool.setSnippingMode(option);\n    setSnippingMode(option);\n  };\n\n  const snippingPopupRef = useRef();\n  const DEFAULT_POPUP_WIDTH = 250;\n  const DEFAULT_POPUP_HEIGHT = 200;\n  const documentContainerElement = core.getScrollViewElement();\n  const popupWidth = snippingPopupRef.current?.getBoundingClientRect().width || DEFAULT_POPUP_WIDTH;\n  const popupHeight = snippingPopupRef.current?.getBoundingClientRect().height || DEFAULT_POPUP_HEIGHT;\n  const docContainer = getRootNode().querySelector('.DocumentContainer');\n  const xOffset = docContainer?.getBoundingClientRect().width || 0;\n\n  const getSnippingPopupOffset = () => {\n    const offset = {\n      x: xOffset - popupWidth - 20,\n      y: documentContainerElement?.offsetTop + 10,\n    };\n    if (snippingAnnotation && snippingPopupRef?.current) {\n      offset.x = Math.min(offset.x, documentContainerElement.offsetWidth - popupWidth);\n    }\n    return offset;\n  };\n\n  const getSnippingPopupBounds = () => {\n    const bounds = {\n      top: 0,\n      bottom: documentContainerElement.offsetHeight - popupHeight,\n      left: 0 - getSnippingPopupOffset()['x'],\n      right: documentContainerElement.offsetWidth - getSnippingPopupOffset()['x'] - popupWidth,\n    };\n    return bounds;\n  };\n\n  const closeAndReset = () => {\n    snippingCreateTool.reset();\n    dispatch(actions.closeElement(DataElements.SNIPPING_TOOL_POPUP));\n    reenableHeader();\n    core.setToolMode(window.Core.Tools.ToolNames.SNIPPING);\n  };\n\n  const closeSnippingPopup = useCallback(() => {\n    closeAndReset();\n  }, []);\n\n  // disable/enable the 'apply' button when snipping\n  useEffect(() => {\n    setIsSnipping(snippingCreateTool.getIsSnipping());\n  }, [snippingAnnotation]);\n\n  const applySnipping = async () => {\n    await snippingCreateTool.applySnipping();\n    snippingCreateTool.reset();\n    reenableHeader();\n  };\n\n  const props = {\n    snippingMode,\n    onSnippingModeChange,\n    closeSnippingPopup,\n    applySnipping,\n    isSnipping,\n    isInDesktopOnlyMode,\n    shouldShowApplySnippingWarning,\n  };\n\n  const isMobile = isMobileSize();\n\n  if (isOpen && core.getDocument()) {\n    if (isMobile && !isInDesktopOnlyMode) {\n      // disable draggable on mobile devices\n      return (\n        <div className=\"SnippingPopupContainer\" ref={snippingPopupRef}>\n          <SnippingToolPopup {...props} isMobile />\n        </div>\n      );\n    }\n    return (\n      <Draggable\n        cancel={'input, button, .collapsible-menu, .ui__choice__label'}\n        positionOffset={getSnippingPopupOffset()}\n        bounds={getSnippingPopupBounds()}\n      >\n        <div className=\"SnippingPopupContainer\" ref={snippingPopupRef}>\n          <SnippingToolPopup {...props} />\n        </div>\n      </Draggable>\n    );\n  }\n  return null;\n}\n\nexport default SnippingToolPopupContainer;\n","import SnippingToolPopupContainer from './SnippingToolPopupContainer';\n\nexport default SnippingToolPopupContainer;","import React from 'react';\n\nconst EmbeddedJSPopupMenuOption = ({ title, onClick }) => {\n  if (title === '-') {\n    return <hr/>;\n  }\n\n  const onOptionClick = () => {\n    if (onClick) {\n      onClick(title);\n    }\n  };\n\n  return (\n    <div className=\"menu-option\" onClick={onOptionClick}>\n      <div>{title}</div>\n    </div>\n  );\n};\n\nexport default EmbeddedJSPopupMenuOption;\n","import React, { useRef, useState } from 'react';\n\nimport Icon from 'components/Icon';\nimport EmbeddedJSPopupMenu from './EmbeddedJSPopupMenu';\n\nconst EmbeddedJSPopupSubMenu = ({ title, onClick, popUpMenuItems, scrollTop = 0 }) => {\n  const [isSubMenuOpen, setSubMenuOpen] = useState(false);\n  const [position, setPosition] = useState({ left: undefined, top: undefined });\n  const optionRef = useRef();\n\n  const onSubMenuHover = () => {\n    setSubMenuOpen(true);\n    setPosition({\n      left: optionRef.current.clientWidth,\n      top: optionRef.current.offsetTop - scrollTop,\n    });\n  };\n\n  const onSubMenuLeave = () => {\n    setSubMenuOpen(false);\n    setPosition({\n      left: optionRef.current.clientWidth,\n      top: 0,\n    });\n  };\n\n  return (\n    <div className=\"menu-option\" ref={optionRef} onMouseEnter={onSubMenuHover} onMouseLeave={onSubMenuLeave}>\n      <div>{title}</div>\n      {\n        <>\n          <div style={{ display: 'flex', flexDirection: 'column', alignSelf: 'center' }}><Icon glyph=\"ic_chevron_right_black_24px\" /></div>\n          <EmbeddedJSPopupMenu\n            title={`${title}SubMenu`}\n            popUpMenuItems={popUpMenuItems}\n            isSubOpen={isSubMenuOpen}\n            onSelectOption={onClick}\n            left={position.left}\n            top={position.top}\n          />\n        </>\n      }\n    </div>\n  );\n};\n\nexport default EmbeddedJSPopupSubMenu;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport EmbeddedJSPopupOption from './EmbeddedJSPopupOption';\nimport EmbeddedJSPopupSubMenu from './EmbeddedJSPopupSubMenu';\n\nimport actions from 'actions';\nimport core from 'core';\nimport selectors from 'selectors';\n\nconst EmbeddedJSPopupMenu = React.forwardRef(({ dataElement, isSubOpen, left = 0, top = 0, onSelectOption, popUpMenuItems }, ref) => {\n  if (!isSubOpen || !popUpMenuItems || popUpMenuItems.length <= 0) {\n    return <></>;\n  }\n\n  const [\n    embeddedJSPopupStyle,\n  ] = useSelector((state) => [\n    selectors.getEmbeddedJSPopupStyle(state),\n  ], shallowEqual);\n\n  const scrollContainer = core.getScrollViewElement();\n  const dispatch = useDispatch();\n  const containerRef = useRef();\n\n  // Adjust scrolling based on distance from bottom\n  const [maxHeight, setMaxHeight] = useState('auto');\n  // Options need to know how much to shift by if there is scrolling\n  const [scrollTop, setScrollTop] = useState(0);\n\n  useEffect(() => {\n    if (isSubOpen) {\n      dispatch(actions.closeElements(['annotationPopup', 'textPopup']));\n    }\n    const containerRect = containerRef.current.getBoundingClientRect();\n    // Update the menu size if it is too long\n    const mHeight = containerRect.bottom >= scrollContainer.clientHeight ? containerRect.height - (containerRect.bottom - scrollContainer.clientHeight) : null;\n    setMaxHeight(mHeight);\n  }, [dispatch, isSubOpen]);\n\n  const onScrollContainer = (e) => {\n    if (e.target === containerRef.current) {\n      setScrollTop(e.target.scrollTop);\n    }\n  };\n\n  const customMenuStyle = embeddedJSPopupStyle || {};\n\n  return (\n    <div\n      ref={ref}\n      className={classNames({\n        Popup: true,\n        EmbeddedJSPopup: true,\n        open: isSubOpen,\n        closed: !isSubOpen,\n      })}\n      style={{ left, top, flexDirection: 'column' }}\n      data-element={dataElement}\n    >\n      <div ref={containerRef} style={{ overflowY: 'auto', maxHeight, ...customMenuStyle }} onScroll={onScrollContainer}>\n        {\n          popUpMenuItems.map((popUpMenuItem, index) => {\n            if (typeof popUpMenuItem === 'string' || popUpMenuItem instanceof String) {\n              return (\n                <EmbeddedJSPopupOption\n                  key={`${popUpMenuItem}_${index}`}\n                  title={popUpMenuItem}\n                  onClick={onSelectOption}\n                />\n              );\n            }\n            if (Array.isArray(popUpMenuItem)) {\n              return (\n                <EmbeddedJSPopupSubMenu\n                  key={`${popUpMenuItem[0]}_${index}`}\n                  title={popUpMenuItem[0]}\n                  scrollTop={scrollTop}\n                  onClick={onSelectOption}\n                  popUpMenuItems={popUpMenuItem.slice(1)}\n                />\n              );\n            }\n            return null;\n          })\n        }\n      </div>\n    </div>\n  );\n});\n\nEmbeddedJSPopupMenu.displayName = 'EmbeddedJSPopupMenu';\n\nexport default EmbeddedJSPopupMenu;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport DataElements from 'constants/dataElement';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport EmbeddedJSPopupMenu from './EmbeddedJSPopupMenu';\n\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\n\nimport './EmbeddedJSPopup.scss';\n\nconst EmbeddedJSPopup = () => {\n  const documentViewer = core.getDocumentViewer();\n  const annotManager = core.getAnnotationManager();\n  const fieldManager = annotManager.getFieldManager();\n  const [isOpen, isDisabled] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, DataElements.EMBEDDED_JS_POPUP),\n      selectors.isElementDisabled(state, DataElements.EMBEDDED_JS_POPUP),\n    ],\n    shallowEqual,\n  );\n\n  if (isDisabled) {\n    return (null);\n  }\n\n  const dispatch = useDispatch();\n  const [position, setPosition] = useState({ left: 0, top: 0 });\n  const [popUpMenuItems, setPopUpMenuItems] = useState([]);\n  const [popupData, setPopupData] = useState(null);\n  const popupRef = useRef();\n\n  useOnClickOutside(popupRef, () => {\n    dispatch(actions.closeElement(DataElements.EMBEDDED_JS_POPUP));\n  });\n\n  useEffect(() => {\n    if (isOpen) {\n      dispatch(actions.closeElements([\n        DataElements.ANNOTATION_POPUP,\n        DataElements.TEXT_POPUP,\n      ]));\n    }\n  }, [dispatch, isOpen]);\n\n  const onFieldClick = (e) => {\n    setPosition({\n      left: `${parseInt(e.x, 10) + 10}px`,\n      top: `${parseInt(e.y, 10)}px`,\n    });\n  };\n\n  useEffect(() => {\n    let field;\n    const onPopUpMenu = (e) => {\n      setPopupData(e);\n      setPopUpMenuItems(e.popUpMenuItems);\n      field = fieldManager.getField(e.fieldName);\n      field.widgets.forEach((widget) => {\n        const element = widget.element;\n        element.addEventListener('click', onFieldClick);\n      });\n      dispatch(actions.openElement(DataElements.EMBEDDED_JS_POPUP));\n    };\n\n    documentViewer.addEventListener('embeddedPopUpMenu', onPopUpMenu);\n    return () => {\n      documentViewer.removeEventListener('embeddedPopUpMenu', onPopUpMenu);\n    };\n  }, [dispatch]);\n\n  const clickMenuItem = (value) => {\n    if (popupData) {\n      popupData.onSelect(value);\n    }\n    dispatch(actions.closeElement(DataElements.EMBEDDED_JS_POPUP));\n  };\n\n  if (!isOpen) {\n    return null;\n  }\n\n  return (\n    <DataElementWrapper\n      dataElement={DataElements.EMBEDDED_JS_POPUP}\n      ref={popupRef}\n    >\n      <EmbeddedJSPopupMenu\n        isSubOpen={isOpen}\n        left={position.left}\n        top={position.top}\n        onSelectOption={clickMenuItem}\n        popUpMenuItems={popUpMenuItems}\n      />\n    </DataElementWrapper>\n  );\n};\n\nexport default EmbeddedJSPopup;\n","import EmbeddedJSPopup from './EmbeddedJSPopup';\n\nexport default EmbeddedJSPopup;\n","import useOnFormFieldsChanged from './useOnFormFieldsChanged';\n\nexport default useOnFormFieldsChanged;","import { useState, useEffect } from 'react';\nimport core from 'core';\n\nexport default function useOnFormFieldsChanged() {\n  const [formFieldAnnotationsList, setFormFieldAnnotationsList] = useState([]);\n\n  useEffect(() => {\n    const setFormFieldIndicators = () => {\n      let formFieldIndicators = [];\n      const annotations = core.getAnnotationsList();\n      const formFieldCreationManager = core.getFormFieldCreationManager();\n      if (formFieldCreationManager.isInFormFieldCreationMode()) {\n        const formFieldPlaceholders = annotations.filter((annotation) => annotation.isFormFieldPlaceholder());\n        formFieldIndicators = [\n          ...formFieldPlaceholders\n            .reduce(\n              (fieldNameMap, field) => {\n                if (!fieldNameMap.has(field.getCustomData(formFieldCreationManager.getFieldLabels().FIELD_NAME))) {\n                  fieldNameMap.set(field.getCustomData(formFieldCreationManager.getFieldLabels().FIELD_NAME), field);\n                }\n                return fieldNameMap;\n              },\n              new Map()\n            ).values(),\n        ];\n      } else {\n        const widgets = annotations.filter(\n          (annotation) => formFieldCreationManager.getShowIndicator(annotation)\n        );\n        formFieldIndicators = [\n          ...widgets\n            .reduce(\n              (fieldNameMap, field) => {\n                if (!fieldNameMap.has(field['fieldName'])) {\n                  fieldNameMap.set(field['fieldName'], field);\n                }\n                return fieldNameMap;\n              },\n              new Map()\n            ).values(),\n        ];\n      }\n      setFormFieldAnnotationsList(formFieldIndicators);\n    };\n\n    const onDocumentLoaded = () => {\n      setFormFieldAnnotationsList([]);\n    };\n\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('zoomUpdated', setFormFieldIndicators);\n    core.addEventListener('annotationChanged', setFormFieldIndicators);\n    core.addEventListener('pageNumberUpdated', setFormFieldIndicators);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('zoomUpdated', setFormFieldIndicators);\n      core.removeEventListener('annotationChanged', setFormFieldIndicators);\n      core.removeEventListener('pageNumberUpdated', setFormFieldIndicators);\n    };\n  });\n\n  return formFieldAnnotationsList;\n}\n","import React from 'react';\nimport { getAnnotationPosition } from 'helpers/getPopupPosition';\n\nimport './FormFieldIndicator.scss';\n\nconst INDICATOR_HEIGHT = 40;\nconst INDICATOR_WIDTH = 100;\nconst INDICATOR_PADDING = 20;\n\nconst FormFieldIndicator = ({ annotation, parameters }) => {\n  const { displayMode, viewerBoundingRect, appBoundingRect, scrollLeft, scrollTop } = parameters;\n\n  const setIndicatorYPosition = (annotation) => {\n    try {\n      const { bottomRight: annotationBottomRight, topLeft: annotationTopLeft } = getAnnotationPosition(annotation);\n      const annotHeightInPixels = annotationBottomRight.y - annotationTopLeft.y;\n      return annotationTopLeft.y + annotHeightInPixels / 2 - INDICATOR_HEIGHT / 2 - scrollTop;\n    } catch (e) {\n      return 0;\n    }\n  };\n\n  let visiblePages = [];\n  try {\n    visiblePages = displayMode.getVisiblePages();\n  } catch (e) { }\n\n  const origin = appBoundingRect.left;\n  const leftPosition = viewerBoundingRect.left\n  - INDICATOR_WIDTH - INDICATOR_PADDING + scrollLeft;\n\n  let xOffset = leftPosition - origin;\n  const yOffset = setIndicatorYPosition(annotation);\n  let isRightSidePage = false;\n\n  switch (displayMode.mode) {\n    case 'Facing':\n    case 'FacingContinuous':\n      if (annotation.PageNumber % 2 === 0) {\n        isRightSidePage = true;\n        xOffset = viewerBoundingRect.right + INDICATOR_PADDING + scrollLeft;\n      }\n      break;\n    case 'CoverFacing':\n    case 'Cover':\n      if (annotation.PageNumber % 2 !== 0) {\n        isRightSidePage = true;\n        xOffset = viewerBoundingRect.right + INDICATOR_PADDING + scrollLeft;\n      }\n      break;\n  }\n\n  const isPlaceholder = annotation.isFormFieldPlaceholder();\n  const isPageVisible = visiblePages.includes(annotation.PageNumber);\n  const indicatorText = annotation.getCustomData('trn-form-field-indicator-text');\n\n  return (\n    <div\n      className={`formFieldIndicator ${isRightSidePage ? 'rightSidePage' : ''}`}\n      style={{\n        top: yOffset,\n        left: xOffset,\n        opacity: isPlaceholder ? 0.5 : 1,\n        visibility: isPageVisible ? 'visible' : 'hidden',\n      }}\n    >\n      <div className=\"formFieldIndicator-text\">{indicatorText}</div>\n    </div>\n  );\n};\n\nexport default FormFieldIndicator;\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport debounce from 'lodash/debounce';\nimport useOnFormFieldsChanged from '../../hooks/useOnFormFieldsChanged';\nimport core from 'core';\nimport selectors from 'selectors';\nimport FormFieldIndicator from './FormFieldIndicator';\nimport './FormFieldIndicator.scss';\nimport DataElements from 'src/constants/dataElement';\nimport getRootNode from 'helpers/getRootNode';\nimport { createPortal } from 'react-dom';\n\nconst FormFieldIndicatorContainer = () => {\n  const [\n    isOpen,\n    isDisabled,\n    documentContainerWidth,\n    documentContainerHeight,\n    leftPanelWidth,\n    notePanelWidth,\n  ] = useSelector((state) => [\n    selectors.isElementOpen(state, DataElements['FORM_FIELD_INDICATOR_CONTAINER']),\n    selectors.isElementDisabled(state, DataElements['FORM_FIELD_INDICATOR_CONTAINER']),\n    selectors.getDocumentContainerWidth(state),\n    selectors.getDocumentContainerHeight(state),\n    selectors.getLeftPanelWidth(state),\n    selectors.getDocumentContentContainerWidthStyle(state),\n    selectors.getNotesPanelWidth(state),\n  ]);\n  const formFieldAnnotationsList = useOnFormFieldsChanged();\n  const [indicators, setIndicators] = useState([]);\n\n  const getIndicators = () => {\n    if (!core.getDocument()) {\n      return [];\n    }\n    return formFieldAnnotationsList\n      .filter((fieldAnnotation) => {\n        return fieldAnnotation.getCustomData('trn-form-field-show-indicator') === 'true';\n      }).map((fieldAnnotation) => {\n        return createFormFieldIndicator(fieldAnnotation);\n      });\n  };\n\n  const resetIndicators = () => {\n    setIndicators([]);\n  };\n\n  useEffect(() => {\n    core.addEventListener('documentUnloaded', resetIndicators);\n    return () => {\n      core.removeEventListener('documentUnloaded', resetIndicators);\n    };\n  }, []);\n\n\n  useEffect(() => {\n    setIndicators(getIndicators());\n\n    const onScroll = debounce(() => {\n      if (isOpen && !isDisabled) {\n        setIndicators(getIndicators());\n      }\n    }, 0);\n\n    const scrollViewElement = core.getScrollViewElement();\n\n    scrollViewElement?.addEventListener('scroll', onScroll);\n    return () => {\n      scrollViewElement?.removeEventListener('scroll', onScroll);\n    };\n  }, [\n    formFieldAnnotationsList,\n    isOpen,\n    isDisabled,\n    documentContainerWidth,\n    documentContainerHeight,\n    leftPanelWidth,\n    notePanelWidth,\n  ]);\n\n  const createFormFieldIndicator = (annotation) => {\n    const { scrollLeft, scrollTop } = core.getScrollViewElement();\n    const payload = {\n      displayMode: core.getDocumentViewer().getDisplayModeManager().getDisplayMode(),\n      viewerBoundingRect: core.getViewerElement().getBoundingClientRect(),\n      appBoundingRect: getRootNode().getElementById('app').getBoundingClientRect(),\n      scrollLeft: scrollLeft,\n      scrollTop: scrollTop,\n    };\n    return (<FormFieldIndicator\n      key={`indicator_${annotation.Id}`}\n      annotation={annotation}\n      parameters={payload} />);\n  };\n\n  if (isOpen && !isDisabled) {\n    return (<>\n      {\n        createPortal(<div id=\"form-field-indicator-wrapper\" >\n          <div data-element={DataElements['FORM_FIELD_INDICATOR_CONTAINER']}>\n            {indicators}\n          </div>\n        </div>, (window.isApryseWebViewerWebComponent)\n          ? getRootNode().getElementById('app') : document.body)\n      }\n    </>);\n  }\n\n  return null;\n};\n\nexport default FormFieldIndicatorContainer;\n","import FormFieldIndicatorContainer from './FormFieldIndicatorContainer';\n\nexport default FormFieldIndicatorContainer;\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport DataElements from 'constants/dataElement';\nimport classNames from 'classnames';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport FilePickerPanel from 'components/PageReplacementModal/FilePickerPanel';\nimport './MultiTabEmptyPage.scss';\n\nconst MultiTabEmptyPage = (props) => {\n  const {\n    isDisabled,\n    isOpen,\n    tabManager,\n    closeElements\n  } = props;\n\n  useEffect(() => {\n    if (isOpen) {\n      closeElements([\n        'documentContainer',\n        'pageNavOverlay',\n        'notesPanel',\n        'searchPanel',\n        'leftPanel',\n      ]);\n    }\n  }, [isOpen]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  const addNewTab = (file) => {\n    tabManager.addTab(file, { setActive: true });\n  };\n\n  return (\n    <div\n      className={classNames({\n        MultiTabEmptyPage: true,\n        'closed': !isOpen\n      })}\n      data-element={DataElements.MULTITABS_EMPTY_PAGE}\n    >\n      {isOpen && (\n        <div className=\"empty-page-body\">\n          <FilePickerPanel\n            onFileProcessed={(file) => addNewTab(file)}\n            shouldShowIcon={true}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst mapStateToProps = (state) => ({\n  isDisabled: selectors.isElementDisabled(state, DataElements.MULTITABS_EMPTY_PAGE),\n  isOpen: selectors.getIsMultiTab(state) && selectors.getTabs(state).length === 0,\n  tabManager: selectors.getTabManager(state)\n});\n\nconst mapDispatchToProps = {\n  closeElements: actions.closeElements,\n};\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps,\n)(MultiTabEmptyPage);\n","import MultiTabEmptyPage from './MultiTabEmptyPage';\n\nexport default MultiTabEmptyPage;","import React, { useRef } from 'react';\nimport selectors from 'selectors';\nimport './DropArea.scss';\nimport { useTranslation } from 'react-i18next';\nimport Icon from 'components/Icon';\nimport PropTypes from 'prop-types';\nimport loadDocument from 'helpers/loadDocument';\nimport { useDispatch, useSelector } from 'react-redux';\nimport getHashParameters from 'helpers/getHashParameters';\n\nconst propTypes = {\n  documentViewerKey: PropTypes.number.isRequired,\n};\n\n// Todo Compare: Make stories for this component\nconst DropArea = ({ documentViewerKey }) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const fileInput = useRef();\n  const [\n    customMultiViewerAcceptedFileFormats,\n  ] = useSelector((state) => [\n    selectors.getCustomMultiViewerAcceptedFileFormats(state),\n  ]);\n\n  const browseFiles = () => fileInput.current.click();\n\n  const onDrop = (e) => {\n    e.preventDefault();\n    const { files } = e.dataTransfer;\n    if (files.length) {\n      loadDocument(dispatch, files[0], {}, documentViewerKey);\n    }\n  };\n  const loadFile = (e) => {\n    e.preventDefault();\n    const { files } = e.target;\n    if (files.length) {\n      loadDocument(dispatch, files[0], {}, documentViewerKey);\n    }\n  };\n\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const acceptFormats = wvServer ? window.Core.SupportedFileFormats.SERVER : window.Core.SupportedFileFormats.CLIENT;\n\n  return (\n    <div className=\"DropArea\" onDragOver={(e) => e.preventDefault()} onDrop={onDrop}>\n      <Icon glyph=\"icon-compare-file-open\" />\n      <div className=\"DropArea__text\">{t('multiViewer.dragAndDrop')}</div>\n      <div>{t('multiViewer.or')}</div>\n      <button onClick={browseFiles}>{t('multiViewer.browse')}</button>\n      <input ref={fileInput} className={'hidden'} type={'file'} onChange={loadFile}\n        accept={(customMultiViewerAcceptedFileFormats || acceptFormats.map(\n          (format) => `.${format}`,\n        )).join(', ')}\n      />\n    </div>\n  );\n};\n\nDropArea.propTypes = propTypes;\n\nexport default DropArea;\n","import DropArea from './DropArea';\n\nexport default DropArea;","import React, { useEffect, useState } from 'react';\nimport ToggleZoomOverlay from 'components/ToggleZoomOverlay';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport classNames from 'classnames';\nimport core from 'core';\nimport { useTranslation } from 'react-i18next';\nimport downloadPdf from 'helpers/downloadPdf';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport actions from 'actions';\n\nimport './DocumentHeader.scss';\n\nconst propTypes = {\n  documentViewerKey: PropTypes.number.isRequired,\n  docLoaded: PropTypes.bool.isRequired,\n  isSyncing: PropTypes.bool.isRequired,\n};\n\n// Todo Compare: Make stories for this component\nconst DocumentHeader = ({\n  documentViewerKey,\n  docLoaded,\n  isSyncing,\n}) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [filename, setFileName] = useState('Untitled');\n  const [saveButtonDisabled] = useSelector((state) => [selectors.isElementDisabled(state, DataElements.MULTI_VIEWER_SAVE_DOCUMENT_BUTTON)]);\n\n  useEffect(() => {\n    const stopSyncing = () => dispatch(actions.setSyncViewer(null));\n    const onLoaded = () => setFileName(core.getDocument(documentViewerKey)?.getFilename());\n    const unLoaded = () => setFileName('Untitled');\n    core.addEventListener('documentLoaded', onLoaded, undefined, documentViewerKey);\n    core.addEventListener('documentUnloaded', unLoaded, undefined, documentViewerKey);\n    core.addEventListener('displayModeUpdated', stopSyncing, undefined, documentViewerKey);\n    setFileName(core.getDocument(1)?.getFilename() || 'Untitled');\n    return () => {\n      core.removeEventListener('documentLoaded', onLoaded, documentViewerKey);\n      core.removeEventListener('documentUnloaded', unLoaded, documentViewerKey);\n      core.removeEventListener('displayModeUpdated', stopSyncing, documentViewerKey);\n    };\n  }, [documentViewerKey]);\n\n  const closeDocument = () => core.closeDocument(documentViewerKey);\n  const onClickSync = () => dispatch(actions.setSyncViewer(isSyncing ? null : documentViewerKey));\n  const onSaveDocument = () => downloadPdf(dispatch, undefined, documentViewerKey);\n\n  return (\n    <div\n      className={classNames('DocumentHeader', { hidden: !docLoaded })}\n      id={`header${documentViewerKey}`}\n    >\n      <ToggleZoomOverlay documentViewerKey={documentViewerKey} />\n      <div className=\"file-name\">{filename}</div>\n      <div className=\"control-buttons\">\n        {!saveButtonDisabled &&\n          <Button img=\"icon-save\" onClick={onSaveDocument} dataElement={DataElements.MULTI_VIEWER_SAVE_DOCUMENT_BUTTON} title={t('multiViewer.save')} />\n        }\n        <Button img=\"icon-sync\" onClick={onClickSync} isActive={isSyncing} title={t(`multiViewer.${isSyncing ? 'stop' : 'start'}Sync`)} />\n        <Button img=\"icon-close\" onClick={closeDocument} title={t('multiViewer.closeDocument')} />\n      </div>\n    </div>\n  );\n};\n\nDocumentHeader.propTypes = propTypes;\n\nexport default DocumentHeader;\n","import DocumentHeader from './DocumentHeader';\n\nexport default DocumentHeader;","import React, { useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport loadDocument from 'helpers/loadDocument';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport PropTypes from 'prop-types';\nimport { getMaxZoomLevel, getMinZoomLevel } from 'constants/zoomFactors';\nimport _setCurrentPage from 'helpers/setCurrentPage';\nimport { getStep } from 'helpers/zoom';\nimport throttle from 'lodash/throttle';\nimport core from 'core';\nimport getNumberOfPagesToNavigate from 'helpers/getNumberOfPagesToNavigate';\nimport getRootNode from 'helpers/getRootNode';\n\nimport './DocumentContainer.scss';\n\nconst propTypes = {\n  documentViewerKey: PropTypes.number.isRequired,\n  activeDocumentViewerKey: PropTypes.number.isRequired,\n  container: PropTypes.object.isRequired,\n  onReady: PropTypes.func,\n};\n\n// TODO compare: check display mode scrolling\nconst DocumentContainer = ({\n  documentViewerKey,\n  activeDocumentViewerKey,\n  container,\n  onReady,\n  docLoaded,\n}) => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  const dispatch = useDispatch();\n  const document = useRef();\n  const [\n    isMouseWheelZoomEnabled,\n  ] = useSelector((state) => [\n    selectors.getEnableMouseWheelZoom(state),\n  ]);\n\n  useEffect(() => {\n    const removeListeners = () => {\n      if (container?.current) {\n        container.current.removeEventListener('dragover', preventDefault);\n        container.current.removeEventListener('drop', onDrop);\n        container.current.removeEventListener('wheel', onWheel, { passive: false });\n      }\n    };\n    documentViewer.setScrollViewElement(container.current);\n    documentViewer.setViewerElement(document.current);\n    container.current.addEventListener('dragover', preventDefault);\n    container.current.addEventListener('drop', onDrop);\n    container.current.addEventListener('wheel', onWheel, { passive: false });\n    onReady(documentViewerKey);\n    return removeListeners;\n  }, []);\n\n  const preventDefault = (e) => e.preventDefault();\n  const onDrop = (e) => {\n    e.preventDefault();\n    const { files } = e.dataTransfer;\n    if (files.length) {\n      loadDocument(dispatch, files[0], {}, documentViewerKey);\n    }\n  };\n  const handleScroll = () => {\n    dispatch(actions.closeElements([\n      'annotationPopup',\n      'textPopup',\n      'inlineCommentPopup',\n      'annotationNoteConnectorLine'\n    ]));\n  };\n  const onWheel = (e) => {\n    const displayMode = documentViewer.getDisplayModeManager().getDisplayMode();\n    if (isMouseWheelZoomEnabled && (e.metaKey || e.ctrlKey)) {\n      e.preventDefault();\n      wheelToZoom(e, core.getZoom(documentViewerKey));\n    } else if (!displayMode?.isContinuous() && displayMode?.IsScrollable()) {\n      wheelToNavigatePages(e);\n      dispatch(actions.closeElements([\n        'annotationPopup',\n        'textPopup',\n        'inlineCommentPopup',\n        'annotationNoteConnectorLine',\n      ]));\n    }\n  };\n  const wheelToZoom = throttle((e, zoom) => {\n    let newZoomFactor = zoom;\n    if (e.deltaY < 0) {\n      newZoomFactor = Math.min(\n        zoom + getStep(zoom),\n        getMaxZoomLevel()\n      );\n    } else if (e.deltaY > 0) {\n      newZoomFactor = Math.max(\n        zoom - getStep(zoom),\n        getMinZoomLevel()\n      );\n    }\n    const yOffset = getRootNode().getElementById(`header${documentViewerKey}`).getBoundingClientRect().bottom;\n    const xOffset = e.clientX - getRootNode().getElementById(`container${documentViewerKey}`).getBoundingClientRect().left;\n    documentViewer.zoomToMouse(newZoomFactor, xOffset, yOffset, e);\n  }, 30, { trailing: false });\n  const wheelToNavigatePages = (e) => {\n    const currentPage = core.getCurrentPage(documentViewerKey);\n    const totalPages = documentViewer.getPageCount();\n    const { scrollTop, scrollHeight, clientHeight } = container.current;\n    const reachedTop = scrollTop === 0;\n    const reachedBottom = Math.abs(scrollTop + clientHeight - scrollHeight) <= 1;\n    // depending on the track pad used (see this on MacBooks), deltaY can be between -1 and 1 when doing horizontal scrolling which cause page to change\n    const scrollingUp = e.deltaY < 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n    const scrollingDown = e.deltaY > 0 && Math.abs(e.deltaY) > Math.abs(e.deltaX);\n    if (scrollingUp && reachedTop && currentPage > 1) {\n      pageUp();\n    } else if (scrollingDown && reachedBottom && currentPage < totalPages) {\n      pageDown();\n    }\n  };\n  const pageUp = () => {\n    const currentPage = core.getCurrentPage(documentViewerKey);\n    const pagesToNavigate = getNumberOfPagesToNavigate();\n    const _container = container.current;\n    const { scrollHeight, clientHeight } = _container;\n    _setCurrentPage(currentPage - pagesToNavigate, documentViewerKey);\n    _container.scrollTop = scrollHeight - clientHeight;\n  };\n  const pageDown = () => {\n    const currentPage = core.getCurrentPage(documentViewerKey);\n    const pagesToNavigate = getNumberOfPagesToNavigate();\n    _setCurrentPage(currentPage + pagesToNavigate, documentViewerKey);\n  };\n  const style = (!docLoaded) ? { position: 'relative' } : {};\n  return (\n    <div\n      className={classNames('DocumentContainer', {\n        active: activeDocumentViewerKey === documentViewerKey,\n      })}\n      ref={container}\n      id={`DocumentContainer${documentViewerKey}`}\n      onScroll={handleScroll}\n      style={style}\n    >\n      <div className={'document'} ref={document} id={`Document${documentViewerKey}`} />\n    </div>\n  );\n};\n\nDocumentContainer.propTypes = propTypes;\n\nexport default DocumentContainer;\n","import DocumentContainer from './DocumentContainer';\n\nexport default DocumentContainer;","import React from 'react';\nimport FlyoutMenu from 'components/FlyoutMenu/FlyoutMenu';\nimport ZoomOverlay from 'components/ZoomOverlay/ZoomOverlay';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { fitToWidth, fitToPage, zoomTo } from 'helpers/zoom';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n  zoom1: PropTypes.number,\n  zoom2: PropTypes.number,\n};\n\nconst CompareZoomOverlay = ({\n  zoom1,\n  zoom2,\n}) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n\n  const onClickMarqueeZoom = (documentViewerKey) => () => {\n    dispatch(actions.closeElements([`zoomOverlay${documentViewerKey}`]));\n  };\n  const onClickZoomLevelOption = (documentViewerKey) => (zoomLevel) => {\n    zoomTo(zoomLevel, true, documentViewerKey);\n    dispatch(actions.closeElements([`zoomOverlay${documentViewerKey}`]));\n  };\n  const onClickMarqueeZoom1 = onClickMarqueeZoom(1);\n  const onClickMarqueeZoom2 = onClickMarqueeZoom(2);\n  const onClickZoomLevelOption1 = onClickZoomLevelOption(1);\n  const onClickZoomLevelOption2 = onClickZoomLevelOption(2);\n  const onFitToWidth1 = () => fitToWidth(1);\n  const onFitToWidth2 = () => fitToWidth(2);\n  const onFitToPage1 = () => fitToPage(1);\n  const onFitToPage2 = () => fitToPage(2);\n\n  return (\n    <>\n      <FlyoutMenu menu={'zoomOverlay1'} trigger={'zoomOverlayButton1'}\n        ariaLabel={t('component.zoomOverlay')}\n      >\n        <ZoomOverlay\n          zoomList={useSelector(selectors.getZoomList)}\n          currentZoomLevel={zoom1}\n          isReaderMode={useSelector(selectors.isReaderMode)}\n          isMarqueeZoomActive={useSelector(selectors.getActiveToolName) === 'MarqueeZoomTool'}\n          isMarqueeToolButtonDisabled={useSelector((state) => selectors.isElementDisabled(state, 'marqueeToolButton'))}\n          fitToWidth={onFitToWidth1}\n          fitToPage={onFitToPage1}\n          onClickZoomLevelOption={onClickZoomLevelOption1}\n          onClickMarqueeZoom={onClickMarqueeZoom1}\n        />\n      </FlyoutMenu>\n      <FlyoutMenu menu={'zoomOverlay2'} trigger={'zoomOverlayButton2'}\n        ariaLabel={t('component.zoomOverlay')}\n      >\n        <ZoomOverlay\n          zoomList={useSelector(selectors.getZoomList)}\n          currentZoomLevel={zoom2}\n          isReaderMode={useSelector(selectors.isReaderMode)}\n          isMarqueeZoomActive={useSelector(selectors.getActiveToolName) === 'MarqueeZoomTool'}\n          isMarqueeToolButtonDisabled={useSelector((state) => selectors.isElementDisabled(state, 'marqueeToolButton'))}\n          fitToWidth={onFitToWidth2}\n          fitToPage={onFitToPage2}\n          onClickZoomLevelOption={onClickZoomLevelOption2}\n          onClickMarqueeZoom={onClickMarqueeZoom2}\n        />\n      </FlyoutMenu>\n    </>\n  );\n};\n\nCompareZoomOverlay.propTypes = propTypes;\n\nexport default CompareZoomOverlay;\n","import CompareZoomOverlay from './CompareZoomOverlay';\n\nexport default CompareZoomOverlay;","\nexport default (totalPages) => new Array(totalPages).fill().map((_, index) => `${index + 1}`);","import core from 'core';\nimport actions from 'actions';\nimport { isIOS } from 'helpers/device';\nimport getDefaultPageLabels from 'helpers/getDefaultPageLabels';\nimport DataElements from 'constants/dataElement';\n\nexport default (dispatch, documentViewerKey) => () => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  // if we are opening an password-protected pdf,\n  // this event will only be trigger after we enter the correct password, so it's safe to close this modal here\n  dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n\n  const totalPages = core.getTotalPages(documentViewerKey);\n\n  if (isIOS) {\n    // enough so that we can enable high res thumb\n    window.Core.setPreRenderLevel(2);\n  }\n  const displayModeManager = documentViewer.getDisplayModeManager();\n  if (totalPages >= 500 && !displayModeManager.isVirtualDisplayEnabled()) {\n    core.setDisplayMode(window.Core.DisplayModes.Single);\n  }\n\n  dispatch(actions.setTotalPages(totalPages, documentViewerKey));\n\n  if (documentViewerKey === 1) {\n    dispatch(actions.setPageLabels(getDefaultPageLabels(totalPages)));\n    const currentPage = core.getCurrentPage();\n    dispatch(actions.setCurrentPage(currentPage));\n  }\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (dispatch, documentViewerKey) => (checkStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers(ToolNames.FORM_FILL_CHECKMARK).forEach((tool) => tool.hidePreview());\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(checkStampAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (dispatch, documentViewerKey) => (crossStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers(ToolNames.FORM_FILL_CROSS).forEach((tool) => tool.hidePreview());\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(crossStampAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport actions from 'actions';\n\nexport default (dispatch) => () => {\n  dispatch(actions.closeElements(['annotationPopup', 'textPopup', 'contextMenuPopup']));\n  dispatch(actions.setDisplayMode(core.getDisplayMode()));\n};","import DataElements from 'constants/dataElement';\n\nexport default (dataElement, state) => getLeftPanelDataElements(state).includes(dataElement);\n\nexport const getLeftPanelDataElements = (state) => {\n  const defaultLeftPanels = [\n    'thumbnailsPanel',\n    DataElements.OUTLINE_PANEL,\n    'layersPanel',\n    DataElements.BOOKMARK_PANEL,\n    'signaturePanel',\n    DataElements.NOTES_PANEL,\n    DataElements.PORTFOLIO_PANEL,\n  ];\n  const customPanels = state.viewer.customPanels.map(({ panel }) => panel.dataElement);\n\n  return [...defaultLeftPanels, ...customPanels];\n};\n","/**\n * Sets zoom level.\n * @method UI.setZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setZoomLevel('150%'); // or setZoomLevel(1.5)\n    });\n  });\n */\n\nimport core from 'core';\nimport getActualZoomLevel from 'helpers/getActualZoomLevel';\n\nexport default (zoomLevel) => {\n  zoomLevel = getActualZoomLevel(zoomLevel);\n\n  if (zoomLevel) {\n    core.zoomTo(zoomLevel);\n  } else {\n    console.warn('Type of the argument for setZoomLevel must be either string or number');\n  }\n};","export default (layers) => {\n  const newLayers = [];\n  if (layers) {\n    layers.forEach((layer, index) => {\n      const newLayer = createNewLayer(layer, `${index}`, layer.locked);\n      newLayers.push(newLayer);\n      newLayer.children = setIdsForChildren(layer.children, `${newLayer.id}`, newLayer.disabled, []);\n    });\n  }\n  return newLayers;\n};\n\nconst setIdsForChildren = (layers, parentLayerId, isParentDisabled, resultSoFar) => {\n  if (!layers || layers.length === 0) {\n    return resultSoFar;\n  }\n  layers.forEach((layer, index) => {\n    const newLayer = createNewLayer(layer, `${parentLayerId}-${index}`, isParentDisabled || layer.locked);\n    if (layer.children && layer.children.length > 0) {\n      newLayer.children = setIdsForChildren(layer.children, `${newLayer.id}`, newLayer.disabled, []);\n    }\n    resultSoFar.push(newLayer);\n  });\n  return resultSoFar;\n};\n\nconst createNewLayer = (layer, layerId, isDisabled) => {\n  const newLayer = {\n    ...layer,\n    children: [],\n    prevVisibleState: !!layer.visible,\n    visible: !!layer.visible,\n    id: layerId,\n    disabled: !!isDisabled,\n    // this is how WV core knows it is a label\n    isLabel: (layer.visible === undefined && layer.obj === undefined)\n  };\n  return newLayer;\n};","import actions from 'actions';\nimport _isEqual from 'lodash/isEqual';\nimport setUIPropertiesForLayers from 'helpers/setUIPropertiesForLayers';\n\nexport default (newOCGLayers, currentOCGLayers, dispatch) => {\n  const layersEqual = _isEqual(newOCGLayers, currentOCGLayers);\n  if (!layersEqual) {\n    const layersToSet = setUIPropertiesForLayers(newOCGLayers);\n    dispatch(actions.setLayers(layersToSet));\n  }\n};","import core from 'core';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport { getLeftPanelDataElements } from 'helpers/isDataElementPanel';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { workerTypes } from 'constants/types';\nimport { PRIORITY_ONE, PRIORITY_TWO } from 'constants/actionPriority';\nimport Events from 'constants/events';\nimport { print } from 'helpers/print';\nimport outlineUtils from 'helpers/OutlineUtils';\nimport setZoomLevel from 'src/apis/setZoomLevel';\nimport onLayersUpdated from './onLayersUpdated';\nimport i18next from 'i18next';\nimport hotkeys from 'hotkeys-js';\nimport hotkeysManager, { ShortcutKeys, Shortcuts, defaultHotkeysScope } from 'helpers/hotkeysManager';\nimport { getInstanceNode } from 'helpers/getRootNode';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport DataElements from 'constants/dataElement';\nimport { getPortfolioFiles } from 'helpers/portfolio';\nimport getDefaultPageLabels from 'helpers/getDefaultPageLabels';\nimport {\n  OFFICE_EDITOR_SCOPE,\n  OFFICE_EDITOR_EDIT_MODE,\n  ELEMENTS_TO_DISABLE_IN_OFFICE_EDITOR,\n  ELEMENTS_TO_ENABLE_IN_OFFICE_EDITOR\n} from 'constants/officeEditor';\n\nlet onFirstLoad = true;\nlet notesInLeftPanel;\n\nconst getIsCustomUIEnabled = (store) => getHashParameters('ui', 'default') === 'beta' || selectors.getFeatureFlags(store.getState()).customizableUI;\n\nexport default (store, documentViewerKey) => async () => {\n  const { dispatch, getState } = store;\n  const docViewer = core.getDocumentViewer(documentViewerKey);\n  const documentCompletePromise = docViewer.getDocument()?.getDocumentCompletePromise();\n  documentCompletePromise?.then(() => {\n    dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n  });\n\n  dispatch(actions.openElement('pageNavOverlay'));\n  dispatch(actions.setLoadingProgress(1));\n\n  // set timeout so that progress modal can show progress bar properly\n  setTimeout(() => {\n    dispatch(actions.closeElement(DataElements.PROGRESS_MODAL));\n    dispatch(actions.resetLoadingProgress());\n  }, 300);\n\n  if (onFirstLoad) {\n    onFirstLoad = false;\n    // redaction button starts hidden. when the user first loads a document, check HashParams the first time\n    core.enableRedaction(getHashParameters('enableRedaction', false) || core.isCreateRedactionEnabled());\n    // if redaction is already enabled for some reason (i.e. calling instance.enableRedaction() before loading a doc), keep it enabled\n\n    if (core.isCreateRedactionEnabled()) {\n      dispatch(actions.enableElement('redactionToolGroupButton', PRIORITY_ONE));\n      dispatch(actions.enableElement('pageRedactionToolGroupButton', PRIORITY_ONE));\n    } else {\n      dispatch(actions.disableElement('redactionToolGroupButton', PRIORITY_TWO));\n      dispatch(actions.disableElement('pageRedactionToolGroupButton', PRIORITY_TWO));\n    }\n  }\n\n  if (getHashParameters('a', false)) {\n    core.getDocumentViewers().forEach((documentViewer) => {\n      if (!documentViewer.getDocument() || !isOfficeEditorMode()) {\n        documentViewer.enableAnnotations();\n      }\n    });\n  } else {\n    core.getDocumentViewers().forEach((documentViewer) => documentViewer.disableAnnotations());\n  }\n\n  // TODO compare: integrate with panels\n  if (documentViewerKey === 1) {\n    core.getOutlines((outlines) => {\n      dispatch(actions.setOutlines(outlines));\n    }, documentViewerKey);\n\n    const doc = core.getDocument(documentViewerKey);\n    doc.addEventListener('bookmarksUpdated', () => core.getOutlines((outlines) => dispatch(actions.setOutlines(outlines)), documentViewerKey));\n\n    outlineUtils.setDoc(core.getDocument(documentViewerKey));\n\n    const setNextActivePanelDueToEmptyCurrentPanel = (currentActivePanel) => {\n      const state = getState();\n      const activeLeftPanel = selectors.getActiveLeftPanel(state);\n      if (activeLeftPanel === currentActivePanel) {\n        // set the active left panel to another one that's not disabled so that users don't see a blank left panel\n        const nextActivePanel = getLeftPanelDataElements(state).find(\n          (dataElement) => !selectors.isElementDisabled(state, dataElement),\n        );\n        dispatch(actions.setActiveLeftPanel(nextActivePanel));\n      }\n    };\n\n    const portfolio = await getPortfolioFiles();\n    dispatch(actions.setPortfolio(portfolio));\n    if (portfolio.length === 0) {\n      setNextActivePanelDueToEmptyCurrentPanel(DataElements.PORTFOLIO_PANEL);\n    }\n\n    if (!doc.isWebViewerServerDocument()) {\n      doc.addEventListener('layersUpdated', async () => {\n        const newLayers = await doc.getLayersArray();\n        const currentLayers = selectors.getLayers(getState());\n        onLayersUpdated(newLayers, currentLayers, dispatch);\n      });\n      doc.getLayersArray().then((layers) => {\n        if (layers.length === 0) {\n          if (!getIsCustomUIEnabled(store)) {\n            dispatch(actions.disableElement('layersPanel', PRIORITY_ONE));\n            dispatch(actions.disableElement('layersPanelButton', PRIORITY_ONE));\n          }\n          setNextActivePanelDueToEmptyCurrentPanel('layersPanel');\n        } else {\n          dispatch(actions.enableElement('layersPanel', PRIORITY_ONE));\n          dispatch(actions.enableElement('layersPanelButton', PRIORITY_ONE));\n          onLayersUpdated(layers, undefined, dispatch);\n        }\n      });\n    }\n\n    const docType = doc.getType();\n    if (docType === workerTypes.PDF || (docType === workerTypes.WEBVIEWER_SERVER && !doc.isWebViewerServerDocument())) {\n      dispatch(actions.enableElement('cropToolGroupButton', PRIORITY_ONE));\n      dispatch(actions.enableElement('contentEditButton', PRIORITY_ONE));\n      dispatch(actions.enableElement('addParagraphToolGroupButton', PRIORITY_ONE));\n    } else if (docType === workerTypes.IMAGE) {\n      dispatch(actions.disableElement('contentEditButton', PRIORITY_ONE));\n      dispatch(actions.disableElement('addParagraphToolGroupButton', PRIORITY_ONE));\n    } else {\n      dispatch(actions.disableElement('cropToolGroupButton', PRIORITY_ONE));\n      dispatch(actions.disableElement('contentEditButton', PRIORITY_ONE));\n      dispatch(actions.disableElement('addParagraphToolGroupButton', PRIORITY_ONE));\n    }\n\n    if (isOfficeEditorMode()) {\n      dispatch(actions.setIsOfficeEditorMode(true));\n      dispatch(actions.enableElements(ELEMENTS_TO_ENABLE_IN_OFFICE_EDITOR, PRIORITY_ONE));\n      setZoomLevel(1);\n      dispatch(actions.disableElements(\n        ELEMENTS_TO_DISABLE_IN_OFFICE_EDITOR,\n        PRIORITY_ONE, // To allow customers to still disable these elements\n      ));\n      hotkeys.unbind('*', OFFICE_EDITOR_SCOPE);\n      hotkeys.setScope(OFFICE_EDITOR_SCOPE);\n      const searchShortcutKeys = ShortcutKeys[Shortcuts.SEARCH];\n      hotkeys(\n        searchShortcutKeys,\n        OFFICE_EDITOR_SCOPE,\n        hotkeysManager.keyHandlerMap[searchShortcutKeys],\n      );\n\n      const handleEditModeUpdate = (editMode) => {\n        dispatch(actions.setOfficeEditorEditMode(editMode));\n        if (editMode === OFFICE_EDITOR_EDIT_MODE.VIEW_ONLY || editMode === OFFICE_EDITOR_EDIT_MODE.PREVIEW) {\n          getIsCustomUIEnabled(store) ?\n            dispatch(actions.disableElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER, PRIORITY_TWO)) :\n            dispatch(actions.closeElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER));\n          dispatch(actions.disableElements([DataElements.CONTEXT_MENU_POPUP, DataElements.NOTE_MULTI_SELECT_MODE_BUTTON], PRIORITY_TWO));\n        } else {\n          getIsCustomUIEnabled(store) ?\n            dispatch(actions.enableElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER, PRIORITY_TWO)) :\n            dispatch(actions.openElement(DataElements.OFFICE_EDITOR_TOOLS_HEADER));\n          dispatch(actions.enableElements([DataElements.CONTEXT_MENU_POPUP, DataElements.NOTE_MULTI_SELECT_MODE_BUTTON], PRIORITY_TWO));\n        }\n        if (editMode === OFFICE_EDITOR_EDIT_MODE.REVIEWING || editMode === OFFICE_EDITOR_EDIT_MODE.PREVIEW) {\n          dispatch(actions.openElement(DataElements.LEFT_PANEL));\n        } else {\n          dispatch(actions.closeElement(DataElements.LEFT_PANEL));\n        }\n      };\n      handleEditModeUpdate(OFFICE_EDITOR_EDIT_MODE.EDITING);\n      doc.addEventListener('editModeUpdated', handleEditModeUpdate);\n      dispatch(actions.setOfficeEditorEditMode(OFFICE_EDITOR_EDIT_MODE.EDITING));\n      notesInLeftPanel = selectors.getNotesInLeftPanel(getState());\n      dispatch(actions.setNotesInLeftPanel(true));\n    } else {\n      dispatch(actions.enableElements(\n        ELEMENTS_TO_DISABLE_IN_OFFICE_EDITOR,\n        PRIORITY_ONE, // To allow customers to still disable these elements\n      ));\n      dispatch(actions.disableElements(ELEMENTS_TO_ENABLE_IN_OFFICE_EDITOR, PRIORITY_ONE));\n      hotkeys.setScope(defaultHotkeysScope);\n      dispatch(actions.setNotesInLeftPanel(notesInLeftPanel));\n    }\n\n    if (core.isFullPDFEnabled()) {\n      const PDFNet = window.Core.PDFNet;\n      let isDocumentClosed = false;\n      const documentUnloadedHandler = () => {\n        isDocumentClosed = true;\n      };\n\n      const checkIfDocumentClosed = () => {\n        if (isDocumentClosed) {\n          docViewer.removeEventListener('documentUnloaded', documentUnloadedHandler);\n          throw new Error('setPageLabels is cancelled because the document got closed.');\n        }\n      };\n\n      docViewer.addEventListener('documentUnloaded', documentUnloadedHandler, { 'once': true });\n      checkIfDocumentClosed();\n      const pdfDoc = await docViewer.getDocument().getPDFDoc();\n      if (!pdfDoc) {\n        return;\n      }\n\n      PDFNet.initialize().then(() => {\n        const main = async () => {\n          try {\n            checkIfDocumentClosed();\n            const totalPageCount = await pdfDoc.getPageCount();\n            const displayedPageCount = core.getTotalPages();\n            const pageLabels = [];\n            if (totalPageCount !== displayedPageCount) {\n              const errorLoadingDocument = i18next.t('message.errorLoadingDocument', { totalPageCount, displayedPageCount });\n              store.dispatch(actions.showErrorMessage(errorLoadingDocument));\n              throw new Error(`pdfDoc.getPageCount() returns ${totalPageCount} and this does not match with documentViewer.getPageCount() which returns ${displayedPageCount}.`);\n            }\n\n            for (let i = 1; i <= totalPageCount; i++) {\n              checkIfDocumentClosed();\n              const pageLabel = await pdfDoc.getPageLabel(i);\n              checkIfDocumentClosed();\n              const label = await pageLabel.getLabelTitle(i);\n              pageLabels.push(label.length > 0 ? label : i.toString());\n            }\n\n            checkIfDocumentClosed();\n            const defaultPageLabels = getDefaultPageLabels(totalPageCount);\n            const newPageLabels = selectors.getPageLabels(getState());\n            if (newPageLabels.every((newLabel, index) => newLabel === defaultPageLabels[index])) {\n              store.dispatch(actions.setPageLabels(pageLabels));\n            }\n          } catch (e) {\n            console.warn(e);\n          }\n        };\n\n        PDFNet.runWithCleanup(main);\n      });\n    }\n  }\n\n  getInstanceNode().instance.UI.loadedFromServer = false;\n  getInstanceNode().instance.UI.serverFailed = false;\n\n  docViewer\n    .getAnnotationManager()\n    .getFieldManager()\n    .setPrintHandler(() => {\n      print(\n        dispatch,\n        selectors.useClientSidePrint(getState()),\n        selectors.isEmbedPrintSupported(getState()),\n        selectors.getSortStrategy(getState()),\n        selectors.getColorMap(getState()),\n      );\n    });\n\n  // init zoom level value in redux\n  dispatch(actions.setZoom(core.getZoom(documentViewerKey), documentViewerKey));\n  dispatch(actions.setThumbnailSelectingPages(false));\n  fireEvent(Events.DOCUMENT_LOADED);\n};\n","import DataElements from './dataElement';\n\nexport default [\n  DataElements.VIEW_CONTROLS_OVERLAY,\n  DataElements.SEARCH_OVERLAY,\n  DataElements.MENU_OVERLAY,\n  DataElements.ZOOM_OVERLAY,\n  DataElements.TOOLS_OVERLAY,\n  DataElements.STAMP_OVERLAY,\n  DataElements.SIGNATURE_OVERLAY,\n  DataElements.MEASUREMENT_OVERLAY,\n  DataElements.TOOL_STYLE_POPUP,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL,\n  DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP\n];","import actions from 'actions';\nimport core from 'core';\nimport overlays from '../constants/overlays';\n\nexport default (dispatch, documentViewerKey) => () => {\n  dispatch(\n    actions.closeElements([\n      'pageNavOverlay',\n      'notesPanel',\n      'searchPanel',\n      'leftPanel',\n      'signatureValidationModal',\n      'audioPlaybackPopup',\n      'redactionPanel',\n      'textEditingPanel',\n      'wv3dPropertiesPanel',\n      'watermarkPanel',\n      ...overlays,\n    ]),\n  );\n  // TODO Compare: Integrate with panels\n  if (documentViewerKey === 1) {\n    dispatch(actions.setOutlines([]));\n    dispatch(actions.setBookmarks({}));\n    dispatch(actions.setPortfolio([]));\n    dispatch(actions.setTotalPages(0));\n    dispatch(actions.setSearchValue(''));\n    core.clearSearchResults();\n  }\n  dispatch(actions.setZoom(1, documentViewerKey));\n  dispatch(actions.setIsOfficeEditorMode(false));\n};\n","import core from 'core';\nimport actions from 'actions';\nimport { isAndroid } from 'helpers/device';\n\nexport default (dispatch) => (fitMode) => {\n  const docViewer = core.getDocumentViewer();\n\n  if (fitMode === docViewer.FitMode.Zoom) {\n    dispatch(actions.setFitMode('Zoom'));\n  } else if (fitMode === docViewer.FitMode.FitWidth) {\n    dispatch(actions.setFitMode('FitWidth'));\n  } else if (fitMode === docViewer.FitMode.FitPage) {\n    // In Android, if you focus on an input field, it brings up virtual keyboard,\n    // and page gets re-rendered, which blurs out.\n    // To prevent that, we change the fit mode to Zoom.\n    if (isAndroid) {\n      core.fitToZoom();\n    }\n    dispatch(actions.setFitMode('FitPage'));\n  }\n};","import actions from 'actions';\n\nexport default (dispatch) => (rotation) => {\n  dispatch(actions.setRotation(rotation));\n};","import core from 'core';\nimport actions from 'actions';\nimport localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\n\nexport default (dispatch) => (tool) => {\n  const toolName = tool.name;\n  const toolStyles = tool.defaults;\n  if (toolStyles && localStorageManager.isLocalStorageEnabled()) {\n    storeStyle(toolName, toolStyles);\n  }\n\n  const currentTool = core.getToolMode();\n  if (currentTool && currentTool.name === toolName) {\n    dispatch(actions.setActiveToolStyles(toolStyles));\n  }\n};\n\nconst storeStyle = (toolName, toolStyles) => {\n  try {\n    const instanceId = getInstanceID();\n    localStorage.setItem(`${instanceId}-toolData-${toolName}`, JSON.stringify(toolStyles));\n  } catch (err) {\n    console.warn(`localStorage could not be accessed. ${err.message}`);\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (dispatch, store) => (newTool, oldTool) => {\n  const { ToolNames } = window.Core.Tools;\n\n  if (oldTool && oldTool.name === ToolNames.TEXT_SELECT) {\n    core.clearSelection();\n    dispatch(actions.closeElement('textPopup'));\n  }\n  dispatch(actions.setActiveToolNameAndStyle(newTool));\n\n  const state = store.getState();\n  const activeToolGroup = selectors.getActiveToolGroup(state);\n  const activeToolName = selectors.getActiveToolName(state);\n  const selectedStampIndex = selectors.getSelectedStampIndex(state);\n  // If we are in the modular UI and switch out of the rubber stamp tool, we need to re-set the active stamp index\n  const isCustomizableUI = state.featureFlags.customizableUI;\n\n  if (isCustomizableUI) {\n    const activeGroupedItems = state.viewer.activeGroupedItems;\n    const isLastPickedGroupUndefined = activeGroupedItems?.every((group) => group === undefined);\n\n    if (oldTool.name === ToolNames.RUBBER_STAMP) {\n      dispatch(actions.setLastSelectedStampIndex(selectedStampIndex));\n      dispatch(actions.setSelectedStampIndex(null));\n    }\n    if (oldTool.name === ToolNames.RUBBER_STAMP || oldTool.name === ToolNames.SIGNATURE) {\n      if (newTool.name === defaultTool) {\n        return;\n      }\n    }\n    if (newTool.name === ToolNames.EDIT || isLastPickedGroupUndefined) {\n      return;\n    }\n    dispatch(actions.setActiveGroupedItemWithTool(newTool.name));\n  }\n\n  if (activeToolName === ToolNames.EDIT && (activeToolGroup === 'signatureTools' || activeToolGroup === 'rubberStampTools')) {\n    return;\n  }\n  const { group = '' } = selectors.getToolButtonObject(state, newTool.name);\n\n  const currentToolbarGroup = selectors.getCurrentToolbarGroup(state);\n  // Search the current toolbar group first\n  const toolbarGroupNames = selectors.getEnabledToolbarGroups(state).reduce((acc, groupName) => {\n    if (groupName !== currentToolbarGroup) {\n      acc.push(groupName);\n    }\n    return acc;\n  }, [currentToolbarGroup]);\n  // Find the ribbon group this tool falls under and change if necessary\n  for (let i = 0; i < toolbarGroupNames.length; i++) {\n    const toolbarGroupName = toolbarGroupNames[i];\n    const toolbarGroupItems = selectors.getToolbarGroupItems(toolbarGroupName)(state);\n    // Looks for the matching toolgroup or tool under this toolbar\n    const groupItems = toolbarGroupItems.filter((groupItem) => groupItem.toolGroup === group || groupItem.toolName === newTool.name);\n    if (groupItems.length > 0) {\n      if (toolbarGroupName !== currentToolbarGroup) {\n        dispatch({\n          type: 'SET_TOOLBAR_GROUP',\n          payload: { toolbarGroup: toolbarGroupName },\n        });\n      }\n      break;\n    }\n  }\n\n  setActiveToolGroupAndToolsOverlay(store, group);\n};\n\nconst setActiveToolGroupAndToolsOverlay = (store, group) => {\n  if (!group) {\n    store.dispatch(actions.setActiveToolGroup(''));\n    store.dispatch(actions.closeElement(DataElements.TOOLS_OVERLAY));\n  } else {\n    store.dispatch(actions.setActiveToolGroup(group));\n    store.dispatch(actions.openElement(DataElements.TOOLS_OVERLAY));\n  }\n};","import actions from 'actions';\n\nexport default (dispatch, documentViewerKey) => (zoom) => {\n  dispatch(actions.setZoom(zoom, documentViewerKey));\n};\n","import actions from 'actions';\n\nexport default (dispatch) => (pageNumber) => {\n  dispatch(actions.setCurrentPage(pageNumber));\n};","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (dispatch, documentViewerKey) => (stampAnnotation) => {\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(stampAnnotation, documentViewerKey);\n};\n","/* eslint-disable no-unused-vars */\nimport core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (documentViewerKey) => (signatureAnnotation) => {\n  core.setToolMode(defaultTool);\n  const signatureToolArray = core.getToolsFromAllDocumentViewers('AnnotationCreateSignature');\n  signatureToolArray.forEach((tool) => {\n    tool.hidePreview();\n    tool.annot = null;\n  });\n  // This had not been working and was fixed when the signature list panel was added\n  // however it now causes issues with the annotation popup being out of place. Once that is\n  // fixed this should be re-enabled\n  // core.selectAnnotation(signatureAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\n\nexport default () => () => {\n  core.setToolMode(defaultTool);\n};\n","import getHashParameters from 'helpers/getHashParameters';\nimport core from 'core';\n\n\nexport default (documentViewerKey) => (annotations, action, info) => {\n  if (action === 'delete') {\n    deleteReplies(annotations, documentViewerKey, info);\n  }\n\n  const selectAnnotationOnCreation = getHashParameters('selectAnnotationOnCreation', false);\n  if (selectAnnotationOnCreation) {\n    if (action === 'add' && !info.imported) {\n      if (annotations.length > 0 && !annotations[0].InReplyTo) {\n        core.selectAnnotation(annotations[0], documentViewerKey);\n      }\n    }\n  }\n};\n\nconst deleteReplies = (annotations, documentViewerKey, info) => {\n  annotations.forEach((annotation) => {\n    core.deleteAnnotations(annotation.getReplies(), { 'imported': false, 'force': true, 'isUndoRedo': info?.isUndoRedo }, documentViewerKey);\n  });\n};\n","import actions from 'actions';\nimport core from 'core';\n\nexport default (dispatch, documentViewerKey) => () => {\n  const documentViewer = core.getDocumentViewer(documentViewerKey);\n  const canUndo = documentViewer.getAnnotationHistoryManager().canUndo();\n  dispatch(actions.setCanUndo(canUndo, documentViewerKey));\n  const canRedo = documentViewer.getAnnotationHistoryManager().canRedo();\n  dispatch(actions.setCanRedo(canRedo, documentViewerKey));\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport defaultTool from 'constants/defaultTool';\nimport DataElements from 'src/constants/dataElement';\n\nexport default ({ dispatch, getState }) => (annotation) => {\n  const state = getState();\n  const isNotesPanelDisabled = selectors.isElementDisabled(state, DataElements.NOTES_PANEL);\n  const isNotesPanelOpen = selectors.isElementOpen(state, DataElements.NOTES_PANEL);\n  const isInlineCommentDisabled = selectors.isElementDisabled(state, DataElements.INLINE_COMMENT_POPUP);\n\n  if (isNotesPanelDisabled) {\n    return;\n  }\n\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  dispatch(actions.closeElement('searchPanel'));\n  dispatch(actions.closeElement(DataElements.REDACTION_PANEL));\n  dispatch(actions.closeElement('textEditingPanel'));\n  if (!isInlineCommentDisabled || isNotesPanelOpen) {\n    core.selectAnnotation(annotation);\n    dispatch(actions.triggerNoteEditing());\n  } else {\n    dispatch(actions.openElement(DataElements.NOTES_PANEL));\n    // wait for the notes panel to be fully opened before focusing\n    setTimeout(() => {\n      core.selectAnnotation(annotation);\n      dispatch(actions.triggerNoteEditing());\n    }, 400);\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'src/constants/dataElement';\n\nexport default ({ dispatch, getState }) => (annotation) => {\n  const state = getState();\n  const isNotesPanelDisabled = selectors.isElementDisabled(state, DataElements.NOTES_PANEL);\n  const isNotesPanelOpen = selectors.isElementOpen(state, DataElements.NOTES_PANEL);\n  const isInlineCommentDisabled = selectors.isElementDisabled(state, DataElements.INLINE_COMMENT_POPUP);\n\n  if (isNotesPanelDisabled) {\n    return;\n  }\n\n  dispatch(actions.closeElement('searchPanel'));\n  dispatch(actions.closeElement(DataElements.REDACTION_PANEL));\n  if (!isInlineCommentDisabled || isNotesPanelOpen) {\n    core.selectAnnotation(annotation);\n    dispatch(actions.triggerNoteEditing());\n  } else {\n    dispatch(actions.openElement(DataElements.NOTES_PANEL));\n    // wait for the notes panel to be fully opened before focusing\n    setTimeout(() => {\n      core.selectAnnotation(annotation);\n      dispatch(actions.triggerNoteEditing());\n    }, 400);\n  }\n};\n","import actions from 'actions';\n\nexport default ({ dispatch }) => () => {\n  let isFullScreen = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n  isFullScreen = !!isFullScreen;\n\n  dispatch(actions.setFullScreen(isFullScreen));\n};","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\nimport enableTools from 'src/apis/enableTools';\nimport disableTools from 'src/apis/disableTools';\nimport disableFeatures from 'src/apis/disableFeatures';\nimport enableFeatures from 'src/apis/enableFeatures';\nimport Feature from 'constants/feature';\nimport { isOfficeEditorMode } from 'src/helpers/officeEditor';\n\nexport default (store) => () => {\n  const { dispatch } = store;\n  const isReadOnly = core.getIsReadOnly();\n\n  if (isReadOnly) {\n    disableTools(store)();\n    disableFeatures(store)([Feature.Annotating]);\n    core.setToolMode(defaultTool);\n    dispatch(actions.setActiveToolGroup(''));\n  } else {\n    enableTools(store)();\n    if (!isOfficeEditorMode()) {\n      enableFeatures(store)([Feature.Annotating]);\n    }\n  }\n\n  dispatch(actions.setReadOnly(core.getIsReadOnly()));\n  dispatch(actions.setAdminUser(core.getIsAdminUser()));\n  dispatch(actions.setUserName(core.getCurrentUser()));\n  core.drawAnnotationsFromList(core.getSelectedAnnotations());\n};","import core from 'core';\nimport actions from 'actions';\nimport getDefaultPageLabels from 'helpers/getDefaultPageLabels';\n\nexport default (dispatch) => ({ added, removed, moved }) => {\n  const movedKeys = Object.keys(moved);\n  if (added.length || removed.length || movedKeys.length) {\n    dispatch(actions.setTotalPages(core.getTotalPages()));\n\n    setTimeout(() => {\n      const totalPages = core.getTotalPages();\n      dispatch(actions.setTotalPages(totalPages));\n      core.getOutlines((outlines) => {\n        dispatch(actions.setOutlines(outlines));\n      });\n\n      // this 'onLayoutChange' handler get trigger before the other 'onLayoutChange' event handler in core (that added by annotationManager to update page numbers) gets triggered\n      // use 'setTimeout' so the other 'onLayoutChange' handler finishes before we call 'setPageLabels'\n      dispatch(actions.setPageLabels(getDefaultPageLabels(totalPages)));\n    }, 0);\n  }\n};\n","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport SignatureModes from 'constants/signatureModes';\n\nexport default (store, documentViewerKey) => async (_, widget) => {\n  const signatureTool = core.getTool('AnnotationCreateSignature', documentViewerKey);\n  const signatureMode = selectors.getSignatureMode(store.getState());\n  const { ToolNames } = window.Core.Tools;\n\n  if (!(await signatureTool.isEmptySignature()) && signatureMode === SignatureModes.FULL_SIGNATURE) {\n    await signatureTool.addSignature();\n  } else if (!(await signatureTool.isEmptyInitialsSignature()) && signatureMode === SignatureModes.INITIALS) {\n    await signatureTool.addInitials();\n  } else {\n    let requiresInitials = false;\n    if (widget) {\n      requiresInitials = widget.requiresInitials();\n    }\n\n    const state = store.getState();\n    const isCustomizableUI = state.featureFlags.customizableUI;\n    const isSavedSignaturesTabEnabled = selectors.isSavedSignaturesTabEnabled(state);\n    const signatureMode = requiresInitials ? SignatureModes.INITIALS : SignatureModes.FULL_SIGNATURE;\n    const savedSignatures = selectors.getSavedSignatures(state);\n    const savedInitials = selectors.getSavedInitials(state);\n    store.dispatch(actions.setSignatureMode(signatureMode));\n    if (isSavedSignaturesTabEnabled) {\n      const noSignaturesSaved = (savedInitials.length === 0 && requiresInitials) || (savedSignatures.length === 0 && !requiresInitials);\n      if (noSignaturesSaved) {\n        store.dispatch(actions.setSelectedTab('signatureModal', 'inkSignaturePanelButton'));\n      } else {\n        store.dispatch(actions.setSelectedTab('signatureModal', 'savedSignaturePanelButton'));\n      }\n      store.dispatch(actions.openElement('signatureModal'));\n    } else {\n      !selectors.isElementDisabled(state, 'toolbarGroup-Insert') && !isCustomizableUI && store.dispatch(actions.setToolbarGroup('toolbarGroup-Insert', true, 'signatureTools'));\n      // this condition is usually met when we click on a signature widget but UI doesn't know which signature to draw\n      // we check if there are saved signatures in the signature overlay to determine which component we should open\n      store.dispatch(actions.openElement(DataElements.TOOLS_OVERLAY));\n\n      const isToolsOverlayDisabled = selectors.isElementDisabled(state, DataElements.TOOLS_OVERLAY) || selectors.isElementDisabled(state, 'toolsHeader');\n      if ((savedSignatures.length === 0 && !requiresInitials) || isToolsOverlayDisabled) {\n        store.dispatch(actions.openElement('signatureModal'));\n      } else if ((savedInitials.length === 0 && requiresInitials) || isToolsOverlayDisabled) {\n        store.dispatch(actions.openElement('signatureModal'));\n      } else if (widget && isCustomizableUI) {\n        // We set the active ribbon to the one that has the signature tool\n        store.dispatch(actions.setActiveGroupedItemWithTool(ToolNames.SIGNATURE));\n        const isSignatureListPanelOpen = selectors.isElementOpen(state, DataElements.SIGNATURE_LIST_PANEL);\n        // If the active ribbon doesnt have the signature tool, we must switch to one that does\n        if (!isSignatureListPanelOpen) {\n          store.dispatch(actions.openElement(DataElements.SIGNATURE_LIST_PANEL));\n        } else {\n          // Signatures and Initials are considered pairs, so we just need to know one index to know the corresponding one.\n          const signatureIndex = selectors.getSelectedDisplayedSignatureIndex(state);\n          const { annotation: selectedSignature } = requiresInitials ? savedInitials[signatureIndex] : savedSignatures[signatureIndex];\n          await signatureTool.setSignature(selectedSignature);\n          await signatureTool.addSignature();\n        }\n      } else if (!isCustomizableUI) {\n        core.setToolMode(ToolNames.SIGNATURE);\n        const activeSavedSignatureTab = requiresInitials ? DataElements.SAVED_INTIALS_PANEL_BUTTON : DataElements.SAVED_SIGNATURES_PANEL_BUTTON;\n        store.dispatch(actions.openElement('toolStylePopup'));\n        store.dispatch(actions.setSelectedTab('savedSignatures', activeSavedSignatureTab));\n      }\n    }\n  }\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (dispatch, documentViewerKey) => (dotStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers(ToolNames.FORM_FILL_DOT).forEach((tool) => tool.hidePreview());\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(dotStampAnnotation, documentViewerKey);\n};\n","import core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport actions from 'actions';\n\nexport default (documentViewerKey, dispatch, store) => (rubberStampAnnotation) => {\n  core.setToolMode(defaultTool);\n  core.getToolsFromAllDocumentViewers('AnnotationCreateRubberStamp').forEach((tool) => tool.hidePreview());\n  core.selectAnnotation(rubberStampAnnotation, documentViewerKey);\n  // If we are in the modular UI, we reset the selected stamp index when a stamp is added\n  const state = store.getState();\n  const isCustomizableUI = state.featureFlags.customizableUI;\n  if (isCustomizableUI) {\n    dispatch(actions.setSelectedStampIndex(null));\n  }\n};\n","import actions from 'actions';\nimport i18next from 'i18next';\n\nexport default (dispatch) => () => {\n  const boundTranslator = i18next.t.bind(i18next);\n  dispatch(actions.setStandardStamps(boundTranslator));\n  dispatch(actions.setCustomStamps(boundTranslator));\n};\n","/**\n * Unmount multiple elements in the DOM. Note that this ONLY removes the DOM elements without disabling related features.\n * @method UI.disableElements\n * @param {string[]} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove left panel and left panel button from the DOM\n    instance.UI.disableElements([ 'leftPanel', 'leftPanelButton' ]);\n  });\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove the 'Edit' toolbar group\n    instance.UI.disableElements(['toolbarGroup-Edit']);\n  });\n */\n\n\nimport actions from 'actions';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default (store) => (dataElements) => {\n  if (typeof dataElements === 'string') {\n    store.dispatch(actions.disableElement(dataElements, PRIORITY_THREE));\n  }\n\n  store.dispatch(actions.disableElements(dataElements, PRIORITY_THREE));\n};","/**\n * Remount the hidden elements in the DOM.\n * @method UI.enableElements\n * @param {string[]} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // remove left panel and left panel button from the DOM\n    instance.UI.enableElements([ 'leftPanel', 'leftPanelButton' ]);\n  });\n */\n\nimport actions from 'actions';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default (store) => (dataElements) => {\n  if (typeof dataElements === 'string') {\n    return store.dispatch(actions.enableElement(dataElements, PRIORITY_THREE));\n  }\n  return store.dispatch(actions.enableElements(dataElements, PRIORITY_THREE));\n};","import actions from 'actions';\nimport disableElements from 'src/apis/disableElements';\nimport enableElements from 'src/apis/enableElements';\nimport DataElements from 'constants/dataElement';\n\nexport default (dispatch, store) => (isReadOnly) => {\n  dispatch(actions.setReadOnly(isReadOnly));\n  if (isReadOnly) {\n    disableElements(store)([\n      'documentControl',\n      'thumbnailControl',\n      'thumbRotateClockwise',\n      'thumbDelete',\n      DataElements.PAGE_MANIPULATION_OVERLAY,\n      DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON\n    ]);\n  } else {\n    enableElements(store)([\n      'documentControl',\n      'thumbnailControl',\n      'thumbRotateClockwise',\n      'thumbDelete',\n      DataElements.PAGE_MANIPULATION_OVERLAY,\n      DataElements.PAGE_MANIPULATION_OVERLAY_BUTTON\n    ]);\n  }\n};","import core from 'core';\n\nexport default (store, documentViewerKey) => (pageNumber) => {\n  const state = store.getState();\n  if (state.viewer.isAccessibleMode) {\n    core.getDocument(documentViewerKey).loadPageText(pageNumber, (text) => {\n      const textContainer = document.createElement('div');\n      textContainer.tabIndex = 0;\n      // TODO: page-num\n      textContainer.textContent = `Page ${pageNumber}.\\n${text}\\nEnd of page ${pageNumber}.`;\n      textContainer.style = 'font-size: 5px; overflow: auto; position: absolute; z-index: -99999; top: 0; bottom: 0;';\n      const id = `pageText${pageNumber}`;\n      textContainer.id = id;\n      // remove duplicate / pre-existing divs first before appending again\n      // TODO: page-num\n      const pageContainerElement = core.getViewerElement(documentViewerKey).querySelector(`#pageContainer${pageNumber}`);\n      const existingTextContainer = pageContainerElement.querySelector(`#${id}`);\n      if (existingTextContainer) {\n        pageContainerElement.removeChild(existingTextContainer);\n      }\n      // add pageText to the beginning of the pageContainer so that it comes first in tab order\n      pageContainerElement.prepend(textContainer);\n    });\n  }\n};\n","import { saveAs } from 'file-saver';\n\nexport default () => (fileMeta) => {\n  const { fileData, fileName } = fileMeta;\n  saveAs(fileData, fileName);\n};\n","import core from 'core';\n\n// a flag promise that's used to make sure that function calls to getSignatureDataToStore\n// will resolve in the same order as they were called\nlet previewsPromise = Promise.resolve();\n// returns an array of objects in the shape of: { annotation, preview }\n// annotation: a copy of the annotation passed in\n// imgSrc: preview of the annotation, a base64 string\nexport default async (annotations) => {\n  // copy the annotation because we need to mutate the annotation object later if there're any styles changes\n  // and we don't want the original annotation to be mutated as well\n  // since it's been added to the canvas\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const newAnnotations = annotations.map(core.getAnnotationCopy);\n\n  await previewsPromise;\n\n  previewsPromise = Promise.all(\n    newAnnotations.map((annotation) => {\n      const oldStrokeThickness = annotation['StrokeThickness'];\n      // Temporarily changing stroke thickness to 6 because it looks better in the preview image\n      annotation['StrokeThickness'] = 6;\n      const preview = signatureTool.getPreview(annotation);\n      annotation['StrokeThickness'] = oldStrokeThickness;\n      return preview;\n    }),\n  );\n\n  const previews = await previewsPromise;\n  return newAnnotations.map((annotation, i) => ({\n    annotation,\n    imgSrc: previews[i],\n  }));\n};\n","import core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch, store) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  let savedSignatures = signatureTool.getSavedSignatures();\n  const maxSignaturesCount = selectors.getMaxSignaturesCount(store.getState());\n  const numberOfSignaturesToRemove = savedSignatures.length - maxSignaturesCount;\n\n  if (numberOfSignaturesToRemove > 0) {\n    // to keep the UI sync with the signatures saved in the tool\n    for (let i = 0; i < numberOfSignaturesToRemove; i++) {\n      signatureTool.deleteSavedSignature(0);\n    }\n  }\n\n  savedSignatures = signatureTool.getSavedSignatures();\n  const signaturesToStore = await getSignatureDataToStore(savedSignatures);\n  // get the last element of the array (LIFO) and set it as active so it can be shown in the new signature list panel\n  dispatch(actions.setSelectedDisplayedSignatureIndex(signaturesToStore.length - 1));\n  dispatch(actions.setSavedSignatures(signaturesToStore));\n};","import core from 'core';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const coreSavedSignatures = signatureTool.getSavedSignatures();\n  const newSavedSignatures = await getSignatureDataToStore(coreSavedSignatures);\n  dispatch(actions.setSavedSignatures(newSavedSignatures));\n};\n","import actions from 'actions';\n\nconst formBuilderDefaultDisabledKeys = {\n  ROTATE_CLOCKWISE: 'rotateClockwise',\n  ROTATE_COUNTER_CLOCKWISE: 'rotateCounterClockwise',\n  NUMPAD_ROTATE_CLOCKWISE: 'numpadRotateClockwise',\n  NUMPAD_ROTATE_COUNTER_CLOCKWISE: 'numpadRotateCounterClockwise',\n  OPEN_FILE: 'openFile',\n  SEARCH: 'search',\n  ZOOM_IN: 'zoomIn',\n  ZOOM_OUT: 'zoomOut',\n  NUMPAD_ZOOM_IN: 'numpadZoomIn',\n  NUMPAD_ZOOM_OUT: 'numpadZoomOut',\n  FIT_SCREEN_WIDTH: 'fitScreenWidth',\n  PRINT: 'print',\n  BOOKMARK: 'bookmark',\n  SWITCH_PAN: 'switchPan',\n  PAN: 'pan',\n  ARROW: 'arrow',\n  CALLOUT: 'callout',\n  ERASER: 'eraser',\n  FREEHAND: 'freehand',\n  IMAGE: 'image',\n  LINE: 'line',\n  STICKY_NOTE: 'stickyNote',\n  ELLIPSE: 'ellipse',\n  RECTANGLE: 'rectangle',\n  RUBBER_STAMP: 'rubberStamp',\n  FREETEXT: 'freetext',\n  SIGNATURE: 'signature',\n  SQUIGGLY: 'squiggly',\n  HIGHLIGHT: 'highlight',\n  STRIKEOUT: 'strikeout',\n  UNDERLINE: 'underline',\n};\n\nexport default (dispatch, hotkeysManager) => () => {\n  dispatch(actions.setCustomElementOverrides('downloadButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('saveAsButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('printButton', { disabled: true }));\n  dispatch(actions.setCustomElementOverrides('filePickerButton', { disabled: true }));\n  dispatch(actions.disableElement('textPopup', 1));\n  for (const shortcutKey in formBuilderDefaultDisabledKeys) {\n    // There could be keys that already disabled by the user. When we exit from form builder we don't want to enable them.\n    if (hotkeysManager.isActive(formBuilderDefaultDisabledKeys[shortcutKey])) {\n      hotkeysManager.disableShortcut(formBuilderDefaultDisabledKeys[shortcutKey]);\n      hotkeysManager.formBuilderDisabledKeys[shortcutKey] = formBuilderDefaultDisabledKeys[shortcutKey];\n    }\n  }\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default (dispatch, store, hotkeysManager) => () => {\n  dispatch(actions.setCustomElementOverrides('downloadButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('saveAsButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('printButton', { disabled: false }));\n  dispatch(actions.setCustomElementOverrides('filePickerButton', { disabled: false }));\n  dispatch(actions.enableElement('textPopup', 1));\n  const keysToEnable = hotkeysManager.formBuilderDisabledKeys;\n  for (const shortcutKey in keysToEnable) {\n    hotkeysManager.enableShortcut(keysToEnable[shortcutKey]);\n  }\n  hotkeysManager.formBuilderDisabledKeys = {};\n  // Ensure we are not left in the Forms toolbargroup when we end form builder mode\n  const currentToolbarGroup = selectors.getCurrentToolbarGroup(store.getState());\n  const featureFlags = selectors.getFeatureFlags(store.getState());\n  const { customizableUI } = featureFlags;\n\n  if (!customizableUI) {\n    if (currentToolbarGroup === DataElements.FORMS_TOOLBAR_GROUP) {\n      dispatch(actions.setToolbarGroup(DataElements.VIEW_TOOLBAR_GROUP));\n    }\n  } else {\n    core.setToolMode('AnnotationEdit');\n  }\n};\n","export default () => async (/* widget */) => {\n  if (!window.Core.isFullPDFEnabled()) {\n    return;\n  }\n\n  await window.Core.PDFNet.initialize(undefined, window.Core.BackendTypes.WASM);\n\n  // const pdfDoc = await window.documentViewer.getDocument().getPDFDoc();\n  // const fieldName = widget.getField().name;\n  // const field = await pdfDoc.getDigitalSignatureField(fieldName);\n  /**\n   * @todo Originally implementated for the Digital Signature Validation Modal?\n   *\n   * https://github.com/PDFTron/webviewer-ui/blob/2cbf53f21a89f096284bc2902577ff86b58c75e1/src/event-listeners/onDigitalSignatureAvailable.js\n   *\n   * Still requires a return value.\n   */\n};\n","import core from 'core';\nimport actions from 'actions';\nimport defaultTool from 'constants/defaultTool';\n\nexport default (dispatch) => (annotation) => {\n  core.setToolMode(defaultTool);\n  dispatch(actions.setActiveToolGroup(''));\n  core.selectAnnotation(annotation);\n};","import core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch, store) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  let savedInitials = signatureTool.getSavedInitials();\n  const maxSignaturesCount = selectors.getMaxSignaturesCount(store.getState());\n  const numberOfInitialsToRemove = savedInitials.length - maxSignaturesCount;\n\n  if (numberOfInitialsToRemove > 0) {\n    // to keep the UI sync with the signatures saved in the tool\n    for (let i = 0; i < numberOfInitialsToRemove; i++) {\n      signatureTool.deleteSavedInitials(0);\n    }\n  }\n\n  savedInitials = signatureTool.getSavedInitials();\n  const initialsToStore = await getSignatureDataToStore(savedInitials);\n  dispatch(actions.setSavedInitials(initialsToStore));\n};","import core from 'core';\nimport actions from 'actions';\nimport getSignatureDataToStore from 'helpers/getSignatureDataToStore';\n\nexport default (dispatch) => async () => {\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n  const savedInitials = signatureTool.getSavedInitials();\n  const newSavedInitials = await getSignatureDataToStore(savedInitials);\n  dispatch(actions.setSavedInitials(newSavedInitials));\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (dispatch, store) => () => {\n  dispatch(actions.disableElements(['thumbnailControl', 'documentControl']));\n  dispatch(actions.setContentWorkersAsLoaded());\n  const featureFlags = selectors.getFeatureFlags(store.getState());\n  const isLoadingModalOpen = selectors.isElementOpen(store.getState(), 'loadingModal');\n  const { customizableUI } = featureFlags;\n\n  if (customizableUI && isLoadingModalOpen) {\n    // close the loading modal since we can now open it when in customizable UI mode\n    dispatch(actions.closeElement('loadingModal'));\n  }\n};","import actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\n\nexport default (dispatch, store) => () => {\n  dispatch(actions.enableElements(['thumbnailControl', 'documentControl']));\n  const featureFlags = selectors.getFeatureFlags(store.getState());\n  const { customizableUI } = featureFlags;\n\n  if (customizableUI) {\n    core.setToolMode('AnnotationEdit');\n  }\n};\n","export default (hotkeysManager) => () => {\n  hotkeysManager.on();\n};","import actions from 'actions';\n\nexport default (dispatch, hotkeysManager) => () => {\n  hotkeysManager.off();\n  dispatch(actions.closeElements(['annotationPopup']));\n};","import actions from 'actions';\nimport i18next from 'i18next';\nimport core from 'core';\n\nexport default (dispatch) => () => {\n  const message = i18next.t('option.contentEdit.digitalSign.message');\n  const title = i18next.t('option.contentEdit.digitalSign.title');\n  const confirmBtnText = i18next.t('action.ok');\n\n  const warning = {\n    message,\n    title,\n    confirmBtnText,\n    onConfirm: () => {\n      core.setToolMode('AnnotationEdit');\n    },\n    onCancel: () => {\n      core.setToolMode('AnnotationEdit');\n    }\n  };\n  dispatch(actions.showWarningMessage(warning));\n};","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nimport { setCheckPasswordFunction, setCancelPasswordCheckCallback } from 'components/PasswordModal';\nimport DataElements from 'src/constants/dataElement';\n\nconst passwordRequiredButtonElement = 'passwordRequiredButton';\nconst searchButtonElement = 'searchButton';\n\n/**\n * Callback fired when user cancels out of password modal.\n * @param {*} dispatch Redux object used to dispatch actions.\n * @param {*} store Redux object used to fetch current state.\n * @callback passwordCheckCallback\n * @callback successPasswordCallback\n * @ignore\n */\nfunction cancelPasswordCheckCallback(dispatch, store, passwordCheckCallback, successPasswordCallback) {\n  core.setToolMode('AnnotationEdit');\n  addPasswordRequiredHeaderItem(\n    dispatch,\n    store,\n    passwordCheckCallback,\n    successPasswordCallback\n  );\n}\n\n/**\n * Callback fired when users clicks submit within the password modal.\n * @param {*} dispatch Redux object used to dispatch actions.\n * @param {*} store Redux object used to fetch current state.\n * @param {*} password The password entered by user.\n * @callback passwordCheckCallback\n * @callback successPasswordCallback\n * @ignore\n */\nasync function checkPasswordCallback(dispatch, store, password, passwordCheckCallback, successPasswordCallback) {\n  const isValidPassword = await passwordCheckCallback(password);\n  if (isValidPassword) {\n    await successPasswordCallback();\n    removePasswordRequiredHeaderItem(dispatch, store);\n    dispatch(actions.setToolbarGroup('toolbarGroup-EditText'));\n    dispatch(actions.closeElement(DataElements.PASSWORD_MODAL));\n    dispatch(actions.setPasswordAttempts(0));\n    return;\n  }\n\n  let attempts = selectors.getPasswordAttempts(store.getState());\n  dispatch(actions.setPasswordAttempts(++attempts));\n\n  const maxAttempts = selectors.getMaxPasswordAttempts(store.getState());\n  if (attempts === maxAttempts) {\n    core.setToolMode('AnnotationEdit');\n    addPasswordRequiredHeaderItem(\n      dispatch,\n      store,\n      passwordCheckCallback,\n      successPasswordCallback\n    );\n  }\n}\n\n/**\n * Helper function that adds \"Password Lock\" button to toolbar. Password modal callbacks\n * are passed into this function to be set when the password button is pressed.\n * @param {*} dispatch Redux object used to dispatch actions.\n * @param {*} store Redux object used to fetch current state.\n * @callback passwordCheckCallback\n * @callback successPasswordCallback\n * @ignore\n */\nfunction addPasswordRequiredHeaderItem(dispatch, store, passwordCheckCallback, successPasswordCallback) {\n  const headerItems = selectors.getDefaultHeaderItems(store.getState());\n  const passwordRequiredButton = headerItems.find((item) => item.dataElement === passwordRequiredButtonElement);\n  if (passwordRequiredButton) {\n    return;\n  }\n\n  const searchButton = headerItems.find((item) => item.dataElement === searchButtonElement);\n  const index = searchButton ? headerItems.indexOf(searchButton) : headerItems.length;\n\n  const passwordLockHeaderItem = {\n    type: 'actionButton',\n    dataElement: passwordRequiredButtonElement,\n    title: 'message.passwordRequired',\n    img: 'icon-lock-wire',\n    onClick: () => {\n      // Reset the password modal callbacks to handle the\n      // unlikely scenario of these callbacks being overwritten.\n      setCancelPasswordCheckCallback(() => {\n        cancelPasswordCheckCallback(dispatch, store);\n      });\n\n      setCheckPasswordFunction((password) => {\n        checkPasswordCallback(\n          dispatch,\n          store,\n          password,\n          passwordCheckCallback,\n          successPasswordCallback\n        );\n      });\n\n      dispatch(actions.setPasswordAttempts(0));\n      dispatch(actions.openElement(DataElements.PASSWORD_MODAL));\n    }\n  };\n\n  headerItems.splice(index, 0, passwordLockHeaderItem);\n  dispatch(actions.setHeaderItems('default', [...headerItems]));\n}\n\n/**\n * Helper function that removes \"Password Lock\" button to toolbar.\n * @param {*} dispatch Redux object used to dispatch actions.\n * @param {*} store Redux object used to fetch current state.\n * @ignore\n */\nfunction removePasswordRequiredHeaderItem(dispatch, store) {\n  const headerItems = selectors.getDefaultHeaderItems(store.getState());\n  const passwordRequiredButton = headerItems.find((item) => item.dataElement === passwordRequiredButtonElement);\n  if (!passwordRequiredButton) {\n    return;\n  }\n\n  const index = headerItems.indexOf(passwordRequiredButton);\n  headerItems.splice(index, 1);\n  dispatch(actions.setHeaderItems('default', [...headerItems]));\n}\n\nexport {\n  checkPasswordCallback,\n  cancelPasswordCheckCallback,\n  removePasswordRequiredHeaderItem\n};","\nimport actions from 'src/redux/actions';\nimport DataElements from 'src/constants/dataElement';\n\nimport { setCheckPasswordFunction, setCancelPasswordCheckCallback } from 'components/PasswordModal';\nimport { checkPasswordCallback, cancelPasswordCheckCallback } from 'src/helpers/contentEditPasswordRequiredHelper';\n\nexport default (dispatch, store) => (passwordCheckCallback, successPasswordCallback) => {\n  setCancelPasswordCheckCallback(() => {\n    cancelPasswordCheckCallback(\n      dispatch,\n      store,\n      passwordCheckCallback,\n      successPasswordCallback\n    );\n  });\n\n  setCheckPasswordFunction((password) => {\n    checkPasswordCallback(\n      dispatch,\n      store,\n      password,\n      passwordCheckCallback,\n      successPasswordCallback\n    );\n  });\n\n  dispatch(actions.setPasswordAttempts(0));\n  dispatch(actions.openElement(DataElements.PASSWORD_MODAL));\n};","import * as eventListeners from 'src/event-listeners';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport core from 'core';\n\nconst { ToolNames } = window.Core.Tools;\n\nexport default (store, documentViewerKey = 1, skipHotkeys = false) => {\n  const { dispatch } = store;\n  // TODO Compare: Add event handlers for panels and refactor code for panels\n  const onBeforeDocumentLoaded = eventListeners.onBeforeDocumentLoaded(dispatch, documentViewerKey);\n  const onCheckStampAnnotationAdded = eventListeners.onCheckStampAnnotationAdded(dispatch, documentViewerKey);\n  const onCrossStampAnnotationAdded = eventListeners.onCrossStampAnnotationAdded(dispatch, documentViewerKey);\n  const onDisplayModeUpdated = eventListeners.onDisplayModeUpdated(dispatch);\n  const onDocumentLoaded = eventListeners.onDocumentLoaded(store, documentViewerKey);\n  const onDocumentUnloaded = eventListeners.onDocumentUnloaded(dispatch, documentViewerKey);\n  const onFitModeUpdated = eventListeners.onFitModeUpdated(dispatch);\n  const onRotationUpdated = eventListeners.onRotationUpdated(dispatch);\n  const onToolUpdated = eventListeners.onToolUpdated(dispatch);\n  const onToolModeUpdated = eventListeners.onToolModeUpdated(dispatch, store);\n  const onZoomUpdated = eventListeners.onZoomUpdated(dispatch, documentViewerKey);\n  const onPageNumberUpdated = eventListeners.onPageNumberUpdated(dispatch);\n  const onUpdateAnnotationPermission = eventListeners.onUpdateAnnotationPermission(store);\n  const onAnnotationChanged = eventListeners.onAnnotationChanged(documentViewerKey);\n  const onStampAnnotationAdded = eventListeners.onStampAnnotationAdded(dispatch, documentViewerKey);\n  const onSignatureAnnotationAdded = eventListeners.onSignatureAnnotationAdded(documentViewerKey);\n  const onStickyAnnotationAdded = eventListeners.onStickyAnnotationAdded(store);\n  const onCaretAnnotationAdded = eventListeners.onCaretAnnotationAdded(store);\n  const onFullScreenChange = eventListeners.onFullScreenChange(store);\n  const onPagesUpdated = eventListeners.onPagesUpdated(dispatch);\n  const onLocationSelected = eventListeners.onLocationSelected(store, documentViewerKey);\n  const onDotStampAnnotationAdded = eventListeners.onDotStampAnnotationAdded(dispatch, documentViewerKey);\n  const onRubberStampAnnotationAdded = eventListeners.onRubberStampAnnotationAdded(documentViewerKey, dispatch, store);\n  const onRubberStampsUpdated = eventListeners.onRubberStampsUpdated(dispatch);\n  const onReadOnlyModeChanged = eventListeners.onReadOnlyModeChanged(dispatch, store);\n  const onPageComplete = eventListeners.onPageComplete(store, documentViewerKey);\n  const onFileAttachmentAnnotationAdded = eventListeners.onFileAttachmentAnnotationAdded();\n  const onFileAttachmentDataAvailable = eventListeners.onFileAttachmentDataAvailable();\n  const onSignatureSaved = eventListeners.onSignatureSaved(dispatch, store);\n  const onSignatureDeleted = eventListeners.onSignatureDeleted(dispatch, store);\n  const onHistoryChanged = eventListeners.onHistoryChanged(dispatch, documentViewerKey);\n  const onFormFieldCreationModeStarted = eventListeners.onFormFieldCreationModeStarted(dispatch, hotkeysManager);\n  const onFormFieldCreationModeEnded = eventListeners.onFormFieldCreationModeEnded(dispatch, store, hotkeysManager);\n  const onDigitalSignatureAvailable = eventListeners.onDigitalSignatureAvailable(dispatch, documentViewerKey);\n  const onImageContentAdded = eventListeners.onImageContentAdded(dispatch);\n  const onInitialSaved = eventListeners.onInitialSaved(dispatch, store);\n  const onInitialDeleted = eventListeners.onInitialDeleted(dispatch, store);\n  const onContentEditModeStarted = eventListeners.onContentEditModeStarted(dispatch, store);\n  const onContentEditModeEnded = eventListeners.onContentEditModeEnded(dispatch, store);\n  const onContentBoxEditStarted = eventListeners.onContentBoxEditStarted(dispatch, hotkeysManager);\n  const onContentBoxEditEnded = eventListeners.onContentBoxEditEnded(hotkeysManager);\n  const onContentEditDocumentDigitalSigned = eventListeners.onContentEditDocumentDigitalSigned(dispatch);\n  const onContentEditPasswordRequired = eventListeners.onContentEditPasswordRequired(dispatch, store);\n\n  return {\n    addEventHandlers: () => {\n      if (documentViewerKey === 1) {\n        core.addEventListener('readOnlyModeChanged', onReadOnlyModeChanged, undefined, documentViewerKey);\n        core.addEventListener('formFieldCreationModeEnded', onFormFieldCreationModeEnded);\n        core.addEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted);\n        core.addEventListener('contentEditModeStarted', onContentEditModeStarted);\n        core.addEventListener('contentEditDocumentDigitallySigned', onContentEditDocumentDigitalSigned);\n        core.addEventListener('contentEditModeEnded', onContentEditModeEnded);\n        core.addEventListener('contentBoxEditStarted', onContentBoxEditStarted);\n        core.addEventListener('contentBoxEditEnded', onContentBoxEditEnded);\n        core.addEventListener('contentEditPasswordRequired', onContentEditPasswordRequired);\n        core.addEventListener('toolUpdated', onToolUpdated, undefined, documentViewerKey);\n        core.addEventListener('toolModeUpdated', onToolModeUpdated, undefined, documentViewerKey);\n        document.addEventListener('fullscreenchange', onFullScreenChange);\n        document.addEventListener('mozfullscreenchange', onFullScreenChange);\n        document.addEventListener('webkitfullscreenchange', onFullScreenChange);\n        document.addEventListener('MSFullscreenChange', onFullScreenChange);\n        core.getTool(ToolNames.ADD_IMAGE_CONTENT, documentViewerKey).addEventListener('annotationAdded', onImageContentAdded);\n        // -- Tempory divider until panels are ready --\n        core.addEventListener('rotationUpdated', onRotationUpdated, undefined, documentViewerKey);\n        core.addEventListener('fitModeUpdated', onFitModeUpdated, undefined, documentViewerKey);\n        core.addEventListener('pageNumberUpdated', onPageNumberUpdated, undefined, documentViewerKey);\n        core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, undefined, documentViewerKey);\n        core.getTool('AnnotationCreateSticky', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky2', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky3', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky4', documentViewerKey).addEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.addEventListener('pagesUpdated', onPagesUpdated, undefined, documentViewerKey);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('signatureSaved', onSignatureSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('signatureDeleted', onSignatureDeleted);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('initialSaved', onInitialSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('initialDeleted', onInitialDeleted);\n        core.getTool('AnnotationCreateMarkInsertText', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText2', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText3', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText4', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText2', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText3', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText4', documentViewerKey).addEventListener('annotationAdded', onCaretAnnotationAdded);\n      }\n      core.addEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded, undefined, documentViewerKey);\n      core.addEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded, undefined, documentViewerKey);\n      core.addEventListener('displayModeUpdated', onDisplayModeUpdated, undefined, documentViewerKey);\n      core.addEventListener('documentLoaded', onDocumentLoaded, undefined, documentViewerKey);\n      core.addEventListener('documentUnloaded', onDocumentUnloaded, undefined, documentViewerKey);\n      core.addEventListener('zoomUpdated', onZoomUpdated, undefined, documentViewerKey);\n      core.addEventListener('annotationChanged', onAnnotationChanged, undefined, documentViewerKey);\n      core.addEventListener('historyChanged', onHistoryChanged, undefined, documentViewerKey);\n      core.addEventListener('pageComplete', onPageComplete, undefined, documentViewerKey);\n      core.addEventListener('fileAttachmentDataAvailable', onFileAttachmentDataAvailable);\n      core.addEventListener('digitalSignatureAvailable', onDigitalSignatureAvailable);\n      core.getTool('AnnotationCreateStamp', documentViewerKey).addEventListener('annotationAdded', onStampAnnotationAdded);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('locationSelected', onLocationSelected);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).addEventListener('annotationAdded', onSignatureAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_DOT, documentViewerKey).addEventListener('annotationAdded', onDotStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp', documentViewerKey).addEventListener('annotationAdded', onRubberStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp', documentViewerKey).addEventListener('stampsUpdated', onRubberStampsUpdated);\n      core.getTool('AnnotationCreateFileAttachment', documentViewerKey).addEventListener('annotationAdded', onFileAttachmentAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CROSS, documentViewerKey).addEventListener('annotationAdded', onCrossStampAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CHECKMARK, documentViewerKey).addEventListener('annotationAdded', onCheckStampAnnotationAdded);\n    },\n    removeEventHandlers: () => {\n      if (documentViewerKey === 1) {\n        core.removeEventListener('formFieldCreationModeStarted', onFormFieldCreationModeStarted, documentViewerKey);\n        core.removeEventListener('formFieldCreationModeEnded', onFormFieldCreationModeEnded, documentViewerKey);\n        core.removeEventListener('contentEditModeStarted', onContentEditModeStarted);\n        core.removeEventListener('contentEditDocumentDigitallySigned', onContentEditDocumentDigitalSigned);\n        core.removeEventListener('contentEditModeEnded', onContentEditModeEnded);\n        core.removeEventListener('contentBoxEditStarted', onContentBoxEditStarted);\n        core.removeEventListener('contentBoxEditEnded', onContentBoxEditEnded);\n        core.removeEventListener('contentEditPasswordRequired', onContentEditPasswordRequired);\n        core.removeEventListener('toolUpdated', onToolUpdated, documentViewerKey);\n        core.removeEventListener('toolModeUpdated', onToolModeUpdated, documentViewerKey);\n        document.removeEventListener('fullscreenchange', onFullScreenChange);\n        document.removeEventListener('mozfullscreenchange', onFullScreenChange);\n        document.removeEventListener('webkitfullscreenchange', onFullScreenChange);\n        document.removeEventListener('MSFullscreenChange', onFullScreenChange);\n        core.removeEventListener('rotationUpdated', onRotationUpdated, documentViewerKey);\n        core.removeEventListener('fitModeUpdated', onFitModeUpdated, documentViewerKey);\n        core.removeEventListener('pageNumberUpdated', onPageNumberUpdated, documentViewerKey);\n        core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, documentViewerKey);\n        core.getTool('AnnotationCreateSticky', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky2', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky3', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.getTool('AnnotationCreateSticky4', documentViewerKey).removeEventListener('annotationAdded', onStickyAnnotationAdded);\n        core.removeEventListener('pagesUpdated', onPagesUpdated, documentViewerKey);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('signatureSaved', onSignatureSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('signatureDeleted', onSignatureDeleted);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('initialSaved', onInitialSaved);\n        core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('initialDeleted', onInitialDeleted);\n        core.getTool(ToolNames.ADD_IMAGE_CONTENT, documentViewerKey).removeEventListener('annotationAdded', onImageContentAdded);\n        core.getTool('AnnotationCreateMarkInsertText', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText2', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText3', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkInsertText4', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText2', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText3', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n        core.getTool('AnnotationCreateMarkReplaceText4', documentViewerKey).removeEventListener('annotationAdded', onCaretAnnotationAdded);\n      }\n      core.removeEventListener('beforeDocumentLoaded', onBeforeDocumentLoaded, documentViewerKey);\n      core.removeEventListener('displayModeUpdated', onDisplayModeUpdated, documentViewerKey);\n      core.removeEventListener('documentLoaded', onDocumentLoaded, documentViewerKey);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded, documentViewerKey);\n      core.removeEventListener('zoomUpdated', onZoomUpdated, documentViewerKey);\n      core.removeEventListener('annotationChanged', onAnnotationChanged, documentViewerKey);\n      core.removeEventListener('pageComplete', onPageComplete, documentViewerKey);\n      core.removeEventListener('fileAttachmentDataAvailable', onFileAttachmentDataAvailable, documentViewerKey);\n      core.removeEventListener('digitalSignatureAvailable', onDigitalSignatureAvailable, documentViewerKey);\n      core.getTool('AnnotationCreateStamp', documentViewerKey).removeEventListener('annotationAdded', onStampAnnotationAdded);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('locationSelected', onLocationSelected);\n      core.getTool('AnnotationCreateSignature', documentViewerKey).removeEventListener('annotationAdded', onSignatureAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_DOT, documentViewerKey).removeEventListener('annotationAdded', onDotStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp', documentViewerKey).removeEventListener('annotationAdded', onRubberStampAnnotationAdded);\n      core.getTool('AnnotationCreateRubberStamp', documentViewerKey).removeEventListener('stampsUpdated', onRubberStampsUpdated);\n      core.getTool('AnnotationCreateFileAttachment', documentViewerKey).removeEventListener('annotationAdded', onFileAttachmentAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CROSS, documentViewerKey).removeEventListener('annotationAdded', onCrossStampAnnotationAdded);\n      core.getTool(ToolNames.FORM_FILL_CHECKMARK, documentViewerKey).removeEventListener('annotationAdded', onCheckStampAnnotationAdded);\n      !skipHotkeys && hotkeysManager.off();\n    },\n  };\n};\n","import React, { useCallback, useState, useEffect } from 'react';\nimport './ComparisonButton.scss';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport Choice from 'components/Choice';\nimport DataElements from 'src/constants/dataElement';\nimport core from 'core';\nimport { useTranslation } from 'react-i18next';\n\nconst ComparisonButton = () => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n  const [disabled, setDisabled] = useState(true);\n  const [isCompareStarted, isComparisonOverlayEnabled] = useSelector((state) => [\n    selectors.isCompareStarted(state),\n    selectors.getIsComparisonOverlayEnabled(state),\n  ]);\n  const semanticDiffAnnotations = core.getSemanticDiffAnnotations();\n\n  useEffect(() => {\n    const checkDisabled = () => {\n      const documentsLoaded = core.getDocument(1) && core.getDocument(2);\n      const document1IsValidType = core.getDocument(1)?.getType() === 'pdf' ||\n        (core.getDocument(1)?.getType() === 'webviewerServer' && !core.getDocument(1)?.isWebViewerServerDocument());\n      const document2IsValidType = core.getDocument(2)?.getType() === 'pdf' ||\n        (core.getDocument(2)?.getType() === 'webviewerServer' && !core.getDocument(2)?.isWebViewerServerDocument());\n      if (documentsLoaded && document1IsValidType && document2IsValidType) {\n        setDisabled(false);\n      } else {\n        setDisabled(true);\n      }\n    };\n    const unLoaded = () => {\n      setDisabled(true);\n      dispatch(actions.setIsCompareStarted(false));\n      dispatch(actions.disableElement('comparePanelToggleButton'));\n      dispatch(actions.closeElement('comparePanel'));\n    };\n    checkDisabled();\n    core.addEventListener('documentLoaded', checkDisabled, undefined, 1);\n    core.addEventListener('documentLoaded', checkDisabled, undefined, 2);\n    core.addEventListener('documentUnloaded', unLoaded, undefined, 1);\n    core.addEventListener('documentUnloaded', unLoaded, undefined, 2);\n\n    if (!semanticDiffAnnotations.length && isComparisonOverlayEnabled) {\n      dispatch(actions.setIsComparisonOverlayEnabled(false));\n    }\n\n    if (semanticDiffAnnotations.length && !isComparisonOverlayEnabled) {\n      dispatch(actions.setIsComparisonOverlayEnabled(true));\n    }\n\n    return () => {\n      core.removeEventListener('documentLoaded', checkDisabled, undefined, 1);\n      core.removeEventListener('documentLoaded', checkDisabled, undefined, 2);\n      core.removeEventListener('documentUnloaded', unLoaded, undefined, 1);\n      core.removeEventListener('documentUnloaded', unLoaded, undefined, 2);\n    };\n  }, [semanticDiffAnnotations]);\n\n  const startComparison = useCallback(() => {\n    const [documentViewer, documentViewer2] = core.getDocumentViewers();\n    const shouldDiff = documentViewer?.getDocument() && documentViewer2?.getDocument();\n    if (shouldDiff) {\n      dispatch(actions.setIsCompareStarted(true));\n      dispatch(actions.enableElement('comparePanelToggleButton'));\n      dispatch(actions.openElement(DataElements.LOADING_MODAL));\n      documentViewer.startSemanticDiff(documentViewer2).catch((error) => {\n        console.error(error);\n        dispatch(actions.closeElement(DataElements.LOADING_MODAL));\n      });\n    }\n  }, []);\n\n  const toggleComparisonOverlay = async () => {\n    const enable = !isComparisonOverlayEnabled;\n    const [documentViewerOne, documentViewerTwo] = core.getDocumentViewers();\n    if (enable) {\n      await documentViewerOne.startSemanticDiff(documentViewerTwo);\n    } else {\n      await documentViewerOne.stopSemanticDiff();\n    }\n    dispatch(actions.setIsComparisonOverlayEnabled(enable));\n  };\n\n  return (\n    <div className=\"ComparisonButton\">\n      {!isCompareStarted ?\n        <button disabled={disabled} onClick={startComparison}>{t('action.startComparison')}</button>\n        :\n        <Choice\n          isSwitch\n          label={t('action.showComparison')}\n          checked={isComparisonOverlayEnabled}\n          onChange={toggleComparisonOverlay}\n        />\n      }\n    </div>\n  );\n};\n\nexport default ComparisonButton;\n","import ComparisonButton from './ComparisonButton';\n\nexport default ComparisonButton;","import core from 'core';\n\nconst setupDocViewer = (documentViewer = undefined) => {\n  const docViewer = documentViewer || core.getDocumentViewer();\n\n  // at 100% zoom level, adjust this whenever zoom/fitmode is updated\n  docViewer.DEFAULT_MARGIN = 10;\n  addToolsToDocViewer(docViewer);\n};\n\nconst addToolsToDocViewer = (docViewer) => {\n  const toolModeMap = docViewer.getToolModeMap();\n  const { ToolNames } = window.Core.Tools;\n\n  toolModeMap.AnnotationCreateTextHighlight2 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT2);\n  toolModeMap.AnnotationCreateTextHighlight3 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT3);\n  toolModeMap.AnnotationCreateTextHighlight4 = new window.Core.Tools.TextHighlightCreateTool(docViewer, ToolNames.HIGHLIGHT4);\n  toolModeMap.AnnotationCreateFreeHand2 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND2);\n  toolModeMap.AnnotationCreateFreeHand3 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND3);\n  toolModeMap.AnnotationCreateFreeHand4 = new window.Core.Tools.FreeHandCreateTool(docViewer, ToolNames.FREEHAND4);\n  toolModeMap.AnnotationCreateFreeHandHighlight2 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT2);\n  toolModeMap.AnnotationCreateFreeHandHighlight3 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT3);\n  toolModeMap.AnnotationCreateFreeHandHighlight4 = new window.Core.Tools.FreeHandHighlightCreateTool(docViewer, ToolNames.FREEHAND_HIGHLIGHT4);\n  toolModeMap.AnnotationCreateFreeText2 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT2);\n  toolModeMap.AnnotationCreateFreeText3 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT3);\n  toolModeMap.AnnotationCreateFreeText4 = new window.Core.Tools.FreeTextCreateTool(docViewer, ToolNames.FREETEXT4);\n  toolModeMap.AnnotationCreateMarkInsertText2 = new window.Core.Tools.MarkInsertTextCreateTool(docViewer, ToolNames.MARK_INSERT_TEXT2);\n  toolModeMap.AnnotationCreateMarkInsertText3 = new window.Core.Tools.MarkInsertTextCreateTool(docViewer, ToolNames.MARK_INSERT_TEXT3);\n  toolModeMap.AnnotationCreateMarkInsertText4 = new window.Core.Tools.MarkInsertTextCreateTool(docViewer, ToolNames.MARK_INSERT_TEXT4);\n  toolModeMap.AnnotationCreateMarkReplaceText2 = new window.Core.Tools.MarkReplaceTextCreateTool(docViewer, ToolNames.MARK_REPLACE_TEXT2);\n  toolModeMap.AnnotationCreateMarkReplaceText3 = new window.Core.Tools.MarkReplaceTextCreateTool(docViewer, ToolNames.MARK_REPLACE_TEXT3);\n  toolModeMap.AnnotationCreateMarkReplaceText4 = new window.Core.Tools.MarkReplaceTextCreateTool(docViewer, ToolNames.MARK_REPLACE_TEXT4);\n  toolModeMap.AnnotationCreateDateFreeText2 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT2);\n  toolModeMap.AnnotationCreateDateFreeText3 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT3);\n  toolModeMap.AnnotationCreateDateFreeText4 = new window.Core.Tools.DateFreeTextCreateTool(docViewer, ToolNames.DATEFREETEXT4);\n  toolModeMap.AnnotationCreateCallout2 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT2);\n  toolModeMap.AnnotationCreateCallout3 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT3);\n  toolModeMap.AnnotationCreateCallout4 = new window.Core.Tools.CalloutCreateTool(docViewer, ToolNames.CALLOUT4);\n  toolModeMap.AnnotationCreateSticky2 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY2);\n  toolModeMap.AnnotationCreateSticky3 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY3);\n  toolModeMap.AnnotationCreateSticky4 = new window.Core.Tools.StickyCreateTool(docViewer, ToolNames.STICKY4);\n  toolModeMap.AnnotationCreateTextUnderline2 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE2);\n  toolModeMap.AnnotationCreateTextUnderline3 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE3);\n  toolModeMap.AnnotationCreateTextUnderline4 = new window.Core.Tools.TextUnderlineCreateTool(docViewer, ToolNames.UNDERLINE4);\n  toolModeMap.AnnotationCreateTextStrikeout2 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT2);\n  toolModeMap.AnnotationCreateTextStrikeout3 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT3);\n  toolModeMap.AnnotationCreateTextStrikeout4 = new window.Core.Tools.TextStrikeoutCreateTool(docViewer, ToolNames.STRIKEOUT4);\n  toolModeMap.AnnotationCreateTextSquiggly2 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY2);\n  toolModeMap.AnnotationCreateTextSquiggly3 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY3);\n  toolModeMap.AnnotationCreateTextSquiggly4 = new window.Core.Tools.TextSquigglyCreateTool(docViewer, ToolNames.SQUIGGLY4);\n  toolModeMap.AnnotationCreateRectangle2 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE2);\n  toolModeMap.AnnotationCreateRectangle3 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE3);\n  toolModeMap.AnnotationCreateRectangle4 = new window.Core.Tools.RectangleCreateTool(docViewer, ToolNames.RECTANGLE4);\n  toolModeMap.AnnotationCreateEllipse2 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE2);\n  toolModeMap.AnnotationCreateEllipse3 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE3);\n  toolModeMap.AnnotationCreateEllipse4 = new window.Core.Tools.EllipseCreateTool(docViewer, ToolNames.ELLIPSE4);\n  toolModeMap.AnnotationCreatePolygon2 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON2);\n  toolModeMap.AnnotationCreatePolygon3 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON3);\n  toolModeMap.AnnotationCreatePolygon4 = new window.Core.Tools.PolygonCreateTool(docViewer, ToolNames.POLYGON4);\n  toolModeMap.AnnotationCreatePolygonCloud2 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD2);\n  toolModeMap.AnnotationCreatePolygonCloud3 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD3);\n  toolModeMap.AnnotationCreatePolygonCloud4 = new window.Core.Tools.PolygonCloudCreateTool(docViewer, ToolNames.POLYGON_CLOUD4);\n  toolModeMap.AnnotationCreateLine2 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE2);\n  toolModeMap.AnnotationCreateLine3 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE3);\n  toolModeMap.AnnotationCreateLine4 = new window.Core.Tools.LineCreateTool(docViewer, ToolNames.LINE4);\n  toolModeMap.AnnotationCreatePolyline2 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE2);\n  toolModeMap.AnnotationCreatePolyline3 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE3);\n  toolModeMap.AnnotationCreatePolyline4 = new window.Core.Tools.PolylineCreateTool(docViewer, ToolNames.POLYLINE4);\n  toolModeMap.AnnotationCreateArrow2 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW2);\n  toolModeMap.AnnotationCreateArrow3 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW3);\n  toolModeMap.AnnotationCreateArrow4 = new window.Core.Tools.ArrowCreateTool(docViewer, ToolNames.ARROW4);\n  toolModeMap.AnnotationCreateCountMeasurement2 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT2);\n  toolModeMap.AnnotationCreateCountMeasurement3 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT3);\n  toolModeMap.AnnotationCreateCountMeasurement4 = new window.Core.Tools.CountMeasurementCreateTool(docViewer, ToolNames.COUNT_MEASUREMENT4);\n  toolModeMap.AnnotationCreateDistanceMeasurement2 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT2);\n  toolModeMap.AnnotationCreateDistanceMeasurement3 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT3);\n  toolModeMap.AnnotationCreateDistanceMeasurement4 = new window.Core.Tools.DistanceMeasurementCreateTool(docViewer, ToolNames.DISTANCE_MEASUREMENT4);\n  toolModeMap.AnnotationCreatePerimeterMeasurement2 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT2);\n  toolModeMap.AnnotationCreatePerimeterMeasurement3 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT3);\n  toolModeMap.AnnotationCreatePerimeterMeasurement4 = new window.Core.Tools.PerimeterMeasurementCreateTool(docViewer, ToolNames.PERIMETER_MEASUREMENT4);\n  toolModeMap.AnnotationCreateAreaMeasurement2 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateAreaMeasurement3 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateAreaMeasurement4 = new window.Core.Tools.AreaMeasurementCreateTool(docViewer, ToolNames.AREA_MEASUREMENT4);\n  toolModeMap.AnnotationCreateEllipseMeasurement2 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT2);\n  toolModeMap.AnnotationCreateEllipseMeasurement3 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT3);\n  toolModeMap.AnnotationCreateEllipseMeasurement4 = new window.Core.Tools.EllipseMeasurementCreateTool(docViewer, ToolNames.ELLIPSE_MEASUREMENT4);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement2 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement3 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateRectangularAreaMeasurement4 = new window.Core.Tools.RectangularAreaMeasurementCreateTool(docViewer, ToolNames.RECTANGULAR_AREA_MEASUREMENT4);\n  toolModeMap.TextFormFieldCreateTool2 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD2);\n  toolModeMap.TextFormFieldCreateTool3 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD3);\n  toolModeMap.TextFormFieldCreateTool4 = new window.Core.Tools.TextFormFieldCreateTool(docViewer, ToolNames.TEXT_FORM_FIELD4);\n  toolModeMap.SignatureFormFieldCreateTool2 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD2);\n  toolModeMap.SignatureFormFieldCreateTool3 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD3);\n  toolModeMap.SignatureFormFieldCreateTool4 = new window.Core.Tools.SignatureFormFieldCreateTool(docViewer, ToolNames.SIG_FORM_FIELD4);\n  toolModeMap.ListBoxFormFieldCreateTool2 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD2);\n  toolModeMap.ListBoxFormFieldCreateTool3 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD3);\n  toolModeMap.ListBoxFormFieldCreateTool4 = new window.Core.Tools.ListBoxFormFieldCreateTool(docViewer, ToolNames.LIST_BOX_FIELD4);\n  toolModeMap.ComboBoxFormFieldCreateTool2 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD2);\n  toolModeMap.ComboBoxFormFieldCreateTool3 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD3);\n  toolModeMap.ComboBoxFormFieldCreateTool4 = new window.Core.Tools.ComboBoxFormFieldCreateTool(docViewer, ToolNames.COMBO_BOX_FIELD4);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement2 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT2);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement3 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT3);\n  toolModeMap.AnnotationCreateCloudyRectangularAreaMeasurement4 = new window.Core.Tools.CloudyRectangularAreaMeasurementCreateTool(docViewer, ToolNames.CLOUDY_RECTANGULAR_AREA_MEASUREMENT4);\n  toolModeMap.AnnotationCreateArcMeasurement2 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT2);\n  toolModeMap.AnnotationCreateArcMeasurement3 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT3);\n  toolModeMap.AnnotationCreateArcMeasurement4 = new window.Core.Tools.ArcMeasurementCreateTool(docViewer, ToolNames.ARC_MEASUREMENT4);\n  toolModeMap.AnnotationCreateArc2 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC2);\n  toolModeMap.AnnotationCreateArc3 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC3);\n  toolModeMap.AnnotationCreateArc4 = new window.Core.Tools.ArcCreateTool(docViewer, ToolNames.ARC4);\n  toolModeMap[ToolNames.REDACTION2] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION2);\n  toolModeMap[ToolNames.REDACTION3] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION3);\n  toolModeMap[ToolNames.REDACTION4] = new window.Core.Tools.RedactionCreateTool(docViewer, ToolNames.REDACTION4);\n  toolModeMap.AnnotationCreateChangeViewTool = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW);\n  toolModeMap.AnnotationCreateChangeViewTool2 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW2);\n  toolModeMap.AnnotationCreateChangeViewTool3 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW3);\n  toolModeMap.AnnotationCreateChangeViewTool4 = new window.Core.Tools.ChangeViewCreateTool(docViewer, ToolNames.CHANGEVIEW4);\n};\n\nexport default setupDocViewer;\n","// default styles of a tool is determined by core\n// following are the tools that we want to change the default styles due to design\n// we could change the default styles in core but we don't want the legacy UI to be affected, so we do it here\nexport default {\n  AnnotationCreateCountMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCountMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCountMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCountMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateRectangularAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCloudyRectangularAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateEllipseMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateAreaMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePerimeterMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArcMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArcMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArcMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArcMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArc: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArc2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArc3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArc4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateDistanceMeasurement4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateArrow: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateArrow2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateArrow3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateArrow4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateLine: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateLine2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateLine3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateLine4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolyline: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolyline2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolyline3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolyline4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolygonCloud: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolygonCloud2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolygonCloud3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolygonCloud4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreatePolygon: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreatePolygon2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreatePolygon3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreatePolygon4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRectangle: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateRectangle2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateRectangle3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateRectangle4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n    StrokeStyle: 'solid',\n  },\n  AnnotationCreateEllipse: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateEllipse2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateEllipse3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateEllipse4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeHand: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeHand2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeHand3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeHand4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeHandHighlight4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateFreeText: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateFreeText2: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateFreeText3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateFreeText4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateMarkInsertText: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateMarkInsertText2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateMarkInsertText3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateMarkInsertText4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateMarkReplaceText4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateDateFreeText: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateDateFreeText2: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateDateFreeText3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateDateFreeText4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateCallout: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateCallout2: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateCallout3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateCallout4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateSticky: {\n    StrokeColor: { R: 255, G: 205, B: 69, A: 1 },\n  },\n  AnnotationCreateSticky2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateSticky3: {\n    StrokeColor: { R: 255, G: 141, B: 0, A: 1 },\n  },\n  AnnotationCreateSticky4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextHighlight: {\n    StrokeColor: { R: 255, G: 205, B: 69, A: 1 },\n  },\n  AnnotationCreateTextHighlight2: {\n    StrokeColor: { R: 37, G: 210, B: 209, A: 1 },\n  },\n  AnnotationCreateTextHighlight3: {\n    StrokeColor: { R: 0, G: 204, B: 99, A: 1 },\n  },\n  AnnotationCreateTextHighlight4: {\n    StrokeColor: { R: 226, G: 161, B: 230, A: 1 },\n  },\n  AnnotationCreateTextUnderline: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextUnderline2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextUnderline3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextUnderline4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextSquiggly: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextSquiggly2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextSquiggly3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextSquiggly4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateTextStrikeout: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateTextStrikeout2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateTextStrikeout3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateTextStrikeout4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  TextFormFieldCreateTool: {\n    TextColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  TextFormFieldCreateTool2: {\n    TextColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  TextFormFieldCreateTool3: {\n    TextColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  TextFormFieldCreateTool4: {\n    TextColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  SignatureFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  SignatureFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  SignatureFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  SignatureFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  ListBoxFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  ListBoxFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  ListBoxFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  ListBoxFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool2: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool3: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  ComboBoxFormFieldCreateTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n  AnnotationCreateRedaction: {\n    StrokeColor: { R: 255, G: 0, B: 0, A: 1 }\n  },\n  AnnotationCreateRedaction2: {\n    StrokeColor: { R: 0, G: 0, B: 255, A: 1 }\n  },\n  AnnotationCreateRedaction3: {\n    StrokeColor: { R: 255, G: 255, B: 0, A: 1 }\n  },\n  AnnotationCreateRedaction4: {\n    StrokeColor: { R: 0, G: 128, B: 0, A: 1 }\n  },\n  AnnotationCreateChangeViewTool: {\n    StrokeColor: { R: 228, G: 66, B: 52, A: 1 },\n  },\n  AnnotationCreateChangeViewTool2: {\n    StrokeColor: { R: 78, G: 125, B: 233, A: 1 },\n  },\n  AnnotationCreateChangeViewTool3: {\n    StrokeColor: { R: 0, G: 0, B: 0, A: 1 },\n  },\n  AnnotationCreateChangeViewTool4: {\n    StrokeColor: { R: 0, G: 122, B: 59, A: 1 },\n  },\n};\n","import core from 'core';\nimport defaultToolStylesMap from 'constants/defaultToolStylesMap';\nimport localStorageManager from 'helpers/localStorageManager';\nimport { getInstanceID } from 'helpers/getRootNode';\n\nconst setDefaultToolStyle = (toolName, documentViewer = undefined) => {\n  let toolStyles = null;\n  const toolModeMap = documentViewer ? documentViewer.getToolModeMap() : core.getToolModeMap();\n\n  try {\n    const instanceId = getInstanceID();\n    toolStyles = localStorage.getItem(`${instanceId}-toolData-${toolName}`);\n  } catch (ex) {\n    console.warn('Disabling \"localStorage\" because it could not be accessed.');\n    localStorageManager.disableLocalStorage();\n  }\n\n  if (!toolStyles && defaultToolStylesMap[toolName]) {\n    toolStyles = JSON.stringify(defaultToolStylesMap[toolName]);\n  }\n\n  if (toolStyles) {\n    const tool = toolModeMap[toolName];\n\n    toolStyles = getParsedToolStyles(toolStyles);\n    tool.setStyles(toolStyles);\n  }\n};\n\nconst setDefaultToolStyles = (documentViewer = undefined) => {\n  const toolModeMap = documentViewer ? documentViewer.getToolModeMap() : core.getToolModeMap();\n\n  Object.keys(toolModeMap).forEach((toolName) => {\n    setDefaultToolStyle(toolName, documentViewer);\n  });\n};\n\nconst getParsedToolStyles = (toolStyles) => JSON.parse(toolStyles, (_, styles) => {\n  if (styles) {\n    Object.entries(styles).forEach(([key, style]) => {\n      if (isKeyColorProperty(key) && typeof style === 'object') {\n        styles[key] = new window.Core.Annotations.Color(\n          style.R,\n          style.G,\n          style.B,\n          style.A,\n        );\n      }\n    });\n  }\n  return styles;\n});\n\nconst isKeyColorProperty = (key) => ['TextColor', 'StrokeColor', 'FillColor'].includes(key);\n\nexport default setDefaultToolStyles;\n\nexport { setDefaultToolStyle };\n","import setupDocViewer from 'helpers/setupDocViewer';\nimport setDefaultToolStyles from 'helpers/setDefaultToolStyles';\nimport core from 'core';\nimport actions from 'actions';\n\nexport const addDocumentViewer = (number) => {\n  const documentViewer = new window.Core.DocumentViewer();\n  documentViewer.enableAnnotations();\n  documentViewer.setFitMode(documentViewer.FitMode.FitPage);\n  setupDocViewer(documentViewer);\n  setDefaultToolStyles(documentViewer);\n  core.setDocumentViewer(number, documentViewer);\n  return documentViewer;\n};\n\nexport const removeDocumentViewer = (number) => {\n  const documentViewer = core.getDocumentViewer(number);\n  documentViewer.closeDocument();\n  core.deleteDocumentViewer(number);\n};\n\nexport const syncDocumentViewers = (primarydocumentViewerKey, secondarydocumentViewerKey) => {\n  const documentViewer = core.getDocumentViewer(primarydocumentViewerKey);\n  const documentViewer2 = core.getDocumentViewer(secondarydocumentViewerKey);\n  documentViewer2.setToolMode(documentViewer2.getTool(documentViewer.getToolMode().name));\n  const annotationManager = documentViewer.getAnnotationManager();\n  const annotationManager2 = documentViewer2.getAnnotationManager();\n  annotationManager2.setCurrentUser(annotationManager.getCurrentUser());\n  if (annotationManager.isUserAdmin()) {\n    annotationManager2.promoteUserToAdmin();\n  } else {\n    annotationManager2.demoteUserFromAdmin();\n  }\n};\n\nexport const setupOpenURLHandler = (docViewer, store) => {\n  docViewer.setOpenURIHandler(\n    (uri, isOpenInNewWindow) => {\n      store.dispatch(actions.showWarningMessage({\n        title: 'warning.connectToURL.title',\n        message: 'warning.connectToURL.message',\n        onSecondary: () => core.openURI(uri, isOpenInNewWindow),\n        confirmBtnText: 'action.cancel',\n        secondaryBtnText: 'action.confirm',\n        secondaryBtnClass: 'secondary-btn-custom',\n        templateStrings: {\n          uri,\n        },\n        modalClass: 'connect-to-url-modal'\n      }));\n    });\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport './MultiViewer.scss';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport { useSelector, useDispatch, useStore } from 'react-redux';\nimport DropArea from 'components/MultiViewer/DropArea';\nimport ResizeBar from 'components/ResizeBar';\nimport DocumentHeader from 'components/MultiViewer/DocumentHeader';\nimport DocumentContainer from 'components/MultiViewer/DocumentContainer';\nimport classNames from 'classnames';\nimport CompareZoomOverlay from 'components/MultiViewer/CompareZoomOverlay';\nimport eventHandler from 'helpers/eventHandler';\nimport throttle from 'lodash/throttle';\nimport { zoomTo } from 'helpers/zoom';\nimport ComparisonButton from 'components/MultiViewer/ComparisonButton';\nimport { addDocumentViewer, syncDocumentViewers, removeDocumentViewer, setupOpenURLHandler } from 'helpers/documentViewerHelper';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\nimport { DISABLED_TOOLS_KEYWORDS, DISABLED_TOOL_GROUPS, SYNC_MODES } from 'constants/multiViewerContants';\nimport DataElements from 'constants/dataElement';\nimport multiViewerHelper, {\n  getIsScrolledByClickingChangeItem,\n  setIsScrolledByClickingChangeItem\n} from 'helpers/multiViewerHelper';\n\nconst MIN_WIDTH = 350;\n\nconst MultiViewer = () => {\n  const documentViewerKeys = [1, 2];\n  const dispatch = useDispatch();\n  const store = useStore();\n  const [initialSetup, setInitialSetup] = useState(false);\n  const oldHeaderItems = useRef({});\n  const container = useRef();\n  const container2 = useRef();\n  const [doc1Loaded, setDoc1Loaded] = useState(false);\n  const [doc2Loaded, setDoc2Loaded] = useState(false);\n  const [width, setWidth] = useState(0);\n  const [width2, setWidth2] = useState(0);\n  const [isSyncing, setIsSyncing] = useState(false);\n  const removeHandlerFunctions = useRef([]);\n  const funcRefs = useRef({\n    updateScrollView: throttle(() => core.scrollViewUpdated(), 100, { leading: true }),\n    resizeObserverFunc: throttle((records) => {\n      const newWidth = records[0].contentRect.width;\n      if (newWidth) {\n        dispatch(actions.setDocumentContainerWidth(newWidth));\n        if (width === 0 && width2 === 0) {\n          setWidth(newWidth / 2);\n          setWidth2(newWidth / 2);\n        } else {\n          const currentWidth = width + width2;\n          const diff = currentWidth - newWidth;\n          setWidth(width + diff / 2);\n          setWidth2(width2 + diff / 2);\n        }\n      }\n      const readyStateCurrent = readyState.current;\n      if (readyStateCurrent.viewer) {\n        funcRefs.current.updateScrollView();\n      }\n    }, 100, { leading: true }),\n  });\n  const syncState = useRef({\n    scrollTop1: 0,\n    scrollLeft1: 0,\n    scrollTop2: 0,\n    scrollLeft2: 0,\n    currentScrollContainer: null,\n    topOverflow1: 0,\n    topOverflow2: 0,\n    page1: 1,\n    page2: 1,\n  });\n  const rootContainerRef = useRef();\n  const resizeOberver = useRef(new ResizeObserver(funcRefs.current.resizeObserverFunc));\n  const removeHandlersRef = useRef();\n  const readyDefaultState = { 1: false, 2: false, viewer: false, eventFired: false };\n  const readyState = useRef(readyDefaultState);\n\n  const [\n    isMultiViewerMode,\n    isComparisonDisabled,\n    activeDocumentViewerKey,\n    documentContainerWidth,\n    documentContentContainerWidthStyle,\n    zoom,\n    zoom2,\n    activeToolbarGroup,\n    activeToolName,\n    customMultiViewerSyncHandler,\n    syncViewer,\n    multiViewerSyncScrollMode,\n    documentContainerLeftMargin,\n    isShowComparisonButtonEnabled,\n  ] = useSelector((state) => [\n    selectors.isMultiViewerMode(state),\n    selectors.isComparisonDisabled(state),\n    selectors.getActiveDocumentViewerKey(state),\n    selectors.getDocumentContainerWidth(state),\n    selectors.getDocumentContentContainerWidthStyle(state),\n    selectors.getZoom(state, 1),\n    selectors.getZoom(state, 2),\n    selectors.getCurrentToolbarGroup(state),\n    selectors.getActiveToolName(state),\n    selectors.getCustomMultiViewerSyncHandler(state),\n    selectors.getSyncViewer(state),\n    selectors.getMultiViewerSyncScrollMode(state),\n    selectors.getDocumentContainerLeftMargin(state),\n    selectors.getIsShowComparisonButtonEnabled(state)\n  ]);\n\n  useEffect(() => {\n    const setupMultiViewer = () => {\n      if (DISABLED_TOOL_GROUPS.includes(activeToolbarGroup)) {\n        dispatch(actions.setToolbarGroup('toolbarGroup-View', false));\n      }\n      for (const keyWord of DISABLED_TOOLS_KEYWORDS) {\n        if (activeToolName.match(keyWord)) {\n          core.setToolMode(window.Core.Tools.ToolNames.EDIT);\n        }\n      }\n      const isDoc1Loaded = !!core.getDocumentViewer(1).getDocument();\n      setDoc1Loaded(isDoc1Loaded);\n      addDocumentViewer(2);\n      const newDocViewer = core.getDocumentViewers()[1];\n      setupOpenURLHandler(newDocViewer, store);\n\n      syncDocumentViewers(1, 2);\n      const { addEventHandlers, removeEventHandlers } = eventHandler(store, 2, true);\n      removeHandlersRef.current = removeEventHandlers;\n      addEventHandlers();\n      const width = rootContainerRef.current.clientWidth;\n      setWidth(width / 2);\n      setWidth2(width / 2);\n      resizeOberver.current.observe(rootContainerRef.current);\n      !isComparisonDisabled && isShowComparisonButtonEnabled && addHeaderItems();\n      setInitialSetup(true);\n      onReady('viewer');\n      dispatch(actions.setIsMultiViewerReady(true));\n    };\n    const cleanUpMultiViewer = () => {\n      dispatch(actions.setIsMultiViewerReady(false));\n      stopSyncing();\n      setInitialSetup(false);\n      if (activeDocumentViewerKey === 2) {\n        setActiveDocumentViewerKey(1);\n      }\n      setDoc2Loaded(false);\n      removeHandlersRef.current();\n      removeDocumentViewer(2);\n      core.deleteAnnotations(core.getSemanticDiffAnnotations(1), { force: true }, 1);\n      resizeOberver.current.disconnect();\n      !isComparisonDisabled && resetHeaderItems();\n      readyState.current = readyDefaultState;\n      dispatch(actions.closeElement('comparePanel'));\n    };\n    const addHeaderItems = () => {\n      const headerItems = selectors.getDefaultHeaderItems(store.getState());\n      const zoomOverlay = headerItems.find((item) => item.dataElement === DataElements.ZOOM_OVERLAY_BUTTON);\n      const index = headerItems.indexOf(zoomOverlay);\n      if (index !== -1) {\n        oldHeaderItems.current = {\n          zoomOverlay,\n          index,\n        };\n        headerItems.splice(index, 1, {\n          type: 'customElement',\n          render: () => <ComparisonButton/>,\n          dataElement: 'comparisonToggleButton',\n          hiddenOnMobileDevices: true,\n        });\n      }\n      if (!headerItems.find((item) => item.dataElement === 'comparePanelToggleButton')) {\n        headerItems.splice(headerItems.length - 3, 0, {\n          dataElement: 'comparePanelToggleButton',\n          hiddenOnMobileDevices: true,\n          img: 'icon-header-compare',\n          type: 'toggleElementButton',\n          element: 'comparePanel',\n          title: 'component.comparePanel',\n          hidden: ['small-mobile'],\n        });\n      }\n      dispatch(actions.setHeaderItems('default', [...headerItems]));\n      dispatch(actions.disableElement('comparePanelToggleButton'));\n    };\n    const resetHeaderItems = () => {\n      const headerItems = selectors.getDefaultHeaderItems(store.getState());\n      const index = oldHeaderItems.current.index;\n      if (index && index !== -1) {\n        headerItems.splice(index, 1, oldHeaderItems.current.zoomOverlay);\n        oldHeaderItems.current = {\n          index: null,\n          zoomOverlay: null,\n        };\n      }\n      const indexOfButton = headerItems.indexOf(headerItems.find((item) => item?.dataElement === 'comparePanelToggleButton'));\n      indexOfButton !== -1 && headerItems.splice(indexOfButton, 1);\n      dispatch(actions.setHeaderItems('default', [...headerItems]));\n    };\n    const removeListeners = () => {\n      core.removeEventListener('documentLoaded', onLoaded1, 1);\n      core.removeEventListener('documentUnloaded', unLoaded1, 1);\n      const hasSecondViewer = !!core.getDocumentViewer(2);\n      if (hasSecondViewer) {\n        core.removeEventListener('documentLoaded', onLoaded2, 2);\n        core.removeEventListener('documentUnloaded', unLoaded2, 2);\n      }\n    };\n    const addEventListeners = () => {\n      core.addEventListener('documentLoaded', onLoaded1, undefined, 1);\n      core.addEventListener('documentUnloaded', unLoaded1, undefined, 1);\n      core.addEventListener('documentUnloaded', unLoaded2, undefined, 2);\n      core.addEventListener('documentLoaded', onLoaded2, undefined, 2);\n    };\n    const onLoaded1 = () => {\n      setDoc1Loaded(true);\n    };\n    const onLoaded2 = () => {\n      setDoc2Loaded(true);\n    };\n    const unLoaded1 = () => {\n      stopSyncing();\n      setDoc1Loaded(false);\n      multiViewerHelper.matchedPages = null;\n      core.deleteAnnotations(core.getSemanticDiffAnnotations(2), { force: true }, 2);\n    };\n    const unLoaded2 = () => {\n      stopSyncing();\n      setDoc2Loaded(false);\n      multiViewerHelper.matchedPages = null;\n      core.deleteAnnotations(core.getSemanticDiffAnnotations(1), { force: true }, 1);\n    };\n    if (!isMultiViewerMode) {\n      if (initialSetup) {\n        cleanUpMultiViewer();\n        return removeListeners;\n      }\n      return;\n    }\n    if (!initialSetup) {\n      setupMultiViewer();\n    }\n\n    if (isMultiViewerMode && isShowComparisonButtonEnabled && initialSetup) {\n      addHeaderItems();\n    } else if (initialSetup) {\n      resetHeaderItems();\n    }\n\n    addEventListeners();\n    return removeListeners;\n  }, [isMultiViewerMode, isShowComparisonButtonEnabled]);\n\n  useEffect(() => {\n    if (isMultiViewerMode && initialSetup) {\n      funcRefs.current.updateScrollView();\n    }\n  }, [width, width2]);\n\n  useEffect(() => {\n    if (initialSetup && isMultiViewerMode) {\n      onReady('viewer');\n    }\n  }, [initialSetup]);\n\n  const setActiveDocumentViewerKey = (documentViewerKey) => {\n    dispatch(actions.setActiveDocumentViewerKey(documentViewerKey));\n  };\n  const updateActiveDocumentViewerKey = (documentViewerKey) => {\n    const docLoaded = documentViewerKey === 1 ? doc1Loaded : doc2Loaded;\n    docLoaded && activeDocumentViewerKey !== documentViewerKey && setActiveDocumentViewerKey(documentViewerKey);\n  };\n  const setFirstViewerActive = () => updateActiveDocumentViewerKey(1);\n  const setSecondViewerActive = () => updateActiveDocumentViewerKey(2);\n\n  const shouldSkipSyncEvent = () => {\n    const state = store.getState();\n    return core.getDocumentViewers().length < 2 || !core.getDocument(1) || !core.getDocument(2) ||\n    !selectors.isMultiViewerMode(state) || !selectors.getSyncViewer(state);\n  };\n\n  const createOnScrollHandler = (documentViewerKey) => (e) => {\n    if (shouldSkipSyncEvent()) {\n      return;\n    }\n    const { scrollTop, scrollLeft } = e.target;\n    if (getIsScrolledByClickingChangeItem()) {\n      syncState.current[`scrollTop${documentViewerKey}`] = scrollTop;\n      syncState.current[`scrollLeft${documentViewerKey}`] = scrollLeft;\n      if (documentViewerKey === 2) {\n        setIsScrolledByClickingChangeItem(false);\n      }\n      return;\n    }\n    const otherViewerNumber = documentViewerKey === 1 ? 2 : 1;\n    if (syncState.current.currentScrollContainer !== otherViewerNumber) {\n      syncState.current.currentScrollContainer = documentViewerKey;\n      const diffTop = scrollTop - syncState.current[`scrollTop${documentViewerKey}`];\n      const diffLeft = scrollLeft - syncState.current[`scrollLeft${documentViewerKey}`];\n      const otherContainer = otherViewerNumber === 1 ? container.current : container2.current;\n      const topOverflow = otherContainer.scrollTop + diffTop;\n      const bottomOverflow = otherContainer.scrollHeight - otherContainer.scrollTop - diffTop - otherContainer.clientHeight;\n      if (multiViewerSyncScrollMode === SYNC_MODES.SKIP_UNMATCHED && multiViewerHelper.matchedPages) {\n        const { matchedPages } = multiViewerHelper;\n        const documentViewer = core.getDocumentViewer(documentViewerKey);\n        const otherDocumentViewer = core.getDocumentViewer(otherViewerNumber);\n        const visiblePages = documentViewer.getDisplayModeManager().getDisplayMode().getVisiblePages();\n        const mainPage = visiblePages[0];\n        if (matchedPages[documentViewerKey][mainPage]) {\n          const { otherSidePages, thisSidePages } = matchedPages[documentViewerKey][mainPage];\n          const mainPageBoundingRect = documentViewer.getViewerElement().querySelector(`#pageContainer${thisSidePages[0]}`)?.getBoundingClientRect();\n          const otherSidePageBoundingRect = otherDocumentViewer.getViewerElement()\n            .querySelector(`#pageContainer${otherSidePages[0]}`)?.getBoundingClientRect();\n          const scrollRatio = otherSidePages.length / thisSidePages.length;\n          const heightRatio = otherSidePageBoundingRect && mainPageBoundingRect ? otherSidePageBoundingRect.height / mainPageBoundingRect.height : 1;\n          const currentDiffTop = otherSidePageBoundingRect && mainPageBoundingRect ? otherSidePageBoundingRect.top - mainPageBoundingRect.top : diffTop;\n          const adjustedDiffTop = (scrollRatio !== 1 ? diffTop : currentDiffTop) * scrollRatio * heightRatio;\n          otherContainer.scrollTop += adjustedDiffTop;\n        } else {\n          const visiblePageOtherSide = otherDocumentViewer.getDisplayModeManager().getDisplayMode().getVisiblePages();\n          const otherMainPage = visiblePageOtherSide[0];\n          const secondaryPage = visiblePageOtherSide[1];\n          if (!matchedPages[otherViewerNumber][otherMainPage] || (secondaryPage && !matchedPages[otherViewerNumber][secondaryPage])) {\n            otherContainer.scrollTop += diffTop;\n          }\n        }\n      } else {\n        if (topOverflow < 0) {\n          syncState.current[`topOverflow${otherViewerNumber}`] += topOverflow;\n          otherContainer.scrollTop += diffTop;\n        } else if (bottomOverflow < 0) {\n          syncState.current[`topOverflow${otherViewerNumber}`] -= bottomOverflow;\n          otherContainer.scrollTop += diffTop;\n        } else {\n          const isTopOverflowPositive = syncState.current[`topOverflow${otherViewerNumber}`] > 0;\n          const isDiffTopPositive = diffTop > 0;\n          const isZero = diffTop === 0 || syncState.current[`topOverflow${otherViewerNumber}`] === 0;\n          if (isDiffTopPositive !== isTopOverflowPositive && !isZero) {\n            syncState.current[`topOverflow${otherViewerNumber}`] += diffTop;\n            if (syncState.current[`topOverflow${otherViewerNumber}`] > 0 !== isTopOverflowPositive) {\n              otherContainer.scrollTop += syncState.current[`topOverflow${otherViewerNumber}`];\n              syncState.current[`topOverflow${otherViewerNumber}`] = 0;\n            }\n          } else {\n            otherContainer.scrollTop += diffTop - syncState.current[`topOverflow${documentViewerKey}`];\n            syncState.current[`topOverflow${documentViewerKey}`] = 0;\n            otherContainer.scrollLeft += diffLeft;\n          }\n        }\n      }\n    } else {\n      syncState.current.currentScrollContainer = null;\n    }\n    syncState.current[`scrollTop${documentViewerKey}`] = scrollTop;\n    syncState.current[`scrollLeft${documentViewerKey}`] = scrollLeft;\n  };\n  const onZoomHandler = (zoomLevel) => {\n    if (shouldSkipSyncEvent()) {\n      return;\n    }\n    for (const documentViewerKey of documentViewerKeys) {\n      if (core.getZoom(documentViewerKey) !== zoomLevel) {\n        zoomTo(zoomLevel, isMultiViewerMode, documentViewerKey);\n      }\n      const containerRef = (documentViewerKey === 1 ? container : container2).current;\n      syncState.current[`scrollTop${documentViewerKey}`] = containerRef.scrollTop;\n      syncState.current[`scrollLeft${documentViewerKey}`] = containerRef.scrollLeft;\n    }\n  };\n  const createOnPageUpdateHandler = (documentViewerKey) => (nextPage) => {\n    if (shouldSkipSyncEvent()) {\n      return;\n    }\n    const otherViewerNumber = documentViewerKey === 1 ? 2 : 1;\n    if (syncState.current.currentScrollContainer !== otherViewerNumber) {\n      syncState.current.currentScrollContainer = documentViewerKey;\n      const diff = nextPage - syncState.current[`page${documentViewerKey}`];\n      const newPage2 = core.getCurrentPage(otherViewerNumber) + diff;\n      core.setCurrentPage(newPage2, otherViewerNumber);\n    } else {\n      syncState.current.currentScrollContainer = null;\n    }\n    syncState.current[`page${documentViewerKey}`] = nextPage;\n  };\n  const startSyncing = (primaryDocumentViewerKey) => {\n    setIsSyncing(true);\n    const zoomLevel = core.getZoom(primaryDocumentViewerKey);\n    if (primaryDocumentViewerKey === 1) {\n      zoomTo(zoomLevel, isMultiViewerMode, 2);\n    } else if (primaryDocumentViewerKey === 2) {\n      zoomTo(zoomLevel, isMultiViewerMode, 1);\n    }\n    const isScrollable = core.getDocumentViewer().getDisplayModeManager().getDisplayMode().isContinuous();\n    for (const documentViewerKey of documentViewerKeys) {\n      core.addEventListener('zoomUpdated', onZoomHandler, undefined, documentViewerKey);\n      removeHandlerFunctions.current.push(() => core.removeEventListener('zoomUpdated', onZoomHandler, documentViewerKey));\n      if (isScrollable) {\n        const onScrollHandler = createOnScrollHandler(documentViewerKey);\n        const containerRef = documentViewerKey === 1 ? container.current : container2.current;\n        containerRef.addEventListener('scroll', onScrollHandler);\n        removeHandlerFunctions.current.push(() => containerRef.removeEventListener('scroll', onScrollHandler));\n      } else {\n        const onPageUpdatedHandler = createOnPageUpdateHandler(documentViewerKey);\n        core.addEventListener('pageNumberUpdated', onPageUpdatedHandler, undefined, documentViewerKey);\n        removeHandlerFunctions.current.push(() => core.removeEventListener('pageNumberUpdated', onPageUpdatedHandler, documentViewerKey));\n      }\n    }\n\n    if (multiViewerSyncScrollMode === SYNC_MODES.SKIP_UNMATCHED) {\n      container.current.scrollTop = 0;\n      container2.current.scrollTop = 0;\n    }\n\n    syncState.current = {\n      scrollTop1: container.current.scrollTop,\n      scrollLeft1: container.current.scrollLeft,\n      scrollTop2: container2.current.scrollTop,\n      scrollLeft2: container2.current.scrollLeft,\n      topOverflow1: 0,\n      topOverflow2: 0,\n      page1: core.getCurrentPage(1),\n      page2: core.getCurrentPage(2),\n    };\n\n    if (customMultiViewerSyncHandler) {\n      customMultiViewerSyncHandler(primaryDocumentViewerKey, removeHandlerFunctions.current);\n    }\n  };\n  const stopSyncing = () => {\n    setIsSyncing(false);\n    syncState.current.topOverflow1 = 0;\n    syncState.current.topOverflow2 = 0;\n    removeHandlerFunctions.current.forEach((removeHandler) => removeHandler());\n    removeHandlerFunctions.current = [];\n  };\n\n  useEffect(() => {\n    if (isMultiViewerMode) {\n      if (syncViewer && !isSyncing) {\n        startSyncing(syncViewer);\n      } else if (!syncViewer && isSyncing) {\n        stopSyncing();\n      }\n    }\n  }, [syncViewer]);\n\n  const onReady = (key) => {\n    readyState.current[key] = true;\n    if (readyState.current[1] && readyState.current[2] && readyState.current.viewer && !readyState.current.eventFired) {\n      readyState.current.eventFired = true;\n      // Fix for event not firing on some devices\n      setTimeout(() => {\n        fireEvent(Events.MULTI_VIEWER_READY);\n      }, 300);\n    }\n  };\n\n  return (\n    <div className={classNames('MultiViewer', { hidden: !isMultiViewerMode })} style={{\n      width: documentContentContainerWidthStyle,\n      marginLeft: `${documentContainerLeftMargin}px`,\n    }}\n    ref={rootContainerRef}\n    >\n      {isMultiViewerMode && initialSetup && <>\n        <div className={classNames('CompareContainer', { active: activeDocumentViewerKey === 1 })} id=\"container1\"\n          style={{ padding: !doc1Loaded ? '16px' : '0', width }}\n          onClick={setFirstViewerActive}\n          onScroll={() => !isSyncing && setFirstViewerActive()}\n        >\n          {!doc1Loaded && <DropArea documentViewerKey={1} />}\n          <DocumentHeader documentViewerKey={1} docLoaded={doc1Loaded} isSyncing={isSyncing}/>\n          <DocumentContainer container={container} activeDocumentViewerKey={activeDocumentViewerKey} documentViewerKey={1} onReady={onReady} docLoaded={doc1Loaded}/>\n          <div className={'custom-container-1'} style={{ width: '100%' }}/>\n          <div style={{ width }} className={classNames('borderLineBottom', { active: activeDocumentViewerKey === 1 })} />\n        </div>\n        <ResizeBar\n          dataElement=\"compareResizeBar\"\n          minWidth={MIN_WIDTH}\n          onResize={(_width) => {\n            let maxAllowedWidth = documentContainerWidth;\n            maxAllowedWidth -= MIN_WIDTH;\n            const minValue = Math.min(_width, maxAllowedWidth);\n            setWidth(minValue);\n            setWidth2(documentContainerWidth - minValue);\n          }}\n        />\n        <div className={classNames('CompareContainer', { active: activeDocumentViewerKey === 2 })} id=\"container2\"\n          style={{ padding: !doc2Loaded ? '16px' : '0', width: width2 }}\n          onClick={setSecondViewerActive}\n          onScroll={() => !isSyncing && setSecondViewerActive()}\n        >\n          {!doc2Loaded && <DropArea documentViewerKey={2} />}\n          <DocumentHeader documentViewerKey={2} docLoaded={doc2Loaded} isSyncing={isSyncing} />\n          <DocumentContainer container={container2} activeDocumentViewerKey={activeDocumentViewerKey} documentViewerKey={2} onReady={onReady} docLoaded={doc2Loaded}/>\n          <div className={'custom-container-2'} style={{ width: '100%' }}/>\n          <div style={{ width: width2 }} className={classNames('borderLineBottom', { active: activeDocumentViewerKey === 2 })} />\n        </div>\n        <CompareZoomOverlay zoom1={zoom} zoom2={zoom2} />\n      </>}\n    </div>\n  );\n};\n\nexport default MultiViewer;\n","import MultiViewer from 'src/components/MultiViewer/MultiViewer';\n\nexport default MultiViewer;","import React from 'react';\n\nconst TextWatermarkPanel = () => {\n  return (\n    <>\n    </>\n  );\n};\n\nexport default TextWatermarkPanel;","import React from 'react';\nimport Icon from 'components/Icon';\nimport { useTranslation } from 'react-i18next';\n\nconst WatermarkList = (props) => {\n  const {\n    watermarks = [],\n    // deleteWatermark,\n  } = props;\n\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <span className=\"watermark-panel-sub-header\">{t('watermarkPanel.watermarks')}</span>\n      { watermarks.map((watermark) => (\n        <div className=\"watermark-file\" key={watermark.name}>\n          { watermark.type === 'image' && <Icon glyph=\"icon-image-green\" />}\n          { watermark.name }\n          <Icon glyph=\"ic-close\" />\n          {}\n        </div>\n      ))}\n    </>\n  );\n};\n\nexport default WatermarkList;","import React, { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport core from 'core';\n\nimport WatermarkList from './WatermarkList';\n\nconst ImageWatermarkPanel = () => {\n  const { t } = useTranslation();\n  const fileInput = useRef(null);\n\n  const documentViewer = core.getDocumentViewer(1);\n  const annotationManager = documentViewer?.getAnnotationManager();\n\n  const onAddButtonClick = () => {\n    fileInput.current.click();\n  };\n\n  const loadFile = (e) => {\n    const pageCount = documentViewer?.getPageCount();\n    const document = documentViewer?.getDocument();\n\n    e.preventDefault();\n    const { files } = e.target;\n    if (files.length) {\n      Array.from(files).forEach((file) => {\n        const reader = new FileReader();\n        reader.readAsDataURL(file);\n        reader.onload = async () => {\n          for (let page = 1; page <= pageCount; page++) {\n            const { width, height } = document?.getPageInfo(page);\n            const imageWatermark = new window.Core.Annotations.StampAnnotation({\n              PageNumber: page,\n              X: width / 2,\n              Y: height / 2,\n              Width: 25,\n              Height: 25,\n            });\n\n            await imageWatermark.setImageData(reader.result);\n            annotationManager?.addAnnotation(imageWatermark);\n            annotationManager?.redrawAnnotation(imageWatermark);\n          }\n        };\n      });\n    }\n  };\n\n  return (\n    <>\n      <WatermarkList />\n      <button className=\"add-watermark-button\" onClick={onAddButtonClick}>\n        {t('watermarkPanel.browse')}\n      </button>\n      <input\n        ref={fileInput}\n        className=\"hidden\"\n        type=\"file\"\n        onChange={loadFile}\n        accept=\"image/*\"\n      />\n    </>\n  );\n};\n\nexport default ImageWatermarkPanel;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport DataElementWrapper from '../DataElementWrapper';\nimport DataElements from 'constants/dataElement';\n\nimport './WatermarkPanel.scss';\nimport TextWatermarkPanel from './TextWatermarkPanel';\nimport ImageWatermarkPanel from './ImageWatermarkPanel';\n\nconst tabs = [\n  {\n    type: 'text',\n    text: 'textWatermark',\n    dataElement: DataElements.WATERMARK_PANEL_TEXT_TAB,\n  },\n  {\n    type: 'image',\n    text: 'uploadImage',\n    dataElement: DataElements.WATERMARK_PANEL_IMAGE_TAB,\n  }\n];\n\nconst WatermarkPanelHeader = (props) => {\n  const {\n    activeWatermarkType,\n    setActiveWatermarkType\n  } = props;\n\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <div className=\"watermark-panel-tabs\">\n        { tabs.map((tab) => (\n          <DataElementWrapper\n            dataElement={tab.dataElement} key={tab.type}\n            className={`watermark-panel-tab ${activeWatermarkType === tab.type ? 'active' : ''}`}\n            onClick={() => {\n              setActiveWatermarkType(tab.type);\n            }}\n          >\n            {t(`watermarkPanel.${tab.text}`)}\n          </DataElementWrapper>\n        ))}\n      </div>\n    </>\n  );\n};\n\nconst WatermarkPanel = () => {\n  const [activeWatermarkType, setActiveWatermarkType] = useState(tabs[0].type);\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <span className=\"watermark-panel-header\">{t('watermarkPanel.watermarkOptions')}</span>\n      <WatermarkPanelHeader\n        activeWatermarkType={activeWatermarkType}\n        setActiveWatermarkType={setActiveWatermarkType}\n      />\n      { activeWatermarkType === 'text' && <TextWatermarkPanel/>}\n      { activeWatermarkType === 'image' && <ImageWatermarkPanel/>}\n    </>\n  );\n};\n\nexport default WatermarkPanel;","import React, { useState, useEffect } from 'react';\nimport WatermarkPanel from './WatermarkPanel';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport DataElementWrapper from '../DataElementWrapper';\nimport Icon from 'components/Icon';\n\nconst WatermarkPanelContainer = () => {\n  const [isOpen, isDisabled, watermarkPanelWidth, isInDesktopOnlyMode] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, 'watermarkPanel'),\n      selectors.isElementDisabled(state, 'watermarkPanel'),\n      selectors.getWatermarkPanelWidth(state),\n      selectors.isInDesktopOnlyMode(state),\n    ],\n    shallowEqual,\n  );\n\n  const isMobile = isMobileSize();\n\n  const dispatch = useDispatch();\n  const closeWatermarkPanel = () => {\n    dispatch(actions.closeElement('watermarkPanel'));\n  };\n\n  const renderMobileCloseButton = () => {\n    return (\n      <div className=\"close-container\">\n        <div className=\"close-icon-container\" onClick={closeWatermarkPanel}>\n          <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n        </div>\n      </div>\n    );\n  };\n\n  const style =\n    !isInDesktopOnlyMode && isMobile ? {} : { width: `${watermarkPanelWidth}px`, minWidth: `${watermarkPanelWidth}px` };\n\n  const [renderNull, setRenderNull] = useState(false);\n\n  useEffect(() => {\n    const timeout = setTimeout(() => {\n      setRenderNull(!isOpen);\n    }, 500);\n    return () => {\n      clearTimeout(timeout);\n    };\n  }, [isOpen]);\n\n  if (isDisabled || (!isOpen && renderNull)) {\n    return null;\n  }\n\n  return (\n    <DataElementWrapper dataElement=\"watermarkPanel\" className=\"Panel WatermarkPanel\" style={style}>\n      {!isInDesktopOnlyMode && isMobile && renderMobileCloseButton()}\n      <WatermarkPanel />\n    </DataElementWrapper>\n  );\n};\n\nexport default WatermarkPanelContainer;","import WatermarkPanelContainer from './WatermarkPanelContainer';\n\nexport default WatermarkPanelContainer;","import { useEffect, useRef, useState } from 'react';\n\nconst useResizeObserver = () => {\n  const [dimensions, setDimensions] = useState({ width: null, height: null });\n  const elementRef = useRef(null);\n\n  useEffect(() => {\n    const node = elementRef.current;\n\n    if (node) {\n      const observer = new ResizeObserver((entries) => {\n        for (const entry of entries) {\n          const observedWidth = entry.borderBoxSize[0].inlineSize;\n          const observedHeight = entry.borderBoxSize[0].blockSize;\n          setDimensions({\n            width: observedWidth,\n            height: observedHeight\n          });\n        }\n      });\n\n      observer.observe(node);\n\n      // Cleanup: stop observing when the component unmounts\n      return () => {\n        observer.unobserve(node);\n      };\n    }\n  }, [elementRef.current]);\n\n  return [elementRef, dimensions];\n};\n\nexport default useResizeObserver;\n","import useResizeObserver from './useResizeObserver';\n\nexport default useResizeObserver;","import React, { useState, useEffect } from 'react';\nimport './MobilePanelWrapper.scss';\nimport { Swipeable } from 'react-swipeable';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { useSelector, useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport classNames from 'classnames';\nimport { PANEL_SIZES, panelNames } from 'constants/panel';\nimport useResizeObserver from 'hooks/useResizeObserver';\n\nconst propTypes = {\n  children: PropTypes.node,\n};\n\nconst MOBILE_PANEL_WRAPPER = 'MobilePanelWrapper';\n\nconst minimumSizeForPanel = {\n  'notesPanel': PANEL_SIZES.HALF_SIZE,\n  'stylePanel': PANEL_SIZES.HALF_SIZE,\n  'textEditingPanel': PANEL_SIZES.HALF_SIZE,\n  'tabPanel': PANEL_SIZES.HALF_SIZE,\n};\n\nconst MobilePanelWrapper = ({ children }) => {\n  const isMobile = isMobileSize();\n  const dispatch = useDispatch();\n  const contentElement = children?.props?.dataElement;\n\n  const [\n    isOpen,\n    isContentOpen,\n    documentContainerWidthStyle,\n    mobilePanelSize,\n    isSearchAndReplaceDisabled\n  ] = useSelector((state) => [\n    selectors.isElementOpen(state, MOBILE_PANEL_WRAPPER),\n    selectors.isElementOpen(state, contentElement),\n    selectors.getDocumentContentContainerWidthStyle(state),\n    selectors.getMobilePanelSize(state),\n    selectors.isElementDisabled(state, 'searchAndReplace'),\n  ]);\n\n  const [style, setStyle] = useState({});\n  const [wrapperBodyStyle, setWrapperBodyStyle] = useState({});\n\n  const setMobilePanelSize = (size) => {\n    dispatch(actions.setMobilePanelSize(size));\n  };\n\n  const [wrapperRef, dimensions] = useResizeObserver();\n\n  useEffect(() => {\n    const panelsStartingAtHalfSize = [\n      panelNames.RUBBER_STAMP,\n      panelNames.STYLE,\n      panelNames.NOTES,\n      panelNames.SEARCH,\n      panelNames.TABS,\n      panelNames.TEXT_EDITING,\n      panelNames.REDACTION,\n    ];\n    if (isOpen) {\n      if (panelsStartingAtHalfSize.includes(contentElement)) {\n        setMobilePanelSize(PANEL_SIZES.HALF_SIZE);\n      } else {\n        setMobilePanelSize(PANEL_SIZES.SMALL_SIZE);\n      }\n    }\n  }, [isOpen]);\n\n  useEffect(() => {\n    if (!isContentOpen) {\n      dispatch(actions.closeElement(MOBILE_PANEL_WRAPPER));\n    }\n  }, [isContentOpen]);\n\n  useEffect(() => {\n    setStyle({ width: documentContainerWidthStyle });\n  }, [documentContainerWidthStyle]);\n\n  useEffect(() => {\n    if (dimensions.height !== null) {\n      // 16px is the padding of the mobile panel body\n      setWrapperBodyStyle({\n        display: 'flex',\n        flexDirection: 'column',\n        height: dimensions.height - 16,\n      });\n    }\n  }, [dimensions]);\n\n  const closePanel = () => {\n    dispatch(actions.closeElement(MOBILE_PANEL_WRAPPER));\n    dispatch(actions.closeElement(contentElement));\n  };\n\n  if (!isMobile || !isOpen) {\n    return null;\n  }\n\n  const isAreaScrollable = (e) => {\n    const targetElement = e.event.target;\n    const className = targetElement.className;\n    return className.includes('swipe-indicator-wrapper');\n  };\n\n  const onSwipedUp = (e) => {\n    if (isAreaScrollable(e)) {\n      switch (mobilePanelSize) {\n        case PANEL_SIZES.SMALL_SIZE:\n          setMobilePanelSize(PANEL_SIZES.HALF_SIZE);\n          break;\n        case PANEL_SIZES.HALF_SIZE:\n          setMobilePanelSize(PANEL_SIZES.FULL_SIZE);\n          break;\n      }\n    }\n  };\n\n  const onSwipedDown = (e) => {\n    if (isAreaScrollable(e)) {\n      let currentMobilePanelSize = mobilePanelSize;\n\n      if (currentMobilePanelSize === minimumSizeForPanel[contentElement]) {\n        currentMobilePanelSize = PANEL_SIZES.SMALL_SIZE;\n      }\n\n      const isSearchPanelActiveWithSearchAndReplace = !isSearchAndReplaceDisabled && contentElement === panelNames.SEARCH;\n\n      switch (currentMobilePanelSize) {\n        case PANEL_SIZES.FULL_SIZE:\n          setMobilePanelSize(PANEL_SIZES.HALF_SIZE);\n          break;\n        case PANEL_SIZES.HALF_SIZE:\n          if (isSearchPanelActiveWithSearchAndReplace) {\n            closePanel();\n          } else {\n            setMobilePanelSize(PANEL_SIZES.SMALL_SIZE);\n          }\n          break;\n        case PANEL_SIZES.SMALL_SIZE:\n          closePanel();\n          break;\n      }\n    }\n  };\n\n  const onContainerClick = (e) => {\n    e.stopPropagation();\n  };\n\n  return (\n    <Swipeable\n      onSwipedUp={onSwipedUp}\n      onSwipedDown={onSwipedDown}\n      trackMouse\n    >\n      <div data-element={MOBILE_PANEL_WRAPPER} className={classNames(MOBILE_PANEL_WRAPPER, {\n        [mobilePanelSize]: true,\n      })}\n      ref={wrapperRef}\n      style={style}\n      role='none'\n      onClick={onContainerClick}\n      onKeyDown={onContainerClick}>\n        <div className=\"swipe-indicator-wrapper\">\n          <div className=\"swipe-indicator\" />\n        </div>\n        <div className=\"mobile-panel-body\" style={wrapperBodyStyle}>\n          {React.Children.map(children, (child) => React.cloneElement(child, { panelSize: mobilePanelSize }))}\n        </div>\n      </div>\n    </Swipeable>\n  );\n};\n\nMobilePanelWrapper.propTypes = propTypes;\n\nexport default MobilePanelWrapper;","import MobilePanelWrapper from './MobilePanelWrapper';\n\nexport default MobilePanelWrapper;","import React from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport classNames from 'classnames';\nimport selectors from 'selectors';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport Icon from 'components/Icon';\nimport actions from 'actions';\nimport './Panel.scss';\nimport { panelMinWidth, panelNames, RESIZE_BAR_WIDTH } from 'constants/panel';\nimport ResizeBar from 'components/ResizeBar';\nimport { isIE } from 'helpers/device';\nimport MobilePanelWrapper from '../ModularComponents/MobilePanelWrapper';\nimport PropTypes from 'prop-types';\n\nconst DesktopPanel = ({ children }) => {\n  const { dataElement, isCustom, location } = children.props;\n  const isMobile = isMobileSize();\n\n  const [\n    currentWidth,\n    isInDesktopOnlyMode,\n    isOpen,\n    isDisabled,\n    currentToolbarGroup,\n    isHeaderOpen,\n    isToolsHeaderOpen,\n    isLogoBarEnabled,\n    featureFlags,\n    activeTopHeaders,\n    isMultiTabActive,\n  ] = useSelector(\n    (state) => [\n      selectors.getPanelWidth(state, dataElement),\n      selectors.isInDesktopOnlyMode(state),\n      selectors.isElementOpen(state, dataElement),\n      selectors.isElementDisabled(state, dataElement),\n      selectors.getCurrentToolbarGroup(state),\n      selectors.isElementOpen(state, 'header'),\n      selectors.isElementOpen(state, 'toolsHeader'),\n      !selectors.isElementDisabled(state, 'logoBar'),\n      selectors.getFeatureFlags(state),\n      selectors.getActiveTopHeaders(state),\n      selectors.getIsMultiTab(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n\n  let style = {};\n  if (currentWidth && (isInDesktopOnlyMode || !isMobile)) {\n    const widthStyle = isCustom ? currentWidth - RESIZE_BAR_WIDTH : currentWidth;\n    style = { width: `${widthStyle}px`, minWidth: `${widthStyle}px` };\n  } else {\n    style = { minWidth: `${panelMinWidth}px` };\n  }\n\n  const isVisible = !(!isOpen || isDisabled);\n  const isLeftSide = !location ? true : location === 'left';\n  const isRightSide = location === 'right';\n\n  // TODO: For whoever is refactoring the LeftPanel to make it generic, review if this is the best approach\n  // Once we move to the new UI we can remove the legacy stuff\n  const legacyToolsHeaderOpen = isToolsHeaderOpen && currentToolbarGroup !== 'toolbarGroup-View';\n  const legacyAllHeadersHidden = !isHeaderOpen && !legacyToolsHeaderOpen;\n\n  const customizableUI = featureFlags?.customizableUI;\n\n  const onResize = (_width) => {\n    let maxAllowedWidth = window.innerWidth;\n    // there will be a scroll bar in IE, so we don't allow 100% page width\n    if (isIE) {\n      maxAllowedWidth -= 30;\n    }\n    dispatch(actions.setPanelWidth(dataElement, Math.min(_width, maxAllowedWidth)));\n  };\n\n  return (\n    <div\n      className={classNames({\n        'ModularPanel': true,\n        'closed': !isVisible,\n        'left': isLeftSide,\n        'right': isRightSide,\n        'tools-header-open': customizableUI ? activeTopHeaders.length === 2 : legacyToolsHeaderOpen,\n        'tools-header-and-header-hidden': customizableUI ? activeTopHeaders.length === 0 : legacyAllHeadersHidden,\n        'logo-bar-enabled': isLogoBarEnabled,\n        'modular-ui-panel': customizableUI,\n        'multi-tab-active': isMultiTabActive,\n      })}\n      data-element={dataElement}\n    >\n      {isCustom && location === 'right' && !isInDesktopOnlyMode && !isMobile &&\n        <ResizeBar minWidth={panelMinWidth} dataElement={`${dataElement}ResizeBar`} onResize={onResize}\n          leftDirection={true} />}\n      <div className={`ModularPanel-container ${dataElement}`} style={style}>\n        {!isInDesktopOnlyMode && isMobile && (\n          <div className=\"close-container\">\n            <div\n              className=\"close-icon-container\"\n              onClick={() => {\n                dispatch(actions.closeElements([dataElement]));\n              }}\n            >\n              <Icon glyph=\"ic_close_black_24px\" className=\"close-icon\" />\n            </div>\n          </div>\n        )}\n        {children}\n      </div>\n      {isCustom && location === 'left' && !isInDesktopOnlyMode && !isMobile &&\n        <ResizeBar minWidth={panelMinWidth} dataElement={`${dataElement}ResizeBar`} onResize={onResize} />}\n    </div>\n  );\n};\n\nDesktopPanel.propTypes = {\n  children: PropTypes.shape({\n    props: PropTypes.shape({\n      dataElement: PropTypes.string.isRequired,\n      isCustom: PropTypes.bool,\n      location: PropTypes.string,\n    }),\n  }),\n};\n\nconst Panel = (props) => {\n  const { isCustom, dataElement, location } = props;\n  const isMobile = isMobileSize();\n\n  const [isOpen] = useSelector((state) => [selectors.isElementOpen(state, dataElement)]);\n  const dispatch = useDispatch();\n\n  const children = React.cloneElement(props.children, {\n    dataElement: dataElement,\n    isCustom: isCustom,\n    location: location,\n  });\n\n  const panelsWithMobileVersion =\n    [\n      panelNames.SIGNATURE_LIST,\n      panelNames.RUBBER_STAMP,\n      panelNames.STYLE,\n      panelNames.NOTES,\n      panelNames.SEARCH,\n      panelNames.TEXT_EDITING,\n      panelNames.TABS,\n      panelNames.REDACTION,\n    ];\n\n  if (isOpen) {\n    if (isMobile && panelsWithMobileVersion.includes(dataElement)) {\n      dispatch(actions.openElement('MobilePanelWrapper'));\n      return (\n        <MobilePanelWrapper>\n          {props.children}\n        </MobilePanelWrapper>\n      );\n    }\n    return (\n      <DesktopPanel>\n        {children}\n      </DesktopPanel>\n    );\n  }\n  return null;\n};\n\nPanel.propTypes = {\n  children: PropTypes.node,\n  isCustom: PropTypes.bool,\n  dataElement: PropTypes.string,\n  location: PropTypes.string,\n};\n\nexport default Panel;\n","import Panel from './Panel';\n\nexport default Panel;","import React from 'react';\nimport '../../Button/Button.scss';\nimport './CustomButton.scss';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport { PLACEMENT } from 'constants/customizationVariables';\n\nconst CustomButton = (props) => {\n  const { title, dataElement, label, img, onClick, disabled, className, preset, headerPlacement, ariaLabel } = props;\n  let forceTooltipPosition;\n  if ([PLACEMENT.LEFT, PLACEMENT.RIGHT].includes(headerPlacement)) {\n    forceTooltipPosition = headerPlacement === PLACEMENT.LEFT ? PLACEMENT.RIGHT : PLACEMENT.LEFT;\n  } else if ([PLACEMENT.TOP, PLACEMENT.BOTTOM].includes(headerPlacement)) {\n    forceTooltipPosition = headerPlacement === PLACEMENT.TOP ? PLACEMENT.BOTTOM : PLACEMENT.TOP;\n  }\n  return (\n    <Button\n      className={classNames({\n        'CustomButton': true,\n        'Button': true,\n        [className]: className,\n        'confirm-button': preset === 'confirm',\n        'cancel-button': preset === 'cancel'\n      })}\n      img={img}\n      label={label}\n      title={title}\n      dataElement={dataElement}\n      onClick={onClick}\n      disabled={disabled}\n      forceTooltipPosition={forceTooltipPosition}\n      ariaLabel={ariaLabel}\n    ></Button>\n  );\n};\n\nCustomButton.propTypes = {\n  dataElement: PropTypes.string,\n  title: PropTypes.string,\n  label: PropTypes.string,\n  img: PropTypes.string,\n  onClick: PropTypes.func,\n  disabled: PropTypes.bool,\n};\n\nexport default CustomButton;\n","import CustomButton from './CustomButton';\n\nexport default CustomButton;","import React, { useEffect } from 'react';\nimport '../../Button/Button.scss';\nimport './StatefulButton.scss';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\n\nconst StatefulButton = (props) => {\n  const { dataElement, disabled, mount, unmount, states } = props;\n  const [, updateState] = React.useState();\n  const forceUpdate = React.useCallback(() => updateState({}), []);\n\n  const [activeState, setActiveState] = React.useState(props.initialState);\n\n  useEffect(() => {\n    if (mount) {\n      mount(update);\n    }\n    return function() {\n      if (unmount) {\n        unmount();\n      }\n    };\n  });\n\n  const update = (newState) => {\n    if (newState) {\n      setActiveState(newState);\n    } else {\n      forceUpdate();\n    }\n  };\n\n  const onClick = () => {\n    const { dispatch } = props;\n\n    states[activeState].onClick(\n      update,\n      states[activeState],\n      dispatch,\n    );\n  };\n\n  const { title, img, getContent, isActive } = states[activeState];\n  const content = getContent ? getContent(states[activeState]) : '';\n  const className = [\n    'StatefulButton',\n    states[activeState].className ? states[activeState].className : '',\n  ].join(' ').trim();\n\n  return (\n    <Button\n      className={classNames({\n        'CustomButton': true,\n        'Button': true,\n        [className]: className\n      })}\n      isActive={isActive && isActive(props)}\n      img={img}\n      label={content}\n      title={title}\n      dataElement={dataElement}\n      onClick={onClick}\n      disabled={disabled}\n    ></Button>\n  );\n};\n\nStatefulButton.propTypes = {\n  initialState: PropTypes.string.isRequired,\n  mount: PropTypes.func.isRequired,\n  unmount: PropTypes.func,\n  states: PropTypes.shape({\n    activeState: PropTypes.shape({\n      img: PropTypes.string,\n      label: PropTypes.string,\n      onClick: PropTypes.func.isRequired,\n      title: PropTypes.string.isRequired,\n      getContent: PropTypes.func.isRequired,\n    }),\n    AnotherState: PropTypes.shape({\n      img: PropTypes.string,\n      label: PropTypes.string,\n      onClick: PropTypes.func.isRequired,\n      title: PropTypes.string.isRequired,\n      getContent: PropTypes.func.isRequired,\n    }),\n  }),\n};\n\nexport default React.memo(StatefulButton);\n","import StatefulButton from './StatefulButton';\n\nexport default StatefulButton;","import { ITEM_TYPE, RESPONSIVE_ITEMS, BUTTON_TYPES, DIRECTION } from 'constants/customizationVariables';\nimport { useLayoutEffect } from 'react';\n\nconst sizeManager = {};\nexport default sizeManager;\n\nexport const useSizeStore = (dataElement, size, elementRef, headerDirection) => {\n  useLayoutEffect(() => {\n    if (elementRef.current) {\n      const isVertical = headerDirection === DIRECTION.COLUMN;\n      const freeSpace = getCurrentFreeSpace(headerDirection, elementRef.current, true);\n      if (!sizeManager[dataElement]) {\n        sizeManager[dataElement] = {};\n      }\n      sizeManager[dataElement].sizeToWidth = {\n        ...(sizeManager[dataElement].sizeToWidth ? sizeManager[dataElement].sizeToWidth : {}),\n        [size]: elementRef.current.clientWidth - (isVertical ? 0 : freeSpace),\n      };\n      sizeManager[dataElement].sizeToHeight = {\n        ...(sizeManager[dataElement].sizeToHeight ? sizeManager[dataElement].sizeToHeight : {}),\n        [size]: elementRef.current.clientHeight - (isVertical ? freeSpace : 0)\n      };\n    }\n  }, [size, elementRef.current]);\n};\n\nconst cssNonNumberValues = ['auto', 'inherit', 'initial', 'unset', 'normal', 'revert', 'revert-layer', 'none'];\nconst pixelToNumber = (pixel) => Math.ceil(parseFloat(pixel.replace('px', '')));\nconst getCSSValue = (style, property) => {\n  const value = style[property];\n  if (cssNonNumberValues.includes(value)) {\n    return 0;\n  }\n  return pixelToNumber(value);\n};\nexport const getCurrentFreeSpace = (headerDirection, element, isChild = false) => {\n  const isVertical = headerDirection === DIRECTION.COLUMN;\n  const widthOrHeight = isVertical ? 'height' : 'width';\n  const style = window.getComputedStyle(element);\n  const rect = element.getBoundingClientRect();\n  if (isChild && style.flexGrow === '0') {\n    return 0;\n  }\n  let calculatedFreeSpace = rect[widthOrHeight];\n  for (const child of element.children) {\n    calculatedFreeSpace -= child.getBoundingClientRect()[widthOrHeight] - getCurrentFreeSpace(headerDirection, child, true);\n  }\n  const leftOrTop = isVertical ? 'Left' : 'Top';\n  const rightOrBottom = isVertical ? 'Right' : 'Bottom';\n  calculatedFreeSpace -= getCSSValue(style, `padding${leftOrTop}`) + getCSSValue(style, `padding${rightOrBottom}`);\n  calculatedFreeSpace -= getCSSValue(style, `margin${leftOrTop}`) + getCSSValue(style, `margin${rightOrBottom}`);\n  calculatedFreeSpace -= getCSSValue(style, `border${leftOrTop}Width`) + getCSSValue(style, `border${rightOrBottom}Width`);\n  if (element.children.length > 1) {\n    const columnOrRow = isVertical ? DIRECTION.COLUMN : DIRECTION.ROW;\n    calculatedFreeSpace -= getCSSValue(style, `${columnOrRow}Gap`) * (element.children.length - 1);\n  }\n  return calculatedFreeSpace;\n};\n\nconst SIZE_CHANGE_TYPES = { GROW: 'grow', SHRINK: 'shrink' };\nconst lastSizedElementMap = {};\nconst elementToPreventLoop = {};\n\n// To be used in the unit tests\nexport const resetLastSizedElementMap = () => {\n  Object.keys(lastSizedElementMap).forEach((key) => {\n    delete lastSizedElementMap[key];\n  });\n};\n\nexport const findItemToResize = (items, freeSpace, headerDirection, parentDataElement, parentDomElement) => {\n  if (freeSpace === 0 || !items || items.length === 0) {\n    return null;\n  }\n  const isVertical = headerDirection === DIRECTION.COLUMN;\n  if (lastSizedElementMap[parentDataElement]) {\n    const lastSizedElement = lastSizedElementMap[parentDataElement];\n    const element = lastSizedElement.getElement();\n    const hasToShrink = (lastSizedElement.type === SIZE_CHANGE_TYPES.GROW && freeSpace < 0);\n    const hasToGrow = element.canGrow && (lastSizedElement.type === SIZE_CHANGE_TYPES.SHRINK && freeSpace > 0);\n    if (hasToGrow && element.canGrow) {\n      const growSizeIncrease = getGrowSizeIncrease(element, parentDataElement, isVertical, items, parentDomElement);\n      if (growSizeIncrease > freeSpace) {\n        return null;\n      }\n    }\n    if (hasToShrink || hasToGrow) {\n      if (lastSizedElement.getElement() === elementToPreventLoop[parentDataElement]?.getElement()) {\n        elementToPreventLoop[parentDataElement] = null;\n        return null;\n      }\n      return () => {\n        const newSizeChangeEntry = {\n          type: hasToShrink ? SIZE_CHANGE_TYPES.SHRINK : SIZE_CHANGE_TYPES.GROW,\n          getElement: lastSizedElement.getElement,\n          reverse: () => {\n            lastSizedElement.getElement()[hasToShrink ? SIZE_CHANGE_TYPES.GROW : SIZE_CHANGE_TYPES.SHRINK]();\n          }\n        };\n        lastSizedElementMap[parentDataElement] = newSizeChangeEntry;\n        elementToPreventLoop[parentDataElement] = newSizeChangeEntry;\n        lastSizedElement.reverse();\n      };\n    }\n  }\n  const [itemList, groupedItemList] = sortResponsiveItems(items, parentDataElement);\n  const isGrowing = freeSpace > 0;\n  if (isGrowing) {\n    const itemToGrow = findItemToGrow(itemList, groupedItemList);\n    if (!itemToGrow) {\n      return null;\n    }\n    const sizeDifference = getGrowSizeIncrease(sizeManager[itemToGrow.dataElement], parentDataElement, isVertical, items, parentDomElement);\n    if (sizeDifference > freeSpace) {\n      return null;\n    }\n    if (elementToPreventLoop[parentDataElement]?.type === SIZE_CHANGE_TYPES.SHRINK && lastSizedElementMap[parentDataElement].getElement() === elementToPreventLoop[parentDataElement]?.getElement()) {\n      elementToPreventLoop[parentDataElement] = null;\n      return null;\n    }\n    return () => {\n      lastSizedElementMap[parentDataElement] = {\n        type: SIZE_CHANGE_TYPES.GROW,\n        getElement: () => sizeManager[itemToGrow.dataElement],\n        reverse: () => sizeManager[itemToGrow.dataElement].shrink(),\n      };\n      sizeManager[itemToGrow.dataElement].grow();\n    };\n  }\n  const itemToShrink = findItemToShrink(itemList, groupedItemList);\n  if (!itemToShrink) {\n    return null;\n  }\n  return () => {\n    lastSizedElementMap[parentDataElement] = {\n      type: SIZE_CHANGE_TYPES.SHRINK,\n      getElement: () => sizeManager[itemToShrink.dataElement],\n      reverse: () => sizeManager[itemToShrink.dataElement].grow(),\n    };\n    sizeManager[itemToShrink.dataElement].shrink();\n  };\n};\n\nconst sortResponsiveItems = (items, parentDataElement) => {\n  const arrayToSearch = [...items];\n  const newItems = [];\n  const groupedItems = [];\n  while (arrayToSearch.length > 0) {\n    const item = arrayToSearch.pop();\n    if (item.type === ITEM_TYPE.GROUPED_ITEMS) {\n      const [innerItemList, innerGroupedItemList] = sortResponsiveItems(item.items, item.dataElement);\n      newItems.push(...innerItemList);\n      groupedItems.push(...innerGroupedItemList);\n      groupedItems.push(item);\n    } else if (RESPONSIVE_ITEMS.includes(item.type)) {\n      newItems.push(item);\n    }\n  }\n  groupedItems.push({ dataElement: parentDataElement, type: 'header' });\n  return [newItems, groupedItems];\n};\n\nconst findItemToShrink = (items, groupedItems) => {\n  let searchIndex = 0;\n  while (searchIndex < items.length) {\n    const rawItem = items[searchIndex];\n    const item = sizeManager[rawItem.dataElement];\n    if (item && item.canShrink) {\n      return rawItem;\n    }\n    searchIndex++;\n  }\n  searchIndex = 0;\n  while (searchIndex < groupedItems.length) {\n    const rawItem = groupedItems[searchIndex];\n    const item = sizeManager[rawItem.dataElement];\n    if (item && item.canShrink) {\n      return rawItem;\n    }\n    searchIndex++;\n  }\n};\n\nconst findItemToGrow = (items, groupedItems) => {\n  let searchIndex = groupedItems.length - 1;\n  while (searchIndex >= 0) {\n    const rawItem = groupedItems[searchIndex];\n    const item = sizeManager[rawItem.dataElement];\n    if (item && item.canGrow) {\n      return rawItem;\n    }\n    searchIndex--;\n  }\n  searchIndex = items.length - 1;\n  while (searchIndex >= 0) {\n    const rawItem = items[searchIndex];\n    const item = sizeManager[rawItem.dataElement];\n    if (item && item.canGrow) {\n      return rawItem;\n    }\n    searchIndex--;\n  }\n};\n\nconst getGrowSizeIncrease = (element, parentDataElement, isVertical, items, parentElement) => {\n  if (sizeManager[parentDataElement] === element) {\n    const currentSize = element.size;\n    if (currentSize === 0) {\n      return 0;\n    }\n    const sizeToGet = isVertical ? 'sizeToHeight' : 'sizeToWidth';\n    const itemToBeAddedIndex = items.length - currentSize;\n    let itemToBeAdded = items[itemToBeAddedIndex];\n    let itemsCount = 1;\n    if (itemToBeAdded.type === ITEM_TYPE.DIVIDER) {\n      itemsCount++;\n      itemToBeAdded = items[itemToBeAddedIndex + 1];\n    }\n    const columnOrRow = isVertical ? DIRECTION.COLUMN : DIRECTION.ROW;\n    const paddingSizeIncrease = currentSize === 1 ? 0 : pixelToNumber(getComputedStyle(parentElement)[`${columnOrRow}Gap`]) * itemsCount;\n    if (BUTTON_TYPES.includes(itemToBeAdded.type)) {\n      if (currentSize === 1) {\n        return 0;\n      }\n      return 32 + paddingSizeIncrease;\n    }\n    const itemToBeAddedSize = sizeManager[itemToBeAdded.dataElement].size;\n    const elementToBeAdded = sizeManager[itemToBeAdded.dataElement];\n    const elementSize = elementToBeAdded[sizeToGet][itemToBeAddedSize];\n    return elementSize + paddingSizeIncrease;\n  }\n  const currentSize = element.size;\n  const sizeToGet = isVertical ? 'sizeToHeight' : 'sizeToWidth';\n  return element[sizeToGet][currentSize - 1] - element[sizeToGet][currentSize];\n};\n","import { fitToWidth, fitToPage, zoomTo, zoomIn, zoomOut } from 'helpers/zoom';\nimport actions from 'actions';\nimport core from 'core';\nimport { FLYOUT_ITEM_TYPES } from 'src/constants/customizationVariables';\n\nconst noop = () => {\n};\nexport const getZoomFlyoutItems = (zoomOptionsList, dispatch, size = 0, onZoomChanged = noop) => {\n  const {\n    onMarqueeZoom,\n    onZoomInClicked,\n    onZoomOutClicked,\n    onClickZoomLevelOption\n  } = getZoomHandlers(zoomOptionsList, dispatch, size, onZoomChanged);\n\n  const fitToWidthButton = {\n    icon: 'icon-header-zoom-fit-to-width',\n    label: 'action.fitToWidth',\n    title: 'action.fitToWidth',\n    dataElement: 'fitToWidthButton',\n    onClick: () => {\n      fitToWidth();\n      dispatch(actions.closeElement('zoom-containerFlyout'));\n    },\n  };\n  const fitToPageButton = {\n    icon: 'icon-header-zoom-fit-to-page',\n    label: 'action.fitToPage',\n    title: 'action.fitToPage',\n    dataElement: 'fitToPageButton',\n    onClick: () => {\n      fitToPage();\n      dispatch(actions.closeElement('zoom-containerFlyout'));\n    },\n    type: 'customButton',\n  };\n  const marqueeButton = {\n    dataElement: 'zoom-button-marquee-zoom',\n    icon: 'icon-header-zoom-marquee',\n    toolName: 'MarqueeZoomTool',\n    label: 'tool.Marquee',\n    onClick: onMarqueeZoom,\n    className: 'marqueeButton',\n  };\n  const zoomInButton = {\n    icon: 'icon-header-zoom-in-line',\n    label: 'action.zoomIn',\n    dataElement: 'zoomInButton',\n    onClick: onZoomInClicked,\n    className: 'zoomInButton'\n  };\n  const zoomOutButton = {\n    icon: 'icon-header-zoom-out-line',\n    label: 'action.zoomOut',\n    dataElement: 'zoomOutButton',\n    onClick: onZoomOutClicked,\n    className: 'zoomOutButton'\n  };\n\n  let zoomItems;\n  if (size === 0) {\n    const divider = 'divider';\n    zoomItems = [fitToWidthButton, fitToPageButton, divider];\n    zoomOptionsList.forEach((zoomValue) => {\n      const item = {\n        label: `${zoomValue * 100}%`,\n        onClick: () => {\n          onClickZoomLevelOption(zoomValue);\n        },\n        dataElement: `zoom-button-${zoomValue * 100}`\n      };\n      zoomItems.push(item);\n    });\n    zoomItems.push(divider);\n    zoomItems.push(marqueeButton);\n  } else if (size === 1) {\n    const zoomOptionsItem = {\n      dataElement: FLYOUT_ITEM_TYPES.ZOOM_OPTIONS_BUTTON,\n      children: zoomOptionsList.map((zoomValue) => {\n        return {\n          label: `${zoomValue * 100}%`,\n          onClick: () => {\n            onClickZoomLevelOption(zoomValue);\n          },\n          dataElement: `zoom-button-${zoomValue * 100}`\n        };\n      }),\n    };\n    zoomItems = [zoomOptionsItem, zoomInButton, zoomOutButton, fitToWidthButton, fitToPageButton, marqueeButton];\n  }\n  return zoomItems;\n};\n\nexport const getZoomHandlers = (zoomOptionsList, dispatch, size = 0, onZoomChanged = noop) => {\n  const onClickZoomLevelOption = (zoomLevel) => {\n    zoomTo(zoomLevel);\n    (size === 0 || size === 1) && dispatch(actions.closeElement('zoom-containerFlyout'));\n  };\n\n  const onMarqueeZoom = () => {\n    dispatch(actions.closeElement('zoom-containerFlyout'));\n  };\n\n  const getCurrentZoom = () => {\n    return Math.ceil(core.getZoom() * 100).toString();\n  };\n\n  const onZoomInClicked = () => {\n    zoomIn();\n    onZoomChanged(getCurrentZoom());\n  };\n\n  const onZoomOutClicked = () => {\n    zoomOut();\n    onZoomChanged(getCurrentZoom());\n  };\n\n  return {\n    onZoomInClicked,\n    onZoomOutClicked,\n    onMarqueeZoom,\n    onClickZoomLevelOption,\n  };\n};","import React from 'react';\nimport DataElements from 'constants/dataElement';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport Button from 'components/Button';\n\nexport const menuItems = {\n  [PRESET_BUTTON_TYPES.UNDO]: {\n    dataElement: 'undoButton',\n    presetDataElement: DataElements.UNDO_PRESET_BUTTON,\n    icon: 'icon-operation-undo',\n    label: 'action.undo',\n    title: 'action.undo',\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.REDO]: {\n    dataElement: 'redoButton',\n    presetDataElement: DataElements.REDO_PRESET_BUTTON,\n    icon: 'icon-operation-redo',\n    label: 'action.redo',\n    title: 'action.redo',\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.FORM_FIELD_EDIT]: {\n    dataElement: 'formFieldEditButton',\n    presetDataElement: DataElements.FORM_FIELD_EDIT_PRESET_BUTTON,\n    icon: 'ic-fill-and-sign',\n    label: 'action.formFieldEditMode',\n    title: 'action.formFieldEditMode',\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.CONTENT_EDIT]: {\n    dataElement: 'contentEditButton',\n    presetDataElement: DataElements.CONTENT_EDIT_PRESET_BUTTON,\n    icon: 'icon-content-edit',\n    label: 'action.contentEditMode',\n    title: 'action.contentEditMode',\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.NEW_DOCUMENT]: {\n    dataElement: DataElements.NEW_DOCUMENT_BUTTON,\n    presetDataElement: DataElements.NEW_DOCUMENT_PRESET_BUTTON,\n    icon: 'icon-plus-sign',\n    label: 'action.newDocument',\n    title: 'action.newDocument',\n    isActive: false,\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.FILE_PICKER]: {\n    dataElement: DataElements.FILE_PICKER_BUTTON,\n    presetDataElement: DataElements.FILE_PICKER_PRESET_BUTTON,\n    icon: 'icon-header-file-picker-line',\n    label: 'action.openFile',\n    title: 'action.openFile',\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.DOWNLOAD]: {\n    dataElement: DataElements.DOWNLOAD_BUTTON,\n    presetDataElement: DataElements.DOWNLOAD_PRESET_BUTTON,\n    icon: 'icon-download',\n    label: 'action.download',\n    title: 'action.download',\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.SAVE_AS]: {\n    dataElement: DataElements.SAVE_AS_BUTTON,\n    presetDataElement: DataElements.SAVE_AS_PRESET_BUTTON,\n    icon: 'icon-save',\n    label: 'saveModal.saveAs',\n    title: 'saveModal.saveAs',\n    isActive: false,\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.PRINT]: {\n    dataElement: DataElements.PRINT_BUTTON,\n    presetDataElement: DataElements.PRINT_PRESET_BUTTON,\n    icon: 'icon-header-print-line',\n    label: 'action.print',\n    title: 'action.print',\n    isActive: false,\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.CREATE_PORTFOLIO]: {\n    dataElement: DataElements.CREATE_PORTFOLIO_BUTTON,\n    presetDataElement: DataElements.CREATE_PORTFOLIO_PRESET_BUTTON,\n    icon: 'icon-pdf-portfolio',\n    label: 'portfolio.createPDFPortfolio',\n    title: 'portfolio.createPDFPortfolio',\n    isActive: false,\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.SETTINGS]: {\n    dataElement: DataElements.SETTINGS_BUTTON,\n    presetDataElement: DataElements.SETTINGS_PRESET_BUTTON,\n    icon: 'icon-header-settings-line',\n    label: 'option.settings.settings',\n    title: 'option.settings.settings',\n    isActive: false,\n    hidden: false,\n  },\n  [PRESET_BUTTON_TYPES.FULLSCREEN]: {\n    dataElement: DataElements.FULLSCREEN_BUTTON,\n    presetDataElement: DataElements.FULLSCREEN_PRESET_BUTTON,\n    icon: 'icon-header-full-screen',\n    label: 'action.enterFullscreen',\n    title: 'action.enterFullscreen',\n    hidden: false,\n  },\n};\n\nexport const getPresetButtonDOM = (buttonType, isDisabled, onClick, isFullScreen) => {\n  const { dataElement, presetDataElement } = menuItems[buttonType];\n  let { icon, title } = menuItems[buttonType];\n\n  if (buttonType === PRESET_BUTTON_TYPES.FULLSCREEN) {\n    icon = isFullScreen ? 'icon-header-full-screen-exit' : 'icon-header-full-screen';\n    title = isFullScreen ? 'action.exitFullscreen' : 'action.enterFullscreen';\n  }\n\n  return (\n    <Button\n      className={`PresetButton ${dataElement}`}\n      dataElement={presetDataElement}\n      img={icon}\n      title={title}\n      onClick={onClick}\n      disabled={isDisabled}\n    />\n  );\n};","import { FLYOUT_ITEM_TYPES, ITEM_TYPE } from 'constants/customizationVariables';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { getZoomFlyoutItems } from 'components/ModularComponents/ZoomControls/ZoomHelper';\nimport { menuItems } from 'components/ModularComponents/Helpers/menuItems';\n\nlet store;\nexport const setItemToFlyoutStore = (newStore) => {\n  store = newStore;\n};\n\nexport const itemToFlyout = (item, {\n  onClick = undefined,\n  children = undefined,\n  useOverrideClickOnly = false,\n  extraProps = {},\n} = {}) => {\n  const itemProps = item.props || item;\n  const {\n    type,\n    label,\n    title,\n    dataElement,\n    img,\n    icon,\n    items,\n    toolName\n  } = itemProps;\n\n  const isDisabledItem = itemProps?.dataElement && store && selectors.isElementDisabled(store.getState(), dataElement);\n  if (!itemProps || !type || !Object.values(ITEM_TYPE).includes(type) || isDisabledItem) {\n    return null;\n  }\n\n  if (type === ITEM_TYPE.DIVIDER) {\n    return 'divider';\n  }\n\n  const flyoutItem = {\n    label: label || title || (dataElement ? dataElementToLabel(dataElement) : ''),\n    onClick: () => {\n      !useOverrideClickOnly && itemProps.onClick && itemProps.onClick();\n      onClick && onClick();\n    },\n    icon: icon || img,\n    children,\n    ...extraProps,\n    ...itemProps,\n  };\n\n  switch (type) {\n    case ITEM_TYPE.BUTTON:\n      flyoutItem.className = 'FlyoutButton';\n      break;\n    case ITEM_TYPE.TOGGLE_BUTTON:\n      flyoutItem.onClick = () => {\n        store.dispatch(actions.toggleElement(itemProps.toggleElement));\n        onClick && onClick();\n      };\n      break;\n    case ITEM_TYPE.ZOOM: {\n      const zoomOptionsList = selectors.getZoomList(store.getState());\n      flyoutItem.className = 'ZoomFlyoutMenu';\n      flyoutItem.icon = 'icon-magnifying-glass';\n      flyoutItem.children = getZoomFlyoutItems(zoomOptionsList, store.dispatch, 1);\n      break;\n    }\n    case ITEM_TYPE.RIBBON_GROUP:\n      flyoutItem.className = 'FlyoutRibbonGroup';\n      flyoutItem.label = 'Views';\n      flyoutItem.children = items;\n      break;\n    case ITEM_TYPE.GROUPED_ITEMS:\n      flyoutItem.className = 'FlyoutGroupedItems';\n      flyoutItem.children = items.map((item) => itemToFlyout(item));\n      break;\n    case ITEM_TYPE.TOOL_BUTTON:\n      flyoutItem.className = 'FlyoutToolButton';\n      flyoutItem.toolName = toolName;\n      flyoutItem.icon = img;\n      flyoutItem.label = label;\n      break;\n    case ITEM_TYPE.PRESET_BUTTON: {\n      const { label, dataElement, icon } = menuItems[itemProps.buttonType || itemProps.dataElement];\n      flyoutItem.label = label;\n      flyoutItem.dataElement = dataElement;\n      flyoutItem.icon = icon;\n      flyoutItem.type = type;\n      break;\n    }\n  }\n\n  return flyoutItem;\n};\n\nexport const getFlyoutItemType = (flyoutItem) => {\n  if (flyoutItem === FLYOUT_ITEM_TYPES.DIVIDER) {\n    return FLYOUT_ITEM_TYPES.DIVIDER;\n  } else if (typeof flyoutItem === 'string' && flyoutItem !== FLYOUT_ITEM_TYPES.DIVIDER) {\n    return FLYOUT_ITEM_TYPES.LABEL;\n  } else if (flyoutItem.toolName) {\n    return FLYOUT_ITEM_TYPES.TOOL_BUTTON;\n  } else if (flyoutItem.dataElement === FLYOUT_ITEM_TYPES.ZOOM_OPTIONS_BUTTON || flyoutItem.className === 'ZoomFlyoutMenu') {\n    return FLYOUT_ITEM_TYPES.ZOOM_OPTIONS_BUTTON;\n  } else if (flyoutItem.dataElement?.includes('zoom-button-')) {\n    return FLYOUT_ITEM_TYPES.ZOOM_BUTTON;\n  } else if (flyoutItem.dataElement === FLYOUT_ITEM_TYPES.PAGE_NAVIGATION_BUTTON) {\n    return FLYOUT_ITEM_TYPES.PAGE_NAVIGATION_BUTTON;\n  } else if (flyoutItem.tabPanel) {\n    return FLYOUT_ITEM_TYPES.TAB_PANEL_ITEM;\n  } else if (flyoutItem.toolbarGroup) {\n    return FLYOUT_ITEM_TYPES.RIBBON_ITEM;\n  } else if (flyoutItem.buttonType || flyoutItem.type === ITEM_TYPE.PRESET_BUTTON) {\n    return FLYOUT_ITEM_TYPES.PRESET_BUTTON;\n  } else {\n    return FLYOUT_ITEM_TYPES.BUTTON;\n  }\n};\n\nconst dataElementToLabel = (dataElement) => {\n  try {\n    // Will split by CamelCase or symbols\n    const regex = new RegExp('([^[\\\\p{L}\\\\d]+|(?<=[\\\\p{Ll}\\\\d])(?=\\\\p{Lu})|(?<=\\\\p{Lu})(?=\\\\p{Lu}[\\\\p{Ll}\\\\d])|(?<=[\\\\p{L}\\\\d])(?=\\\\p{Lu}[\\\\p{Ll}\\\\d]))', 'gu');\n    return dataElement.replace(regex, ' ');\n  } catch (e) {\n    // In some browsers the regex above is not supported\n    return dataElement;\n  }\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport './GroupedItems.scss';\nimport InnerItem from '../InnerItem/InnerItem';\nimport { JUSTIFY_CONTENT, ITEM_TYPE, DEFAULT_GAP } from 'constants/customizationVariables';\nimport actions from 'actions';\nimport sizeManager, { useSizeStore } from 'helpers/responsivenessHelper';\nimport { itemToFlyout } from 'helpers/itemToFlyoutHelper';\nimport selectors from 'selectors';\nimport ToggleElementButton from '../ToggleElementButton';\nimport core from 'core';\n\nconst GroupedItems = (props) => {\n  const {\n    dataElement,\n    items,\n    headerDirection,\n    gap = DEFAULT_GAP,\n    justifyContent = JUSTIFY_CONTENT.START,\n    grow = 0,\n    alwaysVisible = false,\n    style,\n  } = props;\n  const dispatch = useDispatch();\n  const [itemsGap, setItemsGap] = useState(gap);\n  const itemValidTypes = Object.values(ITEM_TYPE);\n  const validItems = items?.filter((item) => {\n    const itemType = item.type || item.props.type;\n    return itemValidTypes.includes(itemType);\n  });\n\n  const flyoutDataElement = `${dataElement}Flyout`;\n  const lastPickedToolForGroupedItems = useSelector((state) => selectors.getLastPickedToolForGroupedItems(state, dataElement));\n  const activeGroupedItems = useSelector((state) => selectors.getActiveGroupedItems(state));\n  const alwaysVisibleGroupedItems = useSelector((state) => selectors.getAlwaysVisibleGroupedItems(state));\n  const flyoutItems = useSelector((state) => selectors.getFlyoutMap(state)[flyoutDataElement]?.items);\n\n  const moreButtonDefaultIcon = 'icon-tools-more';\n  const [moreButtonIcon, setMoreButtonIcon] = useState(moreButtonDefaultIcon);\n\n  const findActiveToolInFlyout = (flyoutItems) => {\n    const activeTool = core.getToolMode();\n    if (!flyoutItems) {\n      return;\n    }\n\n    for (const item of flyoutItems) {\n      if (item.toolName && item.toolName === activeTool?.name) {\n        return item;\n      }\n      if (item.children) {\n        const found = findActiveToolInFlyout(item.children);\n        if (found) {\n          return found;\n        }\n      }\n    }\n  };\n\n  const handleMoreButtonIcon = () => {\n    const isActiveToolInFlyout = findActiveToolInFlyout(flyoutItems);\n    const isGroupedItemsActive = activeGroupedItems?.includes(dataElement) || alwaysVisibleGroupedItems?.includes(dataElement);\n    if (size > 0 && isActiveToolInFlyout && isGroupedItemsActive) {\n      setMoreButtonIcon('icon-tools-more-active');\n    } else {\n      setMoreButtonIcon(moreButtonDefaultIcon);\n    }\n  };\n\n  useEffect(() => {\n    if (alwaysVisible) {\n      dispatch(actions.setFixedGroupedItems(dataElement));\n    }\n    if (!lastPickedToolForGroupedItems && activeGroupedItems?.includes(dataElement)) {\n      const firstToolButton = validItems?.find((item) => item.type === ITEM_TYPE.TOOL_BUTTON);\n      if (firstToolButton) {\n        dispatch(actions.setLastPickedToolForGroupedItems(dataElement, firstToolButton.toolName));\n        core.setToolMode(firstToolButton.toolName);\n      }\n    }\n  }, []);\n\n  const elementRef = useRef();\n  const size = useSelector((state) => selectors.getCustomElementSize(state, dataElement));\n  useEffect(() => {\n    const responsiveItems = validItems.filter((item) => item.type !== ITEM_TYPE.DIVIDER);\n    sizeManager[dataElement] = {\n      ...(sizeManager[dataElement] ? sizeManager[dataElement] : {}),\n      canGrow: size > 0,\n      canShrink: size < validItems.length - 1 && responsiveItems.length > 2,\n      grow: () => {\n        const newSize = size - 1;\n        dispatch(actions.setCustomElementSize(dataElement, newSize < 0 ? 0 : newSize));\n      },\n      shrink: () => {\n        dispatch(actions.setCustomElementSize(dataElement, size + 1));\n      },\n      size: size,\n    };\n    handleMoreButtonIcon();\n  }, [size, items]);\n\n  useSizeStore(dataElement, size, elementRef, headerDirection);\n\n  useEffect(() => {\n    const flyout = {\n      dataElement: flyoutDataElement,\n      className: 'GroupedItemsFlyout',\n      items: [],\n    };\n\n    if (size > 0) {\n      const indexToExclude = validItems.length - size;\n      for (let i = 0; i < validItems.length; i++) {\n        const item = validItems[i];\n        if (i < indexToExclude) {\n          continue;\n        }\n        const flyoutItem = itemToFlyout(item);\n        if (flyoutItem) {\n          flyout.items.push(flyoutItem);\n        }\n      }\n    }\n\n    dispatch(actions.updateFlyout(flyoutDataElement, flyout));\n  }, [size, validItems.length]);\n\n  useEffect(() => {\n    setItemsGap(gap);\n  }, [gap]);\n\n  if (validItems && validItems.length) {\n    return (\n      <div className={'GroupedItems'}\n        ref={elementRef}\n        data-element={dataElement}\n        style={{\n          gap: `${itemsGap}px`,\n          flexDirection: headerDirection,\n          justifyContent: justifyContent,\n          flexGrow: grow,\n          ...style,\n        }}>\n        {\n          validItems.map((item, index) => {\n            const hasToShrink = size > 0;\n            const indexesToExclude = validItems.length - size;\n            const isLastIndexAndDivider = index === indexesToExclude - 1 && item.type === ITEM_TYPE.DIVIDER;\n            const shouldExcludeIndex = index >= indexesToExclude || isLastIndexAndDivider;\n            if (hasToShrink && shouldExcludeIndex) {\n              return null;\n            }\n            const itemProps = item.props || item;\n            return <InnerItem key={`${dataElement}-${itemProps.dataElement}`} {...itemProps} headerDirection={headerDirection} groupedItem={dataElement} />;\n          })\n        }\n        {size > 0 &&\n          <ToggleElementButton\n            dataElement={`${flyoutDataElement}Toggle`}\n            toggleElement={flyoutDataElement}\n            title=\"action.more\"\n            img={moreButtonIcon} />\n        }\n      </div>);\n  }\n  return null;\n};\n\nGroupedItems.propTypes = {\n  dataElement: PropTypes.string,\n  items: PropTypes.array,\n  overflowLabel: PropTypes.string,\n  gap: PropTypes.number,\n  headerDirection: PropTypes.string\n};\n\nexport default GroupedItems;","export default function getToolbarTranslationString(group, map) {\n  const customHeaderProperties = map[group];\n  if (customHeaderProperties && customHeaderProperties.name) {\n    return customHeaderProperties.name;\n  }\n  return `option.toolbarGroup.${group}`;\n}","import React, { forwardRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Icon from 'components/Icon';\nimport '../Flyout/Flyout.scss';\n\nconst FlyoutItemContainer = forwardRef((props, ref) => {\n  const {\n    label,\n    dataElement,\n    disabled,\n    additionalClass,\n    icon,\n    ariaKeyshortcuts,\n    children,\n    index,\n    isChild,\n    elementDOM,\n    onKeyDownHandler,\n    onClickHandler,\n  } = props;\n\n  const { t } = useTranslation();\n\n  const getFlyoutItemContent = () => {\n    if (elementDOM) {\n      return (\n        <div className='custom-element-wrapper'>\n          {icon}\n          {elementDOM}\n        </div>\n      );\n    }\n\n    const finalLabel = typeof label === 'string' ? t(label) : label;\n    return (\n      <button\n        className=\"flyout-item\"\n        disabled={disabled}\n        onClick={onClickHandler(props, isChild, index)}\n        aria-disabled={disabled}\n        onKeyDown={onKeyDownHandler}\n      >\n        <div className=\"icon-label-wrapper\">\n          {icon}\n          {finalLabel && <span className=\"flyout-item-label\">{finalLabel}</span>}\n        </div>\n        {ariaKeyshortcuts && <span className=\"hotkey-wrapper\">{`(${ariaKeyshortcuts})`}</span>}\n        {children && <Icon className=\"icon-open-submenu\" glyph=\"icon-chevron-right\" />}\n      </button>\n    );\n  };\n\n  return (\n    <li\n      key={label}\n      ref={ref}\n      data-element={dataElement}\n      className={classNames({\n        'flyout-item-container': true,\n        'disabled': disabled,\n        [additionalClass]: true\n      })}\n    >\n      { getFlyoutItemContent() }\n    </li>\n  );\n});\n\nFlyoutItemContainer.propTypes = {\n  label: PropTypes.oneOfType([\n    PropTypes.string,\n    // e.g. Zoom Options\n    PropTypes.object,\n  ]),\n  dataElement: PropTypes.string,\n  disabled: PropTypes.bool,\n  additionalClass: PropTypes.string,\n  icon: PropTypes.node,\n  ariaKeyshortcuts: PropTypes.string,\n  children: PropTypes.array,\n  index: PropTypes.number,\n  isChild: PropTypes.bool,\n  elementDOM: PropTypes.node,\n  onKeyDownHandler: PropTypes.func,\n  onClickHandler: PropTypes.func,\n};\nFlyoutItemContainer.displayName = 'FlyoutItemContainer';\n\nexport default FlyoutItemContainer;","import FlyoutItemContainer from './FlyoutItemContainer';\n\nexport default FlyoutItemContainer;\n","import React, { useEffect, useRef, useState, useCallback, forwardRef } from 'react';\nimport selectors from 'selectors';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport actions from 'actions';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport classNames from 'classnames';\nimport getToolbarTranslationString from 'helpers/translationKeyMapping';\nimport { JUSTIFY_CONTENT, DIRECTION } from 'constants/customizationVariables';\nimport defaultTool from 'constants/defaultTool';\nimport './RibbonItem.scss';\nimport sizeManager from 'helpers/responsivenessHelper';\nimport { getNestedGroupedItems } from 'helpers/modularUIHelpers';\nimport core from 'core';\nimport FlyoutItemContainer from '../FlyoutItemContainer';\n\nconst RibbonItem = forwardRef((props, ref) => {\n  const elementRef = useRef();\n  const { t, ready: tReady } = useTranslation();\n  const dispatch = useDispatch();\n  const {\n    dataElement,\n    title,\n    disabled,\n    img,\n    label,\n    groupedItems = [],\n    direction,\n    justifyContent,\n    isFlyoutItem,\n    toolbarGroup\n  } = props;\n\n  const activeGroupedItems = useSelector((state) => selectors.getActiveGroupedItems(state));\n  const activeCustomRibbon = useSelector((state) => selectors.getActiveCustomRibbon(state));\n  const lastPickedToolForGroupedItems = useSelector((state) => selectors.getLastPickedToolForGroupedItems(state, groupedItems));\n  const isRibbonItemDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n  const customHeadersAdditionalProperties = useSelector((state) => selectors.getCustomHeadersAdditionalProperties(state));\n  const allAssociatedGroupedItems = useSelector((state) => [...groupedItems, ...getNestedGroupedItems(state, groupedItems)], shallowEqual);\n\n  const [isActive, setIsActive] = useState(false);\n\n  useEffect(() => {\n    if (elementRef.current) {\n      sizeManager[dataElement] = {\n        width: elementRef.current.clientWidth,\n        height: elementRef.current.clientHeight,\n        visible: true,\n      };\n    }\n  }, []);\n\n  useEffect(() => {\n    const someActiveGroupedItemsBelongToCurrentRibbonItem = activeGroupedItems?.some((item) => allAssociatedGroupedItems.includes(item));\n    if (activeCustomRibbon === dataElement && (someActiveGroupedItemsBelongToCurrentRibbonItem || !activeGroupedItems?.length)) {\n      setIsActive(true);\n    } else {\n      setIsActive(false);\n    }\n  }, [activeGroupedItems, activeCustomRibbon, lastPickedToolForGroupedItems]);\n\n  const onClick = useCallback(() => {\n    if (groupedItems.length < 1) {\n      core.setToolMode(defaultTool);\n    }\n    if (!isActive) {\n      dispatch(actions.setActiveGroupedItems(allAssociatedGroupedItems));\n      dispatch(actions.setActiveCustomRibbon(dataElement));\n      dispatch(actions.setLastPickedToolAndGroup({\n        tool: lastPickedToolForGroupedItems,\n        group: allAssociatedGroupedItems\n      }));\n      setIsActive(true);\n      core.setToolMode(lastPickedToolForGroupedItems);\n\n      if (groupedItems.length < 1) {\n        core.getFormFieldCreationManager().endFormFieldCreationMode();\n        core.getContentEditManager().endContentEditMode();\n      }\n    }\n  }, []);\n\n  if (isRibbonItemDisabled) {\n    return null;\n  }\n\n  const translatedLabel = tReady && toolbarGroup ?\n    t(getToolbarTranslationString(toolbarGroup, customHeadersAdditionalProperties))\n    : label;\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={onClick} />\n      :\n      <div className={classNames({\n        'RibbonItem': true,\n        'vertical': direction === DIRECTION.COLUMN,\n        'horizontal': direction === DIRECTION.ROW,\n        'left': justifyContent !== JUSTIFY_CONTENT.END,\n        'right': justifyContent === JUSTIFY_CONTENT.END,\n      })}\n      >\n        <Button\n          isActive={isActive}\n          dataElement={dataElement}\n          img={img}\n          label={translatedLabel}\n          title={translatedLabel || title}\n          useI18String={false}\n          onClick={onClick}\n          disabled={disabled}\n        >\n        </Button>\n      </div>\n  );\n});\n\nRibbonItem.propTypes = {\n  dataElement: PropTypes.string,\n  title: PropTypes.string,\n  disabled: PropTypes.bool,\n  img: PropTypes.string,\n  label: PropTypes.string,\n  groupedItems: PropTypes.array,\n  direction: PropTypes.string,\n  justifyContent: PropTypes.string,\n  isFlyoutItem: PropTypes.bool,\n  iconDOMElement: PropTypes.any,\n  toolbarGroup: PropTypes.string,\n};\nRibbonItem.displayName = 'RibbonItem';\n\nexport default React.memo(RibbonItem);","import RibbonItem from './RibbonItem';\n\nexport default RibbonItem;","import React from 'react';\nimport Dropdown from 'components/Dropdown';\n\nimport './FlexDropdown.scss';\n\nconst FlexDropdown = (props) => {\n  return (\n    <Dropdown {...props} className={`FlexDropdown ${props.direction}`} />\n  );\n};\n\nexport default FlexDropdown;","import FlexDropdown from './FlexDropdown';\n\nexport default FlexDropdown;","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport RibbonItem from '../RibbonItem';\nimport classNames from 'classnames';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport FlexDropdown from '../FlexDropdown';\nimport { ITEM_TYPE, DIRECTION } from 'constants/customizationVariables';\nimport ToggleElementButton from '../ToggleElementButton';\nimport getToolbarTranslationString from 'helpers/translationKeyMapping';\nimport sizeManager, { useSizeStore } from 'helpers/responsivenessHelper';\nimport { itemToFlyout } from 'helpers/itemToFlyoutHelper';\nimport Icon from 'components/Icon';\n\nimport './RibbonGroup.scss';\n\nconst DEFAULT_DROPDOWN_HEIGHT = 72;\n\nconst validateItems = (items) => {\n  items.filter((item, index) => {\n    const itemType = item.type || item.props.type;\n    if (itemType !== ITEM_TYPE.RIBBON_ITEM) {\n      const dataElement = item.dataElement || item.props.dataElement;\n      console.warn(`${dataElement} is not a valid ribbon item.`);\n    }\n    item.sortIndex = index;\n    return itemType === ITEM_TYPE.RIBBON_ITEM;\n  });\n  return items;\n};\n\nconst RibbonGroup = (props) => {\n  const {\n    dataElement,\n    items,\n    headerDirection,\n    headerPlacement,\n    gap = headerDirection === DIRECTION.COLUMN ? 12 : 20,\n    justifyContent,\n    grow = 0,\n  } = props;\n\n  const [itemsGap, setItemsGap] = useState(gap);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [ribbonItems, setRibbonItems] = useState(validateItems(items));\n\n  const activeCustomRibbon = useSelector(selectors.getActiveCustomRibbon);\n  const groupedItemsOfActiveCustomRibbon = useSelector((state) => selectors.getGroupedItemsOfCustomRibbon(state, activeCustomRibbon));\n  const customHeadersAdditionalProperties = useSelector((selectors.getCustomHeadersAdditionalProperties));\n  const isRibbonGroupDisabled = useSelector((state) => selectors.isElementDisabled(state, dataElement));\n  const lastPickedToolForGroupedItems = useSelector((state) => selectors.getLastPickedToolForGroupedItems(state, groupedItemsOfActiveCustomRibbon));\n\n  const elementRef = useRef();\n\n  const dispatch = useDispatch();\n\n  const FLYOUT_NAME = `${dataElement}-flyout`;\n  const MIN_SIZE = items.length - 1;\n\n  const size = useSelector((state) => selectors.getCustomElementSize(state, dataElement));\n  useEffect(() => {\n    sizeManager[dataElement] = {\n      ...(sizeManager[dataElement] ? sizeManager[dataElement] : {}),\n      canGrow: size > 0,\n      canShrink: size < MIN_SIZE,\n      grow: () => {\n        const newSize = size - 1;\n        dispatch(actions.setCustomElementSize(dataElement, newSize < 0 ? 0 : newSize));\n      },\n      shrink: () => {\n        dispatch(actions.setCustomElementSize(dataElement, size + 1));\n      },\n      size: size,\n    };\n\n    // When size and items length are equal it means flyout is disabled\n    // and dropdown is enabled, so flyout needs to be closed.\n    if (size === items.length) {\n      dispatch(actions.closeElement(FLYOUT_NAME));\n    }\n  }, [size]);\n  useSizeStore(dataElement, size, elementRef, headerDirection);\n\n  const setActiveCustomRibbon = useCallback(\n    (ribbon) => {\n      dispatch(actions.setActiveCustomRibbon(ribbon));\n    },\n    [dispatch],\n  );\n\n  useEffect(() => {\n    if (!activeCustomRibbon) {\n      setActiveCustomRibbon(ribbonItems[0]?.toolbarGroup);\n    }\n  }, []);\n\n  useEffect(() => {\n    const flyout = {\n      dataElement: FLYOUT_NAME,\n      className: 'RibbonGroupFlyout',\n      items: [],\n    };\n    if (size > 0 && size !== MIN_SIZE) {\n      const activeIndex = ribbonItems.findIndex((item) => item.toolbarGroup === activeCustomRibbon);\n      const lastIndex = ribbonItems.length - 1;\n      const indexToExcludeFrom = lastIndex - size + 1;\n      for (let i = 0; i < ribbonItems.length; i++) {\n        const item = ribbonItems[i];\n        if (i < indexToExcludeFrom) {\n          continue;\n        }\n        const flyoutItem = itemToFlyout(item, {\n          onClick: () => {\n            dispatch(actions.closeElements([FLYOUT_NAME]));\n          },\n          extraProps: {\n            isActive: i === activeIndex,\n          },\n        });\n        if (flyoutItem) {\n          flyout.items.push(flyoutItem);\n        }\n      }\n    }\n\n    dispatch(actions.updateFlyout(FLYOUT_NAME, flyout));\n    setContainerWidth(elementRef.current?.clientWidth ?? 0);\n  }, [size, activeCustomRibbon, ribbonItems.length]);\n\n  useEffect(() => {\n    setItemsGap(gap);\n  }, [gap]);\n\n  useEffect(() => {\n    setRibbonItems(validateItems(items));\n  }, [items]);\n\n  useEffect(() => {\n    dispatch(actions.setActiveGroupedItems(groupedItemsOfActiveCustomRibbon));\n    dispatch(actions.setLastPickedToolAndGroup({\n      tool: lastPickedToolForGroupedItems,\n      group: groupedItemsOfActiveCustomRibbon,\n    }));\n  }, [activeCustomRibbon]);\n\n  const renderRibbonItems = useCallback(() => {\n    const lastIndex = ribbonItems.length - 1;\n    const indexToExcludeFrom = lastIndex - size + 1;\n    return ribbonItems.map((item, index) => {\n      if (index >= indexToExcludeFrom) {\n        return null;\n      }\n      const itemProps = item.props || item;\n      itemProps.direction = headerDirection;\n      itemProps.justifyContent = justifyContent;\n      return <RibbonItem key={`${dataElement}-${itemProps.dataElement}`} {...itemProps} />;\n    }).filter((item) => !!item);\n  }, [ribbonItems]);\n\n  const getArrowDirection = () => {\n    switch (headerPlacement) {\n      case 'top':\n        return 'down';\n      case 'bottom':\n        return 'up';\n      case 'left':\n        return 'right';\n      case 'right':\n        return 'left';\n    }\n  };\n\n  const renderDropdownItem = (item, getTranslatedDisplayValue) => {\n    const glyph = item.img;\n    const text = getTranslatedDisplayValue(item.label);\n    return (\n      <div className=\"Dropdown__item-object\">\n        {glyph &&\n          <Icon glyph={glyph} className={item.className || ''}/>\n        }\n        {(text) &&\n          <span className={'Dropdown__item-text'}>{text}</span>\n        }\n      </div>\n    );\n  };\n\n  const activeIndex = ribbonItems.findIndex((item) => item.toolbarGroup === activeCustomRibbon);\n  const lastIndex = ribbonItems.length - 1;\n\n  if (!isRibbonGroupDisabled && ribbonItems && ribbonItems.length) {\n    return (\n      <div ref={elementRef} className={'RibbonGroupContainer'} data-element={dataElement}\n        style={{ display: 'flex', flexDirection: headerDirection, justifyContent: justifyContent, flexGrow: grow }}>\n        <div\n          className={classNames({\n            'RibbonGroup': true,\n            'hidden': size >= MIN_SIZE,\n          })}\n          style={{\n            gap: `${itemsGap}px`,\n            flexDirection: headerDirection,\n          }}\n        >\n          {renderRibbonItems()}\n          <div\n            className={classNames({\n              'RibbonGroup__moreButton': true,\n              'hidden': size === 0,\n            })}\n          >\n            <ToggleElementButton\n              dataElement=\"moreRibbonsButton\"\n              toggleElement={FLYOUT_NAME}\n              title=\"action.more\"\n              img={activeIndex > lastIndex - size ? 'icon-tools-more-active' : 'icon-tools-more'}\n              className={classNames({\n                'hasActive': activeIndex > lastIndex - size\n              })}\n            />\n          </div>\n        </div>\n        <div\n          className={classNames({\n            'RibbonGroup__dropdown': true,\n            'hidden': size !== MIN_SIZE,\n          })}\n        >\n          <FlexDropdown\n            dataElement={`${dataElement}Dropdown`}\n            width={headerDirection === DIRECTION.COLUMN ? containerWidth : undefined}\n            height={headerDirection === DIRECTION.COLUMN ? DEFAULT_DROPDOWN_HEIGHT : undefined}\n            direction={headerDirection}\n            placement={headerPlacement}\n            items={validateItems(items)}\n            currentSelectionKey={activeCustomRibbon}\n            onClickItem={(customRibbon) => {\n              setActiveCustomRibbon(customRibbon);\n            }}\n            getDisplayValue={(item) => {\n              const index = items.findIndex((el) => el.label === item);\n              return items[index]?.toolbarGroup;\n            }}\n            getKey = {(item) => item['toolbarGroup']}\n            getTranslationLabel={(key) => getToolbarTranslationString(key, customHeadersAdditionalProperties)}\n            arrowDirection={getArrowDirection()}\n            renderItem={renderDropdownItem}\n            renderSelectedItem={renderDropdownItem}\n          />\n        </div>\n      </div>\n    );\n  }\n\n  return null;\n};\n\nRibbonGroup.propTypes = {\n  dataElement: PropTypes.string,\n  items: PropTypes.array,\n  overflowLabel: PropTypes.string,\n  gap: PropTypes.number,\n  headerDirection: PropTypes.string,\n};\n\nexport default React.memo(RibbonGroup);\n","import RibbonGroup from './RibbonGroup';\n\nexport default RibbonGroup;","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport ToggleElementButton from '../ToggleElementButton';\nimport CustomButton from '../CustomButton';\nimport { useTranslation } from 'react-i18next';\nimport './ZoomControls.scss';\n\nfunction ZoomControls(props) {\n  const {\n    setZoomHandler,\n    zoomValue,\n    zoomTo,\n    isZoomFlyoutMenuActive,\n    dataElement,\n    isActive,\n    onClick,\n    setFlyoutTriggerRef,\n    elementRef,\n    size,\n    onZoomInClicked,\n    onZoomOutClicked,\n    getCurrentZoom,\n  } = props;\n\n  const [t] = useTranslation();\n  const INPUT_WIDTH_MULTIPLIER = 8;\n\n  const isZoomValueValid = (zoomValue) => {\n    const regex = /^(\\d){0,4}$/;\n    return regex.test(zoomValue) || zoomValue === '';\n  };\n\n  const handleChange = (e) => {\n    if (isZoomValueValid(e.target.value)) {\n      setZoomHandler(e.target.value);\n    }\n  };\n\n  const handleKeyDown = (e) => {\n    if (e.key === 'Enter' && isZoomValueValid(e.target.value)) {\n      zoomTo(e.target.value / 100);\n    }\n  };\n\n  const onBlur = (e) => {\n    const zoom = getCurrentZoom();\n    if (e.target.value === zoom) {\n      return;\n    }\n    if (e.target.value === '' || isNaN(Number(e.target.value))) {\n      setZoomHandler(zoom);\n    } else {\n      setZoomHandler(Number(e.target.value).toString());\n      zoomTo(e.target.value / 100);\n    }\n  };\n\n  const inputWidth = zoomValue ? (zoomValue.length + 1) * INPUT_WIDTH_MULTIPLIER : 0;\n\n  return (\n    <div className={classNames('ZoomContainerWrapper', {\n      [`size${size}`]: true,\n    })} data-element={dataElement} ref={elementRef}>\n      {size === 0 && <>\n        <div className=\"ToggleZoomMenu\">\n          <div tabIndex={-1}\n            className={classNames({\n              ZoomContainer: true,\n              active: isActive,\n            })}\n          >\n            <div\n              className=\"ZoomText\"\n              onClick={() => onClick}\n              tabIndex={0}>\n              <input\n                type=\"text\"\n                className=\"textarea\"\n                value={zoomValue}\n                onChange={handleChange}\n                onBlur={onBlur}\n                onKeyDown={handleKeyDown}\n                tabIndex={-1}\n                style={{ width: inputWidth }}\n                aria-label={t('action.zoomSet')}\n              />\n              <span>%</span>\n            </div>\n            <ToggleElementButton\n              dataElement=\"zoom-toggle-button\"\n              className=\"zoomToggleButton\"\n              title={t('option.settings.zoomOptions')}\n              disabled={false}\n              img={`icon-chevron-${isZoomFlyoutMenuActive ? 'up' : 'down'}`}\n              toggleElement={`${dataElement}Flyout`}\n              tabIndex={-1}\n              setFlyoutTriggerRef={setFlyoutTriggerRef}\n            />\n          </div>\n        </div>\n        <CustomButton\n          img=\"icon-header-zoom-out-line\"\n          onClick={onZoomOutClicked}\n          title=\"action.zoomOut\"\n          dataElement=\"zoomOutButton\"\n          className=\"zoomButton\"\n        />\n        <CustomButton\n          img=\"icon-header-zoom-in-line\"\n          onClick={onZoomInClicked}\n          title=\"action.zoomIn\"\n          dataElement=\"zoomInButton\"\n          className=\"zoomButton\"\n        />\n      </>}\n      {size === 1 && <>\n        <ToggleElementButton\n          dataElement=\"zoom-toggle-button\"\n          className=\"zoomToggleButton\"\n          title={t('option.settings.zoomOptions')}\n          disabled={false}\n          img=\"icon-magnifying-glass\"\n          toggleElement={`${dataElement}Flyout`}\n          tabIndex={-1}\n          setFlyoutTriggerRef={setFlyoutTriggerRef}\n        />\n      </>}\n    </div>\n  );\n}\n\nZoomControls.propTypes = {\n  setZoomHandler: PropTypes.func.isRequired,\n  zoomValue: PropTypes.string.isRequired,\n  zoomTo: PropTypes.func.isRequired,\n  isZoomFlyoutMenuActive: PropTypes.bool.isRequired,\n  dataElement: PropTypes.string.isRequired,\n  isActive: PropTypes.bool,\n  onClick: PropTypes.func,\n  setFlyoutTriggerRef: PropTypes.func,\n  elementRef: PropTypes.object,\n  size: PropTypes.number,\n  onZoomInClicked: PropTypes.func,\n  onZoomOutClicked: PropTypes.func,\n  getCurrentZoom: PropTypes.func,\n};\n\nexport default ZoomControls;\n","import React, { useState, useEffect, useRef } from 'react';\nimport core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { zoomTo } from 'helpers/zoom';\nimport ZoomControls from './ZoomControls';\nimport sizeManager, { useSizeStore } from 'helpers/responsivenessHelper';\nimport { getZoomHandlers, getZoomFlyoutItems } from 'components/ModularComponents/ZoomControls/ZoomHelper';\n\nconst ZoomControlsContainer = ({ dataElement = 'zoom-container', headerDirection }) => {\n  const flyoutElement = `${dataElement}Flyout`;\n  const [zoomValue, setZoomValue] = useState('100');\n  const dispatch = useDispatch();\n  const elementRef = useRef();\n  const [isActive, isZoomFlyoutMenuActive] = useSelector((state) => [\n    selectors.isElementOpen(state, dataElement),\n    selectors.isElementOpen(state, flyoutElement),\n  ]);\n\n  const size = useSelector((state) => selectors.getCustomElementSize(state, dataElement));\n  useEffect(() => {\n    sizeManager[dataElement] = {\n      ...(sizeManager[dataElement] ? sizeManager[dataElement] : {}),\n      canGrow: size === 1,\n      canShrink: size === 0,\n      grow: () => {\n        dispatch(actions.setCustomElementSize(dataElement, 0));\n      },\n      shrink: () => {\n        dispatch(actions.setCustomElementSize(dataElement, 1));\n      },\n      size: size,\n    };\n  }, [size]);\n  useSizeStore(dataElement, size, elementRef, headerDirection);\n\n  useEffect(() => {\n    const onDocumentLoaded = () => setZoomValue(Math.ceil(core.getZoom() * 100).toString());\n    const onDocumentUnloaded = () => setZoomValue('100');\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    core.addEventListener('documentUnloaded', onDocumentUnloaded);\n\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n      core.removeEventListener('documentUnloaded', onDocumentUnloaded);\n    };\n  }, []);\n\n  useEffect(() => {\n    const onZoomUpdated = () => {\n      setZoomValue(Math.ceil(core.getZoom() * 100).toString());\n    };\n\n    core.addEventListener('zoomUpdated', onZoomUpdated);\n    return () => core.removeEventListener('zoomUpdated', onZoomUpdated);\n  }, [size]);\n\n  const onClickHandler = () => {\n    dispatch(actions.toggleElement('zoom-containerFlyout'));\n  };\n\n  // This is necessary because the button triggering the flyout menu is not the element we want to set as the trigger for positioning it\n  const setFlyoutTriggerRef = () => {\n    const dataElement = elementRef.current.getAttribute('data-element');\n    dispatch(actions.setFlyoutToggleElement(dataElement));\n  };\n\n  const [zoomOptionsList] = useSelector((state) => [\n    selectors.getZoomList(state),\n  ]);\n\n  const {\n    onZoomInClicked,\n    onZoomOutClicked,\n  } = getZoomHandlers(zoomOptionsList, dispatch, size, setZoomValue);\n\n  const getCurrentZoom = () => {\n    return Math.ceil(core.getZoom() * 100).toString();\n  };\n\n  useEffect(() => {\n    const zoomFlyoutMenu = {\n      dataElement: flyoutElement,\n      className: 'ZoomFlyoutMenu',\n      items: getZoomFlyoutItems(zoomOptionsList, dispatch, size, setZoomValue)\n    };\n    dispatch(actions.updateFlyout(flyoutElement, zoomFlyoutMenu));\n  }, [size]);\n\n  return (\n    <ZoomControls\n      size={size}\n      elementRef={elementRef}\n      getZoom={core.getZoom}\n      setZoomHandler={setZoomValue}\n      zoomValue={zoomValue}\n      zoomTo={zoomTo}\n      getCurrentZoom={getCurrentZoom}\n      onZoomInClicked={onZoomInClicked}\n      onZoomOutClicked={onZoomOutClicked}\n      isZoomFlyoutMenuActive={isZoomFlyoutMenuActive}\n      dataElement={dataElement}\n      isActive={isActive}\n      onClick={onClickHandler}\n      setFlyoutTriggerRef={setFlyoutTriggerRef} />\n  );\n};\n\nexport default ZoomControlsContainer;\n","import ZoomControlsContainer from './ZoomControlsContainer';\n\nexport default ZoomControlsContainer;\n","import React from 'react';\nimport { DIRECTION, JUSTIFY_CONTENT } from 'constants/customizationVariables';\nimport Icon from 'components/Icon';\n\nexport const isThereAvailableSpace = (itemsShown, parentRect, headerDirection, justification) => {\n  const firstItemRect = itemsShown[0]?.getBoundingClientRect();\n  const lastItemRect = itemsShown[itemsShown.length - 1]?.getBoundingClientRect();\n  const isHorizontalHeader = headerDirection === DIRECTION.ROW;\n\n  const lastItemEnd = isHorizontalHeader ? lastItemRect?.right : lastItemRect?.bottom;\n  const parentRectEnd = isHorizontalHeader ? parentRect?.right : parentRect?.bottom;\n  const firstItemStart = isHorizontalHeader ? firstItemRect?.left : firstItemRect?.top;\n  const parentRectStart = isHorizontalHeader ? parentRect?.left : parentRect?.top;\n\n  const availableSpace = justification !== JUSTIFY_CONTENT.END ? (parentRectEnd - lastItemEnd) : (firstItemStart - parentRectStart);\n\n  return availableSpace;\n};\n\nconst removeItemsFromArray = (itemsToRemove, oldArray) => {\n  const arrayBackup = [...oldArray];\n  itemsToRemove.forEach((item) => {\n    const index = oldArray.findIndex((element) => element.sortIndex === item.sortIndex);\n    arrayBackup.splice(index, 1);\n  });\n  return arrayBackup;\n};\n\nexport const getResponsiveItems = (itemsToChange, previousItems, isAdding) => {\n  if (isAdding) {\n    return [...previousItems, ...itemsToChange].sort((a, b) => a.sortIndex - b.sortIndex);\n  }\n  return removeItemsFromArray(itemsToChange, previousItems);\n};\n\nexport const getItemsToHide = (items, itemsDom, missingSpace, headerDirection) => {\n  let spaceToFree = missingSpace;\n  const allItems = [...items];\n  const itemsToHide = [];\n  while (spaceToFree <= 0 && allItems.length > 1) {\n    const lastItem = allItems.pop();\n    itemsToHide.push(lastItem);\n    const lastItemDom = Array.from(itemsDom).find((item) => item.children[0].getAttribute('data-element') === lastItem.dataElement);\n    const lastItemSpace = headerDirection === DIRECTION.ROW ? lastItemDom.getBoundingClientRect().width : lastItemDom.getBoundingClientRect().height;\n    spaceToFree += (lastItemSpace);\n  }\n  return itemsToHide;\n};\n\nexport const getIconDOMElement = (currentItem, allItems) => {\n  const areAllitemsWithoutIcons = allItems.every((item) => !item.icon && !item.img && !item.toolName);\n  const currentItemIconWithoutIcon = !currentItem.icon && !currentItem.img && !currentItem.toolName;\n  if (currentItemIconWithoutIcon && areAllitemsWithoutIcons) {\n    return null;\n  }\n\n  const iconElement = currentItem.icon ? currentItem.icon : currentItem.img;\n  const isBase64 = iconElement?.trim().startsWith('data:');\n\n  // if there is no file extension then assume that this is a glyph\n  const isGlyph =\n  iconElement && !isBase64 && (!iconElement.includes('.') || iconElement.startsWith('<svg'));\n\n  if (isGlyph) {\n    return <Icon className=\"menu-icon\" glyph={iconElement} />;\n  }\n  if (iconElement && !isGlyph) {\n    return <img className=\"menu-icon\" alt=\"Flyout item icon\" src={iconElement} />;\n  }\n  return <div className=\"menu-icon\"></div>;\n};\n","import React, { forwardRef, useEffect, useState } from 'react';\nimport '../../Button/Button.scss';\nimport './ToolButton.scss';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from 'components/Button';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport { mapToolNameToKey } from 'constants/map';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport getToolStyles from 'helpers/getToolStyles';\nimport getColor from 'helpers/getColor';\nimport core from 'core';\nimport defaultTool from 'constants/defaultTool';\nimport { shortcutAria } from 'helpers/hotkeysManager';\nimport DataElements from 'src/constants/dataElement';\nimport { getIconDOMElement } from '../Helpers/responsiveness-helper';\nimport FlyoutItemContainer from '../FlyoutItemContainer';\n\nconst { ToolNames } = window.Core.Tools;\n\nconst ToolButton = forwardRef((props, ref) => {\n  const {\n    title,\n    dataElement,\n    label,\n    img,\n    disabled,\n    className,\n    preset,\n    headerPlacement,\n    toolName,\n    isFlyoutItem = false,\n    groupedItem,\n    allFlyoutItems = [],\n  } = props;\n\n  const [\n    activeToolName,\n    iconColorKey,\n    toolButtonObject,\n    customOverrides,\n    // use this so that state gets updated when active tool styles change\n    activeToolStyles, // eslint-disable-line no-unused-vars\n    activeGroupedItems,\n    lastPickedToolForGroupedItems,\n    lastPickedToolAndGroup,\n    isSignatureListPanelOpen,\n    isRubberStampPanelOpen,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveToolName(state),\n      selectors.getIconColor(state, mapToolNameToKey(toolName)),\n      selectors.getToolButtonObject(state, toolName),\n      selectors.getCustomElementOverrides(state, selectors.getToolButtonDataElement(state, toolName)),\n      selectors.getActiveToolStyles(state),\n      selectors.getActiveGroupedItems(state),\n      selectors.getLastPickedToolForGroupedItems(state, groupedItem),\n      selectors.getLastPickedToolAndGroup(state),\n      selectors.isElementOpen(state, DataElements.SIGNATURE_LIST_PANEL),\n      selectors.isElementOpen(state, DataElements.RUBBER_STAMP_PANEL),\n    ],\n    shallowEqual,\n  );\n\n  const isActive = (toolName === ToolNames.SIGNATURE && isSignatureListPanelOpen) ||\n    (toolName === ToolNames.RUBBER_STAMP && isRubberStampPanelOpen) ||\n    activeToolName === toolName;\n\n  const dispatch = useDispatch();\n\n  const isToolInActiveGroupedItems = groupedItem && activeGroupedItems.includes(groupedItem);\n  const [isButtonActive, setIsButtonActive] = useState(isActive && (isToolInActiveGroupedItems || !groupedItem));\n\n  const isToolWithPanelAssociatedActive = (toolName, activeTool) => {\n    const isDefaultToolActive = activeTool === defaultTool;\n    const isActiveToolSameOfToolName = activeTool === toolName;\n    if (isDefaultToolActive || isActiveToolSameOfToolName) {\n      if (toolName === ToolNames.SIGNATURE) {\n        return isSignatureListPanelOpen;\n      }\n      if (toolName === ToolNames.RUBBER_STAMP) {\n        return isRubberStampPanelOpen;\n      }\n    }\n    return false;\n  };\n\n  const checkIfNeedsToOpenAPanel = (toolName) => {\n    if (toolName === ToolNames.SIGNATURE) {\n      dispatch(actions.openElement(DataElements.SIGNATURE_LIST_PANEL));\n    } else if (toolName === ToolNames.RUBBER_STAMP) {\n      dispatch(actions.openElement(DataElements.RUBBER_STAMP_PANEL));\n    }\n  };\n\n  useEffect(() => {\n    const handleToolModeChange = (tool) => {\n      // prevent edit tool from deactivating when text is hovered\n      const isEditToolAndItIsActive = toolName === ToolNames.EDIT && lastPickedToolAndGroup.tool === ToolNames.EDIT;\n      const isSignatureToolActive = isToolWithPanelAssociatedActive(toolName, tool.name);\n      const isRubberStampToolActive = isToolWithPanelAssociatedActive(toolName, tool.name);\n      const shouldActivateButton = tool.name === toolName || (isEditToolAndItIsActive && tool.name === ToolNames.TEXT_SELECT) || isSignatureToolActive || isRubberStampToolActive;\n\n      if (shouldActivateButton) {\n        setIsButtonActive(true);\n      } else {\n        setIsButtonActive(false);\n      }\n    };\n\n    core.addEventListener('toolModeUpdated', handleToolModeChange);\n    return () => {\n      core.removeEventListener('toolModeUpdated', handleToolModeChange);\n    };\n  }, [isSignatureListPanelOpen, isRubberStampPanelOpen]);\n\n  useEffect(() => {\n    const noActiveGroupedItems = !activeGroupedItems?.length;\n    const isLastPickedGroupUndefined = lastPickedToolAndGroup?.group?.every((group) => group === undefined);\n    const toolDoesNotBelongToAGroupAndIsActive = !groupedItem && isLastPickedGroupUndefined && toolName === lastPickedToolAndGroup.tool;\n    const toolBelongsToAGroupAndIsActive = groupedItem && lastPickedToolAndGroup?.group?.includes(groupedItem) &&\n      (toolName === lastPickedToolAndGroup?.tool);\n    const isDefaultToolActive = activeToolName === defaultTool && toolName === defaultTool;\n\n    if ((toolName === ToolNames.EDIT && noActiveGroupedItems) ||\n      toolDoesNotBelongToAGroupAndIsActive ||\n      toolBelongsToAGroupAndIsActive ||\n      isDefaultToolActive\n    ) {\n      setIsButtonActive(true);\n      if (lastPickedToolAndGroup?.tool !== activeToolName) {\n        core.setToolMode(toolName);\n        checkIfNeedsToOpenAPanel(toolName);\n      }\n    } else {\n      setIsButtonActive(false);\n    }\n  }, [activeGroupedItems, lastPickedToolForGroupedItems, lastPickedToolAndGroup]);\n\n  const setToolMode = (toolName) => {\n    dispatch(actions.setLastPickedToolAndGroup({\n      tool: toolName,\n      group: activeGroupedItems\n    }));\n    core.setToolMode(toolName === ToolNames.SIGNATURE || toolName === ToolNames.RUBBER_STAMP ? defaultTool : toolName);\n  };\n\n  const handleClick = () => {\n    if (groupedItem) {\n      // The tool can be in a grouped item and not be related to a ribbon, so we keep both\n      // grouped items active to not close the ribbon items\n      const combinedGroupedItems = new Set([...activeGroupedItems, groupedItem]);\n      const groupedItemsArray = Array.from(combinedGroupedItems);\n      dispatch(actions.setActiveGroupedItems(groupedItemsArray));\n    }\n\n    if (toolName !== ToolNames.EDIT) {\n      if (isButtonActive) {\n        dispatch(actions.setLastPickedToolForGroupedItems(groupedItem, ''));\n        setIsButtonActive(false);\n\n        if (toolName === ToolNames.SIGNATURE) {\n          dispatch(actions.closeElement(DataElements.SIGNATURE_LIST_PANEL));\n        } else if (toolName === ToolNames.RUBBER_STAMP) {\n          dispatch(actions.closeElement(DataElements.RUBBER_STAMP_PANEL));\n        }\n\n        setToolMode(defaultTool);\n      } else {\n        checkIfNeedsToOpenAPanel(toolName);\n        setToolMode(toolName);\n      }\n    } else {\n      if (!isButtonActive) {\n        activeGroupedItems.forEach((group) => {\n          if (group !== groupedItem) {\n            dispatch(actions.setLastPickedToolForGroupedItems(group, ''));\n          }\n        });\n        setToolMode(defaultTool);\n      }\n    }\n  };\n\n  const icon = img || toolButtonObject?.img;\n  const toolTipTitle = title || toolButtonObject?.title;\n  let color = '';\n  let fillColor = '';\n  let strokeColor = '';\n  const showColor = customOverrides?.showColor || toolButtonObject?.showColor;\n  if (showColor === 'always' || (showColor === 'active' && isButtonActive)) {\n    const toolStyles = getToolStyles(toolName);\n    color = toolStyles?.[iconColorKey]?.toHexString?.();\n    fillColor = getColor(toolStyles?.FillColor);\n    strokeColor = getColor(toolStyles?.StrokeColor);\n    if (toolName.indexOf(ToolNames.FREETEXT) > -1 && toolStyles?.StrokeThickness === 0) {\n      // transparent\n      strokeColor = 'ff000000';\n    }\n  }\n\n  let forceTooltipPosition;\n\n  if (['left', 'right'].includes(headerPlacement)) {\n    forceTooltipPosition = headerPlacement === 'left' ? 'right' : 'left';\n  }\n\n  if (isFlyoutItem) {\n    const shortcutKey = toolTipTitle ? toolTipTitle.slice(toolTipTitle.indexOf('.') + 1) : undefined;\n    const ariaKeyshortcuts = shortcutKey ? shortcutAria(shortcutKey) : undefined;\n    const displayTitle = label || toolTipTitle;\n    const icon = getIconDOMElement({ ...toolButtonObject }, allFlyoutItems);\n    const isActive = activeToolName === toolName;\n\n    return (\n      <FlyoutItemContainer {...props}\n        ref={ref}\n        onClick={handleClick}\n        label={displayTitle}\n        ariaKeyshortcuts={ariaKeyshortcuts}\n        icon={icon}\n        additionalClass={isActive ? 'active' : ''}\n      />\n    );\n  }\n\n  return (\n    <Button\n      className={classNames({\n        'ToolButton': true,\n        'Button': true,\n        [className]: className,\n        'confirm-button': preset === 'confirm',\n        'cancel-button': preset === 'cancel',\n        'button-with-label': label,\n      })}\n      img={icon}\n      label={label}\n      title={toolTipTitle}\n      dataElement={dataElement}\n      onClick={handleClick}\n      disabled={disabled}\n      forceTooltipPosition={forceTooltipPosition}\n      isActive={isButtonActive}\n      color={color}\n      fillColor={fillColor}\n      strokeColor={strokeColor}\n    />\n  );\n});\n\nToolButton.propTypes = {\n  dataElement: PropTypes.string,\n  title: PropTypes.string,\n  label: PropTypes.string,\n  img: PropTypes.string,\n  onClick: PropTypes.func,\n  disabled: PropTypes.bool,\n  groupedItem: PropTypes.string,\n  allFlyoutItems: PropTypes.array,\n};\nToolButton.displayName = 'ToolButton';\n\nexport default ToolButton;","import ToolButton from './ToolButton';\n\nexport default ToolButton;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CustomButton from '../CustomButton';\nimport ToggleElementButton from '../ToggleElementButton';\nimport { isMobileSize } from 'helpers/getDeviceSize';\nimport { DIRECTION } from 'constants/customizationVariables';\nimport { useTranslation } from 'react-i18next';\nimport './PageControls.scss';\n\nfunction PageControls(props) {\n  const {\n    size,\n    dataElement,\n    onFlyoutToggle,\n    leftChevron,\n    rightChevron,\n    currentPage,\n    totalPages,\n    elementRef,\n    headerDirection,\n    onBlur,\n    onFocus,\n    onClick,\n    onChange,\n    onSubmit,\n    isFocused,\n    input,\n    inputRef,\n    allowPageNavigation,\n  } = props;\n\n  const { t } = useTranslation();\n  const isMobile = isMobileSize();\n  let inputWidth = 0;\n  if (input) {\n    inputWidth = 26 + input.length * (isMobile ? 10 : 7);\n  }\n\n  const style = { width: inputWidth };\n  if (headerDirection === DIRECTION.COLUMN) {\n    style.minHeight = 32;\n  }\n\n  return (\n    <div className=\"PageControlsWrapper\"\n      data-element={dataElement}\n      style={{ flexDirection: headerDirection }}\n      ref={elementRef}>\n      {size === 0 && <>\n        <CustomButton {...leftChevron} />\n        <form\n          onClick={onClick}\n          onKeyDown={onClick}\n          onSubmit={onSubmit}\n          onBlur={onBlur}\n          onMouseOver={onBlur}\n          onFocus={onFocus}>\n          <input\n            aria-label={t('action.pageNumberInput')}\n            ref={inputRef}\n            className={classNames({\n              unfocused: !isFocused,\n            })}\n            type=\"text\"\n            value={input}\n            onChange={onChange}\n            disabled={!allowPageNavigation}\n            style={style}\n          />\n        </form>\n\n        <div className={classNames({\n          'total-page': true,\n          'paddingTop': headerDirection === DIRECTION.COLUMN,\n          'paddingLeft': headerDirection === DIRECTION.ROW,\n        })}>{totalPages}</div>\n        <CustomButton {...rightChevron} />\n      </>}\n      {size === 1 &&\n        <ToggleElementButton\n          dataElement=\"pageNav-toggle-button\"\n          className=\"PageNavToggleButton\"\n          title={t('action.more')}\n          disabled={false}\n          img={'icon-tools-more'}\n          toggleElement=\"pageNavFlyoutMenu\"\n          onFlyoutToggled={onFlyoutToggle}\n        />\n      }\n      <span className=\"visually-hidden\">\n        <output aria-live=\"assertive\">{t('action.currentPageIs')} {currentPage}</output>\n      </span>\n    </div>\n  );\n}\n\nPageControls.propTypes = {\n  size: PropTypes.number,\n  dataElement: PropTypes.string.isRequired,\n  onFlyoutToggle: PropTypes.func,\n  leftChevron: PropTypes.object,\n  rightChevron: PropTypes.object,\n  currentPage: PropTypes.number,\n  totalPages: PropTypes.number,\n  elementRef: PropTypes.any,\n  headerDirection: PropTypes.string,\n  onBlur: PropTypes.func,\n  onFocus: PropTypes.func,\n  onClick: PropTypes.func,\n  onChange: PropTypes.func,\n  onSubmit: PropTypes.func,\n  isFocused: PropTypes.bool,\n  input: PropTypes.string,\n  inputRef: PropTypes.any,\n  allowPageNavigation: PropTypes.bool,\n};\n\nexport default PageControls;","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport core from 'core';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport sizeManager from 'helpers/responsivenessHelper';\nimport PageControls from './PageControls';\nimport useDidUpdate from 'hooks/useDidUpdate';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { ITEM_TYPE, PLACEMENT } from 'constants/customizationVariables';\nimport { isIOS } from 'helpers/device';\nimport { isMobileSize } from 'helpers/getDeviceSize';\n\n\nconst PageControlsContainer = ({ dataElement = 'page-controls-container', headerPlacement, headerDirection }) => {\n  const [\n    currentFlyout,\n    size,\n    totalPages,\n    currentPage,\n    pageLabels,\n    allowPageNavigation,\n  ] = useSelector((state) => [\n    selectors.getFlyout(state, 'pageNavFlyoutMenu'),\n    selectors.getCustomElementSize(state, dataElement),\n    selectors.getTotalPages(state),\n    selectors.getCurrentPage(state),\n    selectors.getPageLabels(state),\n    selectors.getAllowPageNavigation(state),\n  ]);\n\n  const isMobile = isMobileSize();\n  const dispatch = useDispatch();\n  const { t } = useTranslation();\n  const [isFirstPage, setIsFirstPage] = useState(false);\n  const [isLastPage, setIsLastPage] = useState(false);\n  const [isFocused, setIsFocused] = useState(false);\n  const [input, setInput] = useState(pageLabels?.[currentPage - 1] ?? '');\n  const elementRef = useRef();\n  const inputRef = useRef();\n\n  useDidUpdate(() => {\n    if (pageLabels) {\n      setInput(pageLabels[currentPage - 1]);\n    }\n  }, [pageLabels, currentPage]);\n\n  useEffect(() => {\n    sizeManager[dataElement] = {\n      ...(sizeManager[dataElement] ? sizeManager[dataElement] : {}),\n      canGrow: size === 1,\n      canShrink: size === 0,\n      grow: () => {\n        dispatch(actions.setCustomElementSize(dataElement, 0));\n      },\n      shrink: () => {\n        dispatch(actions.setCustomElementSize(dataElement, 1));\n      },\n      size: size,\n    };\n    if (elementRef.current) {\n      sizeManager[dataElement].sizeToWidth = {\n        ...(sizeManager[dataElement].sizeToWidth ? sizeManager[dataElement].sizeToWidth : {}),\n        [size]: elementRef.current.clientWidth,\n      };\n      sizeManager[dataElement].sizeToHeight = {\n        ...(sizeManager[dataElement].sizeToHeight ? sizeManager[dataElement].sizeToHeight : {}),\n        [size]: elementRef.current.clientHeight,\n      };\n    }\n  }, [size]);\n\n  useEffect(() => {\n    let inputWidth = 0;\n    if (input) {\n      inputWidth = input.length * (isMobile ? 10 : 11.5);\n    }\n    const pageNavFlyoutMenu = {\n      dataElement: 'pageNavFlyoutMenu',\n      className: 'pageNavFlyoutMenu',\n      items: [{\n        dataElement: 'pageNavigationButton',\n        currentPage,\n        totalPages,\n        input,\n        label: 'pageNavigationButton',\n        inputWidth,\n        onClick: () => { },\n        onChange: onChange,\n        onSubmit: onSubmit,\n        onBlur: onBlur,\n        onFocus: onFocus,\n\n      }, leftChevron, rightChevron]\n    };\n\n    if (!currentFlyout && size === 1) {\n      dispatch(actions.addFlyout(pageNavFlyoutMenu));\n    } else if (size === 1) {\n      dispatch(actions.updateFlyout(pageNavFlyoutMenu.dataElement, pageNavFlyoutMenu));\n    } else if (currentFlyout && size === 0) {\n      dispatch(actions.removeFlyout(pageNavFlyoutMenu.dataElement));\n    }\n  }, [size, input, currentPage, totalPages]);\n\n  useEffect(() => {\n    dispatch(actions.disableElement('pageNavOverlay'));\n  }, []);\n\n  useDidUpdate(() => {\n    const documentViewer = core.getDocumentViewer();\n    setIsFirstPage(documentViewer.getCurrentPage() === 1);\n    setIsLastPage(documentViewer.getCurrentPage() === documentViewer.getPageCount());\n  }, [currentPage, totalPages]);\n\n  const leftChevron = {\n    onClick: () => {\n      const documentViewer = core.getDocumentViewer();\n      if (documentViewer.getCurrentPage() - 1 > 0) {\n        documentViewer.setCurrentPage(Math.max(documentViewer.getCurrentPage() - 1, 1));\n      }\n    },\n    dataElement: 'leftChevronBtn',\n    title: isFirstPage ? null : t('action.pagePrev'),\n    label: size === 1 ? t('action.pagePrev') : null,\n    headerPlacement,\n    img: headerPlacement === PLACEMENT.LEFT ? 'icon-chevron-up' : 'icon-chevron-left',\n    type: ITEM_TYPE.BUTTON,\n    disabled: isFirstPage,\n    ariaLabel: t('action.pagePrev'),\n  };\n\n  const rightChevron = {\n    onClick: () => {\n      const documentViewer = core.getDocumentViewer();\n      if (documentViewer.getCurrentPage() + 1 <= documentViewer.getPageCount()) {\n        documentViewer.setCurrentPage(Math.min(documentViewer.getCurrentPage() + 1, documentViewer.getPageCount()));\n      }\n    },\n    dataElement: 'rightChevronBtn',\n    title: isLastPage ? null : t('action.pageNext'),\n    label: size === 1 ? t('action.pageNext') : null,\n    headerPlacement,\n    img: headerPlacement === PLACEMENT.LEFT ? 'icon-chevron-down' : 'icon-chevron-right',\n    type: ITEM_TYPE.BUTTON,\n    disabled: isLastPage,\n    ariaLabel: t('action.pageNext'),\n  };\n\n  const onClick = () => {\n    if (isIOS) {\n      setTimeout(() => {\n        inputRef.current.setSelectionRange(0, 9999);\n      }, 0);\n    } else {\n      inputRef.current.select();\n    }\n  };\n\n  const onChange = (e) => {\n    if (!pageLabels?.some((p) => p.startsWith(e.target.value))) {\n      return;\n    }\n    setInput(e.target.value);\n  };\n\n  const onSubmit = (e) => {\n    e.preventDefault();\n\n    const isValidInput = input === '' || pageLabels.includes(input);\n    if (isValidInput) {\n      const pageToGo = pageLabels.indexOf(input) + 1;\n      core.setCurrentPage(pageToGo);\n    } else {\n      inputRef.current.blur();\n    }\n  };\n\n  const onBlur = () => {\n    setInput(pageLabels[currentPage - 1]);\n    setIsFocused(false);\n  };\n\n  const onFocus = () => setIsFocused(true);\n\n  const onFlyoutToggle = () => {\n    const dataElement = elementRef.current.getAttribute('data-element');\n    dispatch(actions.setFlyoutToggleElement(dataElement));\n  };\n\n  return (\n    <PageControls\n      size={size}\n      headerDirection={headerDirection}\n      elementRef={elementRef}\n      leftChevron={leftChevron}\n      rightChevron={rightChevron}\n      totalPages={totalPages}\n      currentPage={currentPage}\n      dataElement={dataElement}\n      onFlyoutToggle={onFlyoutToggle}\n      currentFlyout={currentFlyout}\n      onBlur={onBlur}\n      onFocus={onFocus}\n      onChange={onChange}\n      onClick={onClick}\n      onSubmit={onSubmit}\n      isFocused={isFocused}\n      input={input}\n      inputRef={inputRef}\n      allowPageNavigation={allowPageNavigation}\n    />\n  );\n};\n\nPageControlsContainer.propTypes = {\n  dataElement: PropTypes.string.isRequired,\n  headerPlacement: PropTypes.string,\n  headerDirection: PropTypes.string,\n};\n\nexport default PageControlsContainer;","import PageControlsContainer from './PageControlsContainer';\n\nexport default PageControlsContainer;","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport loadDocument from 'helpers/loadDocument';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport { PRESET_BUTTON_TYPES } from 'src/constants/customizationVariables';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that creates a new document.\n * @name newDocumentButton\n * @memberof UI.Components.PresetButton\n */\nconst NewDocumentButton = React.forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const isDisabled = !isOfficeEditorMode();\n  const dispatch = useDispatch();\n\n  if (isDisabled) {\n    if (isFlyoutItem) {\n      return null;\n    }\n    console.warn('The new document preset button is only available if the Office Editor mode is enabled.');\n  }\n\n  const handleNewDocumentClick = async () => {\n    loadDocument(dispatch, null, {\n      filename: 'Untitled.docx',\n      enableOfficeEditing: true\n    });\n  };\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleNewDocumentClick} />\n      :\n      getPresetButtonDOM(PRESET_BUTTON_TYPES.NEW_DOCUMENT, isDisabled, handleNewDocumentClick)\n  );\n});\n\nNewDocumentButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nNewDocumentButton.displayName = 'NewDocumentButton';\n\nexport default NewDocumentButton;","import React, { forwardRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport PropTypes from 'prop-types';\nimport openFilePicker from 'helpers/openFilePicker';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport DataElements from 'constants/dataElement';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that allows the opening of a file as the document in the UI.\n * @name filePickerButton\n * @memberof UI.Components.PresetButton\n */\nconst FilePickerButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const isDisabled = useSelector((state) => selectors.isElementDisabled(state, DataElements.FILE_PICKER_BUTTON));\n\n  if (isDisabled) {\n    if (isFlyoutItem) {\n      return null;\n    }\n    console.warn('The file picker preset button should be enabled with the enableFilePicker option in the WebViewer constructor.');\n  }\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={openFilePicker} />\n      :\n      getPresetButtonDOM(\n        PRESET_BUTTON_TYPES.FILE_PICKER,\n        isDisabled,\n        openFilePicker\n      )\n  );\n});\n\nFilePickerButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nFilePickerButton.displayName = 'FilePickerButton';\n\nexport default FilePickerButton;","import React, { forwardRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport PropTypes from 'prop-types';\nimport ActionButton from 'components/ActionButton';\nimport { menuItems } from '../../Helpers/menuItems';\nimport core from 'core';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that performs the undo action.\n * @name undoButton\n * @memberof UI.Components.PresetButton\n */\nconst UndoButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const { presetDataElement, icon, title } = menuItems.undoButton;\n  const activeDocumentViewerKey = useSelector((state) => selectors.getActiveDocumentViewerKey(state));\n  const canUndo = useSelector((state) => selectors.canUndo(state, activeDocumentViewerKey));\n  const disabled = !canUndo;\n\n  const handleClick = () => {\n    core.undo(activeDocumentViewerKey);\n  };\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleClick} disabled={disabled} />\n      : (\n        <ActionButton\n          className={'PresetButton undo-button'}\n          dataElement={presetDataElement}\n          title={title}\n          img={icon}\n          onClick={handleClick}\n          shouldPassActiveDocumentViewerKeyToOnClickHandler={true}\n          isNotClickableSelector={(state) => !state.viewer.canUndo[state.viewer.activeDocumentViewerKey]}\n        />\n      )\n  );\n});\n\nUndoButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nUndoButton.displayName = 'UndoButton';\n\nexport default UndoButton;","import React, { forwardRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport PropTypes from 'prop-types';\nimport ActionButton from 'components/ActionButton';\nimport { menuItems } from '../../Helpers/menuItems';\nimport core from 'core';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that performs the redo action.\n * @name redoButton\n * @memberof UI.Components.PresetButton\n */\nconst RedoButton = forwardRef((props, ref) => {\n  const { isFlyoutItem, dataElement } = props;\n  const { icon, title } = menuItems.redoButton;\n  const activeDocumentViewerKey = useSelector((state) => selectors.getActiveDocumentViewerKey(state));\n  const canRedo = useSelector((state) => selectors.canRedo(state, activeDocumentViewerKey));\n  const disabled = !canRedo;\n\n  const handleClick = () => {\n    core.redo(activeDocumentViewerKey);\n  };\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleClick} disabled={disabled} />\n      : (\n        <ActionButton\n          className={'PresetButton redo-button'}\n          dataElement={dataElement}\n          title={title}\n          img={icon}\n          onClick={handleClick}\n          shouldPassActiveDocumentViewerKeyToOnClickHandler={true}\n          isNotClickableSelector={(state) => !state.viewer.canRedo[state.viewer.activeDocumentViewerKey]}\n        />\n      )\n  );\n});\n\nRedoButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n  dataElement: PropTypes.string,\n};\nRedoButton.displayName = 'RedoButton';\n\nexport default RedoButton;","import React, { useState, useEffect, forwardRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\nimport downloadPdf from 'helpers/downloadPdf';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport core from 'core';\nimport { workerTypes } from 'constants/types';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that downloads the current document.\n * @name downloadButton\n * @memberof UI.Components.PresetButton\n */\nconst DownloadButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const [documentType, setDocumentType] = useState();\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    const onDocumentLoaded = () => {\n      const type = core.getDocument()?.getType();\n      setDocumentType(type);\n    };\n    onDocumentLoaded();\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n    };\n  }, []);\n\n  const isDisabled = documentType === workerTypes.XOD || isOfficeEditorMode();\n\n  if (isDisabled) {\n    if (isFlyoutItem) {\n      return null;\n    }\n    console.warn('The download preset button is not available for XOD documents or Office Editor mode.');\n  }\n\n  const handleClick = () => {\n    downloadPdf(dispatch);\n  };\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleClick} />\n      :\n      getPresetButtonDOM(\n        PRESET_BUTTON_TYPES.DOWNLOAD,\n        isDisabled,\n        handleClick)\n  );\n});\n\nDownloadButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nDownloadButton.displayName = 'DownloadButton';\n\nexport default DownloadButton;","import React, { forwardRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport toggleFullscreen from 'helpers/toggleFullscreen';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that toggles fullscreen mode.\n * @name fullscreenButton\n * @memberof UI.Components.PresetButton\n */\nconst FullScreenButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const isFullScreen = useSelector((state) => selectors.isFullScreen(state));\n  const label = isFullScreen ? 'action.exitFullscreen' : 'action.enterFullscreen';\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} label={label} ref={ref} onClick={toggleFullscreen} />\n      :\n      getPresetButtonDOM(PRESET_BUTTON_TYPES.FULLSCREEN, false, toggleFullscreen, isFullScreen)\n  );\n});\n\nFullScreenButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nFullScreenButton.displayName = 'FullScreenButton';\n\nexport default FullScreenButton;","import React, { useState, useEffect, forwardRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport { workerTypes } from 'constants/types';\nimport core from 'core';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport useFocusHandler from 'hooks/useFocusHandler';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that opens the save as modal.\n * @name saveAsButton\n * @memberof UI.Components.PresetButton\n */\nconst SaveAsButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const [documentType, setDocumentType] = useState();\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    const onDocumentLoaded = () => {\n      const type = core.getDocument()?.getType();\n      setDocumentType(type);\n    };\n    onDocumentLoaded();\n    core.addEventListener('documentLoaded', onDocumentLoaded);\n    return () => {\n      core.removeEventListener('documentLoaded', onDocumentLoaded);\n    };\n  }, []);\n\n  const handleClick = () => {\n    dispatch(actions.openElement(DataElements.SAVE_MODAL));\n  };\n\n  const handleSaveAsButtonClick = useFocusHandler(handleClick);\n\n  const isDisabled = documentType === workerTypes.XOD;\n\n  if (isDisabled) {\n    if (isFlyoutItem) {\n      return null;\n    }\n    console.warn('The save as preset button is not available for XOD documents.');\n  }\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleSaveAsButtonClick} />\n      :\n      getPresetButtonDOM(PRESET_BUTTON_TYPES.SAVE_AS, isDisabled, handleSaveAsButtonClick)\n  );\n});\n\nSaveAsButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nSaveAsButton.displayName = 'SaveAsButton';\n\nexport default SaveAsButton;","import React, { forwardRef } from 'react';\nimport { useDispatch, shallowEqual, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport { print } from 'helpers/print';\nimport selectors from 'selectors';\nimport core from 'core';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport useFocusHandler from 'hooks/useFocusHandler';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that prints the document.\n * @name printButton\n * @memberof UI.Components.PresetButton\n */\nconst PrintButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const dispatch = useDispatch();\n\n  const [\n    useClientSidePrint,\n    isEmbedPrintSupported,\n    sortStrategy,\n    colorMap,\n    timezone,\n  ] = useSelector(\n    (state) => [\n      selectors.useClientSidePrint(state),\n      selectors.isEmbedPrintSupported(state),\n      selectors.getSortStrategy(state),\n      selectors.getColorMap(state),\n      selectors.getTimezone(state),\n    ],\n    shallowEqual,\n  );\n\n  const handlePrint = () => {\n    print(dispatch, useClientSidePrint, isEmbedPrintSupported, sortStrategy, colorMap, { isGrayscale: core.getDocumentViewer().isGrayscaleModeEnabled(), timezone });\n  };\n\n  const handlePrintButtonClick = useFocusHandler(handlePrint);\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handlePrintButtonClick} />\n      :\n      getPresetButtonDOM(\n        PRESET_BUTTON_TYPES.PRINT,\n        false,\n        handlePrintButtonClick\n      )\n  );\n});\n\nPrintButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nPrintButton.displayName = 'PrintButton';\n\nexport default PrintButton;","import React, { forwardRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport core from 'core';\nimport { PRESET_BUTTON_TYPES } from 'src/constants/customizationVariables';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that opens the create portfolio modal.\n * @name createPortfolioButton\n * @memberof UI.Components.PresetButton\n */\nconst NewPortfolioButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const dispatch = useDispatch();\n\n  const isCreatePortfolioButtonEnabled = !useSelector((state) => selectors.isElementDisabled(state, DataElements.CREATE_PORTFOLIO_BUTTON)) && core.isFullPDFEnabled();\n\n  if (!isCreatePortfolioButtonEnabled) {\n    if (isFlyoutItem) {\n      return null;\n    }\n    console.warn('The create portfolio preset button is not available for non-full PDF mode.');\n  }\n\n  const handleCreatePortfolioButtonClick = () => {\n    dispatch(actions.openElement(DataElements.CREATE_PORTFOLIO_MODAL));\n  };\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleCreatePortfolioButtonClick} />\n      :\n      getPresetButtonDOM(PRESET_BUTTON_TYPES.CREATE_PORTFOLIO, !isCreatePortfolioButtonEnabled, handleCreatePortfolioButtonClick)\n  );\n});\n\nNewPortfolioButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nNewPortfolioButton.displayName = 'NewPortfolioButton';\n\nexport default NewPortfolioButton;","import React, { forwardRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport PropTypes from 'prop-types';\nimport { getPresetButtonDOM } from '../../Helpers/menuItems';\nimport DataElements from 'constants/dataElement';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport useFocusHandler from 'hooks/useFocusHandler';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that opens the settings modal.\n * @name settingsButton\n * @memberof UI.Components.PresetButton\n */\nconst SettingsButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const dispatch = useDispatch();\n\n  const handleSettingsButtonClick = () => {\n    dispatch(actions.openElement(DataElements.SETTINGS_MODAL));\n  };\n\n  const handleClickWithFocus = useFocusHandler(handleSettingsButtonClick);\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleClickWithFocus} />\n      :\n      getPresetButtonDOM(PRESET_BUTTON_TYPES.SETTINGS, false, handleClickWithFocus)\n  );\n});\n\nSettingsButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nSettingsButton.displayName = 'SettingsButton';\n\nexport default SettingsButton;","import React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ActionButton from 'components/ActionButton';\nimport { menuItems } from '../../Helpers/menuItems';\nimport core from 'core';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that toggles form field edit mode.\n * @name formFieldEditButton\n * @memberof UI.Components.PresetButton\n */\nconst FormFieldEditButton = forwardRef((props, ref) => {\n  const { isFlyoutItem, dataElement } = props;\n  const { icon, title } = menuItems.formFieldEditButton;\n\n  const handleClick = () => {\n    const formFieldCreationManager = core.getFormFieldCreationManager();\n    const isInFormFieldCreationMode = formFieldCreationManager.isInFormFieldCreationMode();\n    if (isInFormFieldCreationMode) {\n      formFieldCreationManager.endFormFieldCreationMode();\n    } else {\n      formFieldCreationManager.startFormFieldCreationMode();\n    }\n  };\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleClick} />\n      : (\n        <ActionButton\n          className={'PresetButton formFieldEditButton'}\n          dataElement={dataElement}\n          title={title}\n          img={icon}\n          onClick={handleClick}\n          isActive={core.getFormFieldCreationManager().isInFormFieldCreationMode()}\n        />\n      )\n  );\n});\n\nFormFieldEditButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n  dataElement: PropTypes.string,\n};\nFormFieldEditButton.displayName = 'FormFieldEditButton';\n\nexport default FormFieldEditButton;","import React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ActionButton from 'components/ActionButton';\nimport { menuItems } from '../../Helpers/menuItems';\nimport core from 'core';\nimport { useDispatch, useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\n\n/**\n * A button that toggles Content Edit Mode.\n * @name contentEditButton\n * @memberof UI.Components.PresetButton\n */\nconst ContentEditButton = forwardRef((props, ref) => {\n  const { isFlyoutItem } = props;\n  const { presetDataElement, icon, title } = menuItems.contentEditButton;\n  const areContentEditWorkersLoaded = useSelector((state) => selectors.areContentEditWorkersLoaded(state));\n  const dispatch = useDispatch();\n\n  const handleClick = () => {\n    const contentEditManager = core.getContentEditManager();\n    const beginContentEditMode = () => {\n      // loading modal for the delay when switching to content edit mode\n      // but only if the workers are not loaded\n      if (!areContentEditWorkersLoaded) {\n        dispatch(actions.openElement(DataElements.LOADING_MODAL));\n      }\n      dispatch(actions.openElement(DataElements.TEXT_EDITING_PANEL));\n      contentEditManager.startContentEditMode();\n    };\n    contentEditManager.isInContentEditMode() ? contentEditManager.endContentEditMode() : beginContentEditMode();\n  };\n\n  return (\n    isFlyoutItem ?\n      <FlyoutItemContainer {...props} ref={ref} onClick={handleClick} />\n      : (\n        <ActionButton\n          className={'PresetButton contentEditButton'}\n          dataElement={presetDataElement}\n          title={title}\n          img={icon}\n          onClick={handleClick}\n          isActive={core.getContentEditManager().isInContentEditMode()}\n        />\n      )\n  );\n});\n\nContentEditButton.propTypes = {\n  isFlyoutItem: PropTypes.bool,\n};\nContentEditButton.displayName = 'ContentEditButton';\n\nexport default ContentEditButton;","import React from 'react';\nimport ActionButton from 'components/ActionButton';\nimport core from 'core';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n  styleType: PropTypes.string.isRequired,\n};\n\nconst FontStyleToggleButton = ({\n  styleType,\n}) => {\n  const [\n    isActive,\n  ] = useSelector(\n    (state) => [\n      selectors.isStyleButtonActive(state, styleType),\n    ],\n    shallowEqual,\n  );\n\n  return (\n    <ActionButton\n      key='bold'\n      isActive={isActive}\n      onClick={() => {\n        core.getOfficeEditor().updateSelectionAndCursorStyle({ [styleType]: true });\n      }}\n      dataElement={`office-editor-${styleType}`}\n      title={`officeEditor.${styleType}`}\n      img={`icon-text-${styleType}`}\n    />\n  );\n};\n\nFontStyleToggleButton.propTypes = propTypes;\n\nexport default FontStyleToggleButton;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport classNames from 'classnames';\nimport core from 'core';\nimport ActionButton from 'components/ActionButton';\nimport Dropdown from 'components/Dropdown';\nimport {\n  LIST_OPTIONS,\n  OFFICE_BULLET_OPTIONS,\n  OFFICE_NUMBER_OPTIONS,\n} from 'src/constants/officeEditor';\nimport './ListToggleButton.scss';\n\nconst propTypes = {\n  listType: PropTypes.oneOf(Object.values(LIST_OPTIONS)).isRequired,\n};\n\nconst ListToggleButton = ({ listType }) => {\n  const [\n    activeListType,\n    customizableUI,\n  ] = useSelector(\n    (state) => [\n      selectors.isListToggleActive(state),\n      selectors.getFeatureFlags(state)?.customizableUI,\n    ],\n    shallowEqual,\n  );\n\n  const bulletListObjects = OFFICE_BULLET_OPTIONS.map((options) => ({\n    className: 'officeEditor-list-style-icon',\n    key: options.enum,\n    src: options.img\n  }));\n\n  const numberListOptions = OFFICE_NUMBER_OPTIONS.map((options) => ({\n    className: 'officeEditor-list-style-icon',\n    key: options.enum,\n    src: options.img\n  }));\n\n  const listTypeName = listType === LIST_OPTIONS.Unordered ? 'bullet' : listType === LIST_OPTIONS.Ordered && 'number';\n\n  return (\n    <div className={classNames({\n      'office-editor-number-list-wrapper': true,\n      'modular-ui': customizableUI,\n    })}>\n      <ActionButton\n        isActive={activeListType === listType}\n        dataElement={`office-editor-${listTypeName}-list`}\n        title={`officeEditor.${listTypeName}List`}\n        img={`icon-office-editor-${listTypeName}-list`}\n        className='list-style-button'\n        onClick={() => {\n          core.getOfficeEditor().toggleListSelection(LIST_OPTIONS.Unordered);\n        }}\n      />\n      <Dropdown\n        dataElement={`office-editor-${listTypeName}-list-dropdown`}\n        images={listTypeName === 'bullet' ? bulletListObjects : numberListOptions}\n        columns={3}\n        onClickItem={(val) => {\n          core.getOfficeEditor().setListPreset(val);\n        }}\n        className='list-style-dropdown'\n        translationPrefix={`officeEditor.${listTypeName}Dropdown`}\n        showLabelInList={true}\n      />\n    </div>\n  );\n};\n\nListToggleButton.propTypes = propTypes;\n\nexport default ListToggleButton;","import ListToggleButton from './ListToggleButton';\n\nexport default ListToggleButton;","import React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport './PresetButton.scss';\nimport NewDocumentButton from './buttons/NewDocument';\nimport FilePickerButton from './buttons/FilePicker';\nimport UndoButton from './buttons/Undo';\nimport RedoButton from './buttons/Redo';\nimport DownloadButton from './buttons/Download';\nimport FullScreenButton from './buttons/FullScreen';\nimport SaveAsButton from './buttons/SaveAs';\nimport PrintButton from './buttons/Print';\nimport NewPortfolioButton from './buttons/NewPortfolio';\nimport SettingsButton from './buttons/Settings';\nimport FormFieldEditButton from './buttons/FormFieldEdit';\nimport ContentEditButton from './buttons/ContentEdit';\n\nimport FontStyleToggleButton from './buttons/OfficeEditor/FontStyleToggleButton';\n\nimport { LIST_OPTIONS } from 'constants/officeEditor';\nimport ListToggleButton from '../OfficeEditor/ListToggleButton';\n\nconst PresetButton = forwardRef((props, ref) => {\n  const { buttonType } = props;\n\n  switch (buttonType) {\n    case PRESET_BUTTON_TYPES.UNDO:\n      return <UndoButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.REDO:\n      return <RedoButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.NEW_DOCUMENT:\n      return <NewDocumentButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.FILE_PICKER:\n      return <FilePickerButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.DOWNLOAD:\n      return <DownloadButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.FULLSCREEN:\n      return <FullScreenButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.SAVE_AS:\n      return <SaveAsButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.PRINT:\n      return <PrintButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.CREATE_PORTFOLIO:\n      return <NewPortfolioButton {...props} ref={ref}/>;\n    case PRESET_BUTTON_TYPES.SETTINGS:\n      return <SettingsButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.FORM_FIELD_EDIT:\n      return <FormFieldEditButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.CONTENT_EDIT:\n      return <ContentEditButton {...props} ref={ref} />;\n    case PRESET_BUTTON_TYPES.BOLD:\n      return <FontStyleToggleButton {...props} styleType=\"bold\" ref={ref} />;\n    case PRESET_BUTTON_TYPES.ITALIC:\n      return <FontStyleToggleButton {...props} styleType=\"italic\" ref={ref} />;\n    case PRESET_BUTTON_TYPES.UNDERLINE:\n      return <FontStyleToggleButton {...props} styleType=\"underline\" ref={ref} />;\n    case PRESET_BUTTON_TYPES.ORDERED_LIST:\n      return <ListToggleButton {...props} listType={LIST_OPTIONS.Ordered} ref={ref} />;\n    case PRESET_BUTTON_TYPES.UNORDERED_LIST:\n      return <ListToggleButton {...props} listType={LIST_OPTIONS.Unordered} ref={ref} />;\n    default:\n      console.warn(`${buttonType} is not a valid item type.`);\n      return null;\n  }\n});\n\nPresetButton.propTypes = {\n  buttonType: PropTypes.string.isRequired\n};\nPresetButton.displayName = 'PresetButton';\n\nexport default PresetButton;","import PresetButton from './PresetButton';\n\nexport default PresetButton;","import ViewControlsToggleButton from './ViewControlsToggleButton';\n\nexport default ViewControlsToggleButton;","import React from 'react';\nimport ToggleElementButton from '../ToggleElementButton';\n\nconst ViewControlsToggleButton = () => {\n  return (\n    <div>\n      <ToggleElementButton\n        dataElement=\"view-controls-toggle-button\"\n        className=\"viewControlsToggleButton\"\n        title=\"component.viewControlsOverlay\"\n        disabled={false}\n        img=\"icon-header-page-manipulation-line\"\n        toggleElement=\"viewControlsFlyout\"\n      />\n    </div>\n  );\n};\n\nexport default ViewControlsToggleButton;\n","import React from 'react';\nimport Dropdown from 'components/Dropdown';\nimport core from 'core';\nimport { DEFAULT_POINT_SIZE, FONT_SIZE, AVAILABLE_POINT_SIZES } from 'constants/officeEditor';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\n\nconst FontSizeDropdown = () => {\n  const [\n    pointSizeSelectionKey,\n  ] = useSelector(\n    (state) => [\n      selectors.getPointSizeSelectionKey(state),\n    ],\n    shallowEqual\n  );\n\n  return (\n    <Dropdown\n      className=\"text-left\"\n      items={AVAILABLE_POINT_SIZES}\n      onClickItem={(pointSize) => {\n        let fontPointSize = parseInt(pointSize, 10);\n\n        if (isNaN(fontPointSize)) {\n          fontPointSize = DEFAULT_POINT_SIZE;\n        }\n\n        if (fontPointSize > FONT_SIZE.MAX) {\n          fontPointSize = FONT_SIZE.MAX;\n        } else if (fontPointSize < FONT_SIZE.MIN) {\n          fontPointSize = FONT_SIZE.MIN;\n        }\n        core.getOfficeEditor().updateSelectionAndCursorStyle({ pointSize: fontPointSize });\n      }}\n      currentSelectionKey={pointSizeSelectionKey}\n      width={80}\n      dataElement=\"office-editor-font-size\"\n      hasInput\n      isSearchEnabled={false}\n      showLabelInList={true}\n      translationPrefix=\"officeEditor.fontSize\"\n    />\n  );\n};\n\nexport default FontSizeDropdown;","import FontSizeDropdown from './FontSizeDropdown';\n\nexport default FontSizeDropdown;","import React, { useEffect } from 'react';\nimport Dropdown from 'components/Dropdown';\nimport core from 'core';\nimport { useSelector, shallowEqual, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\n\nconst FontFaceDropdown = () => {\n  const dispatch = useDispatch();\n  const [\n    cursorProperties,\n    availableFontFaces,\n    cssFontValues,\n    currentFontFace,\n  ] = useSelector(\n    (state) => [\n      selectors.getOfficeEditorCursorProperties(state),\n      selectors.getAvailableFontFaces(state),\n      selectors.getCSSFontValues(state),\n      selectors.getCurrentFontFace(state),\n    ],\n    shallowEqual\n  );\n\n  useEffect(() => {\n    if (cursorProperties.fontFace && !availableFontFaces.includes(cursorProperties.fontFace)) {\n      dispatch(actions.addOfficeEditorAvailableFontFace(cursorProperties.fontFace));\n    }\n  }, [availableFontFaces, cursorProperties]);\n\n  return (\n    <Dropdown\n      className=\"text-left\"\n      items={availableFontFaces}\n      onClickItem={async (fontFace) => {\n        if (typeof fontFace === 'string') {\n          await core.getOfficeEditor().updateSelectionAndCursorStyle({ fontFace });\n        }\n      }}\n      getCustomItemStyle={(item) => ({ ...cssFontValues[item] })}\n      maxHeight={500}\n      customDataValidator={(font) => availableFontFaces.includes(font)}\n      width={160}\n      dataElement=\"office-editor-font\"\n      currentSelectionKey={currentFontFace}\n      hasInput\n      showLabelInList={true}\n      translationPrefix=\"officeEditor.fontFamily\"\n    />\n  );\n};\n\nexport default FontFaceDropdown;","import FontFaceDropdown from './FontFaceDropdown';\n\nexport default FontFaceDropdown;","import React from 'react';\nimport Dropdown from 'components/Dropdown';\nimport core from 'core';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport { AVAILABLE_STYLE_PRESET_MAP } from 'constants/officeEditor';\nimport { COMMON_COLORS } from 'constants/commonColors';\n\nconst StylePresetDropdown = () => {\n  const [\n    cursorStyleToPreset\n  ] = useSelector(\n    (state) => [\n      selectors.getCursorStyleToPreset(state, AVAILABLE_STYLE_PRESET_MAP, COMMON_COLORS),\n    ],\n    shallowEqual\n  );\n\n  return (\n    <Dropdown\n      className=\"text-left\"\n      items={Object.keys(AVAILABLE_STYLE_PRESET_MAP)}\n      onClickItem={async (item) => {\n        const stylePreset = AVAILABLE_STYLE_PRESET_MAP[item];\n        const fontPointSize = parseInt(stylePreset.fontSize, 10);\n        const fontColor = new window.Core.Annotations.Color(stylePreset.color);\n        const parsedFontColor = {\n          r: fontColor.R,\n          g: fontColor.G,\n          b: fontColor.B,\n          a: 255,\n        };\n\n        const newTextStyle = {\n          bold: false,\n          italic: false,\n          underline: false,\n          pointSize: fontPointSize,\n          color: parsedFontColor\n        };\n\n        await core.getOfficeEditor().updateParagraphStylePresets(newTextStyle);\n        await core.getOfficeEditor().setMainCursorStyle(newTextStyle);\n      }}\n      getCustomItemStyle={(item) => ({ ...AVAILABLE_STYLE_PRESET_MAP[item], padding: '20px 10px', color: null })}\n      applyCustomStyleToButton={false}\n      currentSelectionKey={cursorStyleToPreset}\n      width={160}\n      dataElement=\"office-editor-text-format\"\n      showLabelInList={true}\n      translationPrefix=\"officeEditor.fontStyles\"\n    />\n  );\n};\n\nexport default StylePresetDropdown;","import StylePresetDropdown from './StylePresetDropdown';\n\nexport default StylePresetDropdown;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport classNames from 'classnames';\nimport Dropdown from 'components/Dropdown';\nimport OfficeEditorCreateTablePopup from 'components/OfficeEditorCreateTablePopup';\nimport DataElement from 'constants/dataElement';\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\nimport './CreateTableDropdown.scss';\n\nconst TableButton = (isOpen) => {\n  return (\n    <>\n      <ActionButton\n        title='officeEditor.table'\n        img='ic-table'\n        isActive={isOpen}\n        label=\"officeEditor.table\"\n      />\n      <Icon className=\"arrow\" glyph={`icon-chevron-${isOpen ? 'up' : 'down'}`} />\n    </>\n  );\n};\n\nconst CreateTableDropdown = () => {\n  const customizableUI = useSelector((state) => selectors.getFeatureFlags(state)?.customizableUI);\n  return (\n    <Dropdown\n      dataElement={DataElement.OFFICE_EDITOR_TOOLS_HEADER_INSERT_TABLE}\n      className={classNames({\n        'insert-table-dropdown': true,\n        'modular-ui': customizableUI,\n      })}\n      displayButton={TableButton}\n      test={customizableUI.toString()}\n    >\n      <OfficeEditorCreateTablePopup />\n    </Dropdown>\n  );\n};\n\nexport default CreateTableDropdown;","import CreateTableDropdown from './CreateTableDropdown';\n\nexport default CreateTableDropdown;","import OfficeEditorModeDropdown from './OfficeEditorModeDropdown';\n\nexport default OfficeEditorModeDropdown;","import React from 'react';\nimport TrackChangeOverlay from 'src/components/TrackChangeOverlay';\nimport DataElements from 'constants/dataElement';\n\nconst OfficeEditorModeDropdown = () => {\n  return (\n    <TrackChangeOverlay dataElement={DataElements.TRACK_CHANGE_OVERLAY_BUTTON} />\n  );\n};\n\nexport default OfficeEditorModeDropdown;","import React from 'react';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\nimport CustomButton from '../CustomButton';\nimport StatefulButton from '../StatefulButton';\nimport GroupedItems from '../GroupedItems/GroupedItems';\nimport Divider from '../Divider';\nimport RibbonGroup from '../RibbonGroup';\nimport ToggleElementButton from '../ToggleElementButton';\nimport ZoomControls from '../ZoomControls';\nimport ToolButton from '../ToolButton';\nimport PageControls from '../PageControls';\nimport PresetButton from '../PresetButton';\nimport ViewControls from '../ViewControls';\nimport FontSizeDropdown from '../OfficeEditor/FontSizeDropdown';\nimport FontFaceDropdown from '../OfficeEditor/FontFaceDropdown';\nimport StylePresetDropdown from '../OfficeEditor/StylePresetDropdown';\nimport CreateTableDropdown from '../OfficeEditor/CreateTableDropdown';\nimport OfficeEditorModeDropdown from '../OfficeEditor/OfficeEditorModeDropdown';\n\nconst InnerItem = (props) => {\n  const { type, dataElement, headerDirection, headerPlacement } = props;\n  const key = `${type}-${dataElement}-${headerPlacement}`;\n\n  switch (type) {\n    case ITEM_TYPE.BUTTON:\n      return <CustomButton key={key} {...props} />;\n    case ITEM_TYPE.STATEFUL_BUTTON:\n      return <StatefulButton key={key} {...props} />;\n    case ITEM_TYPE.GROUPED_ITEMS:\n      return <GroupedItems key={key} {...props} headerDirection={headerDirection} />;\n    case ITEM_TYPE.RIBBON_ITEM:\n      console.warn(`${ITEM_TYPE.RIBBON_ITEM} needs to be added to a ${ITEM_TYPE.RIBBON_GROUP}`);\n    case ITEM_TYPE.DIVIDER:\n      return <Divider headerDirection={headerDirection} {...props} />;\n    case ITEM_TYPE.TOGGLE_BUTTON:\n      return <ToggleElementButton key={key} {...props} />;\n    case ITEM_TYPE.RIBBON_GROUP:\n      return <RibbonGroup key={key} {...props} />;\n    case ITEM_TYPE.ZOOM:\n      return <ZoomControls {...props} />;\n    case ITEM_TYPE.TOOL_BUTTON:\n      return <ToolButton key={key} {...props} />;\n    case ITEM_TYPE.PAGE_CONTROLS:\n      return <PageControls {...props} headerDirection={headerDirection} />;\n    case ITEM_TYPE.PRESET_BUTTON:\n      return <PresetButton key={key} {...props} />;\n    case ITEM_TYPE.VIEW_CONTROLS:\n      return <ViewControls key={key} {...props} />;\n    case ITEM_TYPE.FONT_SIZE_DROPDOWN:\n      return <FontSizeDropdown key={key} {...props} />;\n    case ITEM_TYPE.FONT_FACE_DROPDOWN:\n      return <FontFaceDropdown key={key} {...props} />;\n    case ITEM_TYPE.STYLE_PRESET_DROPDOWN:\n      return <StylePresetDropdown key={key} {...props} />;\n    case ITEM_TYPE.CREATE_TABLE_DROPDOWN:\n      return <CreateTableDropdown key={key} {...props} />;\n    case ITEM_TYPE.OFFICE_EDITOR_MODE_DROPDOWN:\n      return <OfficeEditorModeDropdown key={key}  {...props} />;\n    default:\n      console.warn(`${type} is not a valid item type.`);\n      return null;\n  }\n};\n\nexport default InnerItem;","import InnerItem from './InnerItem';\n\nexport default InnerItem;","import React, { useRef, useEffect } from 'react';\nimport throttle from 'lodash/throttle';\nimport { getCurrentFreeSpace, findItemToResize } from 'helpers/responsivenessHelper';\n\nconst propTypes = {};\n\nconst ResponsiveContainer = ({\n  headerDirection,\n  elementRef,\n  children,\n  items,\n  parent,\n}) => {\n  const lastCheckedFreeSpaceRef = useRef(null);\n  const isResizingRef = useRef(false);\n  const defaultLoopCounterState = { counter: 0, space: null };\n  const loopingCounterRef = useRef(defaultLoopCounterState);\n\n  const resizeResponsively = () => {\n    if (isResizingRef.current) {\n      return;\n    }\n    isResizingRef.current = true;\n    let freeSpace;\n    while (typeof freeSpace === 'undefined' || freeSpace !== lastCheckedFreeSpaceRef.current) {\n      try {\n        const propertyToCheck = headerDirection === 'column' ? 'height' : 'width';\n        const newSize = elementRef.current.getBoundingClientRect()[propertyToCheck];\n        if (newSize <= 0) {\n          break;\n        }\n        freeSpace = getCurrentFreeSpace(headerDirection, elementRef.current);\n        const itemToResizeFunc = findItemToResize(items, freeSpace, headerDirection, parent, elementRef.current);\n        if (itemToResizeFunc) {\n          // Prevent more than 3 loops with the same free space\n          if (loopingCounterRef.current.counter === 3) {\n            loopingCounterRef.current = defaultLoopCounterState;\n            break;\n          }\n          if (freeSpace && freeSpace === loopingCounterRef.current.space) {\n            loopingCounterRef.current.counter++;\n          } else {\n            loopingCounterRef.current = { counter: 1, space: freeSpace };\n          }\n          lastCheckedFreeSpaceRef.current = null;\n          itemToResizeFunc();\n        } else {\n          lastCheckedFreeSpaceRef.current = freeSpace;\n          loopingCounterRef.current = defaultLoopCounterState;\n        }\n      } catch (e) {\n        console.error(e);\n        break;\n      }\n    }\n    isResizingRef.current = false;\n  };\n\n  useEffect(() => {\n    if (!window.ResizeObserver) {\n      return console.error('Browser not support for header responsiveness');\n    }\n    const resizeFunction = throttle(resizeResponsively, 200, { trailing: true });\n    const resizeObserver = new ResizeObserver(resizeFunction);\n    resizeObserver.observe(elementRef.current);\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [items, elementRef, parent, headerDirection]);\n\n  useEffect(() => {\n    // Timeout to ensure component has properly been mutated into the dom before we try to fit elements\n    setTimeout(() => {\n      resizeResponsively();\n    }, 500);\n  }, []);\n\n  return (\n    <>\n      {children}\n    </>\n  );\n};\n\nResponsiveContainer.propTypes = propTypes;\n\nexport default ResponsiveContainer;","import ResponsiveContainer from './ResponsiveContainer';\n\nexport default ResponsiveContainer;","import React, { useEffect, useState, useRef } from 'react';\nimport './ModularHeaderItems.scss';\nimport InnerItem from '../ModularComponents/InnerItem';\nimport { PLACEMENT, DIRECTION, ITEM_TYPE } from 'constants/customizationVariables';\nimport ResponsiveContainer from 'components/ResponsiveContainer';\nimport { useSelector, useDispatch } from 'react-redux';\nimport sizeManager from 'helpers/responsivenessHelper';\nimport { itemToFlyout } from 'helpers/itemToFlyoutHelper';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport ToggleElementButton from 'components/ModularComponents/ToggleElementButton';\n\nconst ModularHeaderItems = (props) => {\n  const dispatch = useDispatch();\n  const { placement, gap, items, justifyContent, className = '', maxWidth, maxHeight, headerId } = props;\n  const [itemsGap, setItemsGap] = useState(gap);\n  const elementRef = useRef();\n\n  useEffect(() => {\n    setItemsGap(gap);\n  }, [gap]);\n\n  const flyoutDataElement = `${headerId}Flyout`;\n  const size = useSelector((state) => selectors.getCustomElementSize(state, headerId));\n  useEffect(() => {\n    sizeManager[headerId] = {\n      ...(sizeManager[headerId] ? sizeManager[headerId] : {}),\n      canGrow: size > 0,\n      canShrink: size < items.length,\n      grow: () => {\n        const newSize = size - 1;\n        dispatch(actions.setCustomElementSize(headerId, newSize < 0 ? 0 : newSize));\n      },\n      shrink: () => {\n        dispatch(actions.setCustomElementSize(headerId, size + 1));\n      },\n      size: size,\n    };\n  }, [size, items]);\n\n  useEffect(() => {\n    const flyout = {\n      dataElement: flyoutDataElement,\n      className: 'GroupedItemsFlyout',\n      items: [],\n    };\n\n    if (size > 0) {\n      const indexToExclude = items.length - size;\n      for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n        if (i < indexToExclude) {\n          continue;\n        }\n        const flyoutItem = itemToFlyout(item);\n        if (flyoutItem) {\n          flyout.items.push(flyoutItem);\n        }\n      }\n    }\n\n    dispatch(actions.updateFlyout(flyoutDataElement, flyout));\n  }, [size, items.length]);\n\n  const headerDirection = [PLACEMENT.LEFT, PLACEMENT.RIGHT].includes(placement) ? DIRECTION.COLUMN : DIRECTION.ROW;\n\n  const headerItems = items?.map((item, index) => {\n    const hasToShrink = size > 0;\n    const indexesToExclude = items.length - size;\n    const isLastIndexAndDivider = index === indexesToExclude - 1 && item.type === ITEM_TYPE.DIVIDER;\n    const shouldExcludeIndex = index >= indexesToExclude || isLastIndexAndDivider;\n    if (hasToShrink && shouldExcludeIndex) {\n      return null;\n    }\n    /**\n     * We can think on a better solution later, but this is necessary\n     * because the user can either instantiate a CustomButton and add it\n     * to the header or add the plain object.\n     */\n    let itemProps = item.props || item;\n    itemProps = { headerPlacement: placement, justifyContent: justifyContent, ...itemProps };\n    const { type, dataElement } = itemProps;\n    const key = `${type}-${dataElement || index}-wrapper-${index}`;\n    return <InnerItem key={key} {...itemProps} headerDirection={headerDirection} />;\n  });\n\n  return (\n    <div className={`ModularHeaderItems ${className}`}\n      ref={elementRef}\n      style={{\n        gap: `${itemsGap}px`,\n        flexDirection: headerDirection,\n        justifyContent: justifyContent,\n        maxWidth: `${maxWidth}px`,\n        maxHeight: `${maxHeight}px`,\n      }}>\n      <ResponsiveContainer headerDirection={headerDirection} elementRef={elementRef} parent={headerId} items={items}>\n        {headerItems}\n      </ResponsiveContainer>\n      {size > 0 &&\n        <ToggleElementButton\n          dataElement={`${flyoutDataElement}Toggle`}\n          toggleElement={flyoutDataElement}\n          title=\"action.more\"\n          img=\"icon-double-chevron-down\" />\n      }\n    </div>\n  );\n};\n\nexport default ModularHeaderItems;","import ModularHeaderItems from './ModularHeaderItems';\n\nexport default ModularHeaderItems;","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { JUSTIFY_CONTENT, PLACEMENT, DEFAULT_GAP } from 'constants/customizationVariables';\nimport ModularHeaderItems from '../../ModularHeaderItems';\nimport './ModularHeader.scss';\nimport DataElementWrapper from 'src/components/DataElementWrapper';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst ModularHeader = React.forwardRef((props, ref) => {\n  const { dataElement,\n    placement,\n    position = '', // This is to be used for floating headers\n    items = [],\n    gap = DEFAULT_GAP,\n    justifyContent = JUSTIFY_CONTENT.START,\n    style,\n    autoHide = true,\n    stroke,\n  } = props;\n\n  const [\n    isDisabled,\n  ] = useSelector((state) => [\n    selectors.isElementDisabled(state, dataElement),\n  ]);\n\n  const [canRemoveItems, setCanRemoveItems] = useState(items.length);\n  const key = `${dataElement}-${placement}`;\n\n  let isClosed = false;\n  if (!autoHide) {\n    isClosed = false;\n  } else if (!items.length) {\n    isClosed = true;\n  }\n\n  let originalItems = [];\n  if (canRemoveItems) {\n    originalItems = items;\n  }\n\n  useEffect(() => {\n    setCanRemoveItems(!isClosed);\n  }, [isClosed]);\n\n  if (isDisabled) {\n    return null;\n  }\n\n  return (\n    <DataElementWrapper\n      className={classNames({\n        'ModularHeader': true,\n        'closed': isClosed,\n        'TopHeader': placement === PLACEMENT.TOP,\n        'BottomHeader': placement === PLACEMENT.BOTTOM,\n        'LeftHeader': placement === PLACEMENT.LEFT,\n        'RightHeader': placement === PLACEMENT.RIGHT,\n        'stroke': stroke\n      }, `${position}`)}\n      data-element={dataElement}\n      style={style}\n      key={key}\n      ref={ref}\n      // onTransitionEnd={() => {\n      //   setCanRemoveItems(!isClosed);\n      //   setApplyAnimation(isClosed);\n      // }}\n    >\n      <ModularHeaderItems\n        className={classNames({ 'closed': isClosed })}\n        items={originalItems}\n        headerId={dataElement}\n        gap={gap}\n        placement={placement}\n        justifyContent={justifyContent}\n        parentRef={ref}\n      />\n    </DataElementWrapper>\n  );\n});\n\nModularHeader.propTypes = {\n  dataElement: PropTypes.string,\n  placement: PropTypes.string,\n  position: PropTypes.string,\n  items: PropTypes.array,\n  gap: PropTypes.number,\n  justifyContent: PropTypes.string,\n};\n\nModularHeader.displayName = 'ModularHeader';\n\nexport default React.memo(ModularHeader);\n","import React from 'react';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport ModularHeader from './ModularHeader';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\nconst ModularHeaderContainer = React.forwardRef((props, ref) => {\n  const { items } = props;\n\n  const [\n    activeGroupedItems,\n    fixedGroupedItems\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveGroupedItems(state),\n      selectors.getFixedGroupedItems(state),\n    ],\n    shallowEqual\n  );\n\n  // We memoize the items to avoid unneeded re-renders\n  const memoizedItems = React.useMemo(() => {\n    return items?.filter((item) => {\n      const itemProps = item.props || item;\n      if (itemProps.type === ITEM_TYPE.GROUPED_ITEMS && !itemProps.alwaysVisible) {\n        if (activeGroupedItems.length || fixedGroupedItems.length) {\n          return activeGroupedItems.includes(itemProps.dataElement) || fixedGroupedItems.includes(itemProps.dataElement);\n        }\n        return false;\n      }\n      return true;\n    });\n  }, [items, activeGroupedItems, fixedGroupedItems]);\n\n  return <ModularHeader ref={ref} {...props} items={memoizedItems} />;\n});\n\nModularHeaderContainer.displayName = 'ModularHeaderContainer';\n\nexport default ModularHeaderContainer;","import ModularHeaderContainer from './ModularHeaderContainer';\n\nexport default ModularHeaderContainer;\n","import useFloatingHeaderSelectors from './useFloatingHeaderSelectors';\n\nexport default useFloatingHeaderSelectors;","import { useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nconst useFloatingHeaderSelectors = () => {\n  return useSelector((state) => ({\n    isLeftPanelOpen: selectors.isLeftPanelOpen(state),\n    isRightPanelOpen: selectors.isRightPanelOpen(state),\n    leftPanelWidth: selectors.getLeftPanelWidthWithResizeBar(state),\n    rightPanelWidth: selectors.getOpenRightPanelWidth(state),\n    leftHeaderWidth: selectors.getActiveLeftHeaderWidth(state),\n    rightHeaderWidth: selectors.getActiveRightHeaderWidth(state),\n    topHeadersHeight: selectors.getTopHeadersHeight(state),\n    bottomHeadersHeight: selectors.getBottomHeadersHeight(state),\n    topFloatingContainerHeight: selectors.getTopFloatingContainerHeight(state),\n    bottomFloatingContainerHeight: selectors.getBottomFloatingContainerHeight(state),\n    topStartFloatingHeaders: selectors.getTopStartFloatingHeaders(state),\n    bottomStartFloatingHeaders: selectors.getBottomStartFloatingHeaders(state),\n    bottomEndFloatingHeaders: selectors.getBottomEndFloatingHeaders(state),\n    topEndFloatingHeaders: selectors.getTopEndFloatingHeaders(state),\n  }));\n};\n\nexport default useFloatingHeaderSelectors;","import React, { useEffect, useState } from 'react';\nimport './FloatingHeader.scss';\nimport classNames from 'classnames';\nimport ModularHeaderItems from 'components/ModularHeaderItems';\nimport DataElementWrapper from 'components/DataElementWrapper';\nimport { DEFAULT_GAP, OPACITY_LEVELS, OPACITY_MODES, PLACEMENT } from 'constants/customizationVariables';\nimport core from 'core';\nimport debounce from 'lodash/debounce';\n\nconst HIDE_FLOATING_HEADER_TIMEOUT = 4000;\nconst FloatingHeader = (props) => {\n  const { dataElement,\n    placement,\n    items = [],\n    gap = DEFAULT_GAP,\n    opacityMode = OPACITY_MODES.STATIC,\n    opacity = OPACITY_LEVELS.FULL,\n    maxWidth,\n    maxHeight,\n    style,\n  } = props;\n\n  const [isVisible, setIsVisible] = useState(false);\n  const scrollViewContainer = core.getScrollViewElement();\n\n  useEffect(() => {\n    const hideFloatingHeader = debounce(() => {\n      setIsVisible(false);\n    }, HIDE_FLOATING_HEADER_TIMEOUT);\n\n    const handleScroll = () => {\n      if (opacityMode === OPACITY_MODES.DYANMIC) {\n        setIsVisible(true);\n        hideFloatingHeader();\n      }\n    };\n\n    if (opacityMode === OPACITY_MODES.DYANMIC) {\n      scrollViewContainer.addEventListener('scroll', handleScroll);\n    }\n\n    return () => scrollViewContainer.removeEventListener('scroll', handleScroll);\n  }, [opacityMode]);\n\n  const className = classNames(\n    'FloatingHeader',\n    `opacity-${opacity}`,\n    `opacity-mode-${opacityMode}`,\n    'stroke',\n    {\n      isVisible,\n      'VerticalHeader': placement === PLACEMENT.LEFT || placement === PLACEMENT.RIGHT,\n    },\n  );\n\n  return (\n    <DataElementWrapper\n      dataElement={dataElement}\n      style={style}\n      className={className}>\n      <ModularHeaderItems\n        items={items}\n        gap={gap}\n        headerId={dataElement}\n        placement={placement}\n        maxWidth={maxWidth}\n        maxHeight={maxHeight} />\n    </DataElementWrapper >\n  );\n};\n\nexport default FloatingHeader;","import React, { useMemo } from 'react';\nimport useFloatingHeaderSelectors from 'hooks/useFloatingHeaderSelectors';\nimport FloatingHeader from './FloatingHeader';\nimport './FloatingHeader.scss';\nimport classNames from 'classnames';\nimport { PLACEMENT, POSITION, DEFAULT_GAP } from 'src/constants/customizationVariables';\n\nconst FloatSection = ({ position, isVertical, children, gap = DEFAULT_GAP }) => {\n  const className = classNames('FloatSection', position, { 'vertical': isVertical });\n  return (\n    <div className={className} style={{ gap: `${gap}px` }}>\n      {children}\n    </div>\n  );\n};\n\nconst FloatingHeaderContainer = React.forwardRef((props, ref) => {\n  const { floatingHeaders, placement } = props;\n  const isHorizontalHeader = [PLACEMENT.TOP, PLACEMENT.BOTTOM].includes(placement);\n  const selectors = useFloatingHeaderSelectors();\n\n  const style = useMemo(() => computeFloatContainerStyle({\n    ...selectors,\n    isHorizontalHeader,\n    placement,\n  }), [selectors, isHorizontalHeader, placement]);\n\n  const renderHeaders = (headers, positionPrefix) => (\n    <FloatSection position={`${positionPrefix}__${placement}`} isVertical={!isHorizontalHeader}>\n      {headers.map((header) => <FloatingHeader {...header} key={header.dataElement} />)}\n    </FloatSection>\n  );\n\n  return (\n    <div\n      className={classNames('FloatingHeaderContainer', placement, { 'vertical': !isHorizontalHeader })}\n      style={style}\n      ref={ref}\n    >\n      {renderHeaders(floatingHeaders.filter((h) => h.position === POSITION.START), POSITION.START)}\n      {renderHeaders(floatingHeaders.filter((h) => h.position === POSITION.CENTER), POSITION.CENTER)}\n      {renderHeaders(floatingHeaders.filter((h) => h.position === POSITION.END), POSITION.END)}\n    </div>\n  );\n});\n\nFloatingHeaderContainer.displayName = 'FloatingHeaderContainer';\n\nfunction computeFloatContainerStyle(params) {\n  const {\n    isLeftPanelOpen,\n    leftPanelWidth,\n    isRightPanelOpen,\n    rightPanelWidth,\n    leftHeaderWidth,\n    rightHeaderWidth,\n    isHorizontalHeader,\n    topFloatingContainerHeight,\n    bottomFloatingContainerHeight,\n    topStartFloatingHeaders,\n    bottomStartFloatingHeaders,\n    topHeadersHeight,\n    bottomHeadersHeight,\n    bottomEndFloatingHeaders,\n    topEndFloatingHeaders,\n    placement\n  } = params;\n\n  const styles = {};\n  const verticalHeaderWidth = rightHeaderWidth + leftHeaderWidth;\n  let panelsWidth = 0;\n  let leftOffset = leftHeaderWidth;\n\n  if (isLeftPanelOpen) {\n    panelsWidth += leftPanelWidth;\n    leftOffset += leftPanelWidth;\n  }\n  if (isRightPanelOpen) {\n    panelsWidth += rightPanelWidth;\n  }\n\n  if (leftOffset !== 0) {\n    styles.transform = `translate(${leftOffset}px, 0px)`;\n  }\n  if (placement === PLACEMENT.RIGHT) {\n    styles.transform = 'translate(-48px, 0px)';\n  }\n  if (isHorizontalHeader && (panelsWidth || verticalHeaderWidth)) {\n    styles.width = `calc(100% - ${panelsWidth + verticalHeaderWidth}px)`;\n  }\n  if (!isHorizontalHeader) {\n    // if it is the left float header, and there are no top start floating headers, then we can take the full height\n    // otherwise the height must accotun for the floating header container\n    let topFloatingHeaderOffset = 0;\n    let bottomFloatingHeaderOffset = 0;\n\n    if (placement === PLACEMENT.LEFT) {\n      topFloatingHeaderOffset = topStartFloatingHeaders.length === 0 ? 0 : topFloatingContainerHeight;\n      bottomFloatingHeaderOffset = bottomStartFloatingHeaders.length === 0 ? 0 : bottomFloatingContainerHeight;\n    }\n\n    if (placement === PLACEMENT.RIGHT) {\n      topFloatingHeaderOffset = topEndFloatingHeaders.length === 0 ? 0 : topFloatingContainerHeight;\n      bottomFloatingHeaderOffset = bottomEndFloatingHeaders.length === 0 ? 0 : bottomFloatingContainerHeight;\n    }\n\n    styles.height = `calc(100% - ${topHeadersHeight + bottomHeadersHeight + topFloatingHeaderOffset + bottomFloatingHeaderOffset}px)`;\n    if (topFloatingHeaderOffset) {\n      styles.marginTop = `${topFloatingContainerHeight}px`;\n      styles.paddingTop = '0px';\n    }\n    if (bottomFloatingHeaderOffset) {\n      styles.paddingBottom = '0px';\n    }\n  }\n\n  return styles;\n}\n\nexport default FloatingHeaderContainer;","import FloatingHeaderContainer from './FloatingHeaderContainer';\n\nexport default FloatingHeaderContainer;","import React, { useMemo, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport ModularHeader from 'components/ModularComponents/ModularHeader';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport './LeftHeader.scss';\nimport { PLACEMENT } from 'constants/customizationVariables';\n\nfunction LeftHeaderContainer() {\n  const [\n    featureFlags,\n    leftPanelOpen,\n    leftPanelWidth,\n    leftHeaders,\n    bottomHeadersHeight,\n  ] = useSelector(\n    (state) => {\n      const genericLeftPanelOpen = selectors.getOpenGenericPanel(state, PLACEMENT.LEFT);\n      return [\n        selectors.getFeatureFlags(state),\n        genericLeftPanelOpen,\n        selectors.getPanelWidth(state, genericLeftPanelOpen),\n        selectors.getLeftHeader(state),\n        selectors.getBottomHeadersHeight(state),\n      ];\n    });\n\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n  const floatingHeaders = leftHeaders.filter((header) => header.float);\n  const fullLengthHeaders = leftHeaders.filter((header) => !header.float);\n  if (fullLengthHeaders.length > 1) {\n    console.warn(`Left headers only support one full length header but ${fullLengthHeaders.length} were added. Only the first one will be rendered.`);\n  }\n\n  const leftHeader = fullLengthHeaders[0];\n  const userDefinedStyle = leftHeader ? leftHeader.style : {};\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.width !== null) {\n      dispatch(actions.setLeftHeaderWidth(dimensions.width));\n    }\n  }, [dimensions]);\n\n  let style = useMemo(() => {\n    const styleObject = {};\n    if (leftPanelOpen) {\n      styleObject['transform'] = `translateX(${leftPanelWidth}px)`;\n    }\n    if (bottomHeadersHeight !== 0) {\n      styleObject['height'] = `calc(100% - ${bottomHeadersHeight}px)`;\n    }\n    return styleObject;\n  }, [leftPanelOpen, leftPanelWidth, bottomHeadersHeight]);\n\n\n  style = Object.assign({}, style, userDefinedStyle);\n\n  if (customizableUI) {\n    const renderLeftHeader = () => {\n      if (leftHeader) {\n        const { dataElement } = leftHeader;\n        return (<ModularHeader ref={elementRef} {...leftHeader} key={dataElement} style={style} />);\n      }\n    };\n\n    return (\n      <>\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.LEFT} />\n        {renderLeftHeader()}\n      </>\n    );\n  }\n  return null;\n}\n\nexport default LeftHeaderContainer;","import LeftHeaderContainer from './LeftHeaderContainer';\n\nexport default LeftHeaderContainer;","import React, { useMemo, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport './RightHeader.scss';\nimport ModularHeader from 'components/ModularComponents/ModularHeader';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport { PLACEMENT } from 'constants/customizationVariables';\n\nfunction RightHeaderContainer() {\n  const [\n    featureFlags,\n    rightHeaders,\n    bottomHeadersHeight,\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n      selectors.getRightHeader(state),\n      selectors.getBottomHeadersHeight(state),\n    ]);\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n  const floatingHeaders = rightHeaders.filter((header) => header.float);\n  const fullLengthHeaders = rightHeaders.filter((header) => !header.float);\n  if (fullLengthHeaders.length > 1) {\n    console.warn(`Right headers only support one full length header but ${fullLengthHeaders.length} were added. Only the first one will be rendered.`);\n  }\n\n  const rightHeader = fullLengthHeaders[0];\n  const userDefinedStyle = rightHeader ? rightHeader.style : {};\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.width !== null) {\n      dispatch(actions.setRightHeaderWidth(dimensions.width));\n    }\n  }, [dimensions]);\n\n  // Memoize this since the ModularHeader is memoized, and we only want to re-render if the style actually changes\n  let style = useMemo(() => {\n    const styleObject = {};\n    if (bottomHeadersHeight !== 0) {\n      styleObject['height'] = `calc(100% - ${bottomHeadersHeight}px)`;\n    }\n    return styleObject;\n  }, [bottomHeadersHeight]);\n  style = Object.assign({}, style, userDefinedStyle);\n\n  if (customizableUI) {\n    const renderRightHeader = () => {\n      if (rightHeader) {\n        const { dataElement } = rightHeader;\n        return (<ModularHeader ref={elementRef} {...rightHeader} key={dataElement} style={style} />);\n      }\n    };\n    return (\n      <div>\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.RIGHT} />\n        {renderRightHeader()}\n      </div>\n    );\n  }\n  return null;\n}\n\nexport default RightHeaderContainer;","import RightHeaderContainer from './RightHeaderContainer';\n\nexport default RightHeaderContainer;","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport './BottomHeader.scss';\nimport ModularHeader from 'components/ModularComponents/ModularHeader';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport DataElementWrapper from '../../DataElementWrapper';\nimport { PLACEMENT } from 'constants/customizationVariables';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport actions from 'actions';\n\nconst BottomHeaderContainer = () => {\n  const [\n    featureFlags,\n    bottomHeaders\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n      selectors.getBottomHeaders(state)\n    ]);\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n\n  const floatingHeaders = bottomHeaders.filter((header) => header.float);\n  const fullLengthHeader = bottomHeaders.filter((header) => !header.float);\n\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.height !== null && floatingHeaders.length > 0) {\n      dispatch(actions.setBottomFloatingContainerHeight(dimensions.height));\n    }\n  }, [dimensions, floatingHeaders.length]);\n\n  if (customizableUI) {\n    const modularHeaders = fullLengthHeader.map((header) => {\n      const { dataElement } = header;\n      return (\n        <ModularHeader {...header} key={dataElement} />\n      );\n    });\n    return (\n      <DataElementWrapper dataElement=\"bottom-headers\" className=\"bottom-headers-wrapper\">\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.BOTTOM} ref={elementRef} />\n        {modularHeaders}\n      </DataElementWrapper>\n    );\n  }\n  return null;\n};\n\nexport default BottomHeaderContainer;","import BottomHeaderContainer from './BottomHeaderContainer';\n\nexport default BottomHeaderContainer;","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport './TopHeader.scss';\nimport ModularHeader from '../ModularHeader';\nimport FloatingHeaderContainer from '../FloatingHeader';\nimport { PLACEMENT, POSITION } from 'constants/customizationVariables';\nimport useResizeObserver from 'hooks/useResizeObserver';\nimport actions from 'actions';\n\nconst TopHeaderContainer = () => {\n  const [\n    featureFlags,\n    topHeaders,\n  ] = useSelector(\n    (state) => [\n      selectors.getFeatureFlags(state),\n      selectors.getTopHeaders(state),\n    ]);\n  const dispatch = useDispatch();\n  const { customizableUI } = featureFlags;\n  // Top headers can be either normal headers, or floating headers. You can have a max of two normal headers.\n  // There is one float container that can hold as many floating headers as you want.\n\n  // We first filter out the normal headers\n  const fullLengthHeaders = topHeaders.filter((header) => !header.float);\n  // Only two headers can be added to the top\n  if (fullLengthHeaders.length > 2) {\n    console.warn(`Top headers only support two full length headers but ${fullLengthHeaders.length} were added. Only the first two will be rendered.`);\n  }\n\n  // We sort the top headers by their order: start and end\n  const sortedTopHeaders = fullLengthHeaders.reduce((sortedHeaders, header, index) => {\n    if (index > 1) {\n      return sortedHeaders;\n    }\n\n    const { position } = header;\n    if (position === POSITION.START) {\n      sortedHeaders.unshift(header);\n    } else {\n      sortedHeaders.push(header);\n    }\n    return sortedHeaders;\n  }, []);\n\n  const floatingHeaders = topHeaders.filter((header) => header.float);\n\n  const [elementRef, dimensions] = useResizeObserver();\n  useEffect(() => {\n    if (dimensions.height !== null && floatingHeaders.length > 0) {\n      dispatch(actions.setTopFloatingContainerHeight(dimensions.height));\n    }\n  }, [dimensions, floatingHeaders.length]);\n\n  if (customizableUI) {\n    const modularHeaders = sortedTopHeaders.map((header, index) => {\n      const { dataElement } = header;\n      const autoHide = index === 0 ? false : header.autoHide;\n      return (\n        <ModularHeader {...header} key={dataElement} autoHide={autoHide} />\n      );\n    });\n    return (\n      <div>\n        {modularHeaders}\n        <FloatingHeaderContainer floatingHeaders={floatingHeaders} placement={PLACEMENT.TOP} ref={elementRef} />\n      </div>\n    );\n  }\n  return null;\n};\n\nexport default TopHeaderContainer;","import TopHeaderContainer from './TopHeaderContainer';\n\nexport default TopHeaderContainer;","import React from 'react';\nimport selectors from 'selectors';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport './ZoomText.scss';\n\nexport default function ZoomText() {\n  const currentZoom = useSelector(selectors.getZoom);\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"ZoomText\">\n      <div className=\"label\">{t('action.zoom')}:</div>\n      &nbsp;\n      <div className=\"value\">{Math.ceil(currentZoom * 100)}%</div>\n    </div>\n  );\n}\n","import React, { forwardRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport FlyoutItemContainer from '../FlyoutItemContainer';\n\nconst PageControlsFlyout = forwardRef((props, ref) => {\n  const {\n    onSubmit,\n    onChange,\n    input,\n    totalPages,\n    inputWidth,\n    onKeyDownHandler,\n    icon,\n  } = props;\n  const [isFocused, setIsFocused] = useState(false);\n\n  const onBlur = () => {\n    setIsFocused(false);\n    props.onBlur();\n  };\n\n  const onFocus = () => {\n    setIsFocused(true);\n    props.onFocus();\n  };\n\n  const style = {};\n  if (isFocused) {\n    style.width = inputWidth;\n  } else {\n    style.width = inputWidth - 10;\n  }\n\n  const pageControlsFlyoutItem = (\n    <div className=\"flyout-item-label\">\n      <div>{'Pages: '}</div>\n      <form onSubmit={onSubmit} onBlur={onBlur} onFocus={onFocus}>\n        <input\n          type=\"text\"\n          value={input}\n          onChange={onChange}\n          style={style}\n          onKeyDown={onKeyDownHandler}\n        />\n      </form>\n      <div>{` of ${totalPages}`}</div>\n    </div>\n  );\n\n  return (\n    <FlyoutItemContainer {...props}\n      ref={ref}\n      additionalClass={'page-nav-display'}\n      elementDOM={pageControlsFlyoutItem}\n      icon={icon}\n    />\n  );\n});\n\nPageControlsFlyout.propTypes = {\n  onSubmit: PropTypes.func,\n  onChange: PropTypes.func,\n  onFocus: PropTypes.func,\n  onBlur: PropTypes.func,\n  input: PropTypes.string,\n  totalPages: PropTypes.number,\n  inputWidth: PropTypes.number,\n  onKeyDownHandler: PropTypes.func,\n  icon: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\nPageControlsFlyout.displayName = 'PageControlsFlyout';\n\nexport default PageControlsFlyout;","import React from 'react';\nimport selectors from 'selectors';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport './ZoomText.scss';\nimport { FLYOUT_ITEM_TYPES, ITEM_TYPE } from 'constants/customizationVariables';\nimport classNames from 'classnames';\nimport { getIconDOMElement } from 'components/ModularComponents/Helpers/responsiveness-helper';\nimport RibbonItem from 'components/ModularComponents/RibbonItem';\nimport PresetButton from 'components/ModularComponents/PresetButton';\nimport ZoomText from 'components/ModularComponents/Flyout/flyoutHelpers/ZoomText';\nimport PageControlsFlyout from 'components/ModularComponents/PageControls/PageControlsFlyout';\nimport getToolbarTranslationString from 'helpers/translationKeyMapping';\nimport ToolButton from 'components/ModularComponents/ToolButton';\nimport { itemToFlyout } from 'helpers/itemToFlyoutHelper';\nimport PropTypes from 'prop-types';\nimport core from 'core';\nimport FlyoutItemContainer from '../../FlyoutItemContainer';\nconst propTypes = {\n  flyoutItem: PropTypes.oneOfType([\n    // ie. 'divider'\n    PropTypes.string,\n    PropTypes.object\n  ]),\n  onClickHandler: PropTypes.func,\n  activeFlyout: PropTypes.string,\n  type: PropTypes.string,\n};\n\nconst FlyoutItem = React.forwardRef((props, ref) => {\n  const { flyoutItem, type, onClickHandler } = props;\n  const modularComponent = useSelector((state) => flyoutItem?.dataElement ? selectors.getModularComponent(state, flyoutItem.dataElement) : undefined);\n\n  const typesToGetExtraInfo = [\n    ITEM_TYPE.PRESET_BUTTON,\n    ITEM_TYPE.RIBBON_ITEM,\n    ITEM_TYPE.TOOL_BUTTON,\n    ITEM_TYPE.BUTTON,\n    ITEM_TYPE.STATEFUL_BUTTON,\n    ITEM_TYPE.TOGGLE_BUTTON,\n  ];\n  if (flyoutItem && flyoutItem.dataElement && modularComponent && typesToGetExtraInfo.includes(modularComponent.type)) {\n    const newFlyoutItemState = {\n      ...flyoutItem,\n      ...itemToFlyout(modularComponent, {\n        useOverrideClickOnly: true,\n        onClick: flyoutItem?.onClick,\n        children: flyoutItem?.children,\n      }),\n      type: type,\n      onClickHandler: onClickHandler,\n    };\n    return <StaticItem {...props} flyoutItem={newFlyoutItemState} ref={ref} />;\n  }\n  return <StaticItem {...props} />;\n});\n\nFlyoutItem.propTypes = propTypes;\nFlyoutItem.displayName = 'FlyoutItem';\n\nexport default FlyoutItem;\n\nconst StaticItem = React.forwardRef((props, ref) => {\n  const { flyoutItem, isChild, index, activeItem, items, activeFlyout, type } = props;\n  const allProps = { ...flyoutItem, ...props };\n  const { t } = useTranslation();\n  const customHeadersAdditionalProperties = useSelector(selectors.getCustomHeadersAdditionalProperties, shallowEqual);\n  const currentPage = useSelector(selectors.getCurrentPage);\n  const activeCustomPanel = useSelector((state) => selectors.getActiveCustomPanel(state, activeFlyout.split('-flyout')[0]));\n  const isDisabledItem = useSelector((state) => selectors.isElementDisabled(state, flyoutItem?.dataElement));\n\n  if (isDisabledItem || (flyoutItem.hasOwnProperty('hidden') && flyoutItem.hidden)) {\n    return null;\n  }\n\n  const itemsToRender = isChild ? activeItem.children : items;\n  const icon = getIconDOMElement(flyoutItem, itemsToRender);\n\n  switch (type) {\n    case FLYOUT_ITEM_TYPES.LABEL: {\n      return <div className=\"flyout-label\" key={`label-${index}`}>{t(flyoutItem)}</div>;\n    }\n    case FLYOUT_ITEM_TYPES.DIVIDER: {\n      return <div className=\"divider\" key={`divider-${index}`} />;\n    }\n    case FLYOUT_ITEM_TYPES.RIBBON_ITEM: {\n      return <RibbonItem isFlyoutItem={true} {...allProps} ref={ref} icon={icon} />;\n    }\n    case FLYOUT_ITEM_TYPES.PRESET_BUTTON: {\n      return <PresetButton {...allProps} isFlyoutItem={true} ref={ref} icon={icon} buttonType={allProps.dataElement} />;\n    }\n    case FLYOUT_ITEM_TYPES.TOOL_BUTTON: {\n      return <ToolButton {...allProps} isFlyoutItem={true} ref={ref} allFlyoutItems={itemsToRender} />;\n    }\n    case FLYOUT_ITEM_TYPES.PAGE_NAVIGATION_BUTTON: {\n      return <PageControlsFlyout {...allProps} currentPage={currentPage} ref={ref} icon={icon} />;\n    }\n    case FLYOUT_ITEM_TYPES.ZOOM_OPTIONS_BUTTON: {\n      return (\n        <FlyoutItemContainer {...allProps}\n          ref={ref}\n          index={index}\n          label={<ZoomText />}\n          additionalClass={'zoom-options'}\n          icon={icon}\n          isZoomOptions={true}\n          isChild={isChild}\n        />\n      );\n    }\n    default: {\n      const alabel = flyoutItem.toolbarGroup\n        ? getToolbarTranslationString(flyoutItem.toolbarGroup, customHeadersAdditionalProperties)\n        : flyoutItem.label;\n      const itemIsAPanelTab = type === FLYOUT_ITEM_TYPES.TAB_PANEL_ITEM;\n      const itemIsAZoomButton = type === FLYOUT_ITEM_TYPES.ZOOM_BUTTON;\n      const isItemActive = flyoutItem.isActive ||\n        itemIsAPanelTab && activeCustomPanel === flyoutItem.dataElement ||\n        itemIsAZoomButton && Math.ceil(core.getZoom() * 100).toString() === flyoutItem.dataElement?.split('zoom-button-')[1];\n\n      const flyoutItemClasses = classNames({\n        'disabled': flyoutItem.disabled,\n        'active': isItemActive,\n        [allProps.additionalClass]: true,\n      });\n      return (\n        <FlyoutItemContainer {...allProps}\n          ref={ref}\n          label={alabel}\n          additionalClass={flyoutItemClasses}\n          icon={icon}\n        />\n      );\n    }\n  }\n});\n\nconst staticItemPropTypes = {\n  flyoutItem: PropTypes.oneOfType([\n    // ie. 'divider'\n    PropTypes.string,\n    PropTypes.object\n  ]),\n  isChild: PropTypes.bool,\n  index: PropTypes.number,\n  onClickHandler: PropTypes.func,\n  activeItem: PropTypes.object,\n  items: PropTypes.array,\n  type: PropTypes.string,\n  activeFlyout: PropTypes.string,\n};\n\nStaticItem.propTypes = staticItemPropTypes;\nStaticItem.displayName = 'StaticItem';","import React, { useCallback, useState, useLayoutEffect, useRef, useEffect } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport classNames from 'classnames';\nimport './Flyout.scss';\nimport useOnClickOutside from 'hooks/useOnClickOutside';\nimport actions from 'actions';\nimport { useTranslation } from 'react-i18next';\nimport { FLYOUT_ITEM_HEIGHT } from 'constants/flyoutConstants';\nimport { DEFAULT_GAP } from 'constants/customizationVariables';\nimport getRootNode from 'helpers/getRootNode';\nimport ZoomText from './flyoutHelpers/ZoomText';\nimport { getFlyoutPositionOnElement } from 'helpers/flyoutHelper';\nimport FlyoutItem from 'components/ModularComponents/Flyout/flyoutHelpers/FlyoutItem';\nimport DataElements from 'src/constants/dataElement';\nimport useFocusOnClose from 'src/hooks/useFocusOnClose';\nimport { getFlyoutItemType } from 'src/helpers/itemToFlyoutHelper';\nimport Icon from 'src/components/Icon';\n\nconst Flyout = () => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n\n  const flyoutMap = useSelector(selectors.getFlyoutMap, shallowEqual);\n  const activeFlyout = useSelector(selectors.getActiveFlyout);\n  const isFlyoutOpen = useSelector((state) => selectors.isElementOpen(state, activeFlyout), shallowEqual);\n  const position = useSelector(selectors.getFlyoutPosition, shallowEqual);\n  const toggleElement = useSelector(selectors.getFlyoutToggleElement);\n  const topHeadersHeight = useSelector(selectors.getTopHeadersHeight);\n  const bottomHeadersHeight = useSelector(selectors.getBottomHeadersHeight);\n  const customizableUI = useSelector(selectors.getFeatureFlags)?.customizableUI;\n\n  const flyoutProperties = flyoutMap[activeFlyout];\n  const horizontalHeadersUsedHeight = topHeadersHeight + bottomHeadersHeight + DEFAULT_GAP;\n  const { dataElement, items, className } = flyoutProperties;\n  const [activePath, setActivePath] = useState([]);\n  const [currentFocusIndex, setCurrentFocusIndex] = useState(-1);\n  const [focusableElements, setFocusableElements] = useState([]);\n\n  let activeItem = null;\n  for (const index of activePath) {\n    activeItem = activeItem ? activeItem.children[index] : items[index];\n  }\n\n  const flyoutRef = useRef(null);\n  const flyoutItemRef = useRef(null);\n  const [correctedPosition, setCorrectedPosition] = useState(position);\n  const [maxHeightValue, setMaxHeightValue] = useState(window.innerHeight - horizontalHeadersUsedHeight);\n\n  const itemsToRender = items.filter((item) => !item.hidden);\n  const activeChildren = activeItem ? activeItem.children.filter((child) => !child.hidden) : [];\n\n  const getElementDOMRef = (dataElement) => {\n    return getRootNode().querySelector(`[data-element=\"${dataElement}\"]`);\n  };\n\n  useLayoutEffect(() => {\n    const tempRefElement = getElementDOMRef(toggleElement);\n    const correctedPosition = { x: position.x, y: position.y };\n    const appRect = getRootNode().getElementById('app').getBoundingClientRect();\n    const maxHeightValue = appRect.height - horizontalHeadersUsedHeight;\n    setMaxHeightValue(maxHeightValue);\n\n    // Check if the elment is in the dom or invisible\n    if (tempRefElement && tempRefElement.offsetParent === null) {\n      return;\n    }\n\n    // Check if toggleElement is not null\n    if (toggleElement && tempRefElement) {\n      const { x, y } = getFlyoutPositionOnElement(toggleElement, flyoutRef);\n      correctedPosition.x = x;\n      correctedPosition.y = y;\n    } else {\n      const correctedPosition = { x: position.x, y: position.y };\n      const widthOverflow = position.x + flyoutRef.current?.offsetWidth - appRect.width;\n      const maxElementHeight = activeItem && activeItem.children.length > items.length ? activeItem.children.length : items.length;\n      const heightOverflow = position.y + maxElementHeight * (FLYOUT_ITEM_HEIGHT + 8) - appRect.height;\n      if (widthOverflow > 0) {\n        correctedPosition.x = position.x - widthOverflow;\n      }\n      if (heightOverflow > 0) {\n        correctedPosition.y = position.y - heightOverflow;\n      }\n      if (correctedPosition.x < 0) {\n        correctedPosition.x = 0;\n      }\n      if (correctedPosition.y < 0) {\n        correctedPosition.y = 0;\n      }\n    }\n    setCorrectedPosition(correctedPosition);\n  }, [activeItem, position, items]);\n\n  useEffect(() => {\n    if (flyoutRef.current) {\n      const focusableElements = flyoutRef.current.querySelectorAll('button:not([disabled]), input:not([disabled])');\n      if (focusableElements.length) {\n        focusableElements[0].focus();\n        setCurrentFocusIndex(0);\n        setFocusableElements(focusableElements);\n      }\n    }\n  }, [activePath, flyoutRef.current]);\n\n  const closeFlyout = useFocusOnClose(useCallback(() => {\n    dispatch(actions.closeElements([activeFlyout]));\n  }, [dispatch, activeFlyout]));\n\n  const onClickOutside = useCallback(\n    (e) => {\n      const menuButton = getElementDOMRef(toggleElement);\n      const clickedMenuButton = menuButton?.contains(e.target);\n      if (!clickedMenuButton) {\n        closeFlyout();\n      }\n    },\n    [closeFlyout, toggleElement],\n  );\n\n  useOnClickOutside(flyoutRef, onClickOutside);\n\n  const onClickHandler = (flyoutItem, isChild, index) => (e) => {\n    e.stopPropagation();\n    e.preventDefault();\n    if (flyoutItem.children && flyoutItem !== activeItem) {\n      const newActivePath = [...activePath];\n      newActivePath.push(index);\n      setActivePath(newActivePath);\n    }\n    if (flyoutItem.onClick) {\n      try {\n        flyoutItem.onClick();\n      } catch (error) {\n        console.error(error);\n      }\n\n      if (!flyoutItem.children && dataElement !== DataElements.VIEWER_CONTROLS_FLYOUT) {\n        closeFlyout();\n      }\n    }\n  };\n\n  const moveFocus = (delta) => {\n    const newFocusIndex = (currentFocusIndex + delta + focusableElements.length) % focusableElements.length;\n    const newFocusableItem = focusableElements[newFocusIndex];\n    newFocusableItem.focus();\n    setCurrentFocusIndex(newFocusIndex);\n  };\n\n  const onKeyDownHandler = (e) => {\n    if (e.shiftKey && e.key === 'Tab') {\n      e.preventDefault();\n      closeFlyout();\n    } else {\n      switch (e.code) {\n        case 'ArrowDown':\n          e.preventDefault();\n          moveFocus(1);\n          break;\n        case 'ArrowUp':\n          e.preventDefault();\n          moveFocus(-1);\n          break;\n        case 'Home':\n          e.preventDefault();\n          setCurrentFocusIndex(0);\n          break;\n        case 'End':\n          e.preventDefault();\n          setCurrentFocusIndex(itemsToRender.length - 1);\n          break;\n        case 'Escape':\n        case 'Tab':\n          e.preventDefault();\n          closeFlyout();\n          break;\n        case 'Enter':\n        case 'Space': {\n          e.preventDefault();\n          const focusedElement = focusableElements[currentFocusIndex];\n          const elementType = focusedElement.tagName.toLowerCase();\n\n          if (elementType === 'button') {\n            focusedElement.click();\n          } else if (elementType === 'input') {\n            focusedElement.parentNode.dispatchEvent(new Event('submit', { bubbles: true }));\n          }\n          break;\n        }\n        default:\n          break;\n      }\n    }\n  };\n\n  const renderBackButton = () => {\n    const isZoomOptions = activeItem.dataElement === 'zoomOptionsButton';\n    return (\n      <li data-element={activeItem.dataElement} className='flyout-item-container'>\n        <button\n          className=\"flyout-item back-button\"\n          onClick={() => {\n            const newActivePath = [...activePath];\n            newActivePath.pop();\n            setActivePath(newActivePath);\n          }}\n          onKeyDown={onKeyDownHandler}\n        >\n          <Icon glyph=\"icon-chevron-left\" />\n          {isZoomOptions ? <ZoomText /> : <span className=\"back-button-label\">{t('action.back')}</span>}\n        </button>\n      </li>\n    );\n  };\n\n  const renderItems = (itemList, isChild = false) => {\n    return itemList.map((item, index) => {\n      const itemType = getFlyoutItemType(item);\n      return (\n        <FlyoutItem\n          ref={currentFocusIndex === index ? flyoutItemRef : null}\n          flyoutItem={item}\n          index={index}\n          key={item?.dataElement || index}\n          isChild={isChild}\n          onClickHandler={onClickHandler}\n          onKeyDownHandler={onKeyDownHandler}\n          activeItem={activeItem}\n          items={itemsToRender}\n          activeFlyout={activeFlyout}\n          type={itemType}\n        />\n      );\n    });\n  };\n\n  const flyoutStyles = {\n    left: correctedPosition.x,\n    top: correctedPosition.y,\n    maxHeight: maxHeightValue\n  };\n\n  if (!activeItem && !itemsToRender.length) {\n    return null;\n  }\n\n  return (\n    isFlyoutOpen &&\n    <div\n      className={classNames({\n        'Flyout': true,\n        'legacy-ui': !customizableUI,\n      })}\n      data-element={dataElement}\n      ref={flyoutRef}\n      style={flyoutStyles}\n    >\n      <menu\n        id='FlyoutContainer'\n        className={classNames({\n          FlyoutContainer: true,\n          [className]: true,\n        })}\n      >\n        {activeItem ? (\n          <>\n            {renderBackButton()}\n            {renderItems(activeChildren, true)}\n          </>\n        ) : (\n          renderItems(itemsToRender)\n        )}\n      </menu>\n    </div>\n  );\n};\n\nexport default Flyout;","import Flyout from './Flyout';\n\nexport default Flyout;\n","import getRootNode from 'helpers/getRootNode';\n\nexport function getFlyoutPositionOnElement(dataElement, flyoutRef) {\n  // Get the container, toggle element, and target elements\n  const appRect = getRootNode().getElementById('app').getBoundingClientRect();\n  const referenceElement = getRootNode().querySelector(`[data-element=\"${dataElement}\"]`);\n  const referenceButtonRect = referenceElement.getBoundingClientRect();\n  const parentHeader = referenceElement.closest('.ModularHeader');\n  const targetElement = flyoutRef.current;\n  const defaultOffset = 6;\n\n  // Calculate the available space on the left and right sides of the reference element within the container\n  const availableSpaceLeft = referenceButtonRect.left - appRect.left;\n  const availableSpaceRight = appRect.right - referenceButtonRect.right;\n  let flyoutX = referenceButtonRect.left - appRect.left;\n\n  if (parentHeader?.classList.contains('LeftHeader')) {\n    flyoutX += referenceButtonRect.width + defaultOffset;\n  } else if (parentHeader?.classList.contains('RightHeader')) {\n    flyoutX -= (targetElement.clientWidth + defaultOffset);\n  } else if (availableSpaceLeft >= availableSpaceRight) {\n    flyoutX = referenceButtonRect.right - targetElement.clientWidth;\n  }\n\n  // Calculate the available space above and below the reference element within the container\n  const availableSpaceAbove = referenceButtonRect.top - appRect.top;\n  const availableSpaceBelow = appRect.bottom - referenceButtonRect.bottom;\n  let flyoutY = referenceButtonRect.top - appRect.top;\n\n  if (parentHeader?.classList.contains('TopHeader')) {\n    flyoutY += referenceButtonRect.height + defaultOffset;\n  } else if (parentHeader?.classList.contains('BottomHeader')) {\n    flyoutY -= (targetElement.clientHeight + defaultOffset);\n  } else if (availableSpaceAbove >= availableSpaceBelow) {\n    flyoutY = referenceButtonRect.bottom - targetElement.clientHeight;\n\n    // This case is for flyouts toggled by elements that are not on a header\n  } else if (availableSpaceBelow > targetElement.clientHeight && !parentHeader) {\n    flyoutY += referenceButtonRect.height + defaultOffset;\n  }\n\n  return { x: flyoutX, y: flyoutY };\n}\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport selectors from 'selectors';\nimport Flyout from 'components/ModularComponents/Flyout';\n\nconst propTypes = {};\nconst FlyoutContainer = () => {\n  const [flyoutMap, activeFlyout] = useSelector((state) => [\n    selectors.getFlyoutMap(state),\n    selectors.getActiveFlyout(state),\n  ]);\n\n  return (\n    <>\n      {activeFlyout && flyoutMap[activeFlyout] && <Flyout/>}\n    </>\n  );\n};\n\nFlyoutContainer.propTypes = propTypes;\n\nexport default FlyoutContainer;\n","import FlyoutContainer from './FlyoutContainer';\n\nexport default FlyoutContainer;\n","import RibbonOverflowFlyout from './RibbonOverflowFlyout';\n\nexport default RibbonOverflowFlyout;","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport actions from 'actions';\nimport './RibbonOverflowFlyout.scss';\n\nconst RibbonOverflowFlyout = (props) => {\n  const dispatch = useDispatch();\n  const { items } = props;\n\n  useEffect(() => {\n    const RibbonOverflowFlyout = {\n      dataElement: 'RibbonOverflowFlyout',\n      className: 'RibbonOverflowFlyout',\n      items: items || [],\n    };\n    dispatch(actions.addFlyout(RibbonOverflowFlyout));\n  }, []);\n\n  return null;\n};\n\nexport default RibbonOverflowFlyout;\n","import displayModeObjects from 'constants/displayModeObjects';\nimport core from 'core';\nimport { useLayoutEffect } from 'react';\nimport { useSelector, useStore, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport { enterReaderMode, exitReaderMode } from 'helpers/readerMode';\nimport actions from 'actions';\nimport toggleFullscreen from 'helpers/toggleFullscreen';\nimport { isIE11, isIOS, isIOSFullScreenSupported } from 'helpers/device';\nimport DataElements from 'constants/dataElement';\n\nconst ViewControlsFlyout = () => {\n  const store = useStore();\n  const dispatch = useDispatch();\n  const [\n    totalPages,\n    displayMode,\n    isDisabled,\n    isReaderMode,\n    isMultiViewerMode,\n    isFullScreen,\n    activeDocumentViewerKey,\n    isMultiTab,\n    isMultiViewerModeAvailable,\n    currentFlyout\n  ] = useSelector((state) => [\n    selectors.getTotalPages(state),\n    selectors.getDisplayMode(state),\n    selectors.isElementDisabled(state, DataElements.VIEWER_CONTROLS_FLYOUT),\n    selectors.isReaderMode(state),\n    selectors.isMultiViewerMode(state),\n    selectors.isFullScreen(state),\n    selectors.getActiveDocumentViewerKey(state),\n    selectors.getIsMultiTab(state),\n    selectors.getIsMultiViewerModeAvailable(state),\n    selectors.getFlyout(state, DataElements.VIEWER_CONTROLS_FLYOUT)\n  ]);\n\n  const totalPageThreshold = 1000;\n  let isPageTransitionEnabled = totalPages < totalPageThreshold;\n\n  const documentViewer = core.getDocumentViewer();\n  const displayModeManager = documentViewer?.getDisplayModeManager();\n  if (displayModeManager?.isVirtualDisplayEnabled()) {\n    isPageTransitionEnabled = true;\n  }\n\n  const showReaderButton = core.isFullPDFEnabled() && core.getDocument()?.getType() === 'pdf';\n  const showCompareButton = !isIE11 && !isMultiTab && isMultiViewerModeAvailable;\n  const toggleCompareMode = () => {\n    store.dispatch(actions.setIsMultiViewerMode(!isMultiViewerMode));\n  };\n\n  const handleClick = (pageTransition, layout) => {\n    const setDisplayMode = () => {\n      const displayModeObject = displayModeObjects.find(\n        (obj) => obj.pageTransition === pageTransition && obj.layout === layout,\n      );\n      core.setDisplayMode(displayModeObject.displayMode);\n    };\n\n    if (isReaderMode) {\n      exitReaderMode(store);\n      setTimeout(() => {\n        setDisplayMode();\n      });\n    } else {\n      setDisplayMode();\n    }\n  };\n\n  const handleReaderModeClick = () => {\n    if (isReaderMode) {\n      return;\n    }\n    enterReaderMode(store);\n    dispatch(actions.closeElement(DataElements.VIEWER_CONTROLS_FLYOUT));\n  };\n\n  let pageTransition;\n  let layout;\n\n  const displayModeObject = displayModeObjects.find((obj) => obj.displayMode === displayMode);\n  if (displayModeObject) {\n    pageTransition = displayModeObject.pageTransition;\n    layout = displayModeObject.layout;\n  }\n\n  const getViewControlsFlyoutItems = () => {\n    let viewControlsFlyoutItems = [];\n\n    const continuousPageTransitionButton = {\n      icon: 'icon-header-page-manipulation-page-transition-continuous-page-line',\n      label: 'option.pageTransition.continuous',\n      title: 'option.pageTransition.continuous',\n      onClick: () => handleClick('continuous', layout),\n      dataElement: 'continuousPageTransitionButton',\n      isActive: pageTransition === 'continuous' && !isReaderMode\n    };\n    const defaultPageTransitionButton = {\n      icon: 'icon-header-page-manipulation-page-transition-page-by-page-line',\n      label: 'option.pageTransition.default',\n      title: 'option.pageTransition.default',\n      onClick: () => handleClick('default', layout),\n      dataElement: 'defaultPageTransitionButton',\n      isActive: pageTransition === 'default' && !isReaderMode\n    };\n    const readerPageTransitionButton = {\n      icon: 'icon-header-page-manipulation-page-transition-reader',\n      label: 'option.pageTransition.reader',\n      title: 'option.pageTransition.reader',\n      onClick: () => handleReaderModeClick(),\n      dataElement: 'readerPageTransitionButton',\n      isActive: isReaderMode\n    };\n    const rotateClockwiseButton = {\n      icon: 'icon-header-page-manipulation-page-rotation-clockwise-line',\n      label: 'action.rotateClockwise',\n      title: 'action.rotateClockwise',\n      onClick: () => core.rotateClockwise(activeDocumentViewerKey),\n      dataElement: 'rotateClockwiseButton'\n    };\n    const rotateCounterClockwiseButton = {\n      icon: 'icon-header-page-manipulation-page-rotation-clockwise-line',\n      label: 'action.rotateCounterClockwise',\n      title: 'action.rotateCounterClockwise',\n      onClick: () => core.rotateCounterClockwise(activeDocumentViewerKey),\n      dataElement: 'rotateCounterClockwiseButton'\n    };\n    const singleLayoutButton = {\n      icon: 'icon-header-page-manipulation-page-layout-single-page-line',\n      label: 'option.layout.single',\n      title: 'option.layout.single',\n      onClick: () => handleClick(pageTransition, 'single'),\n      dataElement: 'singleLayoutButton',\n      isActive: layout === 'single'\n    };\n    const doubleLayoutButton = {\n      icon: 'icon-header-page-manipulation-page-layout-double-page-line',\n      label: 'option.layout.double',\n      title: 'option.layout.double',\n      onClick: () => handleClick(pageTransition, 'double'),\n      dataElement: 'doubleLayoutButton',\n      isActive: layout === 'double'\n    };\n    const coverLayoutButton = {\n      icon: 'icon-header-page-manipulation-page-layout-cover-line',\n      label: 'option.layout.cover',\n      title: 'option.layout.cover',\n      onClick: () => handleClick(pageTransition, 'cover'),\n      dataElement: 'coverLayoutButton',\n      isActive: layout === 'cover'\n    };\n\n    const divider = 'divider';\n\n    if (isPageTransitionEnabled) {\n      viewControlsFlyoutItems.push('option.displayMode.pageTransition');\n      viewControlsFlyoutItems = [...viewControlsFlyoutItems, continuousPageTransitionButton, defaultPageTransitionButton];\n\n      if (showReaderButton) {\n        viewControlsFlyoutItems.push(readerPageTransitionButton);\n      }\n      if (!isReaderMode) {\n        viewControlsFlyoutItems.push(divider);\n      }\n    }\n    if (!isReaderMode) {\n      viewControlsFlyoutItems = [...viewControlsFlyoutItems,\n        'action.rotate',\n        rotateClockwiseButton,\n        rotateCounterClockwiseButton,\n        divider,\n        'option.displayMode.layout',\n        singleLayoutButton,\n        doubleLayoutButton,\n        coverLayoutButton\n      ];\n    }\n    if (showCompareButton) {\n      const toggleCompareModeButton = {\n        icon: 'icon-header-compare',\n        label: 'action.comparePages',\n        title: 'action.comparePages',\n        onClick: toggleCompareMode,\n        dataElement: 'toggleCompareModeButton',\n        isActive: isMultiViewerMode\n      };\n      viewControlsFlyoutItems.push(toggleCompareModeButton);\n    }\n\n    if (!isIOS || isIOSFullScreenSupported) {\n      const fullScreenButton = {\n        icon: isFullScreen ? 'icon-header-full-screen-exit' : 'icon-header-full-screen',\n        label: isFullScreen ? 'action.exitFullscreen' : 'action.enterFullscreen',\n        title: isFullScreen ? 'action.exitFullscreen' : 'action.enterFullscreen',\n        onClick: toggleFullscreen,\n        dataElement: DataElements.FULLSCREEN_BUTTON\n      };\n      viewControlsFlyoutItems.push(divider);\n      viewControlsFlyoutItems.push(fullScreenButton);\n    }\n\n    return viewControlsFlyoutItems;\n  };\n\n  useLayoutEffect(() => {\n    const viewControlsFlyout = {\n      dataElement: DataElements.VIEWER_CONTROLS_FLYOUT,\n      className: 'ViewControlsFlyout',\n      items: getViewControlsFlyoutItems()\n    };\n\n    if (!currentFlyout) {\n      dispatch(actions.addFlyout(viewControlsFlyout));\n    } else {\n      dispatch(actions.updateFlyout(viewControlsFlyout.dataElement, viewControlsFlyout));\n    }\n  }, [isFullScreen, isMultiViewerModeAvailable, isMultiViewerMode, displayMode, isReaderMode]);\n\n  if (isDisabled) {\n    return;\n  }\n\n  return null;\n};\n\nexport default ViewControlsFlyout;\n","import useOnTextSelected from './useOnTextSelected';\n\nexport default useOnTextSelected;","import { useEffect, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnTextSelected() {\n  const [\n    popupItems,\n    activeDocumentViewerKey,\n  ] = useSelector(\n    (state) => [\n      selectors.getPopupItems(state, DataElements.TEXT_POPUP),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  const [selectedTextQuads, setSelectedTextQuads] = useState([]);\n\n  useEffect(() => {\n    const textSelectTool = core.getTool('TextSelect', activeDocumentViewerKey);\n    const onSelectionComplete = (startQuad, allQuads) => {\n      if (popupItems.length > 0) {\n        setSelectedTextQuads(allQuads);\n        dispatch(actions.openElement(DataElements.TEXT_POPUP));\n      }\n    };\n\n    textSelectTool.addEventListener('selectionComplete', onSelectionComplete);\n    return () => textSelectTool.removeEventListener('selectionComplete', onSelectionComplete);\n  }, [popupItems, activeDocumentViewerKey]);\n\n  return { selectedTextQuads };\n}","import { useEffect } from 'react';\nimport core from 'core';\nimport getRootNode from 'helpers/getRootNode';\nimport { shallowEqual, useSelector } from 'react-redux';\nimport selectors from 'selectors';\n\nexport default (handler) => {\n  const [\n    activeDocumentViewerKey,\n    isMultiViewerMode,\n  ] = useSelector(\n    (state) => [\n      selectors.getActiveDocumentViewerKey(state),\n      selectors.isMultiViewerMode(state),\n    ],\n    shallowEqual,\n  );\n\n  useEffect(() => {\n    const listener = (e) => {\n      const { tagName } = e.target;\n      const clickedOnInput = tagName === 'INPUT';\n      const clickedOnTextarea = tagName === 'TEXTAREA';\n      const clickedOnFreeTextarea = !!((\n        e.target.className === 'ql-editor'\n        || e.target.parentNode.className === 'ql-editor'\n        || e.target.parentNode.parentNode.className === 'ql-editor'\n      ));\n\n      const documentContainer =\n        isMultiViewerMode\n          ? getRootNode().querySelector(`#DocumentContainer${activeDocumentViewerKey}`)\n          : getRootNode().querySelector('.DocumentContainer');\n      const clickedOnDocumentContainer = documentContainer.contains(e.target);\n\n      if (\n        clickedOnDocumentContainer &&\n        // when clicking on these two elements we want to display the default context menu so that users can use auto-correction, look up dictionary, etc...\n        !(clickedOnInput || clickedOnTextarea || clickedOnFreeTextarea)\n      ) {\n        e.preventDefault();\n        handler(e);\n      }\n    };\n\n    getRootNode().addEventListener('contextmenu', listener);\n    core.addEventListener('longTap', listener, null, activeDocumentViewerKey);\n    return () => {\n      getRootNode().removeEventListener('contextmenu', listener);\n      core.removeEventListener('longTap', listener, null, activeDocumentViewerKey);\n    };\n  }, [handler, activeDocumentViewerKey, isMultiViewerMode]);\n};\n","import useOnRightClick from './useOnRightClick';\n\nexport default useOnRightClick;","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\nimport useOnRightClick from 'hooks/useOnRightClick';\nimport { isMobile as isMobileCSS, isMobileDevice } from 'helpers/device';\nimport { isOfficeEditorMode } from 'helpers/officeEditor';\n\nexport default function useOnContextMenuOpen() {\n  const [\n    popupItems,\n    isRightClickAnnotationPopupEnabled,\n    activeDocumentViewerKey,\n  ] = useSelector(\n    (state) => [\n      selectors.getPopupItems(state, DataElements.CONTEXT_MENU_POPUP),\n      selectors.isRightClickAnnotationPopupEnabled(state),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  const [clickPosition, setClickPosition] = useState({ left: 0, top: 0 });\n\n  // if right click menu is not turned on, on tablet + phone, ContextMenuPopup won't be available\n  // if it's on, on tablet + phone, it will be available without being draggable\n  const isMobile = !!isMobileDevice || isMobileCSS();\n\n  // Use this to store isRightClickAnnotationPopupEnabled value to avoid stale closure\n  const isRightClickAnnotationPopupEnabledRef = useRef();\n\n  useEffect(() => {\n    isRightClickAnnotationPopupEnabledRef.current = isRightClickAnnotationPopupEnabled;\n  }, [isRightClickAnnotationPopupEnabled]);\n\n  useOnRightClick(\n    useCallback(async (e) => {\n      const { pageX: left, pageY: top } = e;\n      const annotationUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n      if ((!isRightClickAnnotationPopupEnabledRef.current && !isMobile) || (isRightClickAnnotationPopupEnabledRef.current && (!annotationUnderMouse || isOfficeEditorMode()))) {\n        if (popupItems.length > 0) {\n          setClickPosition({ left, top });\n          if (isOfficeEditorMode()) {\n            await core.getOfficeEditor().onRightClick(e);\n          }\n          dispatch(actions.openElement(DataElements.CONTEXT_MENU_POPUP));\n        }\n      }\n    }, [popupItems, activeDocumentViewerKey])\n  );\n\n  return { clickPosition };\n}","import useOnContextMenuOpen from './useOnContextMenuOpen';\n\nexport default useOnContextMenuOpen;","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport debounce from 'lodash/debounce';\nimport useOnRightClick from 'hooks/useOnRightClick';\nimport { isMac } from 'helpers/device';\nimport getGroupedLinkAnnotations from 'helpers/getGroupedLinkAnnotations';\nimport getAnnotationStyles from 'helpers/getAnnotationStyles';\nimport DataElements from 'constants/dataElement';\n\nconst { ToolNames } = window.Core.Tools;\nconst { Annotations } = window.Core;\n\nexport default function useOnAnnotationPopupOpen() {\n  const [\n    popupItems,\n    isRightClickAnnotationPopupEnabled,\n    isNotesPanelOpen,\n    isScaleOverlayContainerOpen,\n    activeDocumentViewerKey,\n  ] = useSelector(\n    (state) => [\n      selectors.getPopupItems(state, DataElements.ANNOTATION_POPUP),\n      selectors.isRightClickAnnotationPopupEnabled(state),\n      selectors.isElementOpen(state, DataElements.NOTES_PANEL),\n      selectors.isElementOpen(state, DataElements.SCALE_OVERLAY_CONTAINER),\n      selectors.getActiveDocumentViewerKey(state),\n    ],\n    shallowEqual,\n  );\n\n  const dispatch = useDispatch();\n\n  // focusedAnnotation is selectedAnnotation by default and right-clicked annotation (even when there're multiple annotations selected) when API is on\n  const [focusedAnnotation, setFocusedAnnotation] = useState(null);\n  const [selectedMultipleAnnotations, setSelectedMultipleAnnotations] = useState(false);\n  const [canModify, setCanModify] = useState(false);\n  const [focusedAnnotationStyle, setFocusedAnnotationStyle] = useState(null);\n  const [isStylePopupOpen, setIsStylePopupOpen] = useState(false);\n  const [isDatePickerOpen, setDatePickerOpen] = useState(false);\n  const [isDatePickerMount, setDatePickerMount] = useState(false);\n  const [hasAssociatedLink, setHasAssociatedLink] = useState(true);\n  const [includesFormFieldAnnotation, setIncludesFormFieldAnnotation] = useState(false);\n  const [stylePopupRepositionFlag, setStylePopupRepositionFlag] = useState(false);\n\n  // calling this function will always rerender this component\n  // because the position state always has a new object reference\n  const openPopup = () => {\n    if (popupItems.length > 0) {\n      dispatch(actions.openElement(DataElements.ANNOTATION_POPUP));\n    }\n  };\n\n  const closePopup = () => {\n    dispatch(actions.closeElement(DataElements.ANNOTATION_POPUP));\n    setFocusedAnnotation(null);\n    setSelectedMultipleAnnotations(false);\n    setCanModify(false);\n    setIsStylePopupOpen(false);\n    setDatePickerOpen(false);\n    setDatePickerMount(false);\n    setHasAssociatedLink(false);\n    setIncludesFormFieldAnnotation(false);\n  };\n\n  const canAnnotationBeModified = (annotation) => {\n    const isSignedByAppearance = annotation instanceof Annotations.SignatureWidgetAnnotation && annotation.isSignedByAppearance();\n    return core.canModify(annotation) && !isSignedByAppearance;\n  };\n\n  const groupedLinkAnnotations = (annotation) => getGroupedLinkAnnotations(annotation);\n\n  const isInContentEditFocusMode = (annotation) => {\n    // for annotations that are placeholders of content edit, when they are focused, the popup will not open\n    const contentEditManager = core.getContentEditManager();\n    return annotation.isInContentEditFocusMode(contentEditManager);\n  };\n\n  useEffect(() => {\n    if (focusedAnnotation) {\n      setFocusedAnnotationStyle(getAnnotationStyles(focusedAnnotation));\n      if (!isInContentEditFocusMode(focusedAnnotation)) {\n        openPopup();\n        dispatch(actions.openElement(DataElements.ANNOTATION_NOTE_CONNECTOR_LINE));\n      }\n    }\n    // stylePopupRepositionFlag is needed here in order to re-open the popup on scroll\n  }, [focusedAnnotation, stylePopupRepositionFlag]);\n\n  useEffect(() => {\n    if (focusedAnnotation) {\n      setHasAssociatedLink(!!groupedLinkAnnotations(focusedAnnotation).length);\n    }\n  }, [focusedAnnotation, groupedLinkAnnotations]);\n\n  // Use this to store isRightClickAnnotationPopupEnabled value to avoid stale closure\n  const isRightClickAnnotationPopupEnabledRef = useRef();\n\n  useEffect(() => {\n    isRightClickAnnotationPopupEnabledRef.current = isRightClickAnnotationPopupEnabled;\n  }, [isRightClickAnnotationPopupEnabled]);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (annotations.length === 0 || annotations[0].ToolName === ToolNames.CROP || annotations[0].ToolName === ToolNames.SNIPPING) {\n        return;\n      }\n\n      if (action === 'selected') {\n        if (!isRightClickAnnotationPopupEnabledRef.current) {\n          setFocusedAnnotation(annotations[0]);\n        }\n\n        setSelectedMultipleAnnotations(annotations.length > 1);\n        setIncludesFormFieldAnnotation(annotations.some((annotation) => annotation.isFormFieldPlaceholder()));\n        setCanModify(canAnnotationBeModified(annotations[0]));\n\n        if (isNotesPanelOpen) {\n          setTimeout(() => dispatch(actions.openElement(DataElements.ANNOTATION_NOTE_CONNECTOR_LINE)), 300);\n        }\n\n        const isAnnotationSelectedWithDatePickerOpen = annotations[0] === focusedAnnotation && isDatePickerOpen;\n        if (isAnnotationSelectedWithDatePickerOpen) {\n          closePopup();\n        }\n      }\n\n      const actionOnOtherAnnotation = focusedAnnotation && !annotations.includes(focusedAnnotation);\n      if (action === 'deselected' && !actionOnOtherAnnotation) {\n        closePopup();\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n    core.addEventListener('documentUnloaded', closePopup, null, activeDocumentViewerKey);\n\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n      core.removeEventListener('documentUnloaded', closePopup, null, activeDocumentViewerKey);\n    };\n  }, [focusedAnnotation, isNotesPanelOpen, isDatePickerOpen, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      if (!core.isAnnotationSelected(focusedAnnotation) || annotations.length === 0) {\n        return;\n      }\n\n      if (action === 'modify') {\n        setFocusedAnnotationStyle(getAnnotationStyles(annotations[0]));\n        if (!isScaleOverlayContainerOpen) {\n          openPopup();\n        }\n      }\n\n      const hasLinkAnnotation = annotations.some((annotation) => annotation instanceof Annotations.Link);\n      if (!hasLinkAnnotation) {\n        return;\n      }\n      if (action === 'add') {\n        setHasAssociatedLink(true);\n      }\n      if (action === 'delete') {\n        setHasAssociatedLink(false);\n      }\n    };\n\n    const onUpdateAnnotationPermission = () => {\n      if (focusedAnnotation) {\n        setCanModify(canAnnotationBeModified(focusedAnnotation));\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged, null, activeDocumentViewerKey);\n    core.addEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, null, activeDocumentViewerKey);\n\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged, null, activeDocumentViewerKey);\n      core.removeEventListener('updateAnnotationPermission', onUpdateAnnotationPermission, null, activeDocumentViewerKey);\n    };\n  }, [canModify, focusedAnnotation, isScaleOverlayContainerOpen, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const onMouseLeftUp = (e) => {\n      // clicking on the selected annotation is considered clicking outside of this component\n      // so this component will close due to useOnClickOutside\n      // this handler is used to make sure that if we click on the selected annotation, this component will show up again\n      if (focusedAnnotation) {\n        const annotUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n\n        const shouldShowPopup =\n          !isRightClickAnnotationPopupEnabledRef.current\n          && annotUnderMouse === focusedAnnotation\n          && !isInContentEditFocusMode(focusedAnnotation);\n        if (shouldShowPopup) {\n          openPopup();\n        }\n\n        // clicking on full page redactions again should close the stylePopup if it is already open\n        if (focusedAnnotation['redactionType'] === 'fullPage' && isStylePopupOpen) {\n          setIsStylePopupOpen(false);\n        }\n      }\n    };\n\n    core.addEventListener('mouseLeftUp', onMouseLeftUp, null, activeDocumentViewerKey);\n    return () => core.removeEventListener('mouseLeftUp', onMouseLeftUp, null, activeDocumentViewerKey);\n  }, [focusedAnnotation, isStylePopupOpen, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const scrollViewElement = core.getScrollViewElement(activeDocumentViewerKey);\n    const onScroll = debounce(() => {\n      setStylePopupRepositionFlag((flag) => !flag);\n    }, 100);\n\n    scrollViewElement?.addEventListener('scroll', onScroll);\n    return () => scrollViewElement?.removeEventListener('scroll', onScroll);\n  }, [activeDocumentViewerKey]);\n\n  useOnRightClick(\n    useCallback((e) => {\n      if (!isRightClickAnnotationPopupEnabledRef.current) {\n        return;\n      }\n\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n      if (annotUnderMouse && annotUnderMouse.ToolName !== ToolNames.CROP) {\n        if (e.ctrlKey && isMac) {\n          return;\n        }\n\n        if (annotUnderMouse !== focusedAnnotation) {\n          if (!core.isAnnotationSelected(annotUnderMouse, activeDocumentViewerKey)) {\n            core.deselectAllAnnotations();\n          }\n          core.selectAnnotation(annotUnderMouse, activeDocumentViewerKey);\n          setFocusedAnnotation(annotUnderMouse);\n        }\n        if (annotUnderMouse === focusedAnnotation && !isInContentEditFocusMode(annotUnderMouse)) {\n          openPopup();\n        }\n      } else {\n        closePopup();\n      }\n    }, [focusedAnnotation, activeDocumentViewerKey])\n  );\n\n  return {\n    focusedAnnotation,\n    selectedMultipleAnnotations,\n    canModify,\n    focusedAnnotationStyle,\n    isStylePopupOpen,\n    setIsStylePopupOpen,\n    isDatePickerOpen,\n    setDatePickerOpen,\n    isDatePickerMount,\n    setDatePickerMount,\n    hasAssociatedLink,\n    includesFormFieldAnnotation,\n    stylePopupRepositionFlag,\n    setStylePopupRepositionFlag,\n    closePopup,\n  };\n}","import useOnAnnotationPopupOpen from './useOnAnnotationPopupOpen';\n\nexport default useOnAnnotationPopupOpen;","import useOnAlignmentPopupOpen from './useOnAlignmentPopupOpen';\n\nexport default useOnAlignmentPopupOpen;","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnLinkAnnotationPopupOpen() {\n  const dispatch = useDispatch();\n  const [annotation, setAnnotation] = useState(null);\n\n  const activeDocumentViewerKey = useSelector((state) => selectors.getActiveDocumentViewerKey(state));\n\n  const closePopup = () => {\n    dispatch(actions.closeElement(DataElements.ANNOTATION_ALIGNMENT_POPUP));\n    setAnnotation(null);\n  };\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      if (annotations.length === 0) {\n        return;\n      }\n\n      if (action === 'selected') {\n        setAnnotation(annotations[0]);\n      }\n\n      const actionOnOtherAnnotation = annotation && !annotations.includes(annotation);\n      if (action === 'deselected' && !actionOnOtherAnnotation) {\n        closePopup();\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n    core.addEventListener('documentUnloaded', closePopup, null, activeDocumentViewerKey);\n\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n      core.removeEventListener('documentUnloaded', closePopup, null, activeDocumentViewerKey);\n    };\n  }, [annotation, activeDocumentViewerKey]);\n\n  return { annotation };\n}\n","import useOnFormFieldAnnotationAddedOrSelected from './useOnFormFieldAnnotationAddedOrSelected';\n\nexport default useOnFormFieldAnnotationAddedOrSelected;","import { useCallback, useEffect, useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport selectors from 'selectors';\nimport useOnRightClick from '../useOnRightClick';\nimport core from 'core';\nimport actions from 'actions';\nimport DataElements from 'constants/dataElement';\nimport { PRIORITY_THREE } from 'constants/actionPriority';\n\nexport default function useOnFormFieldAnnotationAddedOrSelected() {\n  const dispatch = useDispatch();\n  const isRightClickAnnotationPopupEnabled = useSelector(\n    (state) => selectors.isRightClickAnnotationPopupEnabled(state)\n  );\n\n  const [currentFormAnnotation, setCurrentlyEditingFormAnnotation] = useState(null);\n\n  const openFormFieldPopup = () => {\n    dispatch(actions.disableElement(DataElements.ANNOTATION_POPUP, PRIORITY_THREE));\n    dispatch(actions.openElement(DataElements.FORM_FIELD_EDIT_POPUP));\n  };\n\n  const closeFormFieldPopup = () => {\n    dispatch(actions.enableElement(DataElements.ANNOTATION_POPUP, PRIORITY_THREE));\n    dispatch(actions.closeElement(DataElements.FORM_FIELD_EDIT_POPUP));\n  };\n\n  useEffect(() => {\n    const onAnnotationChanged = (annotations, action) => {\n      if (annotations.length !== 1) {\n        return;\n      }\n      const selectedAnnots = core.getAnnotationManager().getSelectedAnnotations();\n      if (selectedAnnots.length > 1) {\n        return;\n      }\n      const annotation = annotations[0];\n      if (action === 'add' && annotation.isFormFieldPlaceholder() && annotation.getCustomData('trn-editing-widget-id') === '') {\n        // If for some reason we are drawing a new form field place holder before filling the name for the previous one, we will not switch\n        // to the new annotation until that name is filled\n        if (currentFormAnnotation?.getCustomData('trn-form-field-name') === '') {\n          return;\n        }\n        setCurrentlyEditingFormAnnotation(annotations[0]);\n        openFormFieldPopup();\n      } else if (action === 'delete' && annotation.isFormFieldPlaceholder()) {\n        closeFormFieldPopup();\n        setCurrentlyEditingFormAnnotation(null);\n      }\n    };\n\n    const onAnnotationSelected = (annotations, action) => {\n      if (isRightClickAnnotationPopupEnabled) {\n        return;\n      }\n\n      if (action === 'selected' && annotations.length && annotations[0].isFormFieldPlaceholder()) {\n        // If the currently set form field annotation has no name set, we don't want to switch it out\n        // as the form field edit popup will show the info for the wrong annotation, as we added logic to prevent\n        // the popup from closing when the field name is empty\n        if (currentFormAnnotation?.getCustomData('trn-form-field-name') === '') {\n          // de-select the form field annotation that was recently selected to avoid confusion\n          core.deselectAnnotation(annotations[0]);\n          return;\n        }\n        setCurrentlyEditingFormAnnotation(annotations[0]);\n      }\n    };\n\n    core.addEventListener('annotationChanged', onAnnotationChanged);\n    core.addEventListener('annotationSelected', onAnnotationSelected);\n    return () => {\n      core.removeEventListener('annotationChanged', onAnnotationChanged);\n      core.removeEventListener('annotationSelected', onAnnotationSelected);\n    };\n  }, [currentFormAnnotation]);\n\n  useOnRightClick(\n    useCallback((e) => {\n      if (!isRightClickAnnotationPopupEnabled) {\n        return;\n      }\n\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e);\n      if (annotUnderMouse && annotUnderMouse !== currentFormAnnotation && annotUnderMouse.isFormFieldPlaceholder()) {\n        setCurrentlyEditingFormAnnotation(annotUnderMouse);\n      }\n    }, [currentFormAnnotation, isRightClickAnnotationPopupEnabled])\n  );\n\n  return { annotation: currentFormAnnotation };\n}","import useOnInlineCommentPopupOpen from './useOnInlineCommentPopupOpen';\n\nexport default useOnInlineCommentPopupOpen;","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\nimport debounce from 'lodash/debounce';\n\nexport default function useOnInlineCommentPopupOpen() {\n  const [\n    isNotesPanelOpen,\n    notesInLeftPanel,\n    leftPanelOpen,\n    activeLeftPanel,\n    inlineCommentFilter,\n    activeDocumentViewerKey,\n    isOfficeEditorMode,\n  ] = useSelector(\n    (state) => [\n      selectors.isElementOpen(state, DataElements.NOTES_PANEL),\n      selectors.getNotesInLeftPanel(state),\n      selectors.isElementOpen(state, DataElements.LEFT_PANEL),\n      selectors.getActiveLeftPanel(state),\n      selectors.getInlineCommentFilter(state),\n      selectors.getActiveDocumentViewerKey(state),\n      selectors.getIsOfficeEditorMode(state),\n    ],\n    shallowEqual,\n  );\n  const dispatch = useDispatch();\n\n  const [annotation, setAnnotation] = useState(null);\n  const [isFreeTextAnnotationAdded, setFreeTextAnnotationAdded] = useState(false);\n  const [reopenFlag, setReopenFlag] = useState(false);\n  const { ToolNames } = window.Core.Tools;\n\n  const isNotesPanelOpenOrActive = isNotesPanelOpen || (notesInLeftPanel && leftPanelOpen && (activeLeftPanel === 'notesPanel' || isOfficeEditorMode));\n\n  const closeAndReset = () => {\n    dispatch(actions.closeElement(DataElements.INLINE_COMMENT_POPUP));\n    setAnnotation(null);\n    setFreeTextAnnotationAdded(false);\n  };\n\n  const isFreeTextAnnotation = (annot) => {\n    return annot instanceof window.Core.Annotations.FreeTextAnnotation;\n  };\n\n  useEffect(() => {\n    const onAnnotationDoubleClicked = (annot) => {\n      if (isFreeTextAnnotation(annot)) {\n        closeAndReset();\n      }\n    };\n\n    core.addEventListener('annotationDoubleClicked', onAnnotationDoubleClicked, null, activeDocumentViewerKey);\n    return () => core.removeEventListener('annotationDoubleClicked', onAnnotationDoubleClicked, activeDocumentViewerKey);\n  }, [activeDocumentViewerKey]);\n\n  useEffect(() => {\n    const onAnnotationSelected = (annotations, action) => {\n      const selectedAnnotationTool = annotations[0].ToolName;\n      const shouldSetCommentingAnnotation =\n        (action === 'selected')\n        && annotations.length\n        && !isFreeTextAnnotationAdded\n        && (selectedAnnotationTool !== ToolNames.CROP);\n      if (shouldSetCommentingAnnotation) {\n        setAnnotation(annotations[0]);\n      }\n\n      if (action === 'deselected' && annotations.length) {\n        setFreeTextAnnotationAdded(false);\n        if (annotations.some((annot) => annot === annotation)) {\n          closeAndReset();\n        }\n      }\n    };\n\n    core.addEventListener('annotationSelected', onAnnotationSelected, null, activeDocumentViewerKey);\n    return () => {\n      core.removeEventListener('annotationSelected', onAnnotationSelected, activeDocumentViewerKey);\n    };\n  }, [annotation, isFreeTextAnnotationAdded, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    setFreeTextAnnotationAdded(false);\n    const onMouseLeftUp = (e) => {\n      // WILL BE TRIGGERED ON MOBILE: happens before annotationSelected\n      // clicking on the selected annotation is considered clicking outside of this component\n      // so this component will close due to useOnClickOutside\n      // this handler is used to make sure that if we click on the selected annotation, this component will show up again\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e, activeDocumentViewerKey);\n      if (annotation) {\n        if (!annotUnderMouse) {\n          closeAndReset();\n          return;\n        }\n\n        if (core.isAnnotationSelected(annotUnderMouse) && annotUnderMouse !== annotation) {\n          setAnnotation(annotUnderMouse);\n        }\n      }\n    };\n\n    const onAnnotationChanged = (annotations, action) => {\n      setFreeTextAnnotationAdded(action === 'add' && isFreeTextAnnotation(annotations[0]));\n      const isCommentingAnnotationSelected = core.isAnnotationSelected(annotation);\n      if (annotation && !isCommentingAnnotationSelected) {\n        closeAndReset();\n      }\n    };\n\n    core.addEventListener('mouseLeftUp', onMouseLeftUp, null, activeDocumentViewerKey);\n    core.addEventListener('annotationChanged', onAnnotationChanged, null, activeDocumentViewerKey);\n    return () => {\n      core.removeEventListener('mouseLeftUp', onMouseLeftUp, activeDocumentViewerKey);\n      core.removeEventListener('annotationChanged', onAnnotationChanged, activeDocumentViewerKey);\n    };\n  }, [annotation, activeDocumentViewerKey]);\n\n  useEffect(() => {\n    if (!isNotesPanelOpenOrActive && annotation && inlineCommentFilter(annotation)) {\n      dispatch(actions.openElement(DataElements.INLINE_COMMENT_POPUP));\n    }\n    // reopenFlag is needed here in order to re-open the popup on scroll\n  }, [annotation, inlineCommentFilter, reopenFlag]);\n\n  useEffect(() => {\n    const scrollViewElement = core.getScrollViewElement(activeDocumentViewerKey);\n    const onScroll = debounce(() => {\n      setReopenFlag((flag) => !flag);\n    }, 100);\n\n    scrollViewElement?.addEventListener('scroll', onScroll);\n    return () => scrollViewElement?.removeEventListener('scroll', onScroll);\n  }, [activeDocumentViewerKey]);\n\n  return { annotation, closeAndReset };\n}","import { useState, useCallback } from 'react';\nimport core from 'core';\nimport useOnRightClick from 'hooks/useOnRightClick';\n\nexport default () => {\n  const [rightClickedAnnotation, setRightClickedAnnotation] = useState(null);\n\n  useOnRightClick(\n    useCallback((e) => {\n      const annotUnderMouse = core.getAnnotationByMouseEvent(e);\n      if (annotUnderMouse && annotUnderMouse.ToolName !== window.Core.Tools.ToolNames.CROP) {\n        if (annotUnderMouse !== rightClickedAnnotation) {\n          setRightClickedAnnotation(annotUnderMouse);\n        }\n      }\n    }, [rightClickedAnnotation])\n  );\n\n  return { rightClickedAnnotation, setRightClickedAnnotation };\n};\n","import useOnRightClickAnnotation from './useOnRightClickAnnotation';\n\nexport default useOnRightClickAnnotation;","import useOnAnnotationContentOverlayOpen from './useOnAnnotationContentOverlayOpen';\n\nexport default useOnAnnotationContentOverlayOpen;","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\n\nexport default function useOnAnnotationContentOverlayOpen() {\n  // Clients have the option to customize how the tooltip is rendered by passing a handler\n  const customHandler = useSelector((state) => selectors.getAnnotationContentOverlayHandler(state));\n\n  const dispatch = useDispatch();\n  const [annotation, setAnnotation] = useState(null);\n  const [clientXY, setClientXY] = useState({ clientX: 0, clientY: 0 });\n  const isUsingCustomHandler = customHandler !== null;\n\n  useEffect(() => {\n    const viewElement = core.getViewerElement();\n\n    const onMouseHover = (e) => {\n      if (e.buttons !== 0) {\n        return;\n      }\n      let annotation = core.getAnnotationManager().getAnnotationByMouseEvent(e);\n\n      if (annotation && viewElement.contains(e.target)) {\n        // if hovered annot is grouped, pick the \"primary\" annot to match Adobe's behavior\n        const groupedAnnots = core.getAnnotationManager().getGroupAnnotations(annotation);\n        const ungroupedAnnots = groupedAnnots.filter((annot) => !annot.isGrouped());\n        annotation = ungroupedAnnots.length > 0 ? ungroupedAnnots[0] : annotation;\n\n        const isFreeTextAnnotation = annotation instanceof window.Core.Annotations.FreeTextAnnotation;\n        if (isUsingCustomHandler || !isFreeTextAnnotation) {\n          setClientXY({ clientX: e.clientX, clientY: e.clientY });\n          setAnnotation(annotation);\n          dispatch(actions.openElement(DataElements.ANNOTATION_CONTENT_OVERLAY));\n        }\n      } else {\n        setAnnotation(null);\n        dispatch(actions.closeElement(DataElements.ANNOTATION_CONTENT_OVERLAY));\n      }\n    };\n\n    core.addEventListener('mouseMove', onMouseHover);\n    return () => core.removeEventListener('mouseMove', onMouseHover);\n  }, [annotation, isUsingCustomHandler]);\n\n  return { annotation, clientXY };\n}","import useOnLinkAnnotationPopupOpen from './useOnLinkAnnotationPopupOpen';\n\nexport default useOnLinkAnnotationPopupOpen;","import { useEffect, useState, useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport getLinkDestination from 'helpers/getLinkDestination';\nimport core from 'core';\nimport DataElements from 'constants/dataElement';\nimport _debounce from 'lodash/debounce';\n\nconst MAX_DELAY = 600;\n\nexport default function useOnLinkAnnotationPopupOpen() {\n  const dispatch = useDispatch();\n  const [annotation, setAnnotation] = useState(null);\n  const [isEnterComponent, setIsEnterComponent] = useState(false);\n\n  const hidePopup = useCallback(_debounce(() => {\n    setAnnotation(null);\n    setIsEnterComponent(false);\n    dispatch(actions.closeElement(DataElements.LINK_ANNOTATION_POPUP));\n  }, MAX_DELAY), []);\n\n  const handleOnMouseEnter = () => {\n    hidePopup.cancel();\n    if (!isEnterComponent) {\n      setIsEnterComponent(true);\n    }\n  };\n\n  const handleOnMouseLeave = () => {\n    setIsEnterComponent(false);\n    hidePopup();\n  };\n  const activeDocumentViewerKey = useSelector((state) => selectors.getActiveDocumentViewerKey(state));\n\n  useEffect(() => {\n    const onMouseHover = (e) => {\n      if (e.buttons !== 0) {\n        return;\n      }\n      const annotations = core.getAnnotationManager(activeDocumentViewerKey).getAnnotationsByMouseEvent(e, true);\n      const linkAnnot = annotations.find((annot) => annot instanceof window.Core.Annotations.Link);\n      const contents = getLinkDestination(linkAnnot) || '';\n\n      if (contents) {\n        setAnnotation(linkAnnot);\n        dispatch(actions.openElement(DataElements.LINK_ANNOTATION_POPUP));\n      } else if (!isEnterComponent) {\n        hidePopup();\n        return;\n      }\n      hidePopup.cancel();\n    };\n\n    core.addEventListener('mouseMove', onMouseHover);\n    return () => {\n      core.removeEventListener('mouseMove', onMouseHover);\n      hidePopup.cancel();\n    };\n  }, [annotation, dispatch, hidePopup, isEnterComponent, activeDocumentViewerKey]);\n\n  return { annotation, handleOnMouseEnter, handleOnMouseLeave };\n}\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\n\nconst ToolNames = window.Core.Tools.ToolNames;\n\nexport default function useOnAnnotationCreateSignatureToolMode() {\n  const dispatch = useDispatch();\n  const { customizableUI } = useSelector((state) => selectors.getFeatureFlags(state));\n\n  React.useEffect(() => {\n    if (customizableUI) {\n      const handleToolModeUpdated = (newTool) => {\n        if (newTool?.name === ToolNames.SIGNATURE) {\n          dispatch(actions.openElement(DataElements.SIGNATURE_LIST_PANEL));\n        } else if (newTool?.name !== defaultTool && newTool?.name !== ToolNames.TEXT_SELECT) {\n          dispatch(actions.closeElement(DataElements.SIGNATURE_LIST_PANEL));\n        }\n      };\n\n      core.addEventListener('toolModeUpdated', handleToolModeUpdated);\n\n      return () => {\n        core.removeEventListener('toolModeUpdated', handleToolModeUpdated);\n      };\n    }\n  }, [customizableUI]);\n}","import useOnAnnotationCreateSignatureToolMode from './useOnAnnotationCreateSignatureToolMode';\n\nexport default useOnAnnotationCreateSignatureToolMode;","import useOnAnnotationCreateRubberStampToolMode from './useOnAnnotationCreateRubberStampToolMode';\n\nexport default useOnAnnotationCreateRubberStampToolMode;","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from 'constants/dataElement';\nimport defaultTool from 'constants/defaultTool';\n\nexport default function useOnAnnotationCreateRubberStampToolMode() {\n  const dispatch = useDispatch();\n  const [t] = useTranslation();\n  const { customizableUI } = useSelector((state) => selectors.getFeatureFlags(state));\n  const { ToolNames } = window.Core.Tools;\n\n  // Load all the stamps into redux store when the app mounts\n  React.useEffect(() => {\n    if (customizableUI) {\n      dispatch(actions.setStandardStamps(t));\n      dispatch(actions.setCustomStamps(t));\n    }\n  }, [t, customizableUI]);\n\n  React.useEffect(() => {\n    if (customizableUI) {\n      const handleToolModeUpdated = (newTool) => {\n        if (newTool?.name === ToolNames.RUBBER_STAMP) {\n          dispatch(actions.openElement(DataElements.RUBBER_STAMP_PANEL));\n        } else if (newTool?.name !== ToolNames.EDIT && newTool?.name !== ToolNames.TEXT_SELECT && newTool?.name !== defaultTool) {\n          dispatch(actions.closeElement(DataElements.RUBBER_STAMP_PANEL));\n        }\n      };\n\n      core.addEventListener('toolModeUpdated', handleToolModeUpdated);\n\n      return () => {\n        core.removeEventListener('toolModeUpdated', handleToolModeUpdated);\n      };\n    }\n  }, [customizableUI]);\n}","import core from 'core';\r\nimport createDisableFeatures from 'src/apis/disableFeatures';\r\nimport getHashParameters from 'helpers/getHashParameters';\r\nimport { isIOS, isMobileDevice } from 'helpers/device';\r\nimport { PRIORITY_THREE, PRIORITY_TWO, PRIORITY_ONE } from 'constants/actionPriority';\r\nimport Feature from 'constants/feature';\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\nconst getIsCustomUIEnabled = (store) => getHashParameters('ui', 'default') === 'beta' || selectors.getFeatureFlags(store.getState()).customizableUI;\r\n\r\nexport default (store) => {\r\n  const { dispatch, getState } = store;\r\n  const state = getState();\r\n\r\n  const disableFeatures = createDisableFeatures(store);\r\n\r\n  if (state.advanced.defaultDisabledElements) {\r\n    const elements = state.advanced.defaultDisabledElements.split(',');\r\n    dispatch(actions.disableElements(elements, PRIORITY_THREE));\r\n  }\r\n\r\n  // disabling/enabling elements will be handled in onUpdateAnnotationPermission.js\r\n  // the reason for doing this is to avoid duplicate code for handling the `enableReadOnly` constructor option\r\n  // and the effect of programmatically calling instance.setReadOnly\r\n  if (state.viewer.isReadOnly) {\r\n    core.setReadOnly(state.viewer.isReadOnly);\r\n  }\r\n\r\n  const notesInLeftPanel = getHashParameters('notesInLeftPanel', false);\r\n  if (notesInLeftPanel) {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'toggleNotesButton',\r\n        ]\r\n      )\r\n    );\r\n  }\r\n\r\n  const annotationDisabled = !getHashParameters('a', false);\r\n  if (annotationDisabled) {\r\n    disableFeatures([Feature.Annotations]);\r\n  }\r\n\r\n  const filePickerDisabled = !getHashParameters('filepicker', false);\r\n  if (filePickerDisabled) {\r\n    disableFeatures([Feature.FilePicker]);\r\n  }\r\n\r\n  const hideAnnotationPanel = getHashParameters('hideAnnotationPanel', false);\r\n  if (hideAnnotationPanel) {\r\n    disableFeatures([Feature.NotesPanel]);\r\n  }\r\n\r\n  const toolGroupReorderingDisabled = getHashParameters('disableToolGroupReordering', false);\r\n  if (toolGroupReorderingDisabled) {\r\n    dispatch(actions.setEnableToolGroupReordering(false));\r\n  }\r\n\r\n  const measurementsDisabled = !getHashParameters('enableMeasurement', false);\r\n  if (measurementsDisabled) {\r\n    disableFeatures([Feature.Measurement]);\r\n  } else {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'cloudyRectangleAreaToolGroupButton',\r\n        ]\r\n      )\r\n    );\r\n  }\r\n\r\n  const redactionsDisabled = !(\r\n    getHashParameters('enableRedaction', false) || core.isCreateRedactionEnabled()\r\n  );\r\n  if (redactionsDisabled) {\r\n    disableFeatures([Feature.Redaction]);\r\n  }\r\n\r\n  const contentEditDisabled = !getHashParameters('enableContentEdit', false);\r\n  if (contentEditDisabled) {\r\n    disableFeatures([Feature.ContentEdit]);\r\n  }\r\n\r\n  const toolBarDisabled = !getHashParameters('toolbar', true);\r\n  if (toolBarDisabled) {\r\n    dispatch(actions.disableElement('header', PRIORITY_ONE));\r\n  }\r\n\r\n  if (isMobileDevice) {\r\n    dispatch(actions.disableElement('marqueeToolButton', PRIORITY_THREE));\r\n  } else {\r\n    // we could have used the 'hidden' property in the initialState.js to hide this button by css,\r\n    // but that actually checks the window.innerWidth to hide the button, not based on the actual device.\r\n    // we could potentially improve the 'hidden' property in the future.\r\n    dispatch(actions.disableElement('textSelectButton', PRIORITY_THREE));\r\n  }\r\n\r\n  // disabling the fullscreen button in iOS because it only has partial support for the fullscreen mode\r\n  // which is also buggy in WebViewer the last time we tested it\r\n  if (isIOS) {\r\n    dispatch(actions.disableElements(['fullscreenButton'], PRIORITY_THREE));\r\n  }\r\n\r\n  if (!core.isFullPDFEnabled()) {\r\n    dispatch(\r\n      actions.disableElements(\r\n        [\r\n          'measurementSnappingOption',\r\n          'signaturePanel',\r\n          'signaturePanelButton',\r\n        ],\r\n        PRIORITY_THREE,\r\n      ),\r\n    );\r\n    disableFeatures([Feature.OutlineEditing]);\r\n  }\r\n\r\n  dispatch(actions.disableElements(['contentEditButton', 'searchAndReplace'], PRIORITY_TWO));\r\n\r\n  dispatch(\r\n    actions.disableElements(\r\n      getIsCustomUIEnabled(store) ? [\r\n        'wildCardSearchOption',\r\n        'readerPageTransitionButton',\r\n        'mathSymbolsButton',\r\n        'threeDToolGroupButton',\r\n        'attachmentPanelButton',\r\n        'signatureOptionsDropdown',\r\n        'savedSignatureAndInitialsTabs',\r\n      ] : [\r\n        // disable layersPanel by default, it will be enabled in onDocumentLoaded.js\r\n        'layersPanel',\r\n        'layersPanelButton',\r\n        'bookmarksPanel',\r\n        'bookmarksPanelButton',\r\n        'wildCardSearchOption',\r\n        'readerPageTransitionButton',\r\n        'mathSymbolsButton',\r\n        'threeDToolGroupButton',\r\n        'attachmentPanelButton',\r\n        'signatureOptionsDropdown',\r\n        'savedSignatureAndInitialsTabs',\r\n      ],\r\n      PRIORITY_ONE,\r\n    ),\r\n  );\r\n\r\n  disableFeatures([\r\n    Feature.InlineComment,\r\n    Feature.WatermarkPanel,\r\n    Feature.WatermarkPanelImageTab,\r\n    Feature.Portfolio,\r\n  ], PRIORITY_ONE);\r\n\r\n  const enableChangeView = getHashParameters('ChangeView', false);\r\n  if (!enableChangeView) {\r\n    disableFeatures([Feature.ChangeView]);\r\n  }\r\n};","import DataElements from 'constants/dataElement';\n\n/**\n * A namespace which contains APIs Modular UI components.\n * @namespace Components\n * @memberof UI\n * @example\n * webViewerInstance.UI.Components.someComponent\n * webViewerInstance.UI.Components.someAPI()\n */\n\nconst defaultOfficeEditorModularHeaders = {\n  'default-top-header': {\n    dataElement: 'default-top-header',\n    placement: 'top',\n    grow: 0,\n    gap: 12,\n    position: 'start',\n    'float': false,\n    stroke: true,\n    dimension: {\n      paddingTop: 8,\n      paddingBottom: 8,\n      borderWidth: 1\n    },\n    style: {},\n    items: [\n      'groupedLeftHeaderButtons',\n      'office-editor-default-ribbon-group',\n      'officeEditorModeDropdown',\n      'divider-0.3',\n      'searchPanelToggle',\n    ]\n  },\n  'tools-header': {\n    dataElement: DataElements.OFFICE_EDITOR_TOOLS_HEADER,\n    placement: 'top',\n    justifyContent: 'center',\n    grow: 0,\n    gap: 12,\n    position: 'end',\n    'float': false,\n    stroke: true,\n    dimension: {\n      paddingTop: 8,\n      paddingBottom: 8,\n      borderWidth: 1\n    },\n    style: {},\n    items: [\n      'officeEditorHomeGroupedItems',\n      'officeEditorInsertGroupedItems',\n      // 'officeEditorReviewGroupedItems'\n    ]\n  },\n  'page-nav-floating-header': {\n    dataElement: 'page-nav-floating-header',\n    placement: 'bottom',\n    grow: 0,\n    gap: 12,\n    position: 'center',\n    opacityMode: 'dynamic',\n    opacity: 'none',\n    'float': true,\n    stroke: true,\n    dimension: {\n      paddingTop: 8,\n      paddingBottom: 8,\n      borderWidth: 1\n    },\n    style: {\n      background: 'var(--gray-1)',\n      padding: '8px',\n      borderStyle: 'solid',\n      borderWidth: 1,\n      borderColor: 'var(--gray-5)'\n    },\n    items: [\n      'page-controls-container'\n    ]\n  }\n};\n\nconst defaultOfficeEditorModularComponents = {\n  fontSizeDropdown: {\n    dataElement: 'fontSizeDropdown',\n    type: 'fontSizeDropdown',\n  },\n  fontFaceDropdown: {\n    dataElement: 'fontFaceDropdown',\n    type: 'fontFaceDropdown',\n  },\n  stylePresetDropdown: {\n    dataElement: 'stylePresetDropdown',\n    type: 'stylePresetDropdown',\n  },\n  createTableDropdown: {\n    dataElement: 'createTableDropdown',\n    type: 'createTableDropdown',\n  },\n  boldButton: {\n    dataElement: 'boldButton',\n    type: 'presetButton',\n    buttonType: 'boldButton'\n  },\n  italicButton: {\n    dataElement: 'italicButton',\n    type: 'presetButton',\n    buttonType: 'italicButton'\n  },\n  underlineButton: {\n    dataElement: 'underlineButton',\n    type: 'presetButton',\n    buttonType: 'underlineButton'\n  },\n  officeEditorModeDropdown: {\n    dataElement: 'officeEditorModeDropdown',\n    type: 'officeEditorModeDropdown',\n  },\n  orderedListButton: {\n    dataElement: 'orderedListButton',\n    type: 'presetButton',\n    buttonType: 'orderedListButton',\n  },\n  unorderedListButton: {\n    dataElement: 'unorderedListButton',\n    type: 'presetButton',\n    buttonType: 'unorderedListButton',\n  },\n  undefined: {},\n  'divider-0.1': {\n    dataElement: 'divider-0.1',\n    type: 'divider'\n  },\n  'left-panel-toggle': {\n    dataElement: 'left-panel-toggle',\n    title: 'Left Panel',\n    type: 'toggleButton',\n    img: 'icon-header-sidebar-line',\n    toggleElement: 'tabPanel'\n  },\n  'view-controls': {\n    dataElement: 'view-controls',\n    type: 'viewControls'\n  },\n  'divider-0.3': {\n    dataElement: 'divider-0.3',\n    type: 'divider'\n  },\n  'zoom-container': {\n    dataElement: 'zoom-container',\n    type: 'zoom'\n  },\n  'divider-0.2': {\n    dataElement: 'divider-0.2',\n    type: 'divider'\n  },\n  'menu-toggle-button': {\n    dataElement: 'menu-toggle-button',\n    img: 'ic-hamburger-menu',\n    title: 'component.menuOverlay',\n    toggleElement: 'MainMenuFlyout',\n    type: 'toggleButton',\n  },\n  groupedLeftHeaderButtons: {\n    dataElement: 'groupedLeftHeaderButtons',\n    items: [\n      'menu-toggle-button',\n      'divider-0.1',\n      'zoom-container',\n      'divider-0.2',\n      // add document name component here, https://apryse.atlassian.net/browse/WVR-6323\n    ],\n    type: 'groupedItems',\n    grow: 1,\n    gap: 12,\n    alwaysVisible: true,\n    style: {}\n  },\n  'toolbarGroup-oe-Home': {\n    dataElement: 'toolbarGroup-oe-Home',\n    title: 'Home',\n    type: 'ribbonItem',\n    label: 'Home',\n    toolbarGroup: 'toolbarGroup-oe-Home',\n    groupedItems: [\n      'officeEditorHomeGroupedItems',\n    ],\n  },\n  'toolbarGroup-oe-Insert': {\n    dataElement: 'toolbarGroup-oe-Insert',\n    title: 'Insert',\n    type: 'ribbonItem',\n    label: 'Insert',\n    toolbarGroup: 'toolbarGroup-oe-Insert',\n    groupedItems: [\n      'officeEditorInsertGroupedItems',\n    ],\n  },\n  'toolbarGroup-oe-Review': {\n    dataElement: 'toolbarGroup-oe-Review',\n    title: 'Review',\n    type: 'ribbonItem',\n    label: 'Review',\n    toolbarGroup: 'toolbarGroup-oe-Review',\n    groupedItems: [\n      'officeEditorReviewGroupedItems',\n    ],\n  },\n  'office-editor-default-ribbon-group': {\n    dataElement: 'office-editor-default-ribbon-group',\n    items: [\n      'toolbarGroup-oe-Home',\n      'toolbarGroup-oe-Insert',\n      // 'toolbarGroup-oe-Review',\n    ],\n    type: 'ribbonGroup',\n    justifyContent: 'start',\n    grow: 2,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  searchPanelToggle: {\n    dataElement: 'searchPanelToggle',\n    title: 'component.searchPanel',\n    type: 'toggleButton',\n    img: 'icon-header-search',\n    toggleElement: 'searchPanel'\n  },\n  officeEditorHomeToolsGroupedItems: {\n    dataElement: 'officeEditorHomeToolsGroupedItems',\n    items: [\n      'stylePresetDropdown',\n      'fontFaceDropdown',\n      'fontSizeDropdown',\n      'divider-0.2',\n      'boldButton',\n      'italicButton',\n      'underlineButton',\n      'divider-0.3',\n      'unorderedListButton',\n      'orderedListButton',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  officeEditorHomeGroupedItems: {\n    dataElement: 'officeEditorHomeGroupedItems',\n    items: [\n      'officeEditorHomeToolsGroupedItems',\n      'divider-0.4',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  officeEditorInsertToolsGroupedItems: {\n    dataElement: 'officeEditorInsertToolsGroupedItems',\n    items: [\n      'createTableDropdown',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  officeEditorInsertGroupedItems: {\n    dataElement: 'officeEditorInsertGroupedItems',\n    items: [\n      'officeEditorInsertToolsGroupedItems',\n      'divider-0.4',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  officeEditorReviewToolsGroupedItems: {\n    dataElement: 'officeEditorReviewToolsGroupedItems',\n    items: [\n      'searchPanelToggle',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  officeEditorReviewGroupedItems: {\n    dataElement: 'officeEditorReviewGroupedItems',\n    items: [\n      'officeEditorReviewToolsGroupedItems',\n      'divider-0.4',\n    ],\n    type: 'groupedItems',\n    grow: 0,\n    gap: 12,\n    alwaysVisible: false,\n    style: {}\n  },\n  'page-controls-container': {\n    dataElement: 'page-controls-container',\n    type: 'pageControls'\n  }\n};\nconst defaultOfficeEditorPanels = [\n  {\n    dataElement: DataElements.LEFT_PANEL,\n    render: 'notesPanel',\n    location: 'left'\n  },\n  {\n    dataElement: 'searchPanel',\n    render: 'searchPanel',\n    location: 'right'\n  },\n];\n\nexport { defaultOfficeEditorModularHeaders, defaultOfficeEditorModularComponents, defaultOfficeEditorPanels };","import { hot } from 'react-hot-loader/root';\nimport React, { useEffect } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual, useDispatch, useSelector, useStore } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport selectors from 'selectors';\nimport core from 'core';\nimport actions from 'actions';\n\nimport LogoBar from 'components/LogoBar';\nimport Accessibility from 'components/Accessibility';\nimport Header from 'components/Header';\nimport DocumentContainer from 'components/DocumentContainer';\nimport RightPanel from 'components/RightPanel';\nimport FilePickerHandler from 'components/FilePickerHandler';\nimport CopyTextHandler from 'components/CopyTextHandler';\nimport PrintHandler from 'components/PrintHandler';\nimport FontHandler from 'components/FontHandler';\nimport TextEditingPanel from 'components/TextEditingPanel';\nimport Wv3dPropertiesPanel from 'components/Wv3dPropertiesPanel';\nimport AudioPlaybackPopup from 'components/AudioPlaybackPopup';\nimport DocumentCropPopup from 'components/DocumentCropPopup';\nimport SnippingToolPopup from '../SnippingToolPopup';\nimport EmbeddedJSPopup from 'components/EmbeddedJSPopup';\nimport FormFieldIndicatorContainer from 'components/FormFieldIndicator';\nimport MultiTabEmptyPage from 'components/MultiTabEmptyPage';\nimport MultiViewer from 'components/MultiViewer';\nimport ComparePanel from 'components/MultiViewer/ComparePanel';\nimport WatermarkPanel from 'components/WatermarkPanel';\nimport CustomElement from 'components/CustomElement';\nimport Panel from 'components/Panel';\nimport LeftHeader from 'components/ModularComponents/LeftHeader';\nimport RightHeader from 'components/ModularComponents/RightHeader';\nimport BottomHeader from 'components/ModularComponents/BottomHeader';\nimport TopHeader from 'components/ModularComponents/TopHeader';\nimport FlyoutContainer from 'components/ModularComponents/FlyoutContainer';\nimport RibbonOverflowFlyout from 'components/ModularComponents/RibbonOverflowFlyout';\nimport ViewControlsFlyout from 'components/ModularComponents/ViewControls/ViewControlsFlyout';\nimport ProgressModal from 'components/ProgressModal';\nimport LazyLoadWrapper, { LazyLoadComponents } from 'components/LazyLoadWrapper';\nimport useOnTextSelected from 'hooks/useOnTextSelected';\nimport useOnContextMenuOpen from 'hooks/useOnContextMenuOpen';\nimport useOnAnnotationPopupOpen from 'hooks/useOnAnnotationPopupOpen';\nimport useOnAlignmentPopupOpen from 'hooks/useOnAlignmentPopupOpen';\nimport useOnFormFieldAnnotationAddedOrSelected from 'hooks/useOnFormFieldAnnotationAddedOrSelected';\nimport useOnFreeTextEdit from 'hooks/useOnFreeTextEdit';\nimport useOnMeasurementToolOrAnnotationSelected from 'hooks/useOnMeasurementToolOrAnnotationSelected';\nimport useOnInlineCommentPopupOpen from 'hooks/useOnInlineCommentPopupOpen';\nimport useOnRightClickAnnotation from 'hooks/useOnRightClickAnnotation';\nimport useOnAnnotationContentOverlayOpen from 'hooks/useOnAnnotationContentOverlayOpen';\nimport useOnLinkAnnotationPopupOpen from 'hooks/useOnLinkAnnotationPopupOpen';\nimport useOnAnnotationCreateSignatureToolMode from 'hooks/useOnAnnotationCreateSignatureToolMode';\nimport useOnAnnotationCreateRubberStampToolMode from 'hooks/useOnAnnotationCreateRubberStampToolMode';\nimport useOnRedactionAnnotationChanged from 'hooks/useOnRedactionAnnotationChanged';\nimport loadDocument from 'helpers/loadDocument';\nimport getHashParameters from 'helpers/getHashParameters';\nimport fireEvent from 'helpers/fireEvent';\nimport { prepareMultiTab } from 'helpers/TabManager';\nimport hotkeysManager from 'helpers/hotkeysManager';\nimport setDefaultDisabledElements from 'helpers/setDefaultDisabledElements';\nimport { getInstanceNode } from 'helpers/getRootNode';\nimport { isMobileDevice } from 'helpers/device';\n\nimport Events from 'constants/events';\nimport overlays from 'constants/overlays';\nimport { panelNames } from 'constants/panel';\nimport DataElements from 'constants/dataElement';\nimport { defaultModularComponents, defaultModularHeaders, defaultPanels } from '../../redux/modularComponents';\nimport {\n  defaultOfficeEditorModularComponents,\n  defaultOfficeEditorModularHeaders,\n  defaultOfficeEditorPanels,\n} from '../../redux/officeEditorModularComponents';\n\nimport setLanguage from 'src/apis/setLanguage';\nimport { loadDefaultFonts } from 'src/helpers/loadFont';\nimport './App.scss';\nimport LayersPanel from 'components/LayersPanel';\nimport MultiViewerWrapper from 'components/MultiViewer/MultiViewerWrapper';\nimport FeatureFlags from 'constants/featureFlags';\nimport { PRIORITY_ONE } from 'constants/actionPriority';\nimport TabsHeader from 'components/TabsHeader';\nimport useTabFocus from 'hooks/useTabFocus';\n\n// TODO: Use constants\nconst tabletBreakpoint = window.matchMedia('(min-width: 641px) and (max-width: 900px)');\n\nconst propTypes = {\n  removeEventHandlers: PropTypes.func.isRequired,\n};\n\nconst App = ({ removeEventHandlers }) => {\n  const store = useStore();\n  const dispatch = useDispatch();\n  let timeoutReturn;\n\n  const [\n    isInDesktopOnlyMode,\n    isMultiViewerMode,\n    genericPanels,\n    customModals,\n    notesInLeftPanel,\n    isOfficeEditorMode,\n    featureFlags,\n    isAccessibileMode,\n  ] = useSelector((state) => [\n    selectors.isInDesktopOnlyMode(state),\n    selectors.isMultiViewerMode(state),\n    selectors.getGenericPanels(state),\n    selectors.getCustomModals(state),\n    selectors.getNotesInLeftPanel(state),\n    selectors.getIsOfficeEditorMode(state),\n    selectors.getFeatureFlags(state),\n    selectors.isAccessibleMode(state),\n  ], shallowEqual);\n\n  const { customizableUI } = featureFlags;\n  // These hooks control behaviours regarding the opening and closing of panels and in the case\n  // of the redaction hook it creates a reference that tracks the redaction annotations\n  useOnAnnotationCreateRubberStampToolMode();\n  useOnAnnotationCreateSignatureToolMode();\n  if (isAccessibileMode) {\n    useTabFocus();\n  }\n  const { redactionAnnotationsList } = useOnRedactionAnnotationChanged();\n\n  useEffect(() => {\n    const isOfficeEditingEnabled = getHashParameters('enableOfficeEditing', false);\n    if (isOfficeEditingEnabled && isMobileDevice) {\n      dispatch(actions.showWarningMessage({\n        message: 'officeEditor.notSupportedOnMobile',\n      }));\n    }\n  }, []);\n\n  useEffect(() => {\n    loadDefaultFonts();\n    const isCustomizableUIEnabled = getHashParameters('ui', 'default') === 'beta';\n    const isOfficeEditingEnabled = getHashParameters('enableOfficeEditing', false);\n    if (!isCustomizableUIEnabled) {\n      return;\n    }\n    if (isOfficeEditingEnabled) {\n      // set default UI for Office Editor\n      dispatch(actions.setModularHeadersAndComponents(defaultOfficeEditorModularComponents, defaultOfficeEditorModularHeaders));\n      dispatch(actions.setGenericPanels(defaultOfficeEditorPanels));\n      // set panel width for tracked changes panel to 330px for the new UI\n      dispatch(actions.setPanelWidth(DataElements.LEFT_PANEL, 330));\n    } else {\n      // set default UI for WebViewer\n      dispatch(actions.setModularHeadersAndComponents(defaultModularComponents, defaultModularHeaders));\n      dispatch(actions.setGenericPanels(defaultPanels));\n      // set panel width for notes panel to 330px for the new UI\n      dispatch(actions.setPanelWidth(DataElements.NOTES_PANEL, 330));\n    }\n    // set panel width for search panel to 330px for the new UI\n    // we dont want to change this for the legacy panels at this time.\n    dispatch(actions.setPanelWidth(DataElements.SEARCH_PANEL, 330));\n    dispatch(actions.enableFeatureFlag(FeatureFlags.CUSTOMIZABLE_UI));\n  }, []);\n\n  useEffect(() => {\n    if (customizableUI) {\n      // These elements are disabled in the old UI and need to be enabled in the new UI\n      dispatch(actions.enableElements([\n        'layersPanel',\n        'layersPanelButton',\n        'bookmarksPanel',\n        'bookmarksPanelButton',\n      ], PRIORITY_ONE));\n    }\n  }, [customizableUI]);\n\n  useEffect(() => {\n    // To avoid race condition with window.dispatchEvent firing before window.addEventListener\n    setTimeout(() => {\n      fireEvent(Events.VIEWER_LOADED);\n    }, 300);\n    window.isApryseWebViewerWebComponent ?\n      fireEvent('ready', undefined, getInstanceNode()) :\n      window.parent.postMessage(\n        {\n          type: 'viewerLoaded',\n          id: parseInt(getHashParameters('id'), 10),\n        },\n        '*',\n      );\n\n    async function loadInitialDocument() {\n      let initialDoc = getHashParameters('d', '');\n      const isOfficeEditingEnabled = getHashParameters('enableOfficeEditing', false);\n      if (!initialDoc && isOfficeEditingEnabled) {\n        loadDocument(dispatch, null, {\n          filename: 'Untitled.docx',\n          isOfficeEditingEnabled: true,\n        });\n\n        return;\n      }\n\n      const state = store.getState();\n      const doesAutoLoad = getHashParameters('auto_load', true);\n      initialDoc = initialDoc ? JSON.parse(initialDoc) : '';\n      initialDoc = Array.isArray(initialDoc) ? initialDoc : [initialDoc];\n      const isMultiTabAlreadyEnabled = state.viewer.isMultiTab;\n      const isMultiDoc = initialDoc.length > 1;\n      const startOffline = getHashParameters('startOffline', false);\n      const basePath = getHashParameters('basePath', '');\n      window.Core.setBasePath(basePath);\n\n      if (isMultiDoc && !isMultiTabAlreadyEnabled) {\n        prepareMultiTab(initialDoc, store);\n        initialDoc = initialDoc[0];\n        if ((initialDoc && doesAutoLoad) || startOffline) {\n          const options = {\n            externalPath: getHashParameters('p', ''),\n            documentId: getHashParameters('did', null),\n          };\n          loadDocument(dispatch, initialDoc, options);\n        }\n      } else {\n        const activeTab = state.viewer.activeTab || 0;\n        initialDoc = initialDoc[activeTab];\n        if ((initialDoc && doesAutoLoad) || startOffline) {\n          const options = {\n            extension: getHashParameters('extension', null),\n            filename: getHashParameters('filename', null),\n            externalPath: getHashParameters('p', ''),\n            documentId: getHashParameters('did', null),\n            showInvalidBookmarks: getHashParameters('showInvalidBookmarks', false),\n          };\n\n          loadDocument(dispatch, initialDoc, options);\n        }\n      }\n    }\n\n    function loadDocumentAndCleanup() {\n      loadInitialDocument();\n      window.removeEventListener('message', messageHandler);\n      clearTimeout(timeoutReturn);\n    }\n\n    function messageHandler(event) {\n      if (event.isTrusted && typeof event.data === 'object' && event.data.type === 'viewerLoaded') {\n        loadDocumentAndCleanup();\n      }\n    }\n\n    window.addEventListener('blur', () => {\n      dispatch(actions.closeElements(overlays));\n    });\n    window.addEventListener('message', messageHandler, false);\n\n    // When a user switches tabs, the focused element can cause unexpected behavior,\n    // such as triggering keyboard events or displaying tooltips, when they return\n    // to the tab. Blurring the focused element before switching tabs helps to\n    // prevent these unwanted interactions.\n    document.addEventListener('visibilitychange', () => {\n      if (document.visibilityState === 'hidden') {\n        if (document.activeElement) {\n          document.activeElement.blur();\n        }\n      }\n    });\n\n    // In case WV is used outside of iframe, postMessage will not\n    // receive the message, and this timeout will trigger loadInitialDocument\n    timeoutReturn = setTimeout(loadDocumentAndCleanup, 500);\n\n    return removeEventHandlers;\n  }, []);\n\n  useEffect(() => {\n    const setTabletState = () => {\n      // TODO: Use constants\n      dispatch(actions.setLeftPanelWidth(251));\n      dispatch(actions.setNotesPanelWidth(293));\n      dispatch(actions.setSearchPanelWidth(293));\n    };\n\n    const onBreakpoint = () => {\n      if (tabletBreakpoint.matches) {\n        setTabletState();\n      }\n    };\n    tabletBreakpoint.addListener(onBreakpoint);\n  }, []);\n\n  // These need to be done here to wait for the persisted values loaded in redux\n  useEffect(() => {\n    setLanguage(store)(store.getState().viewer.currentLanguage);\n    hotkeysManager.initialize(store);\n    setDefaultDisabledElements(store);\n  }, []);\n\n  useEffect(() => {\n    const onError = (error) => {\n      let errorTitle;\n      if (error.type && error.type === 'loaderror') {\n        errorTitle = 'message.loadError';\n      }\n      error = error.detail?.message || error.detail || error.message;\n\n      let errorMessage;\n\n      if (typeof error === 'string') {\n        errorMessage = error;\n\n        // provide a more specific error message\n        if (errorMessage.includes('File does not exist')) {\n          errorMessage = 'message.notSupported';\n        }\n      } else if (error?.type === 'InvalidPDF') {\n        errorMessage = 'message.badDocument';\n      }\n\n      if (errorMessage) {\n        dispatch(actions.showErrorMessage(errorMessage, errorTitle));\n      }\n    };\n\n    window.addEventListener('loaderror', onError);\n    return () => window.removeEventListener('loaderror', onError);\n  }, []);\n\n  useEffect(() => {\n    // update cursor and selection properties for Office Editor custom UI\n    if (isOfficeEditorMode && customizableUI) {\n      const onCursorPropertiesUpdated = async (cursorProperties) => {\n        dispatch(actions.setOfficeEditorCursorProperties(cursorProperties));\n      };\n      const onSelectionPropertiesUpdated = (selectionProperties) => {\n        dispatch(actions.setOfficeEditorSelectionProperties(selectionProperties));\n      };\n\n      core.getDocument().addEventListener('cursorPropertiesUpdated', onCursorPropertiesUpdated);\n      core.getDocument().addEventListener('selectionPropertiesUpdated', onSelectionPropertiesUpdated);\n\n      return () => {\n        core.getDocument().removeEventListener('selectionPropertiesUpdated', onSelectionPropertiesUpdated);\n        core.getDocument().removeEventListener('cursorPropertiesUpdated', onCursorPropertiesUpdated);\n      };\n    }\n  }, [isOfficeEditorMode, customizableUI]);\n\n  const renderPanel = (panelName, dataElement) => {\n    switch (panelName) {\n      case panelNames.OUTLINE:\n        return <LazyLoadWrapper Component={LazyLoadComponents.OutlinesPanel} dataElement={dataElement} />;\n      case panelNames.SIGNATURE:\n        return <LazyLoadWrapper Component={LazyLoadComponents.SignaturePanel} dataElement={dataElement} />;\n      case panelNames.BOOKMARKS:\n        return <LazyLoadWrapper Component={LazyLoadComponents.BookmarksPanel} dataElement={dataElement} />;\n      case panelNames.FILE_ATTACHMENT:\n        return <LazyLoadWrapper Component={LazyLoadComponents.FileAttachmentPanel} dataElement={dataElement} />;\n      case panelNames.THUMBNAIL:\n        return <LazyLoadWrapper Component={LazyLoadComponents.ThumbnailsPanel} dataElement={dataElement} />;\n      case panelNames.LAYERS:\n        return <LayersPanel />;\n      case panelNames.TEXT_EDITING:\n        return <TextEditingPanel dataElement={dataElement} />;\n      case panelNames.CHANGE_LIST:\n        return <MultiViewerWrapper><ComparePanel dataElement={dataElement} /></MultiViewerWrapper>;\n      case panelNames.STYLE:\n        return <LazyLoadWrapper Component={LazyLoadComponents.StylePanel} dataElement={dataElement} />;\n      case panelNames.REDACTION:\n        return <LazyLoadWrapper Component={LazyLoadComponents.RedactionPanel} dataElement={dataElement} redactionAnnotationsList={redactionAnnotationsList} isCustomPanel={true} />;\n      case panelNames.SEARCH:\n        return <LazyLoadWrapper Component={LazyLoadComponents.SearchPanel} dataElement={dataElement} />;\n      case panelNames.NOTES:\n        return <LazyLoadWrapper Component={LazyLoadComponents.NotesPanel} dataElement={dataElement} isCustomPanel={true} />;\n      case panelNames.TABS:\n        return <LazyLoadWrapper Component={LazyLoadComponents.TabPanel} dataElement={dataElement} />;\n      case panelNames.SIGNATURE_LIST:\n        return <LazyLoadWrapper Component={LazyLoadComponents.SignatureListPanel} dataElement={dataElement} />;\n      case panelNames.RUBBER_STAMP:\n        return <LazyLoadWrapper Component={LazyLoadComponents.RubberStampPanel} dataElement={dataElement} />;\n      case panelNames.PORTFOLIO:\n        return <LazyLoadWrapper Component={LazyLoadComponents.PortfolioPanel} dataElement={dataElement} />;\n    }\n  };\n\n  const panels = genericPanels.map((panel, index) => {\n    return (\n      panel.render && (\n        <Panel key={index} dataElement={panel.dataElement} location={panel.location} isCustom={true}>\n          {Object.values(panelNames).includes(panel.render) ? renderPanel(panel.render, panel.dataElement) : (\n            <CustomElement\n              key={panel.dataElement || index}\n              className={`Panel ${panel.dataElement}`}\n              display={panel.dataElement}\n              dataElement={panel.dataElement}\n              render={panel.render}\n              isCustomPanel={true}\n            />\n          )}\n        </Panel>\n      )\n    );\n  });\n\n  return (\n    <>\n      <div\n        className={classNames({\n          'App': true,\n          'is-in-desktop-only-mode': isInDesktopOnlyMode,\n          'is-web-component': window.isApryseWebViewerWebComponent,\n        })}\n      >\n        <FlyoutContainer />\n        <RibbonOverflowFlyout />\n        <ViewControlsFlyout />\n        <Accessibility />\n        <Header />\n        {isOfficeEditorMode && !customizableUI && (\n          <LazyLoadWrapper\n            Component={LazyLoadComponents.OfficeEditorToolsHeader}\n            dataElement={DataElements.OFFICE_EDITOR_TOOLS_HEADER}\n          />\n        )}\n        {customizableUI && <TabsHeader/>}\n        <TopHeader />\n        <div className=\"content\">\n          <LeftHeader />\n          {!customizableUI && <LazyLoadWrapper\n            Component={LazyLoadComponents.LeftPanel}\n            dataElement={DataElements.LEFT_PANEL}\n          />}\n          {panels}\n          {!isMultiViewerMode && <DocumentContainer />}\n          {window?.ResizeObserver && <MultiViewer />}\n          <RightHeader />\n          {!customizableUI && <RightPanel dataElement={DataElements.SEARCH_PANEL} onResize={(width) => dispatch(actions.setSearchPanelWidth(width))}>\n            <LazyLoadWrapper\n              Component={LazyLoadComponents.SearchPanel}\n              dataElement={DataElements.SEARCH_PANEL}\n            />\n          </RightPanel>}\n          {!customizableUI && <RightPanel dataElement=\"notesPanel\" onResize={(width) => dispatch(actions.setNotesPanelWidth(width))}>\n            {!notesInLeftPanel && <LazyLoadWrapper\n              Component={LazyLoadComponents.NotesPanel}\n              dataElement={DataElements.NOTES_PANEL}\n            />}\n          </RightPanel>}\n          {!customizableUI && <RightPanel dataElement=\"redactionPanel\" onResize={(width) => dispatch(actions.setRedactionPanelWidth(width))}>\n            <LazyLoadWrapper\n              Component={LazyLoadComponents.RedactionPanel}\n              dataElement={DataElements.REDACTION_PANEL}\n              redactionAnnotationsList={redactionAnnotationsList} />\n          </RightPanel>}\n          <RightPanel dataElement=\"watermarkPanel\" onResize={(width) => dispatch(actions.setWatermarkPanelWidth(width))}>\n            <WatermarkPanel />\n          </RightPanel>\n          <RightPanel\n            dataElement=\"wv3dPropertiesPanel\"\n            onResize={(width) => dispatch(actions.setWv3dPropertiesPanelWidth(width))}\n          >\n            <Wv3dPropertiesPanel />\n          </RightPanel>\n          <MultiTabEmptyPage />\n          {!customizableUI && <RightPanel\n            dataElement=\"textEditingPanel\"\n            onResize={(width) => dispatch(actions.setTextEditingPanelWidth(width))}\n          >\n            <TextEditingPanel />\n          </RightPanel>}\n          <MultiViewerWrapper>\n            <RightPanel dataElement=\"comparePanel\" onResize={(width) => dispatch(actions.setComparePanelWidth(width))}>\n              <ComparePanel />\n            </RightPanel>\n          </MultiViewerWrapper>\n          <BottomHeader />\n        </div>\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ViewControlsOverlay}\n          dataElement={DataElements.VIEW_CONTROLS_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.MenuOverlay}\n          dataElement={DataElements.MENU_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ZoomOverlay}\n          dataElement={DataElements.ZOOM_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.AnnotationContentOverlay}\n          dataElement={DataElements.ANNOTATION_CONTENT_OVERLAY}\n          onOpenHook={useOnAnnotationContentOverlayOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.LinkAnnotationPopup}\n          dataElement={DataElements.LINK_ANNOTATION_POPUP}\n          onOpenHook={useOnLinkAnnotationPopupOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.PageManipulationOverlay}\n          dataElement={DataElements.PAGE_MANIPULATION_OVERLAY}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ThumbnailMoreOptionsPopup}\n          dataElement={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ThumbnailMoreOptionsPopupSmall}\n          dataElement={DataElements.THUMBNAILS_CONTROL_MANIPULATE_POPUP_SMALL}\n        />\n        <FormFieldIndicatorContainer />\n        {/* Popups */}\n        {/* AnnotationPopup should be the first so that other popups can lay on top of it */}\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.AnnotationPopup}\n          dataElement={DataElements.ANNOTATION_POPUP}\n          onOpenHook={useOnAnnotationPopupOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.AlignmentPopup}\n          dataElement={DataElements.ANNOTATION_ALIGNMENT_POPUP}\n          onOpenHook={useOnAlignmentPopupOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.TextPopup}\n          dataElement={DataElements.TEXT_POPUP}\n          onOpenHook={useOnTextSelected}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ContextMenuPopup}\n          dataElement={DataElements.CONTEXT_MENU_POPUP}\n          onOpenHook={useOnContextMenuOpen}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.FormFieldEditPopup}\n          dataElement={DataElements.FORM_FIELD_EDIT_POPUP}\n          onOpenHook={useOnFormFieldAnnotationAddedOrSelected}\n        />\n        {!customizableUI && (\n          <LazyLoadWrapper\n            Component={LazyLoadComponents.RichTextPopup}\n            dataElement={DataElements.RICH_TEXT_POPUP}\n            onOpenHook={useOnFreeTextEdit}\n          />\n        )}\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.InlineCommentingPopup}\n          dataElement={DataElements.INLINE_COMMENT_POPUP}\n          onOpenHook={useOnInlineCommentPopupOpen}\n        />\n        <AudioPlaybackPopup />\n        <DocumentCropPopup />\n        <SnippingToolPopup />\n        {/* Modals */}\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ScaleModal}\n          dataElement={DataElements.SCALE_MODAL}\n          onOpenHook={useOnMeasurementToolOrAnnotationSelected}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.ContentEditLinkModal} dataElement={DataElements.CONTENT_EDIT_LINK_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.SignatureModal} dataElement={DataElements.SIGNATURE_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.PrintModal} dataElement={DataElements.PRINT_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.ErrorModal} dataElement={DataElements.ERROR_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.PasswordModal} dataElement={DataElements.PASSWORD_MODAL} />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.CreateStampModal}\n          dataElement={DataElements.CUSTOM_STAMP_MODAL}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.PageReplacementModal}\n          dataElement={DataElements.PAGE_REPLACEMENT_MODAL}\n        />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.LinkModal}\n          dataElement={DataElements.LINK_MODAL}\n          onOpenHook={useOnRightClickAnnotation}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.FilterAnnotModal} dataElement={DataElements.FILTER_MODAL} />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.PageRedactionModal}\n          dataElement={DataElements.PAGE_REDACT_MODAL}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.CalibrationModal} dataElement={DataElements.CALIBRATION_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.SettingsModal} dataElement={DataElements.SETTINGS_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.SaveModal} dataElement={DataElements.SAVE_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.InsertPageModal} dataElement={DataElements.INSERT_PAGE_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.LoadingModal} dataElement={DataElements.LOADING_MODAL} />\n\n        {\n          /*\n            There were issues appearing in WebViewer BIM add-on with lazy loading ProgressModal.\n            The BIM add-on relies on ProgressModal styling which wouldn't not get loaded explicitly.\n            This caused styling issues when loading a 3D model and would impact the UI of the BIM add-on.\n\n            See https://apryse.atlassian.net/browse/WVR-3094\n          */\n        }\n        <ProgressModal />\n\n        <LazyLoadWrapper Component={LazyLoadComponents.WarningModal} dataElement={DataElements.WARNING_MODAL} />\n        <LazyLoadWrapper Component={LazyLoadComponents.Model3DModal} dataElement={DataElements.MODEL3D_MODAL} />\n        <LazyLoadWrapper\n          Component={LazyLoadComponents.ColorPickerModal}\n          dataElement={DataElements.COLOR_PICKER_MODAL}\n        />\n        <LazyLoadWrapper Component={LazyLoadComponents.OpenFileModal} dataElement={DataElements.OPEN_FILE_MODAL} />\n        {customModals.length > 0 && (\n          <LazyLoadWrapper Component={LazyLoadComponents.CustomModal} dataElement={DataElements.CUSTOM_MODAL} />\n        )}\n        {core.isFullPDFEnabled() && (\n          <LazyLoadWrapper\n            Component={LazyLoadComponents.SignatureValidationModal}\n            dataElement={DataElements.SIGNATURE_VALIDATION_MODAL}\n          />\n        )}\n        <LogoBar />\n        <LazyLoadWrapper Component={LazyLoadComponents.CreatePortfolioModal} dataElement={DataElements.CREATE_PORTFOLIO_MODAL} />\n        <EmbeddedJSPopup />\n      </div>\n\n      <PrintHandler />\n      <FilePickerHandler />\n      <CopyTextHandler />\n      <FontHandler />\n    </>\n  );\n};\n\nApp.propTypes = propTypes;\n\nexport default hot(App);\n","import { useEffect } from 'react';\nimport selectors from 'selectors';\nimport { useSelector } from 'react-redux';\nimport { focusableElementDomString } from '@pdftron/webviewer-react-toolkit';\nimport getRootNode from 'helpers/getRootNode';\nimport core from 'core';\n\nexport default function useTabFocus() {\n  const [pageNumber] = useSelector((state) => [\n    selectors.getCurrentPage(state),\n  ]);\n\n  useEffect(() => {\n    const getNextFocusableElement = (currentElement, direction) => {\n      const focusable = getRootNode().querySelectorAll(focusableElementDomString);\n      const focusableArray = Array.from(focusable);\n      const currentIndex = focusableArray.indexOf(currentElement);\n      const arrayLength = focusableArray.length;\n\n      let nextIndex = (currentIndex + direction + arrayLength) % arrayLength;\n\n      while (nextIndex !== currentIndex) {\n        const nextElement = focusableArray[nextIndex];\n        if (isElementVisible(nextElement)) {\n          return nextElement;\n        }\n        nextIndex = (nextIndex + direction + arrayLength) % arrayLength;\n      }\n\n      return null;\n    };\n\n    const isElementVisible = (element) => {\n      const computedStyle = window.getComputedStyle(element);\n      return element && (element.offsetParent !== null || computedStyle.position === 'fixed');\n    };\n\n    const keydownListener = (e) => {\n      if (e.key === 'Tab') {\n        const activeElement = getRootNode().activeElement;\n        let nextElement;\n        if (e.shiftKey) {\n          nextElement = getNextFocusableElement(activeElement, -1);\n        } else {\n          nextElement = getNextFocusableElement(activeElement, 1);\n        }\n        const visiblePages = core.getDocumentViewer().getDisplayModeManager().getVisiblePages();\n        const currentPageContainers = visiblePages.map((page) => getRootNode().querySelector(`#pageContainer${page}`));\n        const isActiveElementInContainers = currentPageContainers.some((container) => container.contains(document.activeElement));\n        // get the correct page if the last selected element was outside of the visible page containers or if the active element is the document\n        if ((nextElement.id.includes('pageText') && !isActiveElementInContainers) || activeElement?.className === 'document') {\n          e.preventDefault();\n          const activePageText = getRootNode().querySelector(`#pageText${pageNumber}`);\n          activePageText.focus();\n        }\n      }\n    };\n\n    window.addEventListener('keydown', keydownListener);\n    return () => window.removeEventListener('keydown', keydownListener);\n  }, [pageNumber]);\n}","import App from './App';\n\nexport default App;","/**\n * Contains all possible modes for fitting/zooming pages to the viewer. The behavior may vary depending on the LayoutMode.\n * @name UI.FitMode\n * @property {string} FitPage A fit mode where the zoom level is fixed to the width or height of the page, whichever is smaller.\n * @property {string} FitWidth A fit mode where the zoom level is fixed to the width of the page.\n * @property {string} Zoom A fit mode where the zoom level is not fixed.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var FitMode = instance.UI.FitMode;\n    instance.UI.setFitMode(FitMode.FitWidth);\n  });\n */\n\nexport default {\n  FitPage: 'FitPage',\n  FitWidth: 'FitWidth',\n  Zoom: 'Zoom',\n};","/**\n * Contains string enums for all toolbar options for WebViewer.\n * @name UI.ToolbarGroup\n * @property {string} VIEW Sets the current toolbar as the view group.\n * @property {string} ANNOTATE Sets the current toolbar as the annotate group.\n * @property {string} SHAPES Sets the current toolbar as the shapes group.\n * @property {string} INSERT Sets the current toolbar as the insert group.\n * @property {string} MEASURE Sets the current toolbar as the measure group.\n * @property {string} EDIT Sets the current toolbar as the edit group.\n * @property {string} FILL_AND_SIGN Sets the current toolbar as the fill and sign group.\n * @property {string} FORMS Sets the current toolbar as the forms group.\n * @property {string} REDACT Sets the current toolbar as the redact group.\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setToolbarGroup(instance.UI.ToolbarGroup.VIEW);\n  });\n */\n\nimport DataElements from './dataElement';\n\nexport default {\n  VIEW: DataElements.VIEW_TOOLBAR_GROUP,\n  ANNOTATE: DataElements.ANNOTATE_TOOLBAR_GROUP,\n  SHAPES: DataElements.SHAPES_TOOLBAR_GROUP,\n  INSERT: DataElements.INSERT_TOOLBAR_GROUP,\n  MEASURE: DataElements.MEASURE_TOOLBAR_GROUP,\n  EDIT: DataElements.EDIT_TOOLBAR_GROUP,\n  EDIT_TEXT: DataElements.EDIT_TEXT_TOOLBAR_GROUP,\n  FILL_AND_SIGN: DataElements.FILL_AND_SIGN_TOOLBAR_GROUP,\n  FORMS: DataElements.FORMS_TOOLBAR_GROUP,\n  REDACT: DataElements.REDACT_TOOLBAR_GROUP\n};","/**\n* Available search patterns that can be passed to {@link UI.replaceRedactionSearchPattern UI.replaceRedactionSearchPattern}. <br/><br/>\n* @name UI.RedactionSearchPatterns\n* @enum {string}\n* @property {string} EMAILS Search pattern for emails\n* @property {string} CREDIT_CARDS Search pattern for credit card numbers\n* @property {string} PHONE_NUMBERS Search pattern for phone numbers\n*/\nexport default {\n  EMAILS: 'emails',\n  CREDIT_CARDS: 'creditCards',\n  PHONE_NUMBERS: 'phoneNumbers',\n};","/**\n * Adds a listener function to be called when search is completed.\n * @method UI.addSearchListener\n * @param {UI.searchListener} searchListener Callback function that will be triggered when search completed\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    function searchListener(searchValue, options, results) {\n      console.log(searchValue, options, results);\n    };\n\n    instance.UI.addSearchListener(searchListener);\n  });\n */\n/**\n * Callback that gets passed to {@link UI.addSearchListener addSearchListener}.\n * @callback UI.searchListener\n * @param {string} searchValue Search value\n * @param {object} options Search options object, which includes 'caseSensitive', 'wholeWord', 'wildcard' and 'regex'\n * @param {Array.<object>} results Search results\n */\n\nimport { addSearchListener as addSearchListenerHelper } from 'helpers/search';\n\nexport default function addSearchListener(listener) {\n  addSearchListenerHelper(listener);\n}\n","/**\n * Adds a sorting strategy in notes panel.\n * @method UI.addSortStrategy\n * @param {object} sortStrategy Sorting strategy that will be used to sort notes\n * @param {string} sortStrategy.name Name of the strategy, which will be shown in notes panel's dropdown\n * @param {UI.getSortedNotes} sortStrategy.getSortedNotes Function that takes unsorted notes (annotations) and returns them sorted\n * @param {UI.shouldRenderSeparator} sortStrategy.shouldRenderSeparator Function that returns when a separator should be rendered\n * @param {UI.getSeparatorContent} sortStrategy.getSeparatorContent Function that returns the content of a separator\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var mySortStrategy = {\n      name: 'annotationType',\n      getSortedNotes: function(notes) {\n        return notes.sort(function(a ,b) {\n          if (a.Subject < b.Subject) return -1;\n          if (a.Subject > b.Subject) return 1;\n          if (a.Subject === b.Subject) return 0;\n        });\n      },\n      shouldRenderSeparator: function(prevNote, currNote) {\n        return prevNote.Subject !== currNote.Subject;\n      },\n      getSeparatorContent: function(prevNote, currNote) {\n        return currNote.Subject;\n      }\n    };\n\n    instance.UI.addSortStrategy(mySortStrategy);\n  });\n */\n/**\n * Callback that gets passed to `sortStrategy.getSortedNotes` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.getSortedNotes\n * @param {Array<Core.Annotations.Annotation>} notes List of unsorted notes (annotations)\n * @return {Array<Core.Annotations.Annotation>} Sorted notes (annotations)\n */\n/**\n * Callback that gets passed to `sortStrategy.shouldRenderSeparator` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.shouldRenderSeparator\n * @param {Core.Annotations.Annotation} prevNote Previous note (annotation)\n * @param {Core.Annotations.Annotation} currNote Current note (annotation)\n * @return {boolean} Whether a separator should be rendered or not\n */\n/**\n * Callback that gets passed to `sortStrategy.getSeparatorContent` in {@link UI.addSortStrategy addSortStrategy}.\n * @callback UI.getSeparatorContent\n * @param {Core.Annotations.Annotation} prevNote Previous note (annotation)\n * @param {Core.Annotations.Annotation} currNote Current note (annotation)\n * @param {object} options Optional values\n * @param {Array.<string>} options.pageLabels List of page label\n * @return {(string|number)} Content to be rendered in a separator\n */\n\nimport { addSortStrategy } from 'constants/sortStrategies';\nimport actions from 'actions';\n\nexport default (store) => (newStrategy) => {\n  if (newStrategy.name) {\n    addSortStrategy(newStrategy);\n    store.dispatch(actions.setNotesPanelSortStrategy(newStrategy.name));\n  } else {\n    console.warn('The argument for addSortStrategy must have a \"name\" property, see https://docs.apryse.com/api/web/WebViewerInstance.html#addsortstrategy');\n  }\n};\n","/**\n * A class which contains popup APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in a popup, use {@link UI.disableElements disableElements}.\n * @interface UI.Popup\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store, popupDataElement) => Object.create(PopupAPI).initialize(store, popupDataElement);\n\nconst PopupAPI = {\n  initialize(store, popupDataElement) {\n    this.store = store;\n    this.popupDataElement = popupDataElement;\n    return this;\n  },\n  /**\n   * Add an array of items after the item that has the given data element.\n   * @method UI.Popup#add\n   * @param {Array.<object>} items Same as <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>header items</a>\n   * @param {string} [dataElement] An optional string. If not given, items will be added in the beginning\n   * @returns {this} The instance itself\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.contextMenuPopup.add({\n      type: 'actionButton',\n      img: 'path/to/image',\n      onClick: instance.downloadPdf,\n    });\n  });\n   */\n  add(buttons, dataElement) {\n    if (!Array.isArray(buttons)) {\n      buttons = [buttons];\n    }\n\n    const index = this._getIndexByDataElement(dataElement);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...buttons);\n\n    this.store.dispatch(actions.setPopupItems(this.popupDataElement, items));\n\n    return this;\n  },\n  /**\n   * Update all the items in the popup.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.Popup#update\n   * @param {Array.<object>} [items] the items that will be rendered in the popup\n   * @returns {this} The instance itself\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    // replace existing items with a new array of items\n    instance.contextMenuPopup.update([\n      {\n        type: 'actionButton',\n        img: 'path/to/image',\n        onClick: instance.downloadPdf,\n      },\n      {\n        type: 'actionButton',\n        img: 'path/to/image',\n        onClick: instance.print,\n      },\n    ]);\n  });\n   */\n  update(items) {\n    if (!items) {\n      items = [];\n    }\n    this.store.dispatch(actions.setPopupItems(this.popupDataElement, items));\n\n    return this;\n  },\n  /**\n   * Return the array of items in the popup.\n   * @method UI.Popup#getItems\n   * @returns {Array.<object>} Current items in the popup.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.annotationPopup.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getPopupItems(this.store.getState(), this.popupDataElement)];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors\n        .getPopupItems(state, this.popupDataElement)\n        .findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};","/**\n * An instance of Popup that can be used to edit items in the annotation popup component\n * @name UI.annotationPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.annotationPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default (store) => createPopupAPI(store, 'annotationPopup');","const castStringToArray = (input) => {\n  if (!Array.isArray(input)) {\n    input = [input];\n  }\n  return input;\n};\n\nexport default castStringToArray;\n","import castStringToArray from 'helpers/castStringToArray';\n/**\n * Sets visibility states of the elements to be hidden. Note that closeElements works only for panel/overlay/popup/modal elements.\n * @method UI.closeElements\n * @param {Array.<string>} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // closes (hides) text popup and left panel in the UI\n    instance.UI.closeElements([ 'menuOverlay', 'leftPanel' ]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (dataElements) => {\n  const dataElementArray = castStringToArray(dataElements);\n  store.dispatch(actions.closeElements(dataElementArray));\n};\n","/**\n * An instance of Popup that can be used to edit items in the context menu popup component\n * @name UI.contextMenuPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.contextMenuPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default (store) => createPopupAPI(store, 'contextMenuPopup');","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Annotations]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Download]);\n};\n","import actions from 'actions';\nimport { PRIORITY_THREE } from '../constants/actionPriority';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.disableElement(dataElement, PRIORITY_THREE));\n};","import { PRIORITY_ONE } from 'constants/actionPriority';\nimport actions from 'actions';\n\nexport default (store) => () => {\n  store.dispatch(actions.disableElements(['filePickerHandler', 'filePickerButton'], PRIORITY_ONE));\n};\n","import actions from 'actions';\n\n/**\n * Turns high contrast mode off.\n * @method UI.disableHighContrastMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableHighContrastMode();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setHighContrastMode(false));\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.LocalStorage]);\n};","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Measurement]);\n};","import touchEventManager from 'helpers/TouchEventManager';\n\n/**\n * Disable native mobile device scrolling behavior if it had previously been enabled. Note that native mobile device scrolling behavior is off by default.\n * @method UI.disableNativeScrolling\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    UI.disableNativeScrolling();\n  });\n */\n\nexport default () => {\n  touchEventManager.useNativeScroll = false;\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.NotesPanel]);\n};\n","import actions from 'actions';\n\n/**\n * Disable the ability to submit notes by only pressing Enter if it had previously been enabled.\n * This will revert note submission to the default which is Ctrl/Cmd + Enter.\n * @method UI.disableNoteSubmissionWithEnter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableNoteSubmissionWithEnter();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setNoteSubmissionEnabledWithEnter(false));\n};","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Print]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.Redaction]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.TextSelection]);\n};\n","import disableTools from './disableTools';\n\nexport default (store) => (toolName) => {\n  disableTools(store)([toolName]);\n};\n","import Feature from 'constants/feature';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => () => {\n  disableFeatures(store)([Feature.TouchScrollLock]);\n};","/**\n * Displays the custom error message\n * @method UI.displayErrorMessage\n * @param {string} message An error message\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.displayErrorMessage('My error message');\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (message) => {\n  store.dispatch(actions.showErrorMessage(message));\n};\n","/**\n * Downloads the pdf document with or without annotations added by WebViewer UI.\n * @method UI.downloadPdf\n * @param {object} [options] An object that contains the following download options.\n * @param {string} [options.filename] The filename of the downloaded document.\n * @param {string} [options.downloadType='pdf'] The type to download the file as, by default this is \"pdf\". PDF and image files can only be downloaded as PDFs, but office files can be downloaded as \"pdf\" or as \"office\" if you want to get the original file without annotations.\n * @param {string} [options.xfdfString] An xfdf string containing annotation data to be used when downloading. Use this option instead of `includeAnnotations` if not all annotations need to be contained in the downloaded file.\n * @param {boolean} [options.includeAnnotations=true] Whether or not to include annotations added by WebViewer UI.\n * @param {boolean} [options.flatten] Whether or not to flatten all the annotations in the downloaded document. Only useful fullAPI is enabled and either `xfdfString` or `includeAnnotations` is used.\n * @param {Core.Document} [options.documentToBeDownloaded] A document to be download instead of the one loaded by Document Viewer.\n * @param {boolean} [options.useDisplayAuthor] Whether to export annotations with the Display Author name from annotationManager.getDisplayAuthor()\n * @param {number} [options.flags=Core.SaveOptions.REMOVE_UNUSED] The flags with which to save the document. Possible values include `Core.SaveOptions.REMOVE_UNUSED` (remove unused objects during save) and `Core.SaveOptions.LINEARIZED` (optimize the document for fast web view and remove unused objects).\n * @returns {Promise<any>} A promise that is resolved once the document is downloaded.\n * @example\nWebViewer(...)\n  .then(async function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    const annotManager = instance.Core.annotationManager;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', async function() {\n      // download pdf without annotations added by WebViewer UI\n      await instance.UI.downloadPdf({\n        includeAnnotations: false,\n      });\n\n      console.log('Downloaded the first time!')\n\n      // download pdf with all annotations flattened\n      await instance.UI.downloadPdf({\n        includeAnnotations: true,\n        flatten: true,\n      });\n\n      console.log('Downloaded a second time!')\n\n      // download pdf without links\n      const xfdfString = await annotManager.exportAnnotations({ links: false });\n      await instance.UI.downloadPdf({\n        xfdfString: xfdfString,\n      });\n\n      console.log('Downloaded a third time!')\n    });\n  });\n */\n\nimport downloadPdf from 'helpers/downloadPdf';\nimport { workerTypes } from 'constants/types';\nimport core from 'core';\n\nexport default (store) => async (options = { includeAnnotations: true }) => {\n  const documentType = core.getDocument()?.getType();\n  const { PDF, WEBVIEWER_SERVER, OFFICE, OFFICE_EDITOR, IMAGE } = workerTypes;\n\n  if (\n    documentType !== PDF &&\n    documentType !== IMAGE &&\n    documentType !== OFFICE &&\n    documentType !== OFFICE_EDITOR &&\n    documentType !== WEBVIEWER_SERVER\n  ) {\n    console.warn('Document type is not PDF. Cannot be downloaded.');\n    return Promise.reject();\n  }\n\n  // legacy interface: instance.downloadPdf(true);\n  if (typeof options === 'boolean') {\n    options = {\n      includeAnnotations: options,\n    };\n  }\n\n  return downloadPdf(store.dispatch, options);\n};\n","import actions from 'actions';\n\nexport default (store) => () => {\n  store.dispatch(actions.enableAllElements());\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.Annotations]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.Download]);\n  } else {\n    disableFeatures(store)([Feature.Download]);\n  }\n};\n","import actions from 'actions';\nimport { PRIORITY_THREE } from '../constants/actionPriority';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.enableElement(dataElement, PRIORITY_THREE));\n};","import actions from 'actions';\n\n/**\n * Turns high contrast mode on to help with accessibility.\n * @method UI.enableHighContrastMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableHighContrastMode();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setHighContrastMode(true));\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.FilePicker]);\n  } else {\n    disableFeatures(store)([Feature.FilePicker]);\n  }\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.LocalStorage]);\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.Measurement]);\n};\n","import touchEventManager from 'helpers/TouchEventManager';\n\n/**\n * Enable native mobile device scrolling behavior. By default custom behavior is used to handle vertical and horizontal scroll locking.\n * @method UI.enableNativeScrolling\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableNativeScrolling();\n  });\n */\n\nexport default () => {\n  touchEventManager.useNativeScroll = true;\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.NotesPanel]);\n  } else {\n    disableFeatures(store)([Feature.NotesPanel]);\n  }\n};","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.Print]);\n  } else {\n    disableFeatures(store)([Feature.Print]);\n  }\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.Redaction]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\nimport disableFeatures from './disableFeatures';\n\nexport default (store) => (enable = true) => {\n  if (enable) {\n    enableFeatures(store)([Feature.TextSelection]);\n  } else {\n    disableFeatures(store)([Feature.TextSelection]);\n  }\n};\n","import enableTools from './enableTools';\n\nexport default (store) => (toolName) => {\n  enableTools(store)([toolName]);\n};\n","import Feature from 'constants/feature';\nimport enableFeatures from './enableFeatures';\n\nexport default (store) => () => {\n  enableFeatures(store)([Feature.TouchScrollLock]);\n};\n","/**\n * Extract pages from the current document\n * @method UI.extractPagesWithAnnotations\n * @param {Array<number>} pageNumbersToExtract An array of pages to extract from the document. Annotations on the pages are included\n * @return {Promise<File>} A promise that resolve to a <a href='https://developer.mozilla.org/en-US/docs/Web/API/File' target='_blank'>File object</a>\n * @example // 6.0 and after\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.extractPagesWithAnnotations ([1,2,3]).then(function(fileData){\n    });\n  });\n */\n\nimport extractPagesWithAnnotations from '../helpers/extractPagesWithAnnotations';\n\nexport default (pageNumbersToExtract) => extractPagesWithAnnotations(pageNumbersToExtract);","/**\n * Focuses a note input field for the annotation. If the notes panel is closed, it is automatically opened before focusing.\n * @method UI.focusNote\n * @param {string} annotationId Id of an annotation.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var annotManager = instance.Core.annotationManager;\n\n    annotManager.addEventListener('annotationChanged', function(annotations, action) {\n      annotations.forEach(function(annotation) {\n        // Focus the note when annotation is created\n        if (action === 'add' && annotation.Listable) {\n          instance.UI.focusNote(annotation.Id); // note it is a capital i\n        }\n      });\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default (store) => (id) => {\n  // store.dispatch(actions.triggerNoteEditing());\n  const annotation = core.getAnnotationById(id);\n  store.dispatch(actions.openElement('notesPanel'));\n  core.selectAnnotation(annotation);\n};\n","import core from 'core';\n\nexport default () => {\n  return core.getCurrentUser();\n};\n","import getHashParameters from 'helpers/getHashParameters';\nimport core from 'core';\n\nexport default () => {\n  const documentViewer = core.getDocumentViewer();\n  console.warn('Deprecated and will be removed in version 9.0');\n  if (!window.bbAnnotManager) {\n    const serverURL = getHashParameters('webviewerServerURL', '');\n    window.bbAnnotManager = new window.Core.BlackBoxAnnotationManager(serverURL, documentViewer);\n  }\n\n  return window.bbAnnotManager;\n};","/**\n * Return the current language used in WebViewer.\n * @method UI.getCurrentLanguage\n * @return {string} Current language code\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getCurrentLanguage());\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getCurrentLanguage(store.getState());\n","import selectors from 'selectors';\n\nexport default (store) => () => {\n  return selectors.getCurrentPage(store.getState());\n};\n","/**\n * Return the current fit mode of the WebViewerInstance UI.\n * @method UI.getFitMode\n * @return {string} Current fit mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getFitMode());\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getFitMode(store.getState());","/**\n * Return the current layout mode of the WebViewerInstance.\n * @method UI.getLayoutMode\n * @return {string} Current layout mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getLayoutMode());\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getDisplayMode(store.getState());\n","import selectors from 'selectors';\n\nexport default (store) => () => {\n  return selectors.getTotalPages(store.getState());\n};\n","import exposedSelectors from 'selectors';\n\nexport default (store) => mapExposedSelectors(store);\n\nconst mapExposedSelectors = (store) => Object.keys(exposedSelectors).reduce((acc, selector) => {\n  acc[selector] = (...params) => {\n    const state = store.getState();\n    return exposedSelectors[selector](state, ...params);\n  };\n  return acc;\n}, {});\n","import selectors from 'selectors';\n\nexport default (store) => () => {\n  return !!selectors.isElementOpen(store.getState(), 'leftPanel');\n};\n","import getSideWindowVisibility from './getSideWindowVisibility';\n\nexport default (store) => () => {\n  return getSideWindowVisibility(store)();\n};\n","/**\n * Return the current tool object.\n * @method UI.getToolMode\n * @return {Core.Tools.Tool} Instance of the current tool\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getToolMode().name, instance.UI.getToolMode());\n  });\n */\n\nimport core from 'core';\n\nexport default () => core.getToolMode();","/**\n * Return the current zoom level\n * @method UI.getZoomLevel\n * @return {number} Zoom level (0 ~ 1)\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getZoomLevel());\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default () => core.getZoom();\n","/**\n * Return the max zoom level\n * @method UI.getMaxZoomLevel\n * @return {number} max zoom level\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getMaxZoomLevel());\n    });\n  });\n */\n\nimport zoomFactors from 'constants/zoomFactors';\n\nexport default () => zoomFactors.getMaxZoomLevel();","/**\n * Return the min zoom level\n * @method UI.getMinZoomLevel\n * @return {number} min zoom level\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      console.log(instance.UI.getMinZoomLevel());\n    });\n  });\n */\n\nimport zoomFactors from 'constants/zoomFactors';\n\nexport default () => zoomFactors.getMinZoomLevel();","import core from 'core';\n\nexport default () => {\n  core.setCurrentPage(1);\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  core.setCurrentPage(selectors.getTotalPages(store.getState()));\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  const state = store.getState();\n  const currentPage = selectors.getCurrentPage(state);\n\n  if (currentPage === selectors.getTotalPages(state)) {\n    console.warn('you are at the last page');\n  } else {\n    const nextPage = currentPage + 1;\n    core.setCurrentPage(nextPage);\n  }\n};\n","import core from 'core';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  const currentPage = selectors.getCurrentPage(store.getState());\n\n  if (currentPage === 1) {\n    console.warn('You are at the first page');\n  } else {\n    const prevPage = currentPage - 1;\n    core.setCurrentPage(prevPage);\n  }\n};","import actions from 'actions';\n\n/**\n * hide outline control\n * @method UI.hideOutlineControl\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.hideOutlineControl();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setOutlineControlVisibility(false));\n};\n","import core from 'core';\n\nexport default () => {\n  return !!core.getIsAdminUser();\n};","/**\n * Returns whether the element is disabled.\n * @method UI.isElementDisabled\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @returns {boolean} Whether the element is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isElementDisabled('leftPanel'));\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (dataElement) => !!selectors.isElementDisabled(store.getState(), dataElement);","/**\n * Returns whether the element is open.\n * @method UI.isElementOpen\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @returns {boolean} Whether the element is open.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isElementOpen('leftPanel'));\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (dataElement) => !!selectors.isElementOpen(store.getState(), dataElement);\n","import selectors from 'selectors';\n\n/**\n * Check whether high contrast mode is enabled or not.\n * @method UI.isHighContrastModeEnabled\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.isHighContrastModeEnabled();\n  });\n */\n\nexport default (store) => () => {\n  return selectors.getIsHighContrastMode(store.getState());\n};\n","import core from 'core';\n\nexport default () => {\n  return !!core.getIsReadOnly();\n};","/**\n * Returns whether the tool is disabled.\n * @method UI.isToolDisabled\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @returns {boolean} Whether the tool is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isToolDisabled());\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (toolName) => {\n  const state = store.getState();\n  const dataElement = selectors.getToolButtonDataElement(state, toolName);\n\n  return selectors.isElementDisabled(state, dataElement);\n};\n","import isFullscreen from 'helpers/isFullscreen';\n\n/**\n * Returns whether in fullscreen mode.\n * @method UI.isFullscreen\n * @returns {boolean} Whether in fullscreen mode.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isFullscreen());\n  });\n */\nexport default () => {\n  return isFullscreen();\n};\n","/**\n * Load a document inside WebViewer UI.\n * @method UI.loadDocument\n * @param {(string|File|Blob|Core.Document|Core.PDFNet.PDFDoc)} documentPath Path to the document OR <a href='https://developer.mozilla.org/en-US/docs/Web/API/File' target='_blank'>File object</a> if opening local file.\n * @param {UI.loadDocumentOptions} [options] Additional options\n\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.loadDocument('https://myserver.com/files/test.pdf', {\n      documentId: '1',\n      filename: 'sample-1.pdf'\n    });\n  });\n */\n\nimport loadDocument from 'helpers/loadDocument';\n\nexport default (store) => (src, options) => {\n  loadDocument(store.dispatch, src, options);\n};\n\n/**\n * @typedef {Object} UI.loadDocumentOptions inherits from {@link Core.loadDocumentOptions}\n * @property {string} [extension] The extension of the file. If file is a blob/file object or a URL without an extension then this is necessary so that WebViewer knows what type of file to load.\n * @property {string} [filename] Filename of the document, which is used when downloading the PDF.\n * @property {object} [customHeaders] An object of custom HTTP headers to use when retrieving the document from the specified url.\n * @property {object} [webViewerServerCustomQueryParameters] An object of custom query parameters to be appended to every WebViewer Server request.\n * @property {string} [documentId] Unique id of the document. Same as docId (For backward compatibility).\n * @property {string} [docId] Unique id of the document.\n * @property {boolean} [loadAnnotations=true] Whether to load document with or without annotations.\n * @property {function} [onLoadingProgress] A callback function for loading progress (Only for files loaded over network), function signature: function(percent) {}.\n * @property {boolean} [withCredentials] Whether or not cross-site requests should be made using credentials.\n * @property {string} [cacheKey] A key that will be used for caching the document on WebViewer Server.\n * @property {object} [officeOptions] An object that contains the options for an Office document.\n * @property {object} [rasterizerOptions] An object that contains the rasterizer options for WebViewer Server.\n * @property {Core.TemplateData} [officeOptions.templateValues] If set, will perform template replacement with the data specified by this parameter.\n * @property {Core.TemplateOptions} [officeOptions.templateOptions] If set, it will interpret the office document as a template document and compile all of the template tags in the document using the provided options.\n * @property {boolean} [officeOptions.doTemplatePrep] If set, it will interpret the office document as a template document and compile all of the template tags in the document.\n * @property {boolean} [officeOptions.disableBrowserFontSubstitution] By default, office viewing takes a lightweight approach to font substitution, allowing the browser to select fonts when they are not embedded in the document itself.\n * While this means that WebViewer has access to all the fonts on the user's system, it also means that an office document may have a different \"look\" on different systems (depending on the fonts available) and when it is converted to PDF (as the PDF conversion routine cannot obtain low-level access to user fonts, for security reasons).\n * disableBrowserFontSubstitution prevents this browser substitution, forcing the WebViewer backend to handle all fonts. This means that viewing and conversion to PDF will be 100% consistent from system-to-system, at the expense of a slightly slower initial viewing time and higher bandwidth usage.\n * Using https://docs.apryse.com/documentation/web/faq/self-serve-substitute-fonts/ along with this option allows you to fully customize the substitution behaviour for all office files.\n * @property {object} [officeOptions.formatOptions] An object that contains formatting options for an Office document. Same options as allowed here {@link Core.PDFNet.Convert.OfficeToPDFOptions}.\n * @property {boolean} [officeOptions.formatOptions.hideTotalNumberOfPages] If true will hide total number of pages from page number labels (i.e, Page 1, Page 2, vs Page 1 of 2, Page 2 of 2)\n * @property {boolean} [officeOptions.formatOptions.applyPageBreaksToSheet] If true will split Excel worksheets into pages so that the output resembles print output.\n * @property {boolean} [officeOptions.formatOptions.displayChangeTracking] If true will display office change tracking markup present in the document (i.e, red strikethrough of deleted content and underlining of new content). Otherwise displays the resolved document content, with no markup. Defaults to true.\n * @property {boolean} [officeOptions.formatOptions.displayHiddenText] If true will display hidden text in document. Otherwise hidden text will not be shown. Defaults to false.\n * @property {number} [officeOptions.formatOptions.excelDefaultCellBorderWidth] Cell border width for table cells that would normally be drawn with no border. In units of points. Can be used to achieve a similar effect to the \"show gridlines\" display option within Microsoft Excel.\n * @property {number} [officeOptions.formatOptions.excelMaxAllowedCellCount] An exception will be thrown if the number of cells in an Excel document is above the value. Used for early termination of resource intensive documents. Setting this value to 250000 will allow the vast majority of Excel documents to convert without issue, while keeping RAM usage to a reasonable level. By default there is no limit to the number of allowed cells.\n * @property {string} [officeOptions.formatOptions.locale] Sets the value for Locale in the options object ISO 639-1 code of the current system locale. For example: 'en-US', 'ar-SA', 'de-DE', etc.\n * @property {boolean} [enableOfficeEditing] If true, will load docx files with editing capabilities.\n * @property {string} [password] A string that will be used to as the password to load a password protected document.\n * @property {function} [onError] - A callback function that will be called when error occurs in the process of loading a document. The function signature is `function(e) {}`\n * @property {object} [xodOptions] - An object that contains the options for a XOD document.\n * @property {boolean} [xoddecrypt] - Function to be called to decrypt a part of the XOD file. For default XOD AES encryption pass Core.Encryption.decrypt.\n * @property {boolean} [xoddecryptOptions] -  An object with options for the decryption e.g. {p: \"pass\", type: \"aes\"} where is p is the password.\n * @property {boolean} [xodstreaming] - A boolean indicating whether to use http or streaming PartRetriever, it is recommended to keep streaming false for better performance. https://docs.apryse.com/documentation/web/guides/streaming-option/.\n * @property {boolean} [xodazureWorkaround] - Whether or not to workaround the issue of Azure not accepting range requests of a certain type. Enabling the workaround will add an extra HTTP request of overhead but will still allow documents to be loaded from other locations.\n * @property {boolean} [xodstartOffline] - Whether to start loading the document in offline mode or not. This can be set to true if the document had previously been saved to an offline database using WebViewer APIs. You'll need to use this option to load from a completely offline state.\n */\n","import core from 'core';\nimport mentionsManager from 'helpers/MentionsManager';\n\n/**\n * An instance of MentionsManager that can be used to allow mentioning people in a textarea in the notes panel.\n * @name UI.mentions\n * @see UI.MentionsManager\n * @type {UI.MentionsManager}\n */\n\nexport default (store) => {\n  mentionsManager.initialize(store, core.getAnnotationManager());\n\n  return expose(mentionsManager, [\n    'setUserData',\n    'getUserData',\n    'setAllowedTrailingCharacters',\n    'getAllowedTrailingCharacters',\n    'on',\n    'one',\n    'off',\n    'trigger',\n    'addEventListener',\n    'setEventListener',\n    'removeEventListener',\n    'setMentionLookupCallback',\n    'getMentionLookupCallback'\n  ]);\n};\n\nconst expose = (obj, methodsToExpose) => {\n  const result = {};\n\n  for (const methodName of methodsToExpose) {\n    result[methodName] = (...args) => obj[methodName](...args);\n  }\n\n  return result;\n};\n","/**\r\n * An instance of MenuOverlay that can be used to edit items in the settings menu overlay component.\r\n * @name UI.settingsMenuOverlay\r\n * @implements {UI.MenuOverlay}\r\n * @type {UI.MenuOverlay}\r\n * @example\r\nWebViewer(...)\r\n  .then(function (instance) {\r\n    instance.UI.settingsMenuOverlay.someAPI();\r\n  });\r\n */\r\n\r\n\r\n/**\r\n * A class which contains MenuOverlay APIs.<br/><br/>\r\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in a MenuOverlay, use {@link UI.disableElements disableElements}.\r\n * @interface UI.MenuOverlay\r\n */\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\nexport default (store) => Object.create(MenuOverlayAPI).initialize(store);\r\n\r\nconst MenuOverlayAPI = {\r\n  initialize(store) {\r\n    this.store = store;\r\n    return this;\r\n  },\r\n  /**\r\n   * Add an array of Actions Buttons after the item that has the given data element.\r\n   * @method UI.MenuOverlay#add\r\n   * @param {Array.<object>} items Same as <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#actionbutton' target='_blank'>ActionButton</a>\r\n   * @param {string} [dataElement] An optional string. If not given, items will be added in the beginning\r\n   * @returns {this} The instance itself\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    instance.UI.settingsMenuOverlay.add({\r\n      type: 'actionButton',\r\n      className:\"row\",\r\n      img: 'icon-header-print-line',\r\n      onClick: () => {\r\n        alert('Printing...');\r\n      },\r\n      dataElement: 'alertButton',\r\n      label:'print button'\r\n    });\r\n  });\r\n   */\r\n  add(buttons, dataElement) {\r\n    if (!Array.isArray(buttons)) {\r\n      buttons = [buttons];\r\n    }\r\n\r\n    const index = this._getIndexByDataElement(dataElement);\r\n    const items = this.getItems();\r\n\r\n    items.splice(index + 1, 0, ...buttons);\r\n\r\n    this.store.dispatch(actions.setMenuOverlayItems(items));\r\n\r\n    return this;\r\n  },\r\n  /**\r\n   * Update all the items in the menuOverlay dropdown.\r\n   * To update an individual item, use {@link UI.updateElement updateElement}\r\n   * @method UI.MenuOverlay#update\r\n   * @param {Array.<object>} [items] the items that will be rendered in the menuOverlay dropdown\r\n   * @returns {this} The instance itself\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    // replace existing items with a new array of items\r\n    instance.UI.settingsMenuOverlay.update([\r\n      {\r\n        type: 'actionButton',\r\n        className:\"row\",\r\n        img: 'icon-header-print-line',\r\n        onClick: () => {\r\n          alert('Hello world!');\r\n        },\r\n        dataElement: 'alertButton',\r\n        label:'test button',\r\n        role:\"option\"\r\n      },\r\n      {\r\n        type: 'actionButton',\r\n        className:\"row\",\r\n        img: 'icon-header-print-line',\r\n        onClick: () => {\r\n          alert('Hello world!');\r\n        },\r\n        dataElement: 'alertButton2',\r\n        label:'test button 2',\r\n        role:\"option\"\r\n      },\r\n    ]);\r\n  });\r\n   */\r\n  update(items) {\r\n    if (!items) {\r\n      items = [];\r\n    }\r\n    this.store.dispatch(actions.setMenuOverlayItems(items));\r\n\r\n    return this;\r\n  },\r\n  /**\r\n   * Return the array of items in the menuOverlay dropdown.\r\n   * @method UI.MenuOverlay#getItems\r\n   * @returns {Array.<object>} Current items in the menuOverlay dropdown.\r\n   * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    instance.UI.settingsMenuOverlay.getItems();\r\n  });\r\n   */\r\n  getItems() {\r\n    return [...selectors.getMenuOverlayItems(this.store.getState())];\r\n  },\r\n  _getIndexByDataElement(dataElement) {\r\n    let index;\r\n\r\n    if (typeof dataElement === 'undefined') {\r\n      index = -1;\r\n    } else {\r\n      const state = this.store.getState();\r\n      index = selectors.getMenuOverlayItems(state).findIndex((obj) => obj.dataElement === dataElement);\r\n    }\r\n\r\n    return index;\r\n  },\r\n};\r\n","import actions from 'actions';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.openElement(dataElement));\n};","/**\n * Sets visibility states of the elements to be visible. Note that openElements works only for panel/overlay/popup/modal elements.\n * @method UI.openElements\n * @param {Array.<string>} dataElements Array of data-element attribute values for DOM elements. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // opens (shows) text popup and annotation popup in the UI\n    instance.UI.openElements([ 'menuOverlay', 'leftPanel' ]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (dataElements) => {\n  store.dispatch(actions.openElements(dataElements));\n};","/**\n * Print the current document.\n * @method UI.print\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.print();\n    });\n  });\n */\n\nimport { print } from 'helpers/print';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  print(\n    store.dispatch,\n    selectors.useClientSidePrint(store.getState()),\n    selectors.isEmbedPrintSupported(store.getState()),\n    selectors.getSortStrategy(store.getState()),\n    selectors.getColorMap(store.getState()),\n  );\n};\n","/**\n * Programmatically print the document without opening a modal with the print options provided. Not supported by legacy-ui\n * @method UI.printInBackground\n * @param {object} [options] Options for the printing.\n * @param {Array.<number>} [options.pagesToPrint] Optionally pass in the pages you want to print. By default, all pages will be printed.\n * @param {boolean} [options.includeAnnotations=false] If true, will print the documents with the annotations\n * @param {boolean} [options.includeComments=false] If true, will append comments to the document printed\n * @param {boolean} [options.isPrintCurrentView] If true, will print the current viewport view of the current page\n * @param {boolean} [options.maintainPageOrientation] If true, will maintain the pages orientation as set in the webviewer during printing\n * @param {function} [options.onProgress] A callback function that is executed on each page processed\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.printInBackground({\n        includeComments:true,\n        includeAnnotations: true,\n        maintainPageOrientation: true,\n        onProgress: function(pageNumber, htmlElement) {},\n      });\n    });\n  });\n */\n\nimport { print } from 'helpers/print';\nimport selectors from 'selectors';\n\nexport default (store) => (options) => {\n  const defaultOptions = {\n    includeAnnotations: false,\n    includeComments: false,\n    maintainPageOrientation: false,\n  };\n\n  const printOptions = {\n    ...defaultOptions,\n    ...options,\n    printWithoutModal: true,\n    printQuality: selectors.getPrintQuality(store.getState()),\n    printedNoteDateFormat: selectors.getPrintedNoteDateFormat(store.getState()),\n  };\n\n  const { pagesToPrint } = printOptions;\n\n  if (pagesToPrint && pagesToPrint.length === 0) {\n    console.warn('No pages to be printed were found in the \"pagesToPrint\" array provided. If you want to print all pages, please set this to undefined or null.');\n    return;\n  }\n\n  print(\n    store.dispatch,\n    selectors.useClientSidePrint(store.getState()),\n    selectors.isEmbedPrintSupported(store.getState()),\n    selectors.getSortStrategy(store.getState()),\n    selectors.getColorMap(store.getState()),\n    printOptions,\n  );\n};\n","/**\n * Stops on-going page processing to cancel a print job.\n * @method UI.cancelPrint\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.print();\n      instance.UI.cancelPrint();\n    });\n  });\n */\n\nimport { cancelPrint } from 'helpers/rasterPrint';\n\nexport default () => {\n  cancelPrint();\n};\n","/**\n * Registers tool in the document viewer tool mode map, and adds a button object to be used in the header. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-tools/' target='_blank'>Customizing tools</a> to learn how to make a tool.\n * <br/><br/>\n * If you are using using multiviewer mode, you will have to register the tool to each document viewer.\n * @method UI.registerTool\n * @param {object} properties Tool properties.\n * @param {string} properties.toolName Name of the tool.\n * @param {Core.Tools.Tool} properties.toolObject Instance of the tool.\n * @param {string} properties.buttonImage Path to an image or base64 data for the tool button.\n * @param {string} [properties.buttonName] Name of the tool button that will be used in data-element.\n * @param {string} [properties.buttonGroup] Group of the tool button belongs to.\n * @param {string} [properties.tooltip] Tooltip of the tool button.\n * @param {number} [properties.documentViewerNumber] The document viewer number when there are multiple viewers. Default is 1.\n * @param {'always'|'active'|'never'} [properties.showColor] Controls when the tool button should show the color.\n * @param {boolean} [properties.showPresets] Option to whether show or hide preset styles. Default is true.\n * @param {function} [annotationConstructor] Deprecated Please use customAnnotationCheckFunc instead. Will be removed in the future.\n * @param {function} [customAnnotationCheckFunc] Function that takes in a parameter of an annotation. Returns a boolean if the specified annotation is a certain type of annotation. This function is used by the viewer to check if the annotation passed in is associated(created) with the registered tool.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // assume myCustomTool and myCustomAnnotation are already defined\n    const myTool = {\n      toolName: 'MyTool',\n      toolObject: myCustomTool,\n      buttonImage: 'path/to/image',\n      buttonName: 'myToolButton',\n      buttonGroup: 'miscTools',\n      tooltip: 'MyTooltip'\n    };\n\n    instance.UI.registerTool(myTool, undefined, annot => annot && annot.isCustomAnnot);\n  });\n */\n\nimport core from 'core';\nimport { register, copyMapWithDataProperties } from 'constants/map';\nimport actions from 'actions';\nimport { setDefaultToolStyle } from 'src/helpers/setDefaultToolStyles';\n\nexport default (store) => (tool, annotationConstructor, customAnnotationCheckFunc) => {\n  registerToolInToolModeMap(tool);\n  registerToolInRedux(store, tool);\n  register(tool, annotationConstructor, customAnnotationCheckFunc);\n  updateColorMapInRedux(store);\n  setDefaultToolStyle(tool.toolName);\n};\n\nconst registerToolInRedux = (store, tool) => {\n  store.dispatch(actions.registerTool(tool));\n};\n\nconst registerToolInToolModeMap = ({ toolObject, toolName, documentViewerNumber }) => {\n  if (core.getDocumentViewers().length > 1) {\n    console.warn('Multiple document viewers detected. If you plan to register tools with all document viewers, please use the documentViewerNumber parameter to register with each of them.');\n  }\n  let viewer = core.getDocumentViewer(documentViewerNumber);\n  if (!viewer) {\n    documentViewerNumber = 1;\n    viewer = core.getDocumentViewer(documentViewerNumber);\n  }\n  // Cannot create tools with their constructor since parameters can vary. Especially for custom tools.\n  const toolModeMap = viewer.getToolModeMap();\n  toolModeMap[toolName] = toolObject;\n  toolModeMap[toolName].name = toolName;\n};\n\nconst updateColorMapInRedux = (store) => {\n  store.dispatch(actions.setColorMap(copyMapWithDataProperties('iconColor', 'currentStyleTab')));\n};\n","/**\n * Removes the search listener function.\n * @method UI.removeSearchListener\n * @param {UI.searchListener} listener Search listener function that was added.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    function searchListener(searchValue, options, results) {\n      console.log(searchValue, options, results);\n    };\n\n    instance.UI.addSearchListener(searchListener);\n    instance.UI.removeSearchListener(searchListener);\n  });\n */\n\nimport { removeSearchListener as removeSearchListenerHelper } from 'helpers/search';\n\nexport default function removeSearchListener(listener) {\n  removeSearchListenerHelper(listener);\n}\n","import core from 'core';\n\nexport default () => {\n  core.rotateClockwise();\n};\n","import core from 'core';\n\nexport default () => {\n  core.rotateCounterClockwise();\n};\n","import core from 'core';\n\nexport default (store) => () => new Promise((resolve, reject) => {\n  const state = store.getState();\n  const { id: docId } = state.document;\n  const { serverUrl, serverUrlHeaders } = state.advanced;\n  const docIdQuery = docId ? { did: docId } : {};\n\n  if (!serverUrl) {\n    console.warn('serverUrl option is not defined. Please pass this option in WebViewer constructor to save/load annotations. See https://docs.apryse.com/documentation/web/guides/annotation/import-export/overview/ for details.');\n    reject();\n    return;\n  }\n\n  core.exportAnnotations((xfdfString) => {\n    fetch(serverUrl, {\n      method: 'POST',\n      headers: serverUrlHeaders,\n      body: {\n        ...docIdQuery,\n        data: xfdfString,\n      },\n      credentials: 'include'\n    }).then((response) => {\n      if (response.ok) {\n        resolve();\n      } else {\n        reject(response);\n      }\n    }).catch(reject);\n  });\n});\n","/**\n * Searches the document one by one for the text matching searchValue. To go to the next result this\n * function must be called again. Once document end is reach it will jump back to the first found result.\n *\n * @method UI.searchText\n * @param {string} searchValue The text value to look for.\n * @param {object} [options] Search options.\n * @param {boolean} [options.caseSensitive=false] Search with matching cases.\n * @param {boolean} [options.wholeWord=false] Search whole words only.\n * @param {boolean} [options.wildcard=false] Search a string with a wildcard *. For example, *viewer.\n * @param {boolean} [options.regex=false] Search for a regex string. For example, www(.*)com.\n * @param {boolean} [options.searchUp=false] Search up the document (backwards).\n * @param {boolean} [options.ambientString=false] Get the ambient string in the result.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.searchText('test', {\n        caseSensitive: true,\n        wholeWord: true\n      });\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\nimport { getSearchListeners } from 'helpers/search';\n\nfunction buildSearchModeFlag(options = {}) {\n  const SearchMode = core.getSearchMode();\n  const searchMode = [SearchMode.PAGE_STOP, SearchMode.HIGHLIGHT];\n\n  if (options.caseSensitive) {\n    searchMode.push(SearchMode.CASE_SENSITIVE);\n  }\n  if (options.wholeWord) {\n    searchMode.push(SearchMode.WHOLE_WORD);\n  }\n  if (options.wildcard) {\n    searchMode.push(SearchMode.WILD_CARD);\n  }\n  if (options.regex) {\n    searchMode.push(SearchMode.REGEX);\n  }\n  if (options.searchUp) {\n    searchMode.push(SearchMode.SEARCH_UP);\n  }\n  if (options.ambientString) {\n    searchMode.push(SearchMode.AMBIENT_STRING);\n  }\n  return searchMode;\n}\n\nexport default (dispatch) => (searchValue, options) => {\n  let searchOptions = {};\n  if (typeof options === 'string') {\n    const modes = options.split(',');\n    modes.forEach((mode) => {\n      searchOptions[lowerCaseFirstLetter(mode)] = true;\n    });\n  } else {\n    searchOptions = { ...options };\n  }\n\n  const searchMode = buildSearchModeFlag(searchOptions);\n\n  if (dispatch) {\n    // dispatch is only set when doing search through API (instance.searchText())\n    // When triggering search through UI, then redux updates are already handled inside component\n    dispatch(actions.openElement('searchPanel'));\n    dispatch(actions.searchText(searchValue, searchOptions));\n  }\n\n  function onResult(result) {\n    core.displaySearchResult(result);\n    // when full search is done, we make first found result to be the active result\n    core.setActiveSearchResult(result);\n    const optionsForSearchListener = {\n      // default values\n      caseSensitive: false,\n      wholeWord: false,\n      wildcard: false,\n      regex: false,\n      searchUp: false,\n      ambientString: false,\n      // override values with those user gave\n      ...searchOptions,\n    };\n    const searchListeners = getSearchListeners() || [];\n    searchListeners.forEach((listener) => {\n      try {\n        listener(searchValue, optionsForSearchListener, [result]);\n      } catch (e) {\n        console.error(e);\n      }\n    });\n  }\n\n  function onDocumentEnd() {\n    core.getDocumentViewer().trigger('endOfDocumentResult', true);\n  }\n  function handleSearchError(error) {\n    console.error(error);\n  }\n  const textSearchInitOptions = {\n    'fullSearch': false,\n    onResult,\n    onDocumentEnd,\n    'onError': handleSearchError,\n  };\n\n  core.textSearchInit(searchValue, searchMode, textSearchInitOptions);\n};\n\n\nconst lowerCaseFirstLetter = (mode) => `${mode.charAt(0).toLowerCase()}${mode.slice(1)}`;\n","/**\n * Set the WV3D Properties Panel with an array of model data objects\n * @method UI.setWv3dPropertiesPanelModelData\n * @param {array} modelData Array of objects defining 3d metadata properties.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setWv3dPropertiesPanelModelData([{'name':'roof', 'height':'55cm'}, {'name':'wall', 'height':'100cm'}]);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (modelData) => {\n  store.dispatch(actions.setWv3dPropertiesPanelModelData(modelData));\n};\n","/**\n * Set the configuration schema for the WV3D Properties Panel\n * @method UI.setWv3dPropertiesPanelSchema\n * @param {object} schema Object containing options for configuring the 3d properties panel.\n * @param {string} schema.headerName Sets the Title Header\n * @param {object} schema.defaultValues Defines the key/value pairs that will appear under the title, outside of a group.\n * @param {object} schema.groups Defines the collapsible groups that appear below the default values.\n * @param {array} schema.groupOrder Defines the order of the groups. If a group is not included it is appended to the end of the defined groups.\n * @param {boolean} schema.removeEmptyRows Defines whether to remove rows that contain empty string values.\n * @param {boolean} schema.removeEmptyGroups Defines whether to remove groups that contain only empty string values.\n * @param {boolean} schema.createRawValueGroup Defines whether to create a final group that has all the raw values.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setWv3dPropertiesPanelSchema({\n      headerName: 'Name',\n      defaultValues: {\n        Description: 'Description',\n        GlobalID: 'GlobalId',\n        Handle: 'handle',\n        EmptyRow1: 'EmptyRow1',\n      },\n      groups: {\n        SampleGroup01: {\n          SampleField01: 'Sample01',\n          SampleField02: 'Sample02',\n          SampleField03: 'Sample03',\n          EmptyRow2: 'EmptyRow2',\n          GrossFootprintArea: 'GrossFootprintArea',\n          GrossSideArea: 'GrossSideArea',\n          GrossVolume: 'GrossVolume',\n        },\n        SampleGroup02: {\n          SampleField01: 'Sample01',\n          SampleField02: 'Sample02',\n          SampleField03: 'Sample03',\n        },\n        SampleGroup03: {\n          ObjectType: 'Elephants',\n          EmptyRow3: 'Tigers',\n          ObjectPlacement: 'Bears',\n        },\n      },\n      groupOrder: ['Dimensions', 'RandomStuff'],\n      removeEmptyRows: false,\n      removeEmptyGroups: true,\n      createRawValueGroup: true,\n    })\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (schema) => {\n  store.dispatch(actions.setWv3dPropertiesPanelSchema(schema));\n};\n","/**\n * Sets a header group to be rendered in the Header element. This API comes useful when replacing the entire header items in small screens.\n * @method UI.setActiveHeaderGroup\n * @param {string} headerGroup Name of the header group to be rendered. Default WebViewer UI has eight header groups: 'default', 'small-mobile-more-buttons', 'toolbarGroup-View', 'toolbarGroup-Annotate', 'toolbarGroup-Shapes', 'toolbarGroup-Insert', 'toolbarGroup-Measure', and 'toolbarGroup-Edit'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setActiveHeaderGroup('toolbarGroup-Annotate'); // switch to 'Annotate' group header\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (headerGroup) => {\n  store.dispatch(actions.setActiveHeaderGroup(headerGroup));\n};","/**\n * Sets a panel to be active in the leftPanel element. Note that this API does not include opening the leftPanel.\n * @method UI.setActiveLeftPanel\n * @param {string} dataElement Name of the panel to be active in leftPanel. Default WebViewer UI has three panel options: thumbnailsPanel, outlinesPanel and notesPanel.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // open left panel\n    instance.UI.openElements([ 'leftPanel' ]);\n    // view outlines panel\n    instance.UI.setActiveLeftPanel('outlinesPanel');\n */\n\nimport actions from 'actions';\n\nexport default (store) => (headerGroup) => {\n  store.dispatch(actions.setActiveLeftPanel(headerGroup));\n};","/**\n * Sets the timezone that will be used in the UI anywhere a date is displayed.\n * A list of timezone names can be found {@link https://momentjs.com/timezone/ at momentjs docs}.\n * @method UI.setTimezone\n * @param {string} timezone Name of the timezone, e.g. \"America/New_York\", \"America/Los_Angeles\", \"Europe/London\".\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setTimezone('Europe/London');\n */\n\nimport actions from 'actions';\n\nexport default (store) => (timezone) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([timezone], [TYPES.STRING], 'UI.setTimezone');\n  store.dispatch(actions.setTimezone(timezone));\n};","import core from 'core';\n\nexport default (isAdmin) => {\n  core.setIsAdminUser(isAdmin);\n};\n","import core from 'core';\n\nexport default (userName) => {\n  core.setCurrentUser(userName);\n};\n","export default {\n  border: 'StrokeColor',\n  fill: 'FillColor',\n  text: 'TextColor',\n};","export default {\n  StrokeColor: 'border',\n  FillColor: 'fill',\n  TextColor: 'text',\n};","import actions from 'actions';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport mapPaletteToAnnotationColorProperty from 'constants/mapPaletteToAnnotationColorProperty';\nimport mapAnnotationColorPropertyToPalette from 'constants/mapAnnotationColorPropertyToPalette';\n\n/**\n * Sets the active color palette of a tool and its associated annotation\n * @method UI.setActivePalette\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {'text'|'border'|'fill'} colorPalette The palette to be activated. One of 'text', 'border' and 'fill'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setActivePalette('AnnotationCreateFreeText', 'fill')\n  });\n */\n\nexport default (store) => (toolName, colorPalette) => {\n  const styleTabs = getDataWithKey(mapToolNameToKey(toolName)).styleTabs;\n  const property = mapPaletteToAnnotationColorProperty[colorPalette];\n\n  if (styleTabs.includes(property)) {\n    store.dispatch(actions.setActivePalette(mapToolNameToKey(toolName), property));\n  } else {\n    console.warn(`${toolName} does not have the ${colorPalette} color. The available colors are: ${styleTabs.map((palette) => mapAnnotationColorPropertyToPalette[palette]).join(', ')} `);\n  }\n};","import { mapToolNameToKey } from 'constants/map';\r\nimport actions from 'actions';\r\nimport selectors from 'selectors';\r\n\r\n/**\r\n * @typedef UI.PaletteOption\r\n * @property {string[]} toolNames Tools that will have the same colors in the palette.\r\n * @property {string[]} colors An array of hex colors. Use 'transparency' for a transparent color.\r\n * @property {string[]} [palleteTypes] An array of palette types. Can be 'fill' | 'stroke' | 'text'. (Only for StylePanel)\r\n */\r\n\r\n/**\r\n * Sets the colors in the palette globally or for specific tools and their associated annotations\r\n * @method UI.setColorPalette\r\n * @param {string[]|UI.PaletteOption} An array of hex colors that will override the default colors for every tool.\r\n * An object can be passed to specify colors for particular tools.\r\n * @example\r\nWebViewer(...)\r\n  .then(function(instance) {\r\n    // this sets the palette globally. All the tools will use these colors. Can use empty string for blank spaces and 'transparency' for a transparent color.\r\n    instance.UI.setColorPalette(['#FFFFFF', '', '#DDDDDD', 'transparency']);\r\n\r\n    // use a different set of colors for the freetext and rectangle tool.\r\n    instance.UI.setColorPalette({\r\n      toolNames: ['AnnotationCreateFreeText', 'AnnotationCreateRectangle'],\r\n      colors: ['#333333'],\r\n    })\r\n  });\r\n */\r\n\r\nexport default (store) => (overrides) => {\r\n  const currentOverride = {\r\n    ...(selectors.getCustomElementOverrides(store.getState(), 'colorPalette') || {}),\r\n  };\r\n\r\n  if (Array.isArray(overrides)) {\r\n    if (overrides.every(isValidColor)) {\r\n      currentOverride.global = overrides;\r\n    } else {\r\n      return console.warn(\r\n        // eslint-disable-next-line custom/no-hex-colors\r\n        'An array is passed to setColorPalette, but some colors are invalid. A color must be   \\'transparency\\' or a hex color string. For example #F0F0F0'\r\n      );\r\n    }\r\n  } else if (typeof overrides === 'object') {\r\n    if (overrides.toolNames && overrides.colors) {\r\n      overrides.toolNames.forEach((toolName) => {\r\n        const key = mapToolNameToKey(toolName);\r\n        currentOverride[key] = overrides.colors;\r\n      });\r\n    } else {\r\n      return console.warn(\r\n        'An object is passed to setColorPalette, but it doesn\\'t have a toolNames or colors property.'\r\n      );\r\n    }\r\n  }\r\n\r\n  store.dispatch(actions.setCustomElementOverrides('colorPalette', currentOverride));\r\n\r\n  // Custom-UI pallete override logic\r\n  if (Array.isArray(overrides)) {\r\n    const colorPalette = overrides.map((color) => (color === 'transparency' ? 'transparent' : color.toLowerCase()));\r\n    store.dispatch(actions.setColors(colorPalette, undefined, undefined));\r\n    store.dispatch(actions.setColors(colorPalette, undefined, 'text'));\r\n  } else if (typeof overrides === 'object') {\r\n    overrides.toolNames.forEach((toolName) => {\r\n      const colorPalette = overrides.colors.map((color) => (color === 'transparency' ? 'transparent' : color.toLowerCase()));\r\n      store.dispatch(actions.setColors(colorPalette, toolName, undefined));\r\n    });\r\n  }\r\n};\r\n\r\n// examples of valid colors are: '#f0f0f0', '#FFFFFF'\r\nconst isValidColor = (color) => color === 'transparency' || (color.startsWith('#') && color.split('#')[1].length === 6);\r\n","import actions from 'actions';\n/**\n * Add a list of documents to the dropdown element of Page Replacement modal and provide a\n * way to retreive document for displaying Page Replacement modal.\n * @method UI.setPageReplacementModalFileList\n * @param {Array} list An array of object for selection element. Object must have \"id\", \"filename\" properties and \"onSelect\" method.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const list = [\n      {id: '12', filename: 'file-one.pdf'},\n      {id: '13', filename: 'file-two.pdf'},\n      {id: '14', filename: 'foobar.pdf'}\n    ];\n\n    const options = list.map(item => {\n      // Add \"onSelect\" method to each item, and return Document instance\n      item.onSelect = () => instance.Core.createDocument('https://localhost/files/webviewer-demo.pdf');\n      return item;\n    });\n\n    instance.UI.setPageReplacementModalFileList(options);\n  });\n */\n\nexport default (store) => (list) => {\n  if (Array.isArray(list)) {\n    if (!list.every(isValidObject)) {\n      return console.warn(\n        'An array is passed to setPageReplacementModalFileList is invalid'\n      );\n    }\n  }\n\n  store.dispatch(actions.setPageReplacementModalFileList(list));\n};\n\nconst isValidObject = (item) => {\n  return Object.prototype.hasOwnProperty.call(item, 'id')\n    || Object.prototype.hasOwnProperty.call(item, 'filename')\n    || Object.prototype.hasOwnProperty.call(item, 'onSelect')\n    || typeof item.onSelect === 'function';\n};","import core from 'core';\n\nexport default (pageNumber) => {\n  core.setCurrentPage(pageNumber);\n};\n","import actions from 'actions';\n\n/**\n * Add custom modal element to WebViewer.\n * <br /><br />\n * Controlling custom modals is done using the element API, for example {@link UI.openElements openElements}, {@link UI.closeElements closeElements}, {@link UI.toggleElementVisibility toggleElementVisibility}, and {@link UI.disableElements disableElements}.\n * dateElement string passed on these function should be same as you set in options.dataElement.\n * <br /><br />\n * Every custom modal will add new &lt;div&gt; element with <b>CustomModal</b> and <b>&lt;options.dataElement string&gt;</b> set as class attribute\n * Modal with identical <em>options.dataElement</em> will get replaced by the latest modal options.\n * <br /><br />\n * For styling these components, see <a href=\"https://docs.apryse.com/documentation/web/guides/customizing-styles/\" target=\"_blank\">Customizing WebViewer UI Styles</a>\n *<br /><br />\n * Note that in most cases WebViewer is run inside an iframe and in order for <i>options.disableEscapeKeyDown</i> to automatically work, the iframe must be the\n * active element. This can be done by setting the focus to the iframe programmatically.\n *\n * @example\n   WebViewer(...).then(function(instance) {\n    const modal = {\n      dataElement: 'meanwhileInFinlandModal',\n      header: {\n        title: 'Modal header',\n        className: 'myCustomModal-header',\n        style: {}, // optional inline styles\n        children: []\n      },\n      body: {\n        className: 'myCustomModal-body',\n        style: {}, // optional inline styles\n        children: [  divInput1, divInput2 ], // HTML dom elements\n      },\n      footer: {\n        className: 'myCustomModal-footer footer',\n        style: {}, // optional inline styles\n        children: [\n          {\n            title: 'Cancel',\n            button: true,\n            style: {},\n            className: 'modal-button cancel-form-field-button',\n            onClick: (e) => { console.log('ff') }\n          },\n          {\n            title: 'OK',\n            button: true,\n            style: {},\n            className: 'modal-button confirm ok-btn',\n            onClick: (e) => { console.log('xx') }\n          },\n        ]\n      }\n    };\n    instance.UI.addCustomModal(modal);\n    instance.UI.openElements([modal.dataElement]);\n  });\n * @method UI.addCustomModal\n * @param {object} options\n * @param {string} options.dataElement Unique name of custom modal.\n * @param {boolean} [options.disableBackdropClick=false] Disable closing modal when user clicks outside of content area\n * @param {boolean} [options.disableEscapeKeyDown=false] Disable closing modal when user hit escape from keyboard\n * @param {UI.renderCustomModal} options.render Function rendering custom model contents, this is optional\n * @param {object} options.header JSON object with title, className, style and children parameter\n * @param {object} options.body JSON object with title, className, style and children parameter\n * @param {object} options.footer JSON object with title, className, style and children parameter\n */\nconst addCustomModal = (store) => (customModal) => {\n  store.dispatch(actions.addCustomModal(customModal));\n};\n\n\n/**\n * Callback that gets passed to `options.render` in {@link UI.addCustomModal addCustomModal}.\n * @callback UI.renderCustomModal\n * @returns {(HTMLElement|string)} Modal element. If string is returned, it will be displayed as is inside the modal. Accepts React components as the return value as well.\n */\n\nexport {\n  addCustomModal as default\n};\n","/**\n * Filter the annotations shown in the notes panel\n * @method UI.setCustomNoteFilter\n * @param {UI.filterAnnotation} filterAnnotation Function that takes an annotation and returns if the annotation(note) should be shown in the notes panel.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // only show annotations that are created by John\n    instance.UI.setCustomNoteFilter(function(annotation) {\n      return annotation.Author === 'John';\n    });\n  });\n */\n/**\n * Callback that gets passed to {@link UI.setCustomNoteFilter setCustomNoteFilter}.\n * @callback UI.filterAnnotation\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} Whether the annotation should be kept.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (filterFunc) => {\n  store.dispatch(actions.setCustomNoteFilter(filterFunc));\n};","/**\n * Return the annotations that have inline comment enabled on select\n * @method UI.setInlineCommentFilter\n * @param {UI.filterAnnotation} filterAnnotation Function that takes an annotation and returns if the annotation should have inline comment feature enabled when it's selected\n * @example\n  WebViewer(...)\n  .then(function(instance) {\n    // only enable inline comment for free-hand annotations on select\n    instance.UI.setInlineCommentFilter((annotation) => {\n      return annotation.ToolName === instance.Core.Tools.ToolNames.FREEHAND;\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.setInlineCommentFilter setInlineCommentFilter}.\n * @callback UI.filterAnnotation\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} Whether the annotation should have inline comment feature enabled on select.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (filterFunc) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([filterFunc], [TYPES.FUNCTION], 'UI.setInlineCommentFilter');\n  store.dispatch(actions.setInlineCommentFilter(filterFunc));\n};","/**\n * Adds a custom panel in left panel\n * @method UI.setCustomPanel\n * @param {object} options\n * @param {object} options.tab Tab options.\n * @param {string} options.tab.dataElement data-element for tab.\n * @param {string} options.tab.title Tooltip for tab.\n * @param {string} options.tab.img Url for an image.\n * @param {object} options.panel Panel options.\n * @param {string} options.panel.dataElement data-element for panel.\n * @param {UI.renderCustomPanel} options.panel.render Function that returns panel element.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var myCustomPanel = {\n      tab:{\n        dataElement: 'customPanelTab',\n        title: 'customPanelTab',\n        img: '/favicon-32x32.png',\n      },\n      panel: {\n        dataElement: 'customPanel',\n        render: function() {\n          var div = document.createElement('div');\n          div.innerHTML = 'Hello World';\n          return div;\n        }\n      }\n    };\n\n    instance.UI.setCustomPanel(myCustomPanel);\n  });\n */\n/**\n * Callback that gets passed to `options.panel.render` in {@link UI.setCustomPanel setCustomPanel}.\n * @callback UI.renderCustomPanel\n * @returns {HTMLElement} Panel element.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (customPanel) => {\n  store.dispatch(actions.setCustomPanel(customPanel));\n};","/**\n * Returns a dictionary with page indices as keys and the bookmark text as the values\n * @method UI.exportBookmarks\n * @return {Object} A dictionary with page indices as keys and the bookmark text as the values. ex: {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Save the annotation data for doc123\n    const bookmarks = instance.UI.exportBookmarks();\n    const bookmarksString = JSON.stringify(bookmarks);\n    fetch('/server/bookmarksHandler.js?documentId=doc123', {\n      method: 'POST',\n      body: bookmarksString // written into a json file on server\n    });\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  return selectors.getBookmarks(store.getState());\n};\n","/**\n * Imports user bookmarks\n * @method UI.importBookmarks\n * @param {object} bookmarks A dictionary with page indices as keys and the bookmark text as the values. ex: {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}. Behaviour is undefined otherwise.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // load the user bookmarks data for id 'doc123'\n    fetch('/server/bookmarksHandler.js?documentId=doc123', {\n      method: 'GET'\n    }).then(function(response) {\n      if (response.status === 200) {\n        response.text().then(function(bookmarksString) {\n          // {\"0\":\"Bookmark 1\",\"2\":\"Bookmark 2\"}\n          const bookmarks = JSON.parse(bookmarksString);\n          instance.UI.importBookmarks(bookmarks);\n        });\n      }\n    });\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (bookmarks) => {\n  store.dispatch(actions.setBookmarks(bookmarks));\n};\n","/**\n * Set a custom style for menus displayed through embedded JavaScript.\n * @method UI.setEmbeddedPopupMenuStyle\n * @param {object} customStyle A style object that overrides the existing embedded JS menu style. Properties/keys must follow the React style naming convention.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Size width to fit content and let menu flow off the screen\n    instance.UI.setEmbeddedPopupMenuStyle({\n      minWidth: 'fit-content',\n      minHeight: 'inheirit',\n    });\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (customStyle) => {\n  store.dispatch(actions.setEmbeddedPopupMenuStyle(customStyle));\n};\n","/**\n * Sets the fit mode of the viewer.\n * @method UI.setFitMode\n * @param {string} fitMode Fit mode of WebViewer.\n * @see UI.FitMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n    var FitMode = instance.UI.FitMode;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setFitMode(FitMode.FitWidth);\n    });\n  });\n */\n\nimport core from 'core';\nimport FitMode from 'constants/fitMode';\n\nexport default (mode) => {\n  const fitModeToFunctionMap = {\n    [FitMode.FitWidth]: core.fitToWidth,\n    [FitMode.FitPage]: core.fitToPage,\n    [FitMode.Zoom]: core.fitToZoom,\n  };\n  const fitFunction = fitModeToFunctionMap[mode];\n\n  if (!fitFunction) {\n    console.warn(`Unsupported fit mode: ${mode}`);\n    return;\n  }\n\n  fitFunction();\n};\n","/**\n * Customize header. Refer to <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/' target='_blank'>Customizing header</a> for details.\n * @method UI.setHeaderItems\n * @param {UI.headerCallback} headerCallback Callback function to perform different operations on the header.\n * @example\n// Adding save annotations button to the end of the top header\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      var myCustomButton = {\n        type: 'actionButton',\n        img: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"/></svg>',\n        onClick: function() {\n\n        }\n      }\n\n      header.push(myCustomButton);\n    });\n  });\n * @example\n// Removing existing buttons from the top header\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.update([]);\n    });\n  });\n * @example\n// Appending logo to the 'Annotate' toolbar group and shifting existing buttons to the right\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.getHeader('toolbarGroup-Annotate').unshift({\n        type: 'customElement',\n        render: function() {\n          var logo = document.createElement('img');\n          logo.src = '/logo.svg';\n          logo.style.width = '200px';\n          logo.style.marginLeft = '10px';\n          logo.style.cursor = 'pointer';\n          logo.onclick = function() {\n            window.open('https://www.apryse.com', '_blank');\n          }\n          return logo;\n        }\n      }, {\n        type: 'spacer'\n      });\n    });\n  });\n * @example\n// Moving the line tool from the 'Shapes' toolbar group to the 'Annotate' toolbar group\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      header.getHeader('toolbarGroup-Annotate').push({ type: 'toolGroupButton', toolGroup: 'lineTools', dataElement: 'lineToolGroupButton', title: 'annotation.line' });\n      header.getHeader('toolbarGroup-Shapes').delete(6);\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.setHeaderItems setHeaderItems}.\n * @callback UI.headerCallback\n * @param {UI.Header} header Header instance with helper functions\n */\n\nimport actions from 'actions';\n\nexport default (store) => (callback) => {\n  const state = store.getState();\n  const headerGroups = Object.keys(state.viewer.headers);\n  const header = Object.create(Header).initialize(state.viewer, headerGroups);\n\n  callback(header);\n  headerGroups.forEach((headerGroup) => {\n    store.dispatch(actions.setHeaderItems(headerGroup, [...header.headers[headerGroup]]));\n  });\n};\n\n/**\n * A class which contains header APIs.<br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> You must NOT instantiate this yourself. Access the header instance in {@link UI.setHeaderItems setHeaderItems} as follows:\n * @name Header\n * @memberof UI\n * @class\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setHeaderItems(function(header) {\n      // instance of Header is passed to the callback\n    });\n  });\n */\nconst Header = {\n  initialize(viewerState) {\n    this.headers = viewerState.headers;\n    this.toolButtonObjects = viewerState.toolButtonObjects;\n    this.headerGroup = 'default';\n    this.index = -1;\n\n    return this;\n  },\n  /**\n   * Select a button from header to edit.\n   * @method UI.Header#get\n   * @param {string} dataElement data-element of the button.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#insertBefore insertBefore}, {@link UI.Header#insertAfter insertAfter} and {@link UI.Header#delete delete} to perform an operation on the button.\n   */\n  get(dataElement) {\n    if (this.index !== -1) {\n      // get(dataElement) has been called before so we need to reset this\n      const item = this.headers[this.headerGroup][this.index];\n      Object.keys(item).forEach((key) => {\n        delete this[key];\n      });\n    }\n\n    this._setIndex(dataElement);\n\n    if (this.index === -1) {\n      console.warn(`${dataElement} does not exist in ${this.headerGroup} header`);\n    } else {\n      const item = this.headers[this.headerGroup][this.index];\n      Object.keys(item).forEach((key) => {\n        this[key] = item[key];\n      });\n    }\n\n    return this;\n  },\n  /**\n   * Get all list of header items from a group selected from {@link UI.Header#getHeader getHeader}. By default, it returns the items from 'default' group.\n   * @method UI.Header#getItems\n   * @returns {Array.<object>} List of header item objects. You can edit it using normal array operations and update the whole header by passing it to {@link UI.Header#update update}.\n   */\n  getItems() {\n    return this.headers[this.headerGroup];\n  },\n  /**\n   * Select a header group to edit.\n   * @method UI.Header#getHeader\n   * @param {string} headerGroup Name of the header group. Possible options are 'default', 'small-mobile-more-buttons', 'toolbarGroup-View', 'toolbarGroup-Annotate', 'toolbarGroup-Shapes', 'toolbarGroup-Insert', 'toolbarGroup-Measure', and 'toolbarGroup-Edit'\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  getHeader(headerGroup) {\n    const headerGroups = Object.keys(this.headers);\n\n    if (headerGroups.includes(headerGroup)) {\n      this.headerGroup = headerGroup;\n      this._resetIndex();\n    } else {\n      console.warn(`Header must be one of: ${headerGroups.join(' or ')}.`);\n    }\n\n    return this;\n  },\n  /**\n   * Insert a button before the selected button from {@link UI.Header#get get}.\n   * @method UI.Header#insertBefore\n   * @param {object} obj A header object. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  insertBefore(newItem) {\n    if (this.index === -1) {\n      console.warn('Please use .get(dataElement) first before using insertBefore');\n    } else {\n      this.headers[this.headerGroup].splice(this.index, 0, newItem);\n    }\n\n    return this;\n  },\n  /**\n   * Insert a button after the selected button from {@link UI.Header#get get}.\n   * @method UI.Header#insertAfter\n   * @param {object} obj A header object. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  insertAfter(newItem) {\n    if (this.index === -1) {\n      console.warn('Please use .get(dataElement) first before using insertAfter');\n    } else {\n      this.index++;\n      this.headers[this.headerGroup].splice(this.index, 0, newItem);\n    }\n\n    return this;\n  },\n  /**\n   * Delete a button.\n   * @method UI.Header#delete\n   * @param {(number|string)} [id] You can either pass an index or `data-element` of the button to delete. If you already selected a button from {@link UI.Header#get get}, passing null would delete the selected button.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  delete(arg) {\n    let index;\n\n    if (typeof arg === 'number') {\n      index = arg;\n    } else if (typeof arg === 'string') {\n      if (this._getIndexOfElement(arg) === -1) {\n        console.warn(`${arg} does not exist in ${this.headerGroup} header`);\n      } else {\n        index = this._getIndexOfElement(arg);\n      }\n    } else if (typeof arg === 'undefined') {\n      if (this.index === -1) {\n        console.warn('Please use .get(dataElement) first before using delete()');\n      } else {\n        index = this.index;\n      }\n    } else if (Array.isArray(arg)) {\n      arg.forEach((arg) => {\n        if (typeof arg === 'number' || typeof arg === 'string') {\n          this.delete(arg);\n        }\n      });\n    } else {\n      console.warn('Argument must be empty, a number, a string or an array');\n    }\n\n    if (index !== undefined && index !== -1) {\n      this.headers[this.headerGroup].splice(index, 1);\n      this._resetIndex();\n    }\n\n    return this;\n  },\n  /**\n   * Removes the first button in the header.\n   * @method UI.Header#shift\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  shift() {\n    this.headers[this.headerGroup].shift();\n\n    return this;\n  },\n  /**\n   * Adds a button (or buttons) to the beginning of the header.\n   * @method UI.Header#unshift\n   * @param {object|Array.<object>} obj Either one or array of header objects. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  unshift(...newItem) {\n    this.headers[this.headerGroup].unshift(...newItem);\n\n    return this;\n  },\n  /**\n   * Adds a button (or buttons) to the end of the header.\n   * @method UI.Header#push\n   * @param {object|Array.<object>} obj Either one or array of header objects. See <a href='https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items' target='_blank'>Header items</a> for details.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  push(...newItem) {\n    this.headers[this.headerGroup].push(...newItem);\n\n    return this;\n  },\n  /**\n   * Removes the last button in the header.\n   * @method UI.Header#pop\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  pop() {\n    this.headers[this.headerGroup].pop();\n\n    return this;\n  },\n  /**\n   * Updates the header with new list of header items.\n   * @method UI.Header#update\n   * @param {Array.<object>} headerObjects List of header objects to replace the exising header. You can use {@link UI.Header#getItems getItems} to refer to existing header objects.\n   * @returns {UI.Header} Header object for chaining. You can call {@link UI.Header#get get}, {@link UI.Header#getItems getItems}, {@link UI.Header#shift shift}, {@link UI.Header#unshift unshift}, {@link UI.Header#push push}, {@link UI.Header#pop pop} and {@link UI.Header#update update}.\n   */\n  update(arg) {\n    if (Array.isArray(arg)) {\n      this._updateItems(arg);\n    } else {\n      console.warn('Argument must be an array');\n    }\n\n    return this;\n  },\n  _updateItems(items) {\n    this.headers[this.headerGroup] = items;\n\n    return this;\n  },\n  _setIndex(dataElement) {\n    this.index = this._getIndexOfElement(dataElement);\n  },\n  _getIndexOfElement(dataElement) {\n    return this.headers[this.headerGroup].findIndex((item) => {\n      let dataElementOfItem;\n\n      if (item.type === 'toolButton') {\n        dataElementOfItem = this.toolButtonObjects[item.toolName].dataElement;\n      } else {\n        dataElementOfItem = item.dataElement;\n      }\n\n      return dataElementOfItem === dataElement;\n    });\n  },\n  _resetIndex() {\n    this.index = -1;\n  },\n};\n","/**\n * Sets the color palette that will be used as a tool button's icon color.\n * @method UI.setIconColor\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {string} colorPalette The palette which will be used as a tool button's icon color. One of 'text', 'border' and 'fill'.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // sets the color in fill palette to be used as freetext tool button's icon color\n    // by default freetext tool button will use the color in text palette as its icon color\n    instance.UI.setIconColor('AnnotationCreateFreeText', 'fill')\n  });\n */\n\nimport actions from 'actions';\nimport { getDataWithKey, mapToolNameToKey } from 'constants/map';\nimport mapPaletteToAnnotationColorProperty from 'constants/mapPaletteToAnnotationColorProperty';\nimport mapAnnotationColorPropertyToPalette from 'constants/mapAnnotationColorPropertyToPalette';\n\nexport default (store) => (toolName, colorPalette) => {\n  const styleTabs = getDataWithKey(mapToolNameToKey(toolName)).styleTabs;\n  const property = mapPaletteToAnnotationColorProperty[colorPalette];\n  if (styleTabs.includes(property)) {\n    store.dispatch(actions.setIconColor(mapToolNameToKey(toolName), property));\n  } else {\n    console.warn(`${toolName} does not have ${colorPalette} color, available colors are: ${styleTabs.map((palette) => mapAnnotationColorPropertyToPalette[palette]).join(', ')} `);\n  }\n};","/**\n * Add/Edit translations data for a specific language\n * @method UI.setTranslations\n * @param {string} language The language code for which you want to add/edit translation data\n * @param {Object<string, string>} translationObject <p> A key/value object with the new/updated translations. </p>\n * <p> The key values of the translation object will be the translation key for the new/updated translation.\n * Refer to the lib/ui/i18n folder to find the existing keys in the translation files </p>\n * <p> The values of the translation object will be the value of the new/updated translation</p>\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setTranslations('es',\n    {\n      'option.colorPalette.colorLabel': 'Etiqueta de color', //updates a pre-existing translation data\n      'action.newButton': 'Nuevo botón' // adds a new translation data\n    });\n  });\n */\n\nimport i18next from 'i18next';\n\nexport default (language, translationObject) => {\n  i18next.on('loaded', () => {\n    i18next.addResources(\n      language,\n      'translation',\n      translationObject\n    );\n  });\n\n  i18next.reloadResources([language]);\n};","/**\n * Sets the layout mode of the viewer.\n * @method UI.setLayoutMode\n * @param {string} layoutMode Layout mode of WebViewerInstance UI.\n * @see UI.LayoutMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n    const LayoutMode = instance.UI.LayoutMode;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setLayoutMode(LayoutMode.FacingContinuous);\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default (mode) => {\n  core.setDisplayMode(mode);\n};\n","/**\n * Sets the maximum zoom level allowed by the UI. Default is 9999%.\n * @method UI.setMaxZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMaxZoomLevel('150%'); // or setMaxZoomLevel(1.5)\n  });\n */\n\nimport setMaxZoomLevel from 'helpers/setMaxZoomLevel';\n\nexport default (store) => setMaxZoomLevel(store.dispatch);\n","/**\n * Sets the minimum zoom level allowed by the UI. Default is 5%.\n * @method UI.setMinZoomLevel\n * @param {(string|number)} zoomLevel Zoom level in either number or percentage.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMinZoomLevel('10%'); // or setMinZoomLevel(0.1)\n  });\n */\n\nimport actions from 'actions';\nimport zoomFactors, { defaultZoomList } from 'constants/zoomFactors';\nimport getActualZoomLevel from 'helpers/getActualZoomLevel';\n\nexport default (store) => (zoomLevel) => {\n  const minZoom = getActualZoomLevel(zoomLevel);\n\n  if (minZoom) {\n    const maxZoom = zoomFactors.getMaxZoomLevel();\n    const zoomList = defaultZoomList.filter((zoom) => zoom <= maxZoom && zoom >= minZoom);\n    zoomFactors.setMinZoomLevel(minZoom);\n    store.dispatch(actions.setZoomList(zoomList));\n    window.Core.Tools.MarqueeZoomTool.setMinZoomLevel(minZoom);\n  } else {\n    console.warn('Type of the argument for setMinZoomLevel must be either string or number');\n  }\n};","/**\n * Sets the format for displaying the date when a note is create/modified. The default format is 'MMM D, LT'.\n * A list of formats can be found {@link https://day.js.org/docs/en/display/format dayjs API}.\n * @method UI.setNoteDateFormat\n * @param {string} format The format of date to display\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setNoteDateFormat('DD.MM.YYYY HH:MM');\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (noteDateFormat) => {\n  store.dispatch(actions.setNoteDateFormat(noteDateFormat));\n};\n","/**\n * Sets the format for displaying the date when a note is printed. A list of formats can be found {@link https://github.com/iamkun/dayjs/blob/master/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.setPrintedNoteDateFormat\n * @param {string} format The format of date to display\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPrintedNoteDateFormat('DD.MM.YYYY HH:MM');\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (noteDateFormat) => {\n  store.dispatch(actions.setPrintedNoteDateFormat(noteDateFormat));\n};\n","import addSortStrategy from './addSortStrategy';\n\nexport default (store) => (newStrategy) => {\n  addSortStrategy(store)(newStrategy);\n};\n","/**\n * Sets page labels that will be displayed in UI. You may want to use this API if the document's page labels start with characters/numbers other than 1.\n * @method UI.setPageLabels\n * @param {Array.<string>} pageLabels Page labels that will be displayed in UI.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    var docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setPageLabels(['i', 'ii', 'iii', '4', '5']); // assume a document has 5 pages\n    });\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (pageLabels) => {\n  store.dispatch(actions.setPageLabels(pageLabels));\n};","/**\n * Sets the print quality. Higher values are higher quality but takes longer to complete and use more memory. The viewer's default quality is 1.\n * @method UI.setPrintQuality\n * @param {number} quality The quality of the document to print. Must be a positive number.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPrintQuality(2);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (quality) => {\n  if (quality <= 0) {\n    throw Error('Value must be a positive number');\n  }\n  store.dispatch(actions.setPrintQuality(quality));\n};\n","/**\n * Sets the default print options.\n * @method UI.setDefaultPrintOptions\n * @param {object} options - The default print options of the document to print. Must be an object.\n * @param {boolean} [options.includeComments] - Whether or not will print the documents with the comments\n * @param {boolean} [options.includeAnnotations] - Whether or not will print the documents with the annotations\n * @param {boolean} [options.maintainPageOrientation] - Whether or not will maintain the pages orientation as set in the webviewer\n * @param {string} [options.margins] CSS value that will be used as the default margin for printing\n *\n * @example\nWebViewer(...) .then(function(instance) {\n  instance.UI.setDefaultPrintOptions({ includeComments: true, includeAnnotations: true });\ninstance.UI.setDefaultPrintOptions({ margins: \"0.5in\"});  // Set all sides to 0.5 inch margin\ninstance.UI.setDefaultPrintOptions({ margins: \"2cm\" }); // Set all sides to 2cm margin\n// Set top margin to 0.5 inches right margin to 0.4 inches bottom margin to 0.3 inches and left margin to 0.2 inches\ninstance.UI.setDefaultPrintOptions({ margins: \"0.5in 0.4in 0.3in 0.2in\" });\n});\n */\n\nimport actions from 'actions';\n\nexport default (store) => (options) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([options], [TYPES.OBJECT({\n    includeComments: TYPES.OPTIONAL(TYPES.BOOLEAN),\n    includeAnnotations: TYPES.OPTIONAL(TYPES.BOOLEAN),\n    maintainPageOrientation: TYPES.OPTIONAL(TYPES.BOOLEAN),\n    margins: TYPES.OPTIONAL(TYPES.STRING),\n  })], 'setDefaultPrintOptions');\n  const objectKeyCount = Object.keys(options).length;\n  if (objectKeyCount === 0) {\n    return console.error('setDefaultPrintOptions requires at least one option to be set');\n  }\n  if (options.margins) {\n    store.dispatch(actions.setDefaultPrintMargins(options.margins));\n    if (objectKeyCount === 1) {\n      return;\n    }\n  }\n  store.dispatch(actions.setDefaultPrintOptions(options));\n};","/**\n * Sets the currently selected tab of a Tabs component.\n * @method UI.setSelectedTab\n * @param {string} id The id of the Tabs component to set.\n * @param {string} dataElement The 'dataElement' attribute of the TabPanel component to select.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Set the currently selected tab of 'signatureModal' to be the 'Type' panel.\n    instance.UI.setSelectedTab('signatureModal', 'textSignaturePanelButton'); //'inkSignaturePanelButton', 'imageSignaturePanelButton'\n    // Set the currently selected tab of 'linkModal' to be the 'Page' panel.\n    instance.UI.setSelectedTab('linkModal', 'PageNumberPanelButton'); //'URLPanelButton'\n    // Set the currently selected tab of 'rubberStampTab' to be the 'Custom' panel.\n    instance.UI.setSelectedTab('rubberStampTab', 'customStampPanelButton'); //'standardStampPanelButton'\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (id, dataElement) => {\n  store.dispatch(actions.setSelectedTab(id, dataElement));\n};\n","import actions from 'actions';\n\nexport default (store) => (value) => {\n  if (value) {\n    store.dispatch(actions.openElement('leftPanel'));\n  } else {\n    store.dispatch(actions.closeElement('leftPanel'));\n  }\n};","/**\n * Sets a sorting algorithm for the Notes Panel.\n * @method UI.setNotesPanelSortStrategy\n * @param {string} sortStrategy Name of the sort strategy algorithm. Check [UI.NotesPanelSortStrategy]{@link UI.NotesPanelSortStrategy} for the options or use your own strategy.\n * @see UI.NotesPanelSortStrategy\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const sortStrategy = instance.UI.NotesPanelSortStrategy;\n    instance.UI.setNotesPanelSortStrategy(sortStrategy.TYPE); // sort notes by type\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (sortStrategy) => {\n  if (!sortStrategy) {\n    throw new Error('Unsupported sort strategy.');\n  }\n\n  store.dispatch(actions.setNotesPanelSortStrategy(sortStrategy));\n};","/**\n * Sets the swipe orientation between pages of WebViewer UI on mobile devices. Default is horizontal.\n * @method UI.setSwipeOrientation\n * @param {string} swipeOrientation The swipe orientation to navigate between pages. Available orientations are: horizontal, vertical and both.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setSwipeOrientation('vertical'); // set the swipe orientation to vertical.\n  });\n */\nimport TouchEventManager from 'helpers/TouchEventManager';\n\nexport default (swipeOrientation) => {\n  if (swipeOrientation === 'both') {\n    TouchEventManager.allowVerticalSwipe = true;\n    TouchEventManager.allowHorizontalSwipe = true;\n  } else if (swipeOrientation === 'vertical') {\n    TouchEventManager.allowVerticalSwipe = true;\n    TouchEventManager.allowHorizontalSwipe = false;\n  } else if (swipeOrientation === 'horizontal') {\n    TouchEventManager.allowVerticalSwipe = false;\n    TouchEventManager.allowHorizontalSwipe = true;\n  } else {\n    console.warn(`${swipeOrientation} is not a valid orientation. Try 'vertical,' 'horizontal,' or 'both.`);\n  }\n};","// MIT License\n\n// Copyright (c) 2017 Nikita Gusakov\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport postcss from 'postcss';\n\nconst isInsideRoot = (rule) => {\n  return (\n    rule.selectors.length !== 1 ||\n    rule.selectors[0] !== ':root' ||\n    rule.parent.type !== 'root'\n  );\n};\n\nconst isVariableDeclaration = (decl) => {\n  return Boolean(decl.value) && decl.prop.startsWith('--');\n};\n\nconst parse = (css, options) => {\n  const root = postcss.parse(css, {\n    from: options.from,\n    parser: options.parser\n  });\n\n  const variables = {};\n  root.walkRules((rule) => {\n    if (isInsideRoot(rule)) {\n      return;\n    }\n\n    rule.each((decl) => {\n      if (isVariableDeclaration(decl)) {\n        const name = decl.prop.slice(2);\n        variables[name] = decl.value;\n      }\n    });\n  });\n\n  return variables;\n};\n\nexport {\n  parse,\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\nimport { parse } from 'helpers/cssVariablesParser';\n\nimport modularUILightModeString from '!!raw-loader!../constants/lightWCAG.scss';\nimport lightModeString from '!!raw-loader!../constants/light.scss';\nimport highContastLightModeString from '!!raw-loader!../constants/highContrastLight.scss';\nimport darkModeString from '!!raw-loader!../constants/dark.scss';\nimport highContrastDarkModeString from '!!raw-loader!../constants/highContrastDark.scss';\nimport Theme from '../constants/theme';\n\n/**\n * Sets the theme of WebViewer UI. Please note that this does not work in IE11.\n * @method UI.setTheme\n * @param {string} theme Theme of WebViewerInstance UI.\n * @see UI.Theme\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const theme = instance.UI.Theme;\n    instance.UI.setTheme(theme.DARK);\n  });\n */\n\nexport default (store) => {\n  let previousActiveTheme = Theme.LIGHT; // default\n  let previousIsHighContrastMode = false; // default\n  let previousIsCustomizableUI = false; // default\n\n  store.subscribe(() => {\n    const state = store.getState();\n    const activeTheme = selectors.getActiveTheme(state);\n    const isHighContrastMode = selectors.getIsHighContrastMode(state);\n    const isCustomizableUI = state.featureFlags.customizableUI;\n\n    if (previousActiveTheme !== activeTheme || previousIsHighContrastMode !== isHighContrastMode || window.isApryseWebViewerWebComponent || previousIsCustomizableUI !== isCustomizableUI) {\n      previousActiveTheme = activeTheme;\n      previousIsHighContrastMode = isHighContrastMode;\n      previousIsCustomizableUI = isCustomizableUI;\n      updateColors(activeTheme, isHighContrastMode, isCustomizableUI);\n    }\n  });\n  return (theme) => {\n    const values = Object.values(Theme);\n    if (values.indexOf(theme) < 0) {\n      throw new Error(`${theme} is not one of: ${values.join(',')}}`);\n    }\n    store.dispatch(actions.setActiveTheme(theme));\n  };\n};\n\nconst setVariables = (themeVarString = '') => {\n  const root = document.documentElement;\n  const themeVariables = parse(themeVarString, {});\n  Object.keys(themeVariables).forEach((key) => {\n    const themeVariable = themeVariables[key];\n    root.style.setProperty(`--${key}`, themeVariable);\n  });\n};\n\nconst updateColors = (activeTheme, isHighContrastMode, isCustomizableUI) => {\n  if (isCustomizableUI) {\n    setVariables(modularUILightModeString);\n  } else if (activeTheme === Theme.LIGHT) {\n    setVariables(isHighContrastMode ? highContastLightModeString : lightModeString);\n  } else if (activeTheme === Theme.DARK) {\n    setVariables(isHighContrastMode ? highContrastDarkModeString : darkModeString);\n  }\n};\n","export default \":root {\\n  /* stylelint-disable color-no-hex */\\n  --blue-1: #E7EDF3;\\n  --blue-2: #DDE6EE;\\n  --blue-3: #CFD8E0;\\n  --blue-4: #C7D2DD;\\n  --blue-5: #2B73AB;\\n  --blue-6: #1A466B;\\n\\n  --gray-0: #FFFFFF;\\n  --gray-1: #F8F9FA;\\n  --gray-2: #F1F3F5;\\n  --gray-3: #E7EBEE;\\n  --gray-4: #CFD4DA;\\n  --gray-5: #ABB5BD;\\n  --gray-6: #818A92;\\n  --gray-7: #697077;\\n  --gray-8: #485056;\\n  --gray-9: #343A40;\\n  --gray-10: #21242A;\\n  --gray-11: #16181C;\\n  --gray-12: #101214;\\n  --gray-13: #000000;\\n\\n  --yellow-1: #FACE0080;\\n  --red: #D52A2A;\\n  --green: #006D41;\\n  /* stylelint-enable color-no-hex */\\n\\n  --component-background: var(--gray-0);\\n  --mobile-presets-background: var(--gray-1);\\n  --faded-component-background: var(--gray-2);\\n  --toggle-zoom-overlay-background: var(--gray-2);\\n  --ribbons-background: var(--gray-3);\\n  --document-background-color: var(--gray-2);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --panel-background: var(--gray-0);\\n\\n  --slider-filled: var(--gray-9);\\n  --slider-background: var(--gray-6);\\n  --badge-fill: var(--gray-8);\\n  --badge-text-color: var(--gray-0);\\n  --view-header-icon-active-fill: var(--blue-5);\\n\\n  --text-color: var(--gray-9);\\n  --faded-text: var(--gray-7);\\n  --placeholder-text: var(--gray-7);\\n  --ribbon-active-color: var(--blue-5);\\n  --ribbon-hover-color: var(--blue-6);\\n\\n  --no-presets-text: var(--gray-6);\\n  --disabled-text: var(--gray-5);\\n  --disabled-icon: var(--gray-5);\\n\\n  --scroll-chevron-color: var(--gray-6);\\n  --icon-color: var(--gray-6);\\n  --selected-icon-color: var(--gray-8);\\n\\n  --view-header-button-hover: var(--gray-2);\\n  --view-header-button-active: var(--gray-2);\\n\\n  --popup-button-hover: var(--gray-2);\\n  --popup-button-active: var(--gray-2);\\n\\n  --dropdown-item-hover: var(--blue-6);\\n  --dropdown-item-active: var(--blue-5);\\n  --dropdown-item-active-text: var(--gray-0);\\n  --dropdown-item-active-icon: var(--gray-0);\\n\\n  --primary-button: var(--blue-5);\\n  --primary-button-text: var(--gray-0);\\n  --primary-button-hover: var(--blue-6);\\n\\n  --secondary-button-border: var(--blue-5);\\n  --secondary-button-text: var(--blue-5);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --box-shadow: var(--gray-6);\\n  --document-box-shadow: var(--gray-7);\\n\\n  --divider: var(--gray-4);\\n  --reply-divider: var(--gray-3);\\n  --side-panel-border: var(--divider);\\n  --border: var(--gray-6);\\n  --lighter-border: var(--gray-4);\\n  --focus-border: var(--blue-5);\\n  --hover-border: var(--blue-6);\\n  --color-palette-border: var(--blue-5);\\n\\n  --image-signature-drop-background: var(--blue-1);\\n  --image-signature-drop-border: var(--blue-5);\\n  --file-picker-drop-background: var(--blue-1);\\n  --file-picker-drop-border: var(--blue-5);\\n  --signature-draw-background: var(--gray-2);\\n  --modal-stroke-and-border: var(--gray-4);\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: var(--border);\\n\\n  --list-separator-color: var(--gray-7);\\n  --scrollbar-color: var(--gray-6);\\n  --note-box-shadow: var(--gray-7);\\n  --note-box-shadow-expanded: rgba(134, 142, 150, 0.24);\\n\\n  --tools-header-background: var(--gray-2);\\n  --view-header-background: var(--gray-1);\\n  --tools-overlay-background: var(--gray-0);\\n\\n  --tools-button-hover: var(--gray-2);\\n  --tools-button-active: var(--gray-2);\\n\\n  --tools-overlay-button-hover: var(--blue-1);\\n  --tools-overlay-button-active: var(--blue-2);\\n\\n  --fileAttachment-title-padding: 0;\\n  --fileAttachment-list-padding: 24px;\\n\\n  --outline-color: var(--blue-5);\\n  --outline-hover: var(--gray-2);\\n  --outline-selected: var(--gray-2);\\n  --outline-selected-border: var(--blue-5);\\n\\n  --preset-background: var(--gray-1);\\n\\n  --scale-overlay-item-hover: var(--dropdown-item-hover);\\n\\n  --oe-table-dropdown-highlight: var(--gray-5);\\n\\n  --bookmark-outline-hover-border: var(--blue-5);\\n\\n  --checked-option: var(--blue-5);\\n\\n  --multi-tab-header-background: var(--tool-header-background);\\n  --multi-tab-active-tab-background: var(--gray-0);\\n  --multi-tab-divider: var(--gray-6);\\n  --multi-tab-hover-border: var(--blue-6);\\n  --multi-tab-border: 1px solid var(--gray-6);\\n  --multi-tab-text-color: var(--gray-9);\\n  --multi-tab-active-text-color: var(--gray-9);\\n  --multi-tab-add-button-padding: 8px;\\n  --multi-tab-border-radius: 4px;\\n  --multi-tab-divider-height: 22px;\\n  --multi-tab-header-height: 36px;\\n  --multi-tab-divider-top: 8px;\\n  --multi-tab-flyout-hover: var(--blue-6);\\n  --multi-tab-flyout-hover-text: var(--gray-0);\\n  --multi-tab-toggle-button-active: var(--blue-5);\\n\\n  --file-preview-background: var(--gray-2);\\n\\n  --tab-border-color: var(--border);\\n  --tab-border-color-hover: var(--blue-6);\\n  --tab-background-color-hover: var(--faded-component-background);\\n  --tab-border-color-selected: var(--blue-5);\\n  --tab-text-color-selected: var(--blue-5);\\n  --dropdown-item-hover: var(--blue-6);\\n  --dropdown-item-active: var(--blue-5);\\n  --dropdown-item-text-hover: var(--gray-0);\\n\\n  --disabled-button-color: rgba(43, 115, 171, 0.5);\\n  --tab-footer-button-color: var(--gray-0);\\n  --x-button-hover-color: var(--gray-2);\\n\\n  --slider-filler: drop-shadow(0px 0px 1px rgba(145, 145, 145, .7));\\n  --style-icon-color: var(--icon-color);\\n  --cell-border-size: 30px;\\n  --cell-outer-border-size: 30px;\\n  --button-icon-color-active: var(--blue-5);\\n  --slider-svg-hieght: 25px;\\n  --slider-input-focus: var(--blue-5);\\n  --colorpicker-tool-shadow: inset 0 0 0 1px var(--blue-6);\\n  --colorpicker-tool-bg: var(--tools-button-hover);\\n\\n  --input-switch-default-color: var(--gray-6);\\n\\n  --focus-visible-outline: 2px solid var(--gray-10);\\n\\n  --change-list-old-bg: #FFF2F2;\\n  --change-list-new-bg: #E8FAF3;\\n  --swipe-indicator-bg: var(--gray-7);\\n}\";","export default \":root {\\n  /* stylelint-disable color-no-hex */\\n  --blue-1: #E7EDF3;\\n  --blue-2: #DDE6EE;\\n  --blue-3: #CFD8E0;\\n  --blue-4: #C7D2DD;\\n  --blue-5: #3183C8;\\n  --blue-6: #1A4971;\\n  --blue-7: #2651A1;\\n\\n  --gray-0: #FFFFFF;\\n  --gray-1: #F8F9FA;\\n  --gray-2: #F1F3F5;\\n  --gray-3: #E7EBEE;\\n  --gray-4: #DEE2E6;\\n  --gray-5: #CFD4DA;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #868E96;\\n  --gray-8: #485056;\\n  --gray-9: #343A40;\\n  --gray-10: #21242A;\\n  --gray-11: #101214;\\n  --gray-12: #000000;\\n\\n  --yellow-1: #FACE0080;\\n  --red: red;\\n  /* stylelint-enable color-no-hex */\\n\\n  --component-background: var(--gray-0);\\n  --mobile-presets-background: var(--gray-1);\\n  --faded-component-background: var(--gray-2);\\n  --signature-draw-background: var(--gray-2);\\n  --toggle-zoom-overlay-background: var(--gray-2);\\n  --ribbons-background: var(--gray-3);\\n  --document-background-color: var(--gray-2);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --slider-filled: var(--blue-5);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-8);\\n  --badge-text-color: var(--gray-0);\\n  --view-header-icon-active-fill: var(--blue-6);\\n\\n  --text-color: var(--gray-8);\\n  --faded-text: var(--gray-8);\\n  --placeholder-text: var(--gray-6);\\n  --ribbon-active-color: var(--blue-7);\\n\\n  --no-presets-text: var(--gray-8);\\n  --disabled-text: var(--gray-5);\\n  --disabled-icon: var(--gray-5);\\n\\n  --scroll-chevron-color: var(--gray-6);\\n  --icon-color: var(--gray-7);\\n  --selected-icon-color: var(--gray-8);\\n\\n  --view-header-button-hover: var(--blue-1);\\n  --view-header-button-active: var(--blue-2);\\n\\n  --popup-button-hover: var(--blue-1);\\n  --popup-button-active: var(--blue-2);\\n\\n  --dropdown-item-hover: var(--popup-button-hover);\\n  --dropdown-item-active: var(--popup-button-active);\\n  --dropdown-item-active-text: var(--text-color);\\n  --dropdown-item-active-icon: var(--icon-color);\\n\\n  --primary-button: var(--blue-7);\\n  --primary-button-text: var(--gray-1);\\n  --primary-button-hover: var(--blue-6);\\n\\n  --secondary-button-text: var(--blue-7);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --box-shadow: var(--gray-6);\\n  --document-box-shadow: var(--gray-7);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --divider: var(--gray-5);\\n  --side-panel-border: var(--divider);\\n  --border: var(--gray-5);\\n  --focus-border: var(--blue-5);\\n  --color-palette-border: var(--gray-8);\\n\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: var(--border);\\n\\n  --list-separator-color: var(--gray-8);\\n  --scrollbar-color: var(--gray-6);\\n  --note-box-shadow: var(--box-shadow);\\n\\n  --tools-header-background: var(--gray-3);\\n  --view-header-background: var(--gray-1);\\n  --tools-overlay-background: var(--gray-0);\\n\\n  --tools-button-hover: var(--blue-3);\\n  --tools-button-active: var(--blue-4);\\n\\n  --tools-overlay-button-hover: var(--blue-1);\\n  --tools-overlay-button-active: var(--blue-2);\\n\\n  --outline-color: var(--blue-7);\\n  --outline-hover: var(--blue-1);\\n\\n  --preset-background: var(--gray-1);\\n\\n  --oe-table-dropdown-highlight: var(--blue-4);\\n\\n  --bookmark-outline-hover-border: transparent;\\n\\n  --checked-option: var(--blue-5);\\n\\n  --input-switch-default-color: var(--gray-3);\\n}\";","export default \":root {\\n  /* stylelint-disable color-no-hex */\\n  --blue-1: #E7EDF3;\\n  --blue-2: #DDE6EE;\\n  --blue-3: #CFD8E0;\\n  --blue-4: #C7D2DD;\\n  --blue-5: #3183C8;\\n  --blue-6: #1A4971;\\n\\n  --gray-0: #FFFFFF;\\n  --gray-1: #F8F9FA;\\n  --gray-2: #F1F3F5;\\n  --gray-3: #E7EBEE;\\n  --gray-4: #DEE2E6;\\n  --gray-5: #CFD4DA;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #868E96;\\n  --gray-8: #485056;\\n  --gray-9: #343A40;\\n  --gray-10: #21242A;\\n  --gray-11: #101214;\\n  --gray-12: #000000;\\n\\n  --yellow-1: #FACE0080;\\n  --red: red;\\n  --green: #006D41;\\n  /* stylelint-enable color-no-hex */\\n\\n  --component-background: var(--gray-0);\\n  --mobile-presets-background: var(--gray-1);\\n  --faded-component-background: var(--gray-2);\\n  --toggle-zoom-overlay-background: var(--gray-2);\\n  --ribbons-background: var(--gray-3);\\n  --document-background-color: var(--gray-2);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --slider-filled: var(--blue-5);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-8);\\n  --badge-text-color: var(--gray-0);\\n  --view-header-icon-active-fill: var(--blue-6);\\n\\n  --text-color: var(--gray-8);\\n  --faded-text: var(--gray-7);\\n  --placeholder-text: var(--gray-6);\\n  --ribbon-active-color: var(--blue-5);\\n\\n  --no-presets-text: var(--gray-6);\\n  --disabled-text: var(--gray-5);\\n  --disabled-icon: var(--gray-5);\\n\\n  --scroll-chevron-color: var(--gray-6);\\n  --icon-color: var(--gray-7);\\n  --selected-icon-color: var(--gray-8);\\n\\n  --view-header-button-hover: var(--blue-1);\\n  --view-header-button-active: var(--blue-2);\\n\\n  --popup-button-hover: var(--blue-1);\\n  --popup-button-active: var(--blue-2);\\n\\n  --dropdown-item-hover: var(--popup-button-hover);\\n  --dropdown-item-active: var(--popup-button-active);\\n  --dropdown-item-active-text: var(--text-color);\\n  --dropdown-item-active-icon: var(--icon-color);\\n\\n  --primary-button: var(--blue-5);\\n  --primary-button-text: var(--gray-1);\\n  --primary-button-hover: var(--blue-6);\\n\\n  --secondary-button-text: var(--blue-5);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --box-shadow: var(--gray-6);\\n  --document-box-shadow: var(--gray-7);\\n\\n  --panel-background: var(--gray-1);\\n\\n  --divider: var(--gray-5);\\n  --reply-divider: var(--gray-3);\\n\\n  --side-panel-border: var(--divider);\\n  --border: var(--gray-5);\\n  --lighter-border: var(--gray-4);\\n  --focus-border: var(--blue-5);\\n  --color-palette-border: var(--gray-8);\\n\\n  --image-signature-drop-background: var(--blue-1);\\n  --image-signature-drop-border: var(--blue-5);\\n  --file-picker-drop-background: var(--blue-1);\\n  --file-picker-drop-border: var(--blue-5);\\n  --signature-draw-background: var(--gray-2);\\n  --modal-stroke-and-border: var(--gray-5);\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: var(--border);\\n\\n  --list-separator-color: var(--gray-7);\\n  --scrollbar-color: var(--gray-6);\\n  --note-box-shadow: var(--gray-7);\\n  --note-box-shadow-expanded: rgba(134, 142, 150, 0.24);\\n\\n\\n  --tools-header-background: var(--gray-3);\\n  --view-header-background: var(--gray-1);\\n  --tools-overlay-background: var(--gray-0);\\n\\n  --tools-button-hover: var(--blue-3);\\n  --tools-button-active: var(--blue-4);\\n\\n  --tools-overlay-button-hover: var(--blue-1);\\n  --tools-overlay-button-active: var(--blue-2);\\n\\n  --fileAttachment-title-padding: 16px;\\n  --fileAttachment-list-padding: 40px;\\n\\n  --outline-color: var(--blue-5);\\n  --outline-hover: var(--gray-2);\\n  --outline-selected: var(--blue-1);\\n\\n  --preset-background: var(--gray-1);\\n\\n  --scale-overlay-item-hover: var(--blue-4);\\n\\n  --oe-table-dropdown-highlight: var(--blue-4);\\n\\n  --bookmark-outline-hover-border: transparent;\\n\\n  --checked-option: var(--blue-5);\\n\\n  --multi-tab-header-background: var(--view-header-background);\\n  --multi-tab-active-tab-background: var(--gray-1);\\n  --multi-tab-divider: var(--divider);\\n  --multi-tab-hover-border: var(--divider);\\n  --multi-tab-border: 1px solid var(--divider);\\n  --multi-tab-text-color: var(--gray-7);\\n  --multi-tab-active-text-color: var(--gray-8);\\n  --multi-tab-add-button-padding: 0px;\\n  --multi-tab-border-radius: 3px;\\n  --multi-tab-divider-height: 25px;\\n  --multi-tab-header-height: auto;\\n  --multi-tab-divider-top: 5px;\\n  --multi-tab-flyout-hover: var(--blue-1);\\n  --multi-tab-flyout-hover-text: var(--text-color);\\n  --multi-tab-toggle-button-active: var(--multi-tab-hover-border);\\n\\n  --file-preview-background: var(--gray-5);\\n  --tab-border-color: var(--border);\\n  --tab-border-color-hover: var(--border);\\n  --tab-background-color-hover: var(--popup-button-hover);\\n  --tab-border-color-selected: var(--border);\\n  --tab-text-color-selected: var(--text-color);\\n  --dropdown-item-hover: var(--popup-button-hover);\\n  --dropdown-item-active: var(--popup-button-hover);\\n  --dropdown-item-text-hover: var(--text-color);\\n\\n  --disabled-button-color: rgba(173, 181, 189, 0.5);\\n  --tab-footer-button-color: var(--primary-button-text);\\n  --x-button-hover-color: var(--view-header-button-hover);\\n\\n  --slider-filler: none;\\n  --style-icon-color: var(--selected-icon-color);\\n  --cell-border-size: 28px;\\n  --cell-outer-border-size: 26px;\\n  --button-icon-color-active: var(--blue-6);\\n  --slider-svg-hieght: 18px;\\n  --slider-input-focus: var(--focus-border);\\n  --colorpicker-tool-shadow: none;\\n  --colorpicker-tool-bg: none;\\n\\n  --input-switch-default-color: var(--gray-3);\\n\\n  --focus-visible-outline: 2px solid var(--gray-10);\\n\\n  --change-list-old-bg: #FFF2F2;\\n  --change-list-new-bg: #E8FAF3;\\n}\";","export default \":root {\\n  /* stylelint-disable color-no-hex */\\n  --blue-1: #192530;\\n  --blue-2: #1B2B3A;\\n  --blue-3: #334250;\\n  --blue-4: #334758;\\n  --blue-5: #1A4971;\\n  --blue-6: #3183C8;\\n  --blue-7: #7FB7EB;\\n\\n  --gray-0: #000000;\\n  --gray-1: #16181C;\\n  --gray-2: #21242A;\\n  --gray-3: #343A40;\\n  --gray-4: #485056;\\n  --gray-5: #868E96;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #CFD4DA;\\n  --gray-8: #DEE2E6;\\n  --gray-9: #E7EBEE;\\n  --gray-10: #F1F3F5;\\n  --gray-11: #F8F9FA;\\n  --gray-12: #FFFFFF;\\n\\n  --yellow-1: #e1b90080;\\n  --red: red;\\n  /* stylelint-enable color-no-hex */\\n\\n  --panel-background: var(--gray-3);\\n  --faded-component-background: var(--gray-1);\\n  --signature-draw-background: var(--gray-3);\\n  --toggle-zoom-overlay-background: var(--gray-4);\\n  --component-background: var(--gray-2);\\n  --mobile-tool-style-popup: var(--gray-3);\\n  --preset-background: var(--gray-3);\\n  --mobile-divider: var(--gray-7);\\n  --mobile-presets-background: var(--gray-3);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --ribbons-background: var(--gray-1);\\n  --box-shadow: var(--gray-5);\\n  --document-box-shadow: var(--gray-5);\\n  --focus-border: var(--blue-6);\\n\\n  --scroll-chevron-color: var(--gray-5);\\n  --icon-color: var(--gray-6);\\n  --faded-text: var(--gray-8);\\n  --text-color: var(--gray-11);\\n  --placeholder-text: var(--gray-5);\\n  --ribbon-active-color: var(--blue-7);\\n\\n  --no-presets-text: var(--gray-8);\\n  --disabled-text: var(--gray-4);\\n  --disabled-icon: var(--gray-4);\\n\\n  --slider-filled: var(--blue-6);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-4);\\n  --badge-text-color: var(--gray-12);\\n  --primary-button: var(--blue-5);\\n  --primary-button-text: var(--gray-11);\\n  --secondary-button-text: var(--blue-7);\\n  --divider: var(--gray-4);\\n  --side-panel-border: var(--panel-background);\\n  --border: var(--gray-4);\\n  --selected-icon-color: var(--gray-8);\\n  --view-header-icon-active-fill: var(--gray-10);\\n  --document-background-color: var(--gray-2);\\n\\n  --view-header-button-hover: var(--blue-3);\\n  --view-header-button-active: var(--blue-4);\\n\\n  --popup-button-hover: var(--blue-3);\\n  --popup-button-active: var(--blue-4);\\n\\n  --dropdown-item-hover: var(--popup-button-hover);\\n  --dropdown-item-active: var(--popup-button-active);\\n  --dropdown-item-active-text: var(--text-color);\\n  --dropdown-item-active-icon: var(--icon-color);\\n\\n  --primary-button-hover: var(--blue-6);\\n  --secondary-button-hover: var(--blue-6);\\n\\n  --color-palette-border: var(--gray-7);\\n\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: transparent;\\n\\n  --list-separator-color: var(--gray-8);\\n  --scrollbar-color: var(--gray-5);\\n  --note-box-shadow: transparent;\\n\\n  --tools-header-background: var(--gray-1);\\n  --view-header-background: var(--gray-3);\\n  --tools-overlay-background: var(--gray-2);\\n\\n\\n  --tools-button-hover: var(--blue-1);\\n  --tools-button-active: var(--blue-2);\\n\\n  --tools-overlay-button-hover: var(--blue-3);\\n  --tools-overlay-button-active: var(--blue-4);\\n\\n  --outline-color: var(--blue-7);\\n  --outline-hover: var(--blue-3);\\n\\n  --oe-table-dropdown-highlight: var(--blue-5);\\n\\n  --bookmark-outline-hover-border: transparent;\\n  \\n  --checked-option: var(--blue-6);\\n\\n  --input-switch-default-color: var(--gray-3);\\n}\";","export default \":root {\\n  /* stylelint-disable color-no-hex */\\n  --blue-1: #192530;\\n  --blue-2: #1B2B3A;\\n  --blue-3: #334250;\\n  --blue-4: #334758;\\n  --blue-5: #1A4971;\\n  --blue-6: #3183C8;\\n\\n  --gray-0: #000000;\\n  --gray-1: #16181C;\\n  --gray-2: #21242A;\\n  --gray-3: #343A40;\\n  --gray-4: #485056;\\n  --gray-5: #868E96;\\n  --gray-6: #ADB5BD;\\n  --gray-7: #CFD4DA;\\n  --gray-8: #DEE2E6;\\n  --gray-9: #E7EBEE;\\n  --gray-10: #F1F3F5;\\n  --gray-11: #F8F9FA;\\n  --gray-12: #FFFFFF;\\n\\n  --yellow-1: #e1b90080;\\n  --red: red;\\n  /* stylelint-enable color-no-hex */\\n\\n  --panel-background: var(--gray-3);\\n  --faded-component-background: var(--gray-1);\\n  --toggle-zoom-overlay-background: var(--gray-4);\\n  --component-background: var(--gray-2);\\n  --mobile-tool-style-popup: var(--gray-3);\\n  --preset-background: var(--gray-3);\\n  --mobile-divider: var(--gray-7);\\n  --mobile-presets-background: var(--gray-3);\\n\\n  --error-text-color: var(--red);\\n  --error-border-color: var(--red);\\n\\n  --ribbons-background: var(--gray-2);\\n  --box-shadow: var(--gray-5);\\n  --document-box-shadow: var(--gray-5);\\n  --focus-border: var(--blue-6);\\n\\n  --scroll-chevron-color: var(--gray-5);\\n  --icon-color: var(--gray-6);\\n  --faded-text: var(--gray-6);\\n  --text-color: var(--gray-11);\\n  --placeholder-text: var(--gray-5);\\n  --ribbon-active-color: var(--blue-6);\\n\\n  --no-presets-text: var(--gray-6);\\n  --disabled-text: var(--gray-4);\\n  --disabled-icon: var(--gray-4);\\n\\n  --slider-filled: var(--blue-6);\\n  --slider-background: var(--gray-4);\\n  --badge-fill: var(--gray-4);\\n  --badge-text-color: var(--gray-12);\\n  --primary-button: var(--blue-6);\\n  --primary-button-text: var(--gray-11);\\n  --secondary-button-text: var(--blue-6);\\n  --divider: var(--gray-4);\\n  --side-panel-border: var(--panel-background);\\n  --border: var(--gray-4);\\n  --selected-icon-color: var(--gray-8);\\n  --view-header-icon-active-fill: var(--gray-10);\\n  --document-background-color: var(--gray-2);\\n\\n  --view-header-button-hover: var(--blue-3);\\n  --view-header-button-active: var(--blue-4);\\n\\n  --popup-button-hover: var(--blue-3);\\n  --popup-button-active: var(--blue-4);\\n\\n  --dropdown-item-hover: var(--popup-button-hover);\\n  --dropdown-item-active: var(--popup-button-active);\\n  --dropdown-item-active-text: var(--text-color);\\n  --dropdown-item-active-icon: var(--icon-color);\\n\\n  --primary-button-hover: var(--blue-5);\\n  --secondary-button-hover: var(--blue-5);\\n\\n  --color-palette-border: var(--gray-7);\\n\\n  --image-signature-drop-background: var(--blue-1);\\n  --image-signature-drop-border: var(--blue-6);\\n  --file-picker-drop-background: var(--blue-1);\\n  --file-picker-drop-border: var(--blue-6);\\n  --signature-draw-background: var(--gray-3);\\n  --modal-stroke-and-border: var(--gray-4);\\n  --modal-negative-space: rgba(0, 0, 0, 0.3);\\n  --spinner-negative-space: rgba(0, 0, 0, 0.3);\\n\\n  --white-color-palette-border: transparent;\\n\\n  --list-separator-color: var(--gray-7);\\n  --scrollbar-color: var(--gray-5);\\n  --note-box-shadow: var(--gray-2);\\n  --note-box-shadow-expanded: var(--gray-2);\\n\\n  --tools-header-background: var(--gray-1);\\n  --view-header-background: var(--gray-3);\\n  --tools-overlay-background: var(--gray-2);\\n\\n\\n  --tools-button-hover: var(--blue-1);\\n  --tools-button-active: var(--blue-2);\\n\\n  --tools-overlay-button-hover: var(--blue-3);\\n  --tools-overlay-button-active: var(--blue-4);\\n\\n  --outline-color: var(--blue-6);\\n  --outline-hover: var(--blue-3);\\n  --outline-selected: var(--blue-3);\\n\\n  --scale-overlay-item-hover: var(--blue-3);\\n\\n  --oe-table-dropdown-highlight: var(--blue-5);\\n\\n  --bookmark-outline-hover-border: transparent;\\n\\n  --checked-option: var(--blue-6);\\n\\n  --file-preview-background: var(--gray-5);\\n\\n  --tab-border-color: var(--border);\\n  --tab-border-color-hover: var(--border);\\n  --tab-background-color-hover: var(--popup-button-hover);\\n  --tab-border-color-selected: var(--border);\\n  --tab-text-color-selected: var(--text-color);\\n\\n  --disabled-button-color: rgba(173, 181, 189, 0.5);\\n  --tab-footer-button-color: var(--primary-button-text);\\n\\n  --input-switch-default-color: var(--gray-3);\\n\\n  --focus-visible-outline: 2px solid var(--gray-10);\\n}\";","import actions from 'actions';\n\n/**\n * Sets the current active toolbar group.\n * @method UI.setToolbarGroup\n * @param {string} groupDataElement The groups dataElement. Default values are: toolbarGroup-View, toolbarGroup-Annotate,\n * toolbarGroup-Shapes, toolbarGroup-Insert, toolbarGroup-Measure, toolbarGroup-Edit, toolbarGroup-Forms\n * @param {boolean} [pickTool] If true, after setting the toolbar group, the last picked tool for the group will be set as the current tool. Defaults to true.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Change the toolbar group to the `Shapes` group\n    instance.UI.setToolbarGroup('toolbarGroup-Shapes');\n */\n\nexport default (store) => (group, pickTool = true) => {\n  store.dispatch(actions.setToolbarGroup(group, pickTool));\n};","/**\n * Creates a new Toolbar group (Ribbon)\n *\n * @method UI.createToolbarGroup\n * @param {object} toolbarGroup\n * @param {string} toolbarGroup.name The label for the new Toolbar Group or the key value to get the label from translation files.\n * <p>Refer to the lib/ui/i18n folder to find the existing keys in the translation files</p>\n * @param {string} toolbarGroup.dataElementSuffix <p>The suffix value you want to use to select your Toolbar group by data element.\n * All toolbar groups have the data element in this format <strong>toolbarGroup-&#60;dataElementSuffix&#62</strong>.</p> <p>For example, if you set the dataElementSuffix as 'Draw',\n * the dataElement of your ribbon will be <strong>toolbarGroup-Draw</strong></p>\n * @param {Array} toolbarGroup.children A list of elements to be added on the toolbar group header.\n * Check [this guide]{@link https://docs.apryse.com/documentation/web/guides/customizing-header/#header-items} to see the available options to be used as a toolbar group child.\n * @param {boolean} [toolbarGroup.useDefaultElements] <p>If true, the common elements used in most toolbar groups will be added to the children list.</p>\n * <p>These elements are a spacer in the beginning and at the end of the header, the undo and redo buttons, and the eraser button.</p>\n * <p>In the example below you can see these elements being added. By default, the value will be false and these elements will not be added.</p>\n * @example\n  WebViewer(...)\n   .then(function(instance) {\n    const { annotationManager, documentViewer } = instance.Core;\n    const annotHistoryManager = documentViewer.getAnnotationHistoryManager();\n\n    // In case you want to use the Toolbar Group label with translation, you can\n    // set the values with the setTranslations API and use the translation key\n    // as the name parameter\n\n    instance.UI.setTranslations('en',\n     {\n        'option.toolbarGroup.draw': 'Draw'\n      }\n    );\n\n    instance.UI.createToolbarGroup(\n    {\n      name: 'option.toolbarGroup.draw',\n      dataElementSuffix: 'Draw',\n      useDefaultElements: false,\n      children: [\n        { type: 'spacer' },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'freeHandTools',\n          dataElement: 'freeHandToolGroupButton',\n          title: 'annotation.freehand'\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'ellipseAreaTools',\n          dataElement: 'ellipseAreaToolGroupButton',\n          title: 'annotation.areaMeasurement'\n        },\n        {\n          type: 'toolGroupButton',\n          toolGroup: 'rectangleTools',\n          dataElement: 'shapeToolGroupButton',\n          title: 'annotation.rectangle'\n        },\n        { type: 'divider'},\n        // Undo Button\n        {\n          type: 'actionButton',\n          style: { 'marginLeft': '0px' },\n          dataElement: 'undoButton',\n          title: 'action.undo',\n          img: 'icon-operation-undo',\n          onClick: () => {\n            annotHistoryManager.undo();\n          },\n          isNotClickableSelector: () => !annotHistoryManager.canUndo()\n        },\n        // Redo Button\n        {\n          type: 'actionButton',\n          dataElement: 'redoButton',\n          title: 'action.redo',\n          img: 'icon-operation-redo',\n          onClick: () => {\n            annotHistoryManager.redo();\n          },\n          isNotClickableSelector: () => !annotHistoryManager.canRedo()\n        },\n        { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n        { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] }\n      ]\n    })\n  }\n})\n*/\n\nimport { undoButton, redoButton } from 'helpers/commonToolbarElements';\nimport actions from 'actions';\n\nexport default (store) => (toolbarGroup) => {\n  if (toolbarGroup.useDefaultElements) {\n    toolbarGroup.children = [\n      { type: 'spacer' },\n      ...toolbarGroup.children,\n      { type: 'divider' },\n      undoButton,\n      redoButton,\n      { type: 'toolButton', toolName: 'AnnotationEraserTool' },\n      { type: 'spacer', hidden: ['tablet', 'mobile', 'small-mobile'] }\n    ];\n  }\n\n  const headerGroup = `toolbarGroup-${toolbarGroup.dataElementSuffix}`;\n  store.dispatch(actions.setHeaderItems(headerGroup, toolbarGroup.children));\n  store.dispatch(actions.setCustomHeadersAdditionalProperties(headerGroup, { name: toolbarGroup.name }));\n};\n","import actions from 'actions';\n\nexport default (store) => (zoomList) => {\n  store.dispatch(actions.setZoomList(zoomList));\n};","import actions from 'actions';\n\n/**\n * Show outline control\n * @method UI.showOutlineControl\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showOutlineControl();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setOutlineControlVisibility(true));\n};\n","/**\n * Displays the custom error message\n * @method UI.showWarningMessage\n * @param {(string|object)} options Warning string message to display or an object for controlling the warning popup\n * @param {string} options.confirmBtnText The text that will be rendered in the confirm button\n * @param {string} options.title The title of the modal\n * @param {string} options.message The text that will rendered in the body of the modal\n * @param {function} options.onConfirm The callback function that will be invoked when the user clicks the Confirm button. The callback must return a Promise that resolves.\n * @param {function} options.onCancel The callback function that will be invoked when the user clicks the Cancel button. The callback must return a Promise that resolves.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showWarningMessage({\n      title: 'This is my warning modal title',\n      message: 'This is the body of my modal',\n      confirmBtnText: 'Okay!',\n      onConfirm: () => {\n        console.log('The user clicked the confirm button');\n        return Promise.resolve();\n      },\n      onCancel: () => {\n        console.log('The user clicked the cancel button');\n        return Promise.resolve();\n      },\n    });\n  });\n */\nimport actions from 'actions';\n\nexport default (store) => (options) => {\n  store.dispatch(actions.showWarningMessage(options));\n};\n","import core from 'core';\nimport { getInstanceNode } from 'helpers/getRootNode';\n\n/**\n * Syncs the namespaces under the Core namespace for the window, this instance, as well as others instances.\n * <br/><br/>\n * This is required for interoperability between multiple instances of WebViewer since each loaded instance ends up with different class references despite sharing the same name.\n * @method UI.syncNamespaces\n * @param {WebViewerInstance | object} namespaces The object containing the namespaces that will be used for all instances. This can be a WebViewer instance or an object with the namespaces inside.\n * @param {object} [namespaces.PDFNet] The PDFNet namespace. This is probably the most common that needs to be synced.\n * @param {object} [namespaces.Actions] The Actions namespace.\n * @param {object} [namespaces.Annotations] The Annotations namespace.\n * @param {object} [namespaces.Math] The Math namespace.\n * @param {object} [namespaces.Tools] The Tools namespace.\n * @param {...WebViewerInstance} otherInstances Other instances that will share the same namespaces.\n * @example\n// Loaded PDFNet directly\nconst Core = window.Core;\nconst PDFNet = Core.PDFNet;\nCore.setWorkerPath('../../../lib/core');\nCore.enableFullPDF();\n...\nWebViewer(...)\n  .then(function(instance) {\n    // Force this instance to use the loaded PDFNet instead of the one loaded specific to this instance\n    instance.UI.syncNamespaces({ PDFNet });\n    // instance.UI.syncNamespaces({ PDFNet }, instance2, instance3);  // Alternative; instance, instance2, and instance3 will share the same PDFNet namespace.\n    ...\n  });\n */\n\nexport default (namespaces, ...otherInstances) => {\n  const instances = [getInstanceNode().instance, ...otherInstances];\n  if (!namespaces) {\n    namespaces = getInstanceNode().instance;\n  }\n  const { PDFNet, Actions, Annotations, Math, Tools } = namespaces;\n  instances.forEach((instance) => {\n    if (instance && instance !== namespaces) {\n      core.syncNamespaces(namespaces);\n      if (PDFNet) {\n        instance.Core.PDFNet = PDFNet;\n      }\n      if (Actions) {\n        instance.Core.Actions = Actions;\n      }\n      if (Annotations) {\n        instance.Core.Annotations = Annotations;\n      }\n      if (Math) {\n        instance.Core.Math = Math;\n      }\n      if (Tools) {\n        instance.Core.Tools = Tools;\n      }\n    }\n  });\n};\n","/**\n * An instance of Popup that can be used to edit items in the text popup component\n * @name UI.textPopup\n * @implements {UI.Popup}\n * @type {UI.Popup}\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    instance.UI.textPopup.someAPI();\n  });\n */\nimport createPopupAPI from 'helpers/createPopupAPI';\n\nexport default (store) => createPopupAPI(store, 'textPopup');","/**\n * Toggles full scree mode of the browser.\n * @method UI.toggleFullScreen\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleFullScreen();\n  });\n */\n\nimport toggleFullscreen from 'helpers/toggleFullscreen';\n\nexport default () => {\n  toggleFullscreen();\n};\n","import actions from 'actions';\n\n/**\n * Enables syncing of annotation style updates to the associated tool that created the annotation.\n * Note that this is enabled by default.\n * @method UI.enableToolDefaultStyleUpdateFromAnnotationPopup\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableToolDefaultStyleUpdateFromAnnotationPopup();\n  });\n */\nexport const enableToolDefaultStyleUpdateFromAnnotationPopup = (store) => () => {\n  store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(true));\n};\n\n/**\n * Disables syncing of annotation style updates to the associated tool that created the annotation.\n * So if an annotation's style is changed the tool default styles will not be updated.\n * @method UI.disableToolDefaultStyleUpdateFromAnnotationPopup\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableToolDefaultStyleUpdateFromAnnotationPopup();\n  });\n */\nexport const disableToolDefaultStyleUpdateFromAnnotationPopup = (store) => () => {\n  store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(false));\n};\n","import actions from 'actions';\n\n/**\n * Enables syncing of annotation style updates to the associated tool that created the annotation.\n * Note that this is disabled by default.\n * @method UI.enableAnnotationToolStyleSyncing\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableAnnotationToolStyleSyncing();\n  });\n */\nexport const enableAnnotationToolStyleSyncing = (store) => () => {\n  store.dispatch(actions.setAnnotationToolStyleSyncingEnabled(true));\n  store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(true));\n};\n\n/**\n * Disables syncing of annotation style updates to the associated tool that created the annotation.\n * So if an annotation's style is changed the tool default styles will not be updated.\n * @method UI.disableAnnotationToolStyleSyncing\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableAnnotationToolStyleSyncing();\n  });\n */\nexport const disableAnnotationToolStyleSyncing = (store) => () => {\n  store.dispatch(actions.setAnnotationToolStyleSyncingEnabled(false));\n  store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(false));\n};\n\n","/**\n * Unregisters tool in the document viewer tool mode map, and removes the button object.\n * @method UI.unregisterTool\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.unregisterTool('MyTool');\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default (store) => (toolName) => {\n  unregisterToolInHeader(store, toolName);\n  unregisterToolInRedux(store, toolName);\n  unregisterToolInToolModeMap(toolName);\n};\n\nconst unregisterToolInHeader = (store, toolName) => {\n  const state = store.getState();\n\n  Object.keys(state.viewer.headers).forEach((header) => {\n    const headerItems = state.viewer.headers[header].filter((headerItem) => headerItem.toolName !== toolName);\n\n    store.dispatch(actions.setHeaderItems(header, headerItems));\n  });\n};\n\nconst unregisterToolInRedux = (store, toolName) => {\n  store.dispatch(actions.unregisterTool(toolName));\n};\n\nconst unregisterToolInToolModeMap = (toolName) => {\n  core.getDocumentViewers().forEach((viewer) => {\n    delete viewer.getToolModeMap()[toolName];\n  });\n};","import actions from 'actions';\nimport setColorPalette from './setColorPalette';\n\n/**\n * Update a button element in the viewer.\n * @method UI.updateElement\n * @param {string} dataElement the data element of the button element that will be updated. Only the data element of HTML elements that are of the type 'button' will work.\n * If you added a custom button, please ensure it is one of the following: <a href=\"https://docs.apryse.com/documentation/web/guides/customizing-header/#actionbutton\" target=\"_blank\">button types</a>\n * @param {object} props An object that is used to override an existing item's properties.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.updateElement('thumbnailsPanelButton', {\n      img: 'path/to/image',\n      title: 'new_tooltip',\n    })\n  });\n */\nexport default (store) => (dataElement, overrides) => {\n  switch (dataElement) {\n    // for backwards compatibility\n    case 'colorPalette':\n      setColorPalette(store)(overrides);\n      break;\n    default:\n      if (validateButtonOverrides(overrides)) {\n        store.dispatch(actions.setCustomElementOverrides(dataElement, overrides));\n      }\n  }\n};\n\nconst validateButtonOverrides = (overrides) => {\n  if (overrides !== null && typeof overrides !== 'object') {\n    return console.warn(\n      'The second argument needs to be an object to update a button',\n    );\n  }\n\n  return overrides;\n};\n","/**\n * Update existing tool's properties.\n * @method UI.updateTool\n * @param {string} toolName Name of the tool, either from <a href='https://docs.apryse.com/documentation/web/guides/annotations-and-tools/#list-of-tool-names' target='_blank'>tool names list</a> or the name you registered your custom tool with.\n * @param {object} [properties] Tool properties\n * @param {string} [properties.buttonImage] Path to an image or base64 data for the tool button\n * @param {string} [properties.buttonName] Name of the tool button that will be used in data-element\n * @param {string} [properties.buttonGroup] Group of the tool button belongs to\n * @param {string} [properties.tooltip] Tooltip of the tool button\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.updateTool('AnnotationCreateSticky', {\n      buttonImage: '/favicon-32x32.png'\n    });\n  });\n */\nexport default (store) => (toolName, properties) => {\n  store.dispatch({\n    type: 'UPDATE_TOOL',\n    payload: { toolName, properties },\n  });\n};\n","/**\n * Use/not use embedded printing. Currently unavailable on Android.\n * The printing process will be faster and the quality might be higher when using browsers native printing.\n * You may not want to use embedded printing if there are custom annotations in your document.\n * @method UI.useEmbeddedPrint\n * @param {boolean} [use=true] Whether or not to use embedded printing\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.useEmbeddedPrint(false); // disable embedded printing\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (useEmbeddedPrint) => {\n  store.dispatch(actions.useEmbeddedPrint(useEmbeddedPrint));\n};","/**\n * Use/not use embedded or rasterized printing options when connected to a WebViewer Server.\n * @method UI.useClientSidePrint\n * @param {boolean} [use=true] Whether or not to use embedded printing\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.useClientSidePrint(false); // disable embedded printing\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (useClientSidePrint) => {\n  store.dispatch(actions.useClientSidePrint(useClientSidePrint));\n};","import actions from 'actions';\n\n/**\n * @callback SignatureFilterFunction\n * @memberof UI\n * @param {Core.Annotations.Annotation} annotation  A signature annotation found in the SignatureCreateTool saved signatures list\n * @param {number} index An optional parameter for the index of the annotaiton parameter within the SignatureCreateTool saved signatures list\n * @returns {boolean} Whether or not a signature annotation should be included in the annotation preset\n */\n\n/**\n * Accepts a function that filters what saved signatures will be displayed in the signature annotation preset. Changing this function will instantly changes signatures displayed in the preset.\n *\n * @method UI.setDisplayedSignaturesFilter\n * @param {UI.SignatureFilterFunction} filterFunction The function that will be used to filter signatrues displayed in the preset\n * @example\nWebviewer(...)\n  .then(instance => {\n    // Only signatures that have a value set for the 'isInitial' custom data property will display in the preset\n    instance.UI.setDisplayedSignaturesFilter((a) => a.getCustomData('isInitial'));\n  });\n */\nexport default (store) => (filterFunction) => {\n  store.dispatch(actions.setDisplayedSignaturesFilterFunction(filterFunction));\n};\n","/**\n * Sets the units that will be displayed in the measurement tools' styles popup\n * Valid units are: 'mm', 'cm', 'm', 'km', 'mi', 'yd', 'ft', 'in', 'pt'\n * @method UI.setMeasurementUnits\n * @param {Object} units an object which contains the from units and to units\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMeasurementUnits({\n      from: ['in', 'cm', 'm'],\n      to: ['cm', 'm', 'km']\n    });\n  });\n */\n\nexport default (store) => ({ from, to }) => {\n  const { measurementUnits } = store.getState().viewer;\n\n  if (!from) {\n    from = measurementUnits.from;\n  }\n  if (!to) {\n    to = measurementUnits.to;\n  }\n\n  store.dispatch({\n    type: 'SET_MEASUREMENT_UNITS',\n    payload: { from, to },\n  });\n};\n","/**\n * Set the number of signatures that can be stored in the WebViewer UI (default is 4)\n * @method UI.setMaxSignaturesCount\n * @param {number} [maxSignaturesCount=4] Number of signature webViewer can store\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setMaxSignaturesCount(5); // allow up to 5 stored signatures\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (maxSignaturesCount) => {\n  store.dispatch(actions.setMaxSignaturesCount(maxSignaturesCount));\n};","/**\n * Set the fonts that are used when typing a signature in the signature dialog.\n * @method UI.setSignatureFonts\n * @param {Array.<string>|UI.setSignatureFontsCallback} fonts An array of font families.\n * @example // 6.1\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setSignatureFonts(['GreatVibes-Regular']);\n    instance.UI.setSignatureFonts(currentFonts => [\n      ...currentFonts,\n      'sans-serif',\n    ]);\n  });\n */\n\n/**\n * @callback UI.setSignatureFontsCallback\n * @param {Array.<string>} fonts current font families\n * @returns {Array.<string>} fonts to set.\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => (arg) => {\n  let fonts;\n\n  if (typeof arg === 'string') {\n    fonts = [arg];\n  }\n\n  if (Array.isArray(arg)) {\n    fonts = arg;\n  }\n\n  if (typeof arg === 'function') {\n    const currentFonts = selectors.getSignatureFonts(store.getState());\n    fonts = arg(currentFonts);\n  }\n\n  if (fonts) {\n    store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  }\n};\n","/**\n * Disable reply for annotations if the callback function returns true. The callback function gets evaluated when the Comments panel is open, an annotation is selected, and the selected annotation has a comment.\n * Only one callback function will be stored and invoked. If multiple criteria is needed to disable replies you must write them in a single callback function.\n * @method UI.disableReplyForAnnotations\n * @param {UI.disableReplyForAnnotationsCallback} isReplyDisabledCallback Callback function that returns true if reply will be disabled for the annotation passed in. False otherwise.\n * @example\n WebViewer(...)\n  .then(instance => {\n\n    // disable reply for Freehand annotations\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      return annotation instanceof instance.Core.Annotations.FreeHandAnnotation;\n    });\n\n    // disable reply for annotations authored by Guest\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      return annotation['Author'] === 'Guest';\n    });\n\n    // disable reply for annotations created more than 10 seconds ago\n    instance.UI.disableReplyForAnnotations((annotation) => {\n      const createdDate = new Date(annotation['DateCreated']);\n      const todayDate = new Date();\n      return (todayDate - createdDate) > 10000;\n    });\n  });\n */\n\n/**\n * Callback that gets passed to {@link UI.disableReplyForAnnotations disableReplyForAnnotations}.\n * @callback UI.disableReplyForAnnotationsCallback\n * @param {Core.Annotations.Annotation} annotation Annotation object\n * @returns {boolean} True if replies for the annotation passed in should be disabled. False otherwise.\n */\n\nimport actions from 'actions';\n\nexport default (store) => (isReplyDisabledFunc) => {\n  store.dispatch(actions.disableReplyForAnnotations(isReplyDisabledFunc));\n};","import getHashParameters from 'helpers/getHashParameters';\n\n/**\n * A getter that returns a stringified version of the 'custom' property that is passed to the WebViewer constructor\n * <a href='https://docs.apryse.com/documentation/web/guides/config-files/#passing-custom-data' target='_blank'>Refer to the passing custom data section</a>.\n * @method UI.getCustomData\n * @returns {string} returns a stringified version of the 'custom' property that is passed to the WebViewer constructor\n */\nexport default () => getHashParameters('custom', null);","import action from 'actions';\n\n/**\n * Adds a custom overlay to annotations if that annotation currently support it. Currently only the Ellipsis annotation supports it.\n * @method UI.setCustomMeasurementOverlay\n * @param {array} customOverlayInfo an array of customOverlay configurations. The configuration object has five properties: title, label, validate, value, and onChange\n * @example\nWebViewer(...)\n  .then(function(instance) {\n      instance.UI.setCustomMeasurementOverlayInfo([\n      {\n        title: \"Radius Measurement\", //Title for overlay\n        label: \"Radius\", // Label to be shown for the value\n        // Validate is a function to validate the annotation is valid for the current custom overlay\n        validate: annotation => annotation instanceof instance.Core.Annotations.EllipseAnnotation,\n        // The value to be shown in the custom overlay\n        value: annotation => annotation.Width / 2,\n        // onChange will be called whenever the value in the overlay changes from user input\n        onChange: (e, annotation) => {\n          // Do something with the annot like resize/redraw\n          instance.Core.annotationManager.redrawAnnotation(annotation);\n        }\n      }\n    ])\n  });\n */\n\nexport default (store) => (customOverlayInfo) => {\n  store.dispatch(action.setCustomMeasurementOverlay(customOverlayInfo));\n};\n","import actions from 'actions';\n\n/**\n * @callback NoteTransformFunction\n * @memberof UI\n * @param {HTMLElement} wrapperElement  A reference to the DOM node that wraps the note. You can use this to query select child elements to mutate (see the examples below)\n * @param {object} state The state of the note. Contains two properties, 'annotation' and 'isSelected'\n * @param {Core.Annotations.Annotation} state.annotation A reference to the annotation object associated with the note\n * @param {boolean} state.isSelected whether or not the note is currently expanded\n * @param {function} createElement A utility function that should be used when creating DOM nodes. This is a replacement for `document.createElement`.\n * Accepts the same parameters as `document.createElement`. Using document.createElement instead of this function will cause your DOM nodes to not be cleaned up on subsequent renders.\n */\n\n/**\n * Accepts a function that will be called every time a note in the left panel is rendered.\n * This function can be used to add, edit or hide the contents of the note.\n * <br><br>\n * <span style='font-size: 18px'><b>Please carefully read the documentation and the notes below before using this API</b></span><br><br>\n *\n * <b>This API is experimental and should be used sparingly.</b> If you find you are heavily relying on this function,\n *  it is recommended that you <a href='https://docs.apryse.com/documentation/web/guides/advanced-customization/'>fork the UI repo</a> and make the changes directly in the source code (Note.js).\n * <br><br>\n *\n *\n * The structure of the HTML that is passed into this function may change may change without notice in any release. <b>Please make sure\n * to test this function thoroughly when upgrading WebViewer versions.</b>\n * <br><br>\n *\n *\n *  There may be unexpected behaviour when using this API. The HTML that is provided is controlled by React, and sometimes React will override any changes you make.\n *  If you find any unexpected behaviour when using this API, then this API probably won't work for your use case and you will have to make the changes directly in the source code.\n * <br><br>\n *\n *  <b>Do not use document.createElement to create DOM elements</b>. Instead, use the provided `createElement` utility function provided as the third parameter.\n *\n *  <b>Do not use HTMLElement.removeChild or any other APIs that remove elements from the DOM.</b> Doing so will cause React to lose reference to this node, and will crash.\n *  If you need to hide an HTML element, set the style to `display: none` instead.\n * <br><br>\n * @method UI.dangerouslySetNoteTransformFunction\n * @param {UI.NoteTransformFunction} noteTransformFunction The function that will be used to transform notes in the left panel\n * @example\nWebviewer(...)\n  .then(instance => {\n    instance.UI.dangerouslySetNoteTransformFunction((wrapper, state, createElement) => {\n      // Change the title of every note\n      wrapper.querySelector('.author-and-time > .author').innerHTML = 'My custom note title';\n\n      // Add a button that alerts the user when clicked\n      const button = createElement('button');\n      button.onmousedown = (e) => {\n        if(state.isSelected) {\n          alert('Hello world!');\n        } else {\n          alert('Goodbye world!');\n        }\n      };\n      button.innerHTML = 'Alert me'\n      wrapper.appendChild(button);\n\n      // Add a button that makes the annotation blue\n      const button = createElement('button');\n      button.onmousedown = (e) => {\n        state.annotation.StrokeColor = new instance.Core.Annotations.Color(0, 0, 255);\n        instance.UI.annotManager.redrawAnnotation(state.annotation)\n      };\n      button.innerHTML = 'Make me blue'\n      wrapper.appendChild(button);\n    })\n  });\n */\nexport default (store) => (noteTransformFunction) => {\n  store.dispatch(actions.setNoteTransformFunction(noteTransformFunction));\n};","import actions from 'actions';\n\n/**\n * @callback CustomNoteSelectionFunction\n * @memberof UI\n * @param {Core.Annotations.Annotation} annotation A reference to the annotation object associated with the note\n */\n\n/**\n * @method UI.setCustomNoteSelectionFunction\n * @param {UI.CustomNoteSelectionFunction} customNoteSelectionFunction The function that will be invoked when clicking on a note in notes panel.\n * The function will only be invoked when the underlying annotation is not already selected.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomNoteSelectionFunction(annotation => {\n      // some code\n    })\n  });\n */\n\nexport default (store) => (customNoteSelectionFunction) => {\n  store.dispatch(actions.setCustomNoteSelectionFunction(customNoteSelectionFunction));\n};","import actions from 'actions';\n\n/**\n * @callback CustomApplyRedactionsHandler\n * @memberof UI\n * @param {Array.<Core.Annotations.Annotation>} annotations\n * @param {function} originalApplyRedactionsFunction The original applyRedactions function\n */\n\n/**\n * @method UI.setCustomApplyRedactionsHandler\n * @param {UI.CustomApplyRedactionsHandler} customApplyRedactionsHandler\n * The function that will be invoked when clicking on the 'Redact All' button.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomApplyRedactionsHandler((annotationsToRedact, originalApplyRedactionsFunction) => {\n      // custom code\n      ...\n      originalApplyRedactionsFunction();\n    })\n  });\n */\n\nexport default (store) => (customApplyRedactionsHandler) => {\n  store.dispatch(actions.setCustomApplyRedactionsHandler(customApplyRedactionsHandler));\n};","import actions from 'actions';\n\n/**\n * @callback CustomMultiViewerSyncHandler\n * @memberof UI\n * @param {number} primaryDocumentViewerKey The primary documentViewerKey to be used when syncing\n * @param {Array<function>} removeHandlerFunctions The event listeners to remove when syncing is finished\n */\n\n/**\n * @method UI.setCustomMultiViewerSyncHandler\n * @param {UI.CustomMultiViewerSyncHandler} customMultiViewerSyncHandler The function that will be invoked when syncing documents in multi viewer mode.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomMultiViewerSyncHandler((primaryDocumentViewerKey, removeHandlerFunctions) => {\n      // some code\n    })\n  });\n */\n\nexport default (store) => (customMultiViewerSyncHandler) => {\n  store.dispatch(actions.setCustomMultiViewerSyncHandler(customMultiViewerSyncHandler));\n};","import actions from 'actions';\n\n/**\n * @callback CustomMultiViewerAcceptedFileFormats\n * @memberof UI\n * @param {Array<string>} acceptedFileFormats The file formats to support when accepting files in multiviewer mode\n */\n\n/**\n * @method UI.setCustomMultiViewerAcceptedFileFormats\n * @param {UI.CustomMultiViewerAcceptedFileFormats} customMultiViewerAcceptedFileFormats\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomMultiViewerAcceptedFormats(['pdf']);\n  });\n */\n\nexport default (store) => (customMultiViewerAcceptedFileFormats) => {\n  store.dispatch(actions.setCustomMultiViewerAcceptedFileFormats(customMultiViewerAcceptedFileFormats));\n};","import core from 'core';\r\n\r\nexport default (results) => {\r\n  core.clearSearchResults();\r\n  core.displayAdditionalSearchResults(results);\r\n};\r\n","import core from 'core';\n\nexport default (result, index) => {\n  if (!result && index >= 0) {\n    // core doesn't have concept of active result index. In previous implementation,\n    // there is theoretically a case where not setting result, but passing index and that should have worked\n    // To have backward compatibility here, we check if user didn't give result and then try to use index\n    // to retrieve result object from all current search results and set that as new active search result\n    const searchResults = core.getPageSearchResults();\n    const newActiveResult = searchResults[index];\n    if (newActiveResult) {\n      core.setActiveSearchResult(newActiveResult);\n    }\n  } else {\n    core.setActiveSearchResult(result);\n  }\n};\n","import action from 'actions';\n\n/**\n * Adds a custom overlay to annotations on mouseHover, overriding the existing overlay.\n * @method UI.setAnnotationContentOverlayHandler\n * @param {function} customOverlayHandler A function that takes an annotation and returns a DOM Element, which is rendered as a tooltip when hovering over the annotation. Returning null or false will render nothing. Returning 'undefined' will use default behavior.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setAnnotationContentOverlayHandler(annotation => {\n        const div = document.createElement('div');\n        div.appendChild(document.createTextNode(`Created by: ${annotation.Author}`));\n        div.appendChild(document.createElement('br'));\n        div.appendChild(document.createTextNode(`Created on ${annotation.DateCreated}`));\n        return div;\n    });\n  });\n */\n\nexport default (store) => (annotationContentOverlayHandler) => {\n  store.dispatch(action.setAnnotationContentOverlayHandler(annotationContentOverlayHandler));\n};","import { overrideSearchExecution as overrideSearchExecutionHelper } from 'helpers/search';\n\n/**\n * Add custom override function for default search on UI.\n * overrideSearchExecutionCallback function will be executed with search value and search options\n * when user executes search from UI. This function won't be executed when search is triggered through programmatic searches.\n * @method UI.overrideSearchExecution\n * @param {function} overrideSearchExecutionCallback Function that will executed instead of default search functionality.\n * @example\n WebViewer(...)\n .then(function(instance) {\n    function searchFn(searchValue, options) {\n      console.log(searchValue, options);\n    };\n\n    instance.UI.overrideSearchExecution(searchFn);\n  });\n */\nexport default function overrideSearchExecution(overrideSearchExecutionCallback) {\n  overrideSearchExecutionHelper(overrideSearchExecutionCallback);\n}\n","import React from 'react';\nimport PageNavOverlay from 'src/components/PageNavOverlay';\n\nexport default {\n  getPageNavOverlay: () => <PageNavOverlay dataElement=\"customPageNavOverlay\"/>,\n};","import actions from 'actions';\n\n/**\n * NOTE: Digital Signature Verification requires the WebViewer Full API\n * @namespace UI.VerificationOptions\n */\n\n/**\n * Loads the Public Key Certificates to be used for Digital Signature\n * Verification.\n *\n * The contents of the X.509 Public Key Certificate need to encoded in a binary\n * Distinguished Encoding Rules (DER) format, or in the plaintext\n * Privacy-Enhanced Mail (PEM) format, which includes an appropriate header,\n * Base64 encoded DER representing the public key certificate, and appropriate\n * footer.\n * @method UI.VerificationOptions.addTrustedCertificates\n *\n * @param {\n *  Array<\n *    string | File | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray\n *  >\n * } certificates An array of URLs, and/or instance of the File type, and/or\n * a Binary Array datatype that contain the X.509 Public Key Certificates to be\n * used for validating Digital Signatures on a document.\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   const response = await fetch(\n *     'https://mydomain.com/api/returns/certificate/as/arraybuffer'\n *   );\n *   const certificateAsArrayBuffer = await response.arrayBuffer();\n *   instance.UI.VerificationOptions.addTrustedCertificates([\n *      certificateAsArrayBuffer,\n *     'https://mydomain.com/path/to/certificate1.cer',\n *     'https://mydomain.com/path/to/certificate2.crt',\n *   ])\n * });\n */\nconst addTrustedCertificates = (store) => (certificates) => {\n  store.dispatch(actions.addTrustedCertificates(certificates));\n};\n\n/**\n * Loads a Trust List to be used for Digital Signature Verification.\n *\n * The Trust List is structured in Acrobat's FDF Data/Cert Exchange format into\n * the VerificationOptions certificate store.\n *\n * Certificates inside the FDF trust list that cannot be decoded and loaded,\n * will be skipped.\n * @method UI.VerificationOptions.loadTrustList\n *\n * @param {Blob | ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray} TrustList\n * A buffer representation of FDF Certificate Exchange Data\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   const response = await fetch(\n *     'https://mydomain.com/api/returns/trustList/'\n *   );\n *   const trustListAsArrayBuffer = await response.arrayBuffer();\n *   instance.UI.VerificationOptions.loadTrustList(trustListAsArrayBuffer);\n * });\n */\nconst loadTrustList = (store) => (trustList) => {\n  store.dispatch(actions.addTrustList(trustList));\n};\n\n/**\n * Enables online CRL revocation checking for verifying certificates.\n * @method UI.VerificationOptions.enableOnlineCRLRevocationChecking\n */\nconst enableOnlineCRLRevocationChecking = (store) => () => {\n  store.dispatch(actions.setIsRevocationCheckingEnabled(true));\n};\n\n/**\n * Sets the proxy URL server used for online revocation requests during\n * Digital Signature Verification. Used to avoid CORS-related errors.\n * The default value is https://proxy.pdftron.com.\n * @method UI.VerificationOptions.setRevocationProxyPrefix\n *\n * @param {string} proxy_server_url\n * The URL (including the protocol such as 'https://') to use as a prefix for\n * making online revocation requests through a proxy server to avoid CORS\n * related issues. This can be suppressed by passing an empty string.\n * If null is provided, or if this API is not called, the default value\n * (https://proxy.pdftron.com) is used.\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *   instance.UI.VerificationOptions.setRevocationProxyPrefix('https://proxy.mydomain.com');\n * });\n */\nconst setRevocationProxyPrefix = (store) => (revocationProxyPrefix) => {\n  store.dispatch(actions.setRevocationProxyPrefix(revocationProxyPrefix));\n};\n\nexport {\n  addTrustedCertificates,\n  loadTrustList,\n  enableOnlineCRLRevocationChecking,\n  setRevocationProxyPrefix,\n};\n","import actions from 'actions';\n\n/**\n * @namespace UI.NotesPanel\n */\n\n/**\n * Enables the collapsing of the annotation's text in the Notes Panel.\n *\n * @method UI.NotesPanel.enableTextCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableTextCollapse()\n *\n * });\n */\nconst enableTextCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelTextCollapsing(true));\n};\n\n/**\n * Disables the collapsing of the annotation's text in the Notes Panel.\n *\n * @method UI.NotesPanel.disableTextCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableTextCollapse()\n * });\n */\nconst disableTextCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelTextCollapsing(false));\n};\n\n/**\n * Enables the collapsing of the replies in the Notes Panel.\n *\n * @method UI.NotesPanel.enableReplyCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableReplyCollapse()\n * });\n */\nconst enableReplyCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelRepliesCollapsing(true));\n};\n\n/**\n * Disables the collapsing of the replies in the Notes Panel.\n *\n * @method UI.NotesPanel.disableReplyCollapse\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableReplyCollapse()\n * });\n */\nconst disableReplyCollapse = (store) => () => {\n  store.dispatch(actions.setNotesPanelRepliesCollapsing(false));\n};\n\n/**\n * Disables the automatic expansion of all the comments threads in the Notes Panel.\n *\n * @method UI.NotesPanel.disableAutoExpandCommentThread\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.disableAutoExpandCommentThread()\n * });\n */\nconst disableAutoExpandCommentThread = (store) => () => {\n  store.dispatch(actions.setCommentThreadExpansion(false));\n};\n\n/**\n * Enables the automatic expansion of the comments threads in the Notes Panel.\n *\n * @method UI.NotesPanel.enableAutoExpandCommentThread\n *\n * @example\n * WebViewer(...).then(async function(instance) {\n *\n *   instance.UI.NotesPanel.enableAutoExpandCommentThread()\n * });\n */\nconst enableAutoExpandCommentThread = (store) => () => {\n  store.dispatch(actions.setCommentThreadExpansion(true));\n};\n\n/**\n * Sets a custom header for the notes panel by overwriting or prepending to the default header.\n * @method UI.NotesPanel.setCustomHeader\n * @param {object} options\n * @param {boolean} [options.overwriteDefaultHeader=false] Replaces original notes panel header with content in render function.\n * @param {UI.NotesPanel.renderCustomHeader} options.render Callback function that returns custom elements to be prepended or to completely overwrite the default header. This function will receive the array of notes as an argument.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.setCustomHeader({\n      overwriteDefaultHeader: true,\n      render: (notes) => {\n        const div = document.createElement('div');\n\n        const header = document.createElement('h2');\n        header.innerHTML = 'Custom header goes here!';\n        div.appendChild(header);\n\n        const subheader = document.createElement('h3');\n        subheader.innerHTML = `Number of notes: ${notes.length}`;\n        div.appendChild(subheader);\n\n        const button = document.createElement('button');\n        button.innerHTML = 'Back to Issues';\n        button.addEventListener('click', () => {\n            alert('Clicked button!');\n        });\n        div.appendChild(button);\n\n        return div;\n      }\n    });\n  });\n */\n\n/**\n * Callback used in {@link UI.NotesPanel.setCustomHeader setCustomHeader} and {@link UI.NotesPanel.setCustomEmptyPanel setCustomEmptyPanel}.\n * @callback UI.NotesPanel.renderCustomHeader\n * @param {Array} notes Array of notes displayed in the notes panel. Parameter not available in {@link UI.NotesPanel.setCustomEmptyPanel setCustomEmptyPanel} (since there are no notes).\n * @returns {HTMLElement} Custom header element.\n */\nconst setCustomHeader = (store) => (customHeader) => {\n  store.dispatch(actions.setNotesPanelCustomHeader(customHeader));\n};\n\n/**\n * Sets either an icon and message, or custom content, in the Notes Panel when the panel is empty.\n * @method UI.NotesPanel.setCustomEmptyPanel\n * @param {object} options\n * @param {string} [options.message] Message displayed when panel is empty.\n * @param {string} [options.readOnlyMessage] Message displayed when panel is empty for a read-only document.\n * @param {string} [options.icon] Use inline SVG with this parameter. Default icon is used if nothing is specified.\n * @param {boolean} [options.hideIcon=false] Hides icon if true.\n * @param {UI.NotesPanel.renderCustomHeader} [options.render] Callback function that returns custom elements to render in empty notes panel. Overwrites all other properties if provided.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.setCustomEmptyPanel({\n      icon: '<svg data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\"><defs><style>.cls-1{fill:#dfe2ed;}</style></defs><title>Artboard 1</title><path class=\"cls-1\" d=\"M50,4.5H14A3.5,3.5,0,0,0,10.5,8V56A3.5,3.5,0,0,0,14,59.5H50A3.5,3.5,0,0,0,53.5,56V8A3.5,3.5,0,0,0,50,4.5ZM50.5,56a.5.5,0,0,1-.5.5H14a.5.5,0,0,1-.5-.5V8a.5.5,0,0,1,.5-.5H50a.5.5,0,0,1,.5.5Z\"/><circle class=\"cls-1\" cx=\"20.5\" cy=\"32\" r=\"2.5\"/><circle class=\"cls-1\" cx=\"20.5\" cy=\"44.3\" r=\"2.5\"/><circle class=\"cls-1\" cx=\"20.5\" cy=\"19.7\" r=\"2.5\"/><rect class=\"cls-1\" x=\"25.98\" y=\"30.26\" width=\"20.02\" height=\"3.49\"/><rect class=\"cls-1\" x=\"25.98\" y=\"42.55\" width=\"20.02\" height=\"3.49\"/><polygon class=\"cls-1\" points=\"25.98 17.96 25.98 21.45 46 21.45 46 17.96 44 17.96 25.98 17.96\"/></svg>',\n      message: 'Here is a custom message to show when the Notes Panel is empty.'\n    });\n\n    instance.UI.NotesPanel.setCustomEmptyPanel({\n      hideIcon: false,\n      readOnlyMessage: 'A different custom message if Notes Panel is empty and document is read-only.'\n    });\n\n    instance.UI.NotesPanel.setCustomEmptyPanel({\n      render: () => {\n        const div = document.createElement('div');\n        const header = document.createElement('h2');\n        header.innerHTML = 'Custom empty content goes here!';\n        div.appendChild(header);\n        return div;\n      }\n    });\n  });\n*/\nconst setCustomEmptyPanel = (store) => (options) => {\n  store.dispatch(actions.setNotesPanelEmptyPanel(options));\n};\n\n/**\n * Enable the preview of attachments.\n * @method UI.NotesPanel.enableAttachmentPreview\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.enableAttachmentPreview();\n  });\n */\nconst enableAttachmentPreview = (store) => () => {\n  store.dispatch(actions.setReplyAttachmentPreviewEnabled(true));\n};\n\n/**\n * Disable the preview of attachments.\n * @method UI.NotesPanel.disableAttachmentPreview\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.disableAttachmentPreview();\n  });\n */\nconst disableAttachmentPreview = (store) => () => {\n  store.dispatch(actions.setReplyAttachmentPreviewEnabled(false));\n};\n\n/**\n * Disable multi select in the notes panel\n * @method UI.NotesPanel.disableMultiSelect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.disableMultiSelect();\n  });\n */\nconst disableMultiSelect = (store) => () => {\n  store.dispatch(actions.setNotesPanelMultiSelect(false));\n};\n\n/**\n * @callback UI.NotesPanel.attachmentHandler\n * @param {File} file The file selected to be uploaded\n * @returns {Promise<string>} A promise that resolves to a URL string pointing to the file saved on the cloud\n */\n\n/**\n * Set the handler function for reply attachment. Can use this for uploading attachments to cloud.\n * @method UI.NotesPanel.setAttachmentHandler\n * @param {UI.NotesPanel.attachmentHandler} handler The handler function\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.setAttachmentHandler(async (file) => {\n      const uploadedURL = await aws.upload(file); //e.g. https://pdftron.s3.amazonaws.com/downloads/pl/demo.pdf\n\n      return uploadedURL;\n    });\n  });\n */\nconst setAttachmentHandler = (store) => (attachmentHandler) => {\n  store.dispatch(actions.setReplyAttachmentHandler(attachmentHandler));\n};\n\n/**\n* Enables the capability to filter by different measurement types in the comments panel filter.\n* For example, line annotations can also be distance measurements. Enabling this API would allow you to\n* filter by line annotations and distance measurements separately.\n* This API is disabled by default.\n* @method UI.NotesPanel.enableMeasurementAnnotationFilter\n* @example\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.NotesPanel.enableMeasurementAnnotationFilter();\n});\n*/\nconst enableMeasurementAnnotationFilter = (store) => () => {\n  store.dispatch(actions.setEnableMeasurementAnnotationsFilter(true));\n};\n\n/**\n * Disables the capability to filter by different measurement types in the comments panel filter.\n * For example, if your document has line annotations and distance measurement annotations, they would be consolidated into one filter option: Line Annotation.\n * @method UI.NotesPanel.disableMeasurementAnnotationFilter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.NotesPanel.disableMeasurementAnnotationFilter();\n  });\n */\nconst disableMeasurementAnnotationFilter = (store) => () => {\n  store.dispatch(actions.setEnableMeasurementAnnotationsFilter(false));\n};\n\n\nexport {\n  enableTextCollapse,\n  disableTextCollapse,\n  enableReplyCollapse,\n  disableReplyCollapse,\n  disableAutoExpandCommentThread,\n  enableAutoExpandCommentThread,\n  setCustomHeader,\n  setCustomEmptyPanel,\n  enableAttachmentPreview,\n  disableAttachmentPreview,\n  disableMultiSelect,\n  setAttachmentHandler,\n  enableMeasurementAnnotationFilter,\n  disableMeasurementAnnotationFilter,\n};\n","import selectors from 'selectors';\nimport actions from 'actions';\nimport core from 'core';\nimport thumbnailSelectionModes from 'constants/thumbnailSelectionModes';\n\n/**\n * @namespace UI.ThumbnailsPanel\n */\n\n/**\n * Enable the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.enableMultiselect\n * @deprecated Use [enableMultiSelect]{@link UI.ThumbnailsPanel.enableMultiSelect} instead\n */\nconst enableMultiselect = (store) => () => {\n  console.warn('UI.ThumbnailsPanel.enableMultiselect is deprecated, please use UI.ThumbnailsPanel.enableMultiSelect instead');\n  enableMultiSelect(store)();\n};\n\n/**\n * Exit the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.disableMultiselect\n * @deprecated Use [disableMultiSelect]{@link UI.ThumbnailsPanel.disableMultiSelect} instead\n */\nconst disableMultiselect = (store) => () => {\n  console.warn('UI.ThumbnailsPanel.disableMultiselect is deprecated, please use UI.ThumbnailsPanel.disableMultiSelect instead');\n  disableMultiSelect(store)();\n};\n\n/**\n * Enable the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.enableMultiSelect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.enableMultiSelect();\n  });\n */\nconst enableMultiSelect = (store) => () => {\n  store.dispatch(actions.setThumbnailSelectingPages(true));\n};\n\n/**\n * Exit the multi select mode in the left thumbnail panel\n * @method UI.ThumbnailsPanel.disableMultiSelect\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.disableMultiSelect();\n  });\n */\nconst disableMultiSelect = (store) => () => {\n  store.dispatch(actions.setThumbnailSelectingPages(false));\n};\n\n/**\n * Select thumbnails in the thumbnail panel. This requires the \"ThumbnailMultiselect\" feature to be enabled\n * @method UI.ThumbnailsPanel.selectPages\n * @param {Array<number>} pageNumbers array of page numbers to select\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatures(['ThumbnailMultiselect']);\n\n    const pageNumbersToSelect = [1, 2, 3];\n    instance.UI.ThumbnailsPanel.selectPages(pageNumbersToSelect);\n  });\n */\nconst selectPages = (store) => (pageNumbers) => {\n  const multiSelectEnable = selectors.isThumbnailMultiselectEnabled(store.getState());\n\n  if (!multiSelectEnable) {\n    console.warn('Thumbnail multiselect is not enabled');\n    return;\n  }\n\n  if (!pageNumbers || !Array.isArray(pageNumbers)) {\n    console.warn('Invalid input, \\'ThumbnailsPanel.selectPages\\' expect an array of numbers');\n    return;\n  }\n\n  const selectedIndex = selectors.getSelectedThumbnailPageIndexes(store.getState());\n  const selectedPages = selectedIndex.map((index) => index + 1);\n\n  const pageCount = core.getTotalPages();\n  const alreadySelected = pageNumbers.filter((pageNumber) => selectedPages.includes(pageNumber));\n  if (alreadySelected.length) {\n    console.warn(`The following pages were already selected: ${alreadySelected.join(', ')}`);\n  }\n\n  const outOfRangePages = pageNumbers.filter((pageNumber) => pageNumber < 1 || pageNumber > pageCount);\n  if (outOfRangePages.length) {\n    console.warn(`The following pages are out of range: ${outOfRangePages.join(', ')}`);\n  }\n\n  let pagesToSelect = pageNumbers.filter(\n    (pageNumber) => pageNumber >= 1 && pageNumber <= pageCount && !selectedPages.includes(pageNumber) && !isNaN(pageNumber),\n  );\n\n  pagesToSelect = pagesToSelect.filter(function(page, index, self) {\n    return self.indexOf(page) === index;\n  });\n\n  store.dispatch(actions.setSelectedPageThumbnails([...selectedIndex, ...pagesToSelect.map((page) => page - 1)]));\n};\n\n/**\n * Unselect selected thumbnails\n * @method UI.ThumbnailsPanel.unselectPages\n * @param {Array<number>} pageNumbers array of page numbers to unselect\n * @example\n WebViewer(...)\n .then(function(instance) {\n    const pageNumbersToUnselect = [1, 2];\n    instance.UI.ThumbnailsPanel.unselectPages(pageNumbersToUnselect);\n  });\n */\nconst unselectPages = (store) => (pageNumbersToDeselect) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([pageNumbersToDeselect], [TYPES.ARRAY(TYPES.NUMBER)], 'UI.ThumbnailsPanel.unselectPages');\n  const indexesToDeselect = pageNumbersToDeselect.map((pageNumber) => pageNumber - 1);\n  const selectedIndexes = selectors.getSelectedThumbnailPageIndexes(store.getState());\n  store.dispatch(actions.setSelectedPageThumbnails(\n    selectedIndexes.filter((index) => !indexesToDeselect.includes(index))\n  ));\n};\n\n/**\n * Get the currently selected pages\n * @method UI.ThumbnailsPanel.getSelectedPageNumbers\n * @return {Array<number>} an array of select page numbers\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.getSelectedPageNumbers();\n  });\n */\nconst getSelectedPageNumbers = (store) => () => selectors.getSelectedThumbnailPageIndexes(store.getState()).map((pageIndex) => pageIndex + 1);\n\n/**\n * Sets thumbnail selection mode.\n * @method UI.ThumbnailsPanel.setThumbnailSelectionMode\n * @param {string} thumbnailSelectionMode Thumbnail selection mode to set\n * @param {string} thumbnailSelectionMode.thumbnail Set selection mode to use entire thumbnail to select a page\n * @param {string} thumbnailSelectionMode.checkbox (default) Set selection mode to use only checkbox to select a page\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.ThumbnailsPanel.setThumbnailSelectionMode('thumbnail');\n  });\n */\n\nconst setThumbnailSelectionMode = (store) => (thumbnailSelectionMode) => {\n  if (Object.values(thumbnailSelectionModes).indexOf(thumbnailSelectionMode) > -1) {\n    store.dispatch(actions.setThumbnailSelectionMode(thumbnailSelectionMode));\n  } else {\n    console.error(`Thumbnail Selection Mode must be one of: \"${Object.values(thumbnailSelectionModes).join('\", \"')}\"`);\n  }\n};\n\nexport {\n  enableMultiselect,\n  disableMultiselect,\n  enableMultiSelect,\n  disableMultiSelect,\n  selectPages,\n  unselectPages,\n  getSelectedPageNumbers,\n  setThumbnailSelectionMode,\n};\n","/**\n * Toggles Reader mode of the viewer.\n * Note that Reader mode only works with fullAPI enabled.\n * @method UI.toggleReaderMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleReaderMode();\n  });\n */\n\nimport { enterReaderMode, exitReaderMode } from 'helpers/readerMode';\nimport core from 'core';\nimport selectors from 'selectors';\n\nlet previousDisplayMode;\n\nexport default (store) => () => {\n  const isInReaderMode = selectors.isReaderMode(store.getState());\n  if (isInReaderMode) {\n    exitReaderMode(store);\n    if (previousDisplayMode) {\n      setTimeout(() => {\n        core.setDisplayMode(previousDisplayMode);\n        previousDisplayMode = undefined;\n      });\n    }\n  } else {\n    previousDisplayMode = core.getDisplayMode();\n    enterReaderMode(store);\n  }\n};\n","/**\n * Toggles the visibility of the element to be visible/hidden. Note that toggleElementVisibility works only for panel/overlay/popup/modal elements.\n * @method UI.toggleElementVisibility\n * @param {string} dataElement data-element attribute value for a DOM element. To find data-element of a DOM element, refer to <a href='https://docs.apryse.com/documentation/web/guides/hiding-elements/#finding-dataelement-attribute-values' target='_blank'>Finding data-element attribute values</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.toggleElementVisibility('leftPanel'); // open LeftPanel if it is closed, or vice versa\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (dataElement) => {\n  store.dispatch(actions.toggleElement(dataElement));\n};\n","import actions from 'actions';\n\n/**\n * Set the read/unread state of an annotation. The default state of annotations is read.\n * @method UI.setAnnotationReadState\n * @param {object} options\n * @param {boolean} options.isRead whether setting the annotation to read state; false for setting it as unread.\n * @param {string} options.annotationId Id of the annotation to be set.\n * @example\n WebViewer(...)\n  .then(function(instance) {\n    instance.UI.setAnnotationReadState({ isRead: true, annotationId: 'test-annotation-id' });\n  });\n */\nexport default (store) => ({ isRead, annotationId }) => {\n  if (typeof annotationId !== 'string') {\n    console.warn('Invalid annotation ID');\n    return;\n  }\n  store.dispatch(actions.setAnnotationReadState({ isRead, annotationId }));\n};\n","import selectors from 'selectors';\nimport core from 'core';\n\n/**\n * Return the read/unread state of an annotation. True for read, false for unread.\n * @method UI.getAnnotationReadState\n * @param {string} annotationId Id of the annotation.\n * @return {boolean} Whether the annotation is read.\n * @throws Will throw an error if the annotation with the given ID does not exist.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const isAnnotationRead = instance.UI.getAnnotationReadState('test-annotation-id');\n */\nexport default (store) => (annotationId) => {\n  if (typeof annotationId !== 'string') {\n    console.warn('Invalid annotation ID');\n    return;\n  }\n  const annotation = core.getAnnotationManager().getAnnotationById(annotationId);\n  if (!annotation) {\n    throw new Error(`Annotation with ID ${annotationId} not found.`);\n  }\n  const unreadAnnotationIdSet = selectors.getUnreadAnnotationIdSet(store.getState());\n  return unreadAnnotationIdSet.has(annotationId);\n};\n","import actions from 'actions';\n\n/**\n * Enable clearing search results when user closes search panel. When this is enabled and user closes search panel\n * all search results are cleared.\n *\n * Note, mobile devices never clear search results even if this setting is enabled. This is because the panel needs to be closed to view the search results on the document.\n * @method UI.enableClearSearchOnPanelClose\n * @example\n WebViewer(...)\n .then(function(instance) {\n    // Will not affect on mobile devices\n    instance.UI.enableClearSearchOnPanelClose();\n  });\n */\nconst enableClearSearchOnPanelCloseClosure = (store) => () => {\n  store.dispatch(actions.setClearSearchOnPanelClose(true));\n};\n\nexport default enableClearSearchOnPanelCloseClosure;\n","import actions from 'actions';\n\n/**\n * Disable clearing search results when user closes search panel. When disabled, search results are kept even if user\n * closes and reopens search panel.\n *\n * Note, mobile devices never clear search results even if this setting is enabled. This is because the panel needs to be closed to view the search results on the document.\n * @method UI.disableClearSearchOnPanelClose\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disableClearSearchOnPanelClose();\n  });\n */\nconst disableClearSearchOnPanelCloseClosure = (store) => () => {\n  store.dispatch(actions.setClearSearchOnPanelClose(false));\n};\n\nexport default disableClearSearchOnPanelCloseClosure;\n","/**\n * Always keep the Page Navigation Component on screen. Default behaviour is to fade it after certain period of inactivity.\n * @method UI.disableFadePageNavigationComponent\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Keeps the page navigation component on screen all the time\n    instance.UI.disableFadePageNavigationComponent();\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => () => {\n  return store.dispatch(actions.disableFadePageNavigationComponent());\n};","/**\n * Fade the Page Navigation Component after it has not been interacted with. Reappears whenever the document is scrolled.\n * @method UI.enableFadePageNavigationComponent\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    // Sets behaviour to fade the page navigation component.\n    // enabled by default\n    instance.UI.enableFadePageNavigationComponent();\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => () => {\n  return store.dispatch(actions.enableFadePageNavigationComponent());\n};","import actions from 'actions';\n\n/**\n * Disable the confirmation modal when deleting a page from the thumbnail view\n *\n * @method UI.disablePageDeletionConfirmationModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disablePageDeletionConfirmationModal();\n  });\n */\nconst disablePageDeletionConfirmationModal = (store) => () => {\n  store.dispatch(actions.disablePageDeletionConfirmationModal());\n};\n\nexport default disablePageDeletionConfirmationModal;\n","import actions from 'actions';\n\n/**\n * Enable the confirmation modal when deleting a page from the thumbnail view\n *\n * @method UI.enablePageDeletionConfirmationModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.enablePageDeletionConfirmationModal();\n  });\n */\nfunction enablePageDeletionConfirmationModal(store) {\n  return function enablePageDeletionConfirmationModal() {\n    store.dispatch(actions.enablePageDeletionConfirmationModal());\n  };\n}\n\nexport default enablePageDeletionConfirmationModal;\n","/**\n * Add an event listener for the given WebViewer UI event.\n * @method UI.addEventListener\n * @param {string} eventName UI event name.\n * @param {function} listener Callback function that will be invoked when the event is dispatched.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n    });\n  });\n */\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nexport default (eventName, listener) => {\n  getInstanceNode().addEventListener(eventName, listener);\n};\n","/**\n * \"Remove an event listener for the given WebViewer UI event.\n * @method UI.removeEventListener\n * @param {string} eventName UI event name.\n * @param {function} listener Event handler function that should no longer be bound to the event.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const listener = e => {\n      const { types, authors, colors } = e.detail;\n      console.log(types, authors, colors);\n\n      instance.UI.removeEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, listener);\n    };\n    instance.UI.addEventListener(instance.UI.Events.ANNOTATION_FILTER_CHANGED, listener);\n  });\n */\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nexport default (eventName, listener) => {\n  getInstanceNode().removeEventListener(eventName, listener);\n};\n","import actions from 'actions';\n/**\n * Enables desktop only mode on WebViewer UI.\n * This means that at small browser width/height, mobile/tablet CSS styling will not be applied.\n * @method UI.enableDesktopOnlyMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableDesktopOnlyMode();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setEnableDesktopOnlyMode(true));\n};\n","import actions from 'actions';\n/**\n * Disables desktop only mode on WebViewer UI.\n * This means that at small browser width/height, mobile/tablet CSS styling will be applied.\n * @method UI.disableDesktopOnlyMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableDesktopOnlyMode();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setEnableDesktopOnlyMode(false));\n};\n","import selectors from 'selectors';\n/**\n * Returns a boolean to denote if the UI is in desktop only mode.\n * @method UI.isInDesktopOnlyMode\n * @return {boolean} boolean to denote if the UI is in desktop only mode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.isInDesktopOnlyMode();\n  });\n */\nexport default (store) => () => {\n  return selectors.isInDesktopOnlyMode(store.getState());\n};\n","/**\n * An  instance of PageManipulationOverlay that can be used to edit the items included in the overlay\n * @name UI.pageManipulationOverlay\n * @implements {UI.PageManipulationOverlay}\n * @type {UI.PageManipulationOverlay}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.pageManipulationOverlay.someAPI();\n  })\n */\n\n/**\n * A class which contains PageManipulationOverlay APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the PageManipulationOverlay, use {@link UI.disableElements disableElements}.\n * @interface UI.PageManipulationOverlay\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => Object.create(PageManipulationOverlayAPI).initialize(store);\n\nconst PageManipulationOverlayAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * @typedef UI.PageManipulationOverlay.PageManipulationSection\n   * @type {object}\n   * @property {string} type Required type of 'customPageOperation'\n   * @property {string} header Header to be displayed in the UI for this section\n   * @property {string} dataElement Unique dataElement\n   * @property {UI.PageManipulationOverlay.PageOperation[]} operations the operations that will be available under this section\n   */\n  /**\n   * @typedef UI.PageManipulationOverlay.PageOperation\n   * @type {object}\n   * @property {string} title Title to be displayed for the operation\n   * @property {string} img path to imge to be used as an icon for the operation\n   * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n   * @property {string} dataElement Unique dataElement for this operation\n   */\n  /**\n   * Adds an array of page manipulation operations to the default operations. If passed a dataElement parameter, it will\n   * add the new operations after this element. Otherwise, they will be appended to the start of the existing list\n   * of operations.\n   * @method UI.PageManipulationOverlay#add\n   * @param {Array.<UI.PageManipulationOverlay.PageManipulationSection>} PageManipulationSection Array of sections to be added, each with its individual operations. See example below.\n   * @param {('pageRotationControls' | 'pageManipulationControls')} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added at the top.\n   * You can call {@link UI.PageManipulationOverlay#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.PageManipulationOverlay} The instance itself\n   * @example\n   * // Each object in the operations array shall consist of the following:\n    {\n      type: 'customPageOperation', // Required type of 'customPageOperation'\n      header: 'Custom options', // Header to be displayed in the UI\n      dataElement: 'customPageOperations', // Unique dataElement\n      // Each new section can have one more more operations.\n      // The onClick handler for each operation gets passed an array of the currently selected\n      // thumbnail page numbers.\n      operations: [\n        {\n          title: 'Alert me of selected thumbnail page numbers',\n          img: '/path-to-image',\n          onClick: (selectedPageNumbers) => {\n            alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n          },\n          dataElement: 'customPageOperationButton', // Each operation must have a dataElement\n        }\n      ]\n    }\n\n    // Additionally, to add dividers you can include this in the operations array:\n    { type: 'divider' }\n    // Example:\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.pageManipulationOverlay.add([\n          {\n            type: 'customPageOperation',\n            header: 'Custom options',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Alert me',\n                img: '/path-to-image',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'customPageOperationButton',\n              }\n            ]\n          },\n          { type: 'divider' }\n        ]);\n      });\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...operations);\n\n    this.store.dispatch(actions.setPageManipulationOverlayItems(items));\n\n    return this;\n  },\n\n  /**\n   * Update all the operations in the PageManipulationOverlay, essentially replacing them with\n   * a new list of operations.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.PageManipulationOverlay#update\n   * @param {Array.<UI.PageManipulationOverlay.PageManipulationSection>} PageManipulationSection The list of PageManipulationSections that will be rendered in the PageManipulation overlay. See the add documentation for an example.\n   * @returns {UI.PageManipulationOverlay} The instance of itself\n   * @example\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.pageManipulationOverlay.update([\n          {\n            type: 'customPageOperation',\n            header: 'Print Operations',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Print page',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'printThumbnailPage',\n              }\n            ]\n          },\n          { type: 'divider' },\n          {\n            type: 'customPageOperation',\n            header: 'Alert Operations',\n            dataElement: 'customPageOperations-2',\n            operations: [\n              {\n                title: 'Alert me',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'alertPage',\n              }\n            ]\n          }\n        ]);\n      });\n   */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setPageManipulationOverlayItems(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the PageManipulationOverlay.\n   * @method UI.PageManipulationOverlay#getItems\n   * @returns {Array.<UI.PageManipulationOverlay.PageManipulationSection>} Current items in the PageManipulationOverlay.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.pageManipulationOverlay.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getPageManipulationOverlayItems(this.store.getState())];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getPageManipulationOverlayItems(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n  /**\n   * Disables the Page Manipulation Overlay opening through right-click.\n   * @method UI.PageManipulationOverlay#disableOpeningByRightClick\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.pageManipulationOverlay.disableOpeningByRightClick();\n  });\n   */\n  disableOpeningByRightClick() {\n    this.store.dispatch(actions.setPageManipulationOverlayOpenByRightClick(false));\n  },\n  /**\n   * Enables the Page Manipulation Overlay opening through right-click.\n   * @method UI.PageManipulationOverlay#enableOpeningByRightClick\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.pageManipulationOverlay.enableOpeningByRightClick();\n  });\n   */\n  enableOpeningByRightClick() {\n    this.store.dispatch(actions.setPageManipulationOverlayOpenByRightClick(true));\n  }\n};\n","/**\n * An instance of MultiPageManipulationControls that can be used to edit the items included in the overlay\n * @name UI.multiPageManipulationControls\n * @type {UI.MultiPageManipulationControls}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.multiPageManipulationControls.someAPI();\n  })\n */\n\n/**\n * A class which contains MultiPageManipulationControls APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the MultiPageManipulationControls, use {@link UI.disableElements disableElements}.\n * @class\n * @name UI.MultiPageManipulationControls\n */\n/**\n * @typedef UI.MultiPageManipulationControls.PageManipulationSection\n * @type {object}\n * @property {string} type Required type of 'customPageOperation' or 'divider'.\n * @property {string} header Header to be displayed in the UI for this section\n * @property {string} dataElement Unique dataElement\n * @property {UI.MultiPageManipulationControls.PageOperation[]} operations the operations that will be available under this section\n */\n/**\n * @typedef UI.MultiPageManipulationControls.PageOperation\n * @type {object}\n * @property {string} title Title to be displayed for the operation\n * @property {string} img Path to image to be used as an icon for the operation\n * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n * @property {string} dataElement Unique dataElement for this operation\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => Object.create(MultiPageManipulationControls).initialize(store);\n\nconst MultiPageManipulationControls = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Adds an array of page manipulation operations to the default operations. If passed a dataElement parameter, it will\n   * add the new operations after this element. Otherwise, they will be appended to the start of the existing list\n   * of operations.\n   * @method UI.MultiPageManipulationControls#add\n   * @param {Array.<UI.MultiPageManipulationControls.PageManipulationSection>} pageManipulationSections Array of sections to be added, each with its individual operations. See example below.\n   * @param {('leftPanelPageTabsRotate' | 'leftPanelPageTabsOperations' | 'leftPanelPageTabsMore')} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added to the left.\n   * You can call {@link UI.MultiPageManipulationControls#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.MultiPageManipulationControls} The instance itself\n   * @example\n   // An example of the operation object is shown below.\n   // Additionally, to add dividers you can include this in the operations array:\n    { type: 'divider' }\n    // Example:\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.multiPageManipulationControls.add([\n          {\n            type: 'customPageOperation',\n            header: 'Custom options',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Alert me',\n                img: '/path-to-image',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'customPageOperationButton',\n              }\n            ]\n          },\n          { type: 'divider' }\n        ]);\n      });\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n    const indexSmall = this._getIndexByDataElementSmall(dataElementToInsertAfter);\n    const itemsSmall = this.getItemsSmall();\n    const indexLarge = this._getIndexByDataElementLarge(dataElementToInsertAfter);\n    const itemsLarge = this.getItemsLarge();\n\n    items.splice(index + 1, 0, ...operations);\n    itemsSmall.splice(indexSmall + 1, 0, ...operations);\n    itemsLarge.splice(indexLarge + 1, 0, ...operations);\n\n    this.store.dispatch(actions.setMultiPageManipulationControlsItems(items));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsSmall(itemsSmall));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsLarge(itemsLarge));\n\n    return this;\n  },\n\n  /**\n   * Update all the operations in the MultiPageManipulationControls, essentially replacing them with\n   * a new list of operations.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.MultiPageManipulationControls#update\n   * @param {Array.<UI.MultiPageManipulationControls.PageManipulationSection>} pageManipulationSections The list of PageManipulationSections that will be rendered in the PageManipulation overlay. See the add documentation for an example.\n   * @returns {UI.MultiPageManipulationControls} The instance of itself\n   * @example\n    WebViewer(...)\n      .then(function (instance) {\n        instance.UI.multiPageManipulationControls.update([\n          {\n            type: 'customPageOperation',\n            header: 'Print Operations',\n            dataElement: 'customPageOperations',\n            operations: [\n              {\n                title: 'Print page',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'printThumbnailPage',\n              }\n            ]\n          },\n          { type: 'divider' },\n          {\n            type: 'customPageOperation',\n            header: 'Alert Operations',\n            dataElement: 'customPageOperations-2',\n            operations: [\n              {\n                title: 'Alert me',\n                img: 'icon-header-print-line',\n                onClick: (selectedPageNumbers) => {\n                  alert(`Selected thumbnail pages: ${selectedPageNumbers}`);\n                },\n                dataElement: 'alertPage',\n              }\n            ]\n          }\n        ]);\n      });\n   */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setMultiPageManipulationControlsItems(operations));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsSmall(operations));\n    this.store.dispatch(actions.setMultiPageManipulationControlsItemsLarge(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the MultiPageManipulationControls.\n   * @method UI.MultiPageManipulationControls#getItems\n   * @returns {Array.<UI.MultiPageManipulationControls.PageManipulationSection>} Current items in the MultiPageManipulationControls.\n   * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.multiPageManipulationControls.getItems();\n  });\n   */\n  getItems() {\n    return [...selectors.getMultiPageManipulationControlsItems(this.store.getState())];\n  },\n  getItemsSmall() {\n    return [...selectors.getMultiPageManipulationControlsItemsSmall(this.store.getState())];\n  },\n  getItemsLarge() {\n    return [...selectors.getMultiPageManipulationControlsItemsLarge(this.store.getState())];\n  },\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getMultiPageManipulationControlsItems(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n  _getIndexByDataElementSmall(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getMultiPageManipulationControlsItemsSmall(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n  _getIndexByDataElementLarge(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getMultiPageManipulationControlsItemsLarge(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};\n","/**\n * An  instance of ThumbnailControlMenu that can be used to edit the items included in the thumbnail menu overlay\n * @name UI.thumbnailControlMenu\n * @implements {UI.ThumbnailControlMenu}\n * @type {UI.ThumbnailControlMenu}\n * @example\n WebViewer(...)\n  .then(function (instance) {\n    instance.UI.thumbnailControlMenu.someAPI();\n  })\n */\n/**\n * A class which contains ThumbnailControlMenu APIs. <br/><br/>\n * <span style=\"color: red; font-size: 1.2em; font-weight: bold\">⚠</span> If you want to remove an item in the ThumbnailControlMenu, use {@link UI.disableElements disableElements}.\n * @interface UI.ThumbnailControlMenu\n */\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => Object.create(ThumbnailControlMenuAPI).initialize(store);\n\nconst ThumbnailControlMenuAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n\n  /**\n   * @typedef UI.ThumbnailControlMenu.MenuItem\n   * @type {object}\n   * @property {string} title Title to be displayed for the operation\n   * @property {string} img path to image to be used as an icon for the operation\n   * @property {function} onClick onClick handler, which takes as a parameter an array of selected page numbers\n   * @property {string} dataElement Unique dataElement for this operation\n   */\n\n  /**\n   * Adds an array of thumbnail menu buttons to the default menu. If passed a dataElement parameter, it will\n   * add the new menu buttons after this element. Otherwise, they will be appended to the start of the existing list\n   * of buttons.\n   * @method UI.ThumbnailControlMenu#add\n   * @param {Array.<UI.ThumbnailControlMenu.MenuItem>} MenuItem Array of buttons to be added, each with its individual operations. See example below.\n   * @param {('thumbRotateClockwise' | 'thumbDelete' )} [dataElementToInsertAfter] An optional string that determines where in the overlay the new section will be added. If not included, the new page manipulation section will be added at the top.\n   * You can call {@link UI.ThumbnailControlMenu#getItems getItems} to get existing items and their dataElements.\n   * @returns {UI.ThumbnailControlMenu} The instance itself\n   * @example\n      WebViewer(...)\n      .then(function (instance) {\n        instance.UI.thumbnailControlMenu.add([\n          {\n            title: 'alertme',\n            img: 'data:image/png;base64,...',\n            onClick: (selectedPageNumbers) => {\n              alert(`Selected thumbnail: ${selectedPageNumbers}`);\n            },\n            dataElement: 'alertMeDataElement',\n          },\n        ]);\n      })\n   */\n  add(operations, dataElementToInsertAfter) {\n    if (!operations || operations.length === 0) {\n      return;\n    }\n\n    if (!Array.isArray(operations)) {\n      operations = [operations];\n    }\n\n    const index = this._getIndexByDataElement(dataElementToInsertAfter);\n    const items = this.getItems();\n\n    items.splice(index + 1, 0, ...operations);\n    this.store.dispatch(actions.setThumbnailControlMenuItems(items));\n\n    return this;\n  },\n\n  /**\n   * Update all the buttons in the ThumbnailControlMenu, essentially replacing them with\n   * a new list of buttons.\n   * To update an individual item, use {@link UI.updateElement updateElement}\n   * @method UI.ThumbnailControlMenu#update\n   * @param {Array.<UI.ThumbnailControlMenu.MenuItem>} MenuItem The list of MenuItems that will be rendered in the thumbnail menu overlay. See the add documentation for an example.\n   * @returns {UI.ThumbnailControlMenu} The instance of itself\n   * @example\n      WebViewer(...)\n      .then(function (instance) {\n        instance.UI.thumbnailControlMenu.update([\n          {\n            title: 'alertme',\n            img: 'data:image/png;base64,...',\n            onClick: (selectedPageNumbers) => {\n              alert(`Selected thumbnail: ${selectedPageNumbers}`);\n            },\n            dataElement: 'alertMeDataElement',\n          },\n        ]);\n      })\n  */\n  update(operations) {\n    if (!operations) {\n      operations = [];\n    }\n    this.store.dispatch(actions.setThumbnailControlMenuItems(operations));\n\n    return this;\n  },\n\n  /**\n   * Return the array of items in the ThumbnailControlMenu.\n   * @method UI.ThumbnailControlMenu#getItems\n   * @returns {Array.<UI.ThumbnailControlMenu.MenuItem>} Current items in the ThumbnailControlMenu.\n   * @example\n    WebViewer(...)\n      .then(function(instance) {\n        instance.UI.ThumbnailControlMenu.getItems();\n      });\n   */\n  getItems() {\n    return [...selectors.getThumbnailControlMenuItems(this.store.getState())];\n  },\n\n  _getIndexByDataElement(dataElement) {\n    let index;\n\n    if (typeof dataElement === 'undefined') {\n      index = -1;\n    } else {\n      const state = this.store.getState();\n      index = selectors.getThumbnailControlMenuItems(state).findIndex((obj) => obj.dataElement === dataElement);\n    }\n\n    return index;\n  },\n};","/**\n * Gets the watermark options created in print modal.\n * @method UI.getWatermarkModalOptions\n * @return {object} Returns the watermark options created in print modal.\n */\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getWatermarkModalOptions(store.getState());","import actions from 'actions';\n\n/**\n * Enable the ability to submit notes by only pressing Enter. Default mode is Ctrl/Cmd + Enter.\n * @method UI.enableNoteSubmissionWithEnter\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableNoteSubmissionWithEnter();\n  });\n */\n\nexport default (store) => () => {\n  store.dispatch(actions.setNoteSubmissionEnabledWithEnter(true));\n};","/**\n * Returns whether Webviewer will use/not use embedded printing.\n * Will return false if the browser doesn't support embedded printing or if UI.useEmbeddedPrint is set to false.\n * @method UI.willUseEmbeddedPrinting\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.willUseEmbeddedPrinting(); // Returns true/false if embedded printing is supported and enabled\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => !!selectors.isEmbedPrintSupported(store.getState());","/**\n * Reloads the Bookmark Outline in the WebViewer UI.\n * @method UI.reloadOutline\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const { documentViewer } = instance.Core;\n\n    // you must have a document loaded when calling this api\n    documentViewer.addEventListener('documentLoaded', async () => {\n      const doc = documentViewer.getDocument();\n      const pdfDoc = await doc.getPDFDoc();\n      const firstBookmark = await pdfDoc.getFirstBookmark();\n\n      const bookmarkToDelete = await firstBookmark.find('bookmark-to-delete');\n      if (bookmarkToDelete !== null && await bookmarkToDelete.isValid()) {\n        await bookmarkToDelete.delete();\n        instance.UI.reloadOutline();\n      }\n    });\n  });\n */\n\nimport core from 'core';\nimport actions from 'actions';\n\nexport default (store) => () => {\n  core.getOutlines((outlines) => {\n    store.dispatch(actions.setOutlines(outlines));\n  });\n};\n","import actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * A namespace which contains Font APIs for the UI. <br/><br/>\n * @namespace Fonts\n * @memberof UI\n * @example\n * WebViewer(...)\n * .then(function (instance) {\n *   instance.UI.Fonts.getFonts();\n * });\n */\nexport default (store) => Object.create(FontsAPI).initialize(store);\n\nconst FontsAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Return the currently available fonts in the UI to be used for Annotations.\n   * @method UI.Fonts.getAnnotationFonts\n   * @returns {Array.<String>} Fonts avaialable in the UI.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.getAnnotationFonts();\n  });\n   */\n  getAnnotationFonts() {\n    return [...selectors.getFonts(this.store.getState())];\n  },\n  /**\n   * Add a font to be available in the UI for Annotation font pickers.\n   * @method UI.Fonts.addAnnotationFont\n   * @param {String} font - The font to be added.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.addAnnotationFont(\"Arial\");\n  });\n   */\n  addAnnotationFont(font) {\n    if (typeof font !== 'string') {\n      throw new Error('Font must be a string');\n    }\n    const fonts = selectors.getFonts(this.store.getState());\n    if (fonts.indexOf(font) !== -1) {\n      return console.warn('Font already added');\n    }\n    fonts.push(font);\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Remove a font from the UI's Annotation font pickers.\n   * @method UI.Fonts.removeAnnotationFont\n   * @param {String} font - The font to be removed.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.removeAnnotationFont(\"Arial\");\n  });\n   */\n  removeAnnotationFont(font) {\n    const fonts = selectors.getFonts(this.store.getState());\n    const fontIndex = fonts.indexOf(font);\n    if (fontIndex === -1) {\n      return console.warn('Font not found');\n    }\n    fonts.splice(fontIndex, 1);\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Set the fonts available in the UI's Annotation font pickers.\n   * @method UI.Fonts.setAnnotationFonts\n   * @param {Array.<String>} fonts - The fonts to be set.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.setAnnotationFonts([\"Arial\", \"Times New Roman\"]);\n  });\n   */\n  setAnnotationFonts(fonts) {\n    this.store.dispatch(actions.setFonts(fonts));\n  },\n  /**\n   * Returns the currently available fonts to be used when typing a signature in the signature dialog\n   * @method UI.Fonts.getSignatureFonts\n   * @returns {Array.<String>} Fonts avaialable in the UI.\n   */\n  getSignatureFonts() {\n    return [...selectors.getSignatureFonts(this.store.getState())];\n  },\n  /**\n   * Add a font to be available in the UI for Signature font pickers.\n   * @method UI.Fonts.addSignatureFont\n   * @param {String} font - The font to be added.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.addSignatureFont(\"Arial\");\n  });\n   */\n  addSignatureFont(font) {\n    if (typeof font !== 'string') {\n      throw new Error('Font must be a string');\n    }\n    const fonts = selectors.getSignatureFonts(this.store.getState());\n    if (fonts.indexOf(font) !== -1) {\n      return console.warn('Font already added');\n    }\n    fonts.push(font);\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n  /**\n   * Remove a font from the UI's Signature font pickers.\n   * @method UI.Fonts.removeSignatureFont\n   * @param {String} font - The font to be removed.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.removeSignatureFont(\"Arial\");\n  });\n   */\n  removeSignatureFont(font) {\n    const fonts = selectors.getSignatureFonts(this.store.getState());\n    const fontIndex = fonts.indexOf(font);\n    if (fontIndex === -1) {\n      return console.warn('Font not found');\n    }\n    fonts.splice(fontIndex, 1);\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n  /**\n   * Set the fonts available in the UI's Signature font pickers.\n   * @method UI.Fonts.setSignatureFonts\n   * @param {Array.<String>} fonts - The fonts to be set.\n   * @example\n   WebViewer(...)\n   .then(function(instance) {\n    instance.UI.Fonts.setSignatureFonts([\"Arial\", \"Times New Roman\"]);\n  });\n   */\n  setSignatureFonts(fonts) {\n    this.store.dispatch({\n      type: 'SET_SIGNATURE_FONTS',\n      payload: {\n        signatureFonts: fonts,\n      },\n    });\n  },\n};","import selectors from 'selectors';\nimport actions from 'actions';\n\n/**\n * An instance of TabManager that can be used to edit the open document Tabs **Only Multi-Tab Mode**.\n * @namespace TabManager\n * @memberof UI\n * @example\n WebViewer(...)\n .then(function (instance) {\n    instance.UI.TabManager.setActiveTab(0);\n  })\n */\n\nexport default (store) => Object.create(TabManagerAPI).initialize(store);\n\nconst TabManagerAPI = {\n  initialize(store) {\n    this.store = store;\n    return this;\n  },\n  /**\n   * Set the currently open tab in the UI\n   * @method UI.TabManager.setActiveTab\n   * @param {number} tabId The tab id to set as the current tab\n   * @param {boolean} [saveCurrentActiveTabState] Whether to save the current tab annotations, scroll position, and zoom level before switching to the new tab (default: true)\n   * @returns {Promise<void>} Resolves when the tab is loaded\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   instance.UI.TabManager.setActiveTab(0, false); // Set to tab id 0 discarding current tab state\n   * });\n   */\n  async setActiveTab(tabId, saveCurrentActiveTabState = true) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    await tabManager.setActiveTab(tabId, saveCurrentActiveTabState);\n  },\n  /**\n   * Delete a tab by id in the UI\n   * @method UI.TabManager.deleteTab\n   * @param {number} tabId The tab id to be deleted from the tab header\n   * @returns {void}\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   instance.UI.TabManager.deleteTab(0); // Delete tab id 0\n   * });\n   */\n  deleteTab(tabId) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    tabManager.deleteTab(tabId);\n  },\n\n  /**\n   * Add a new tab to the UI\n   * @method UI.TabManager.addTab\n   * @param {(string|File|Blob|Core.Document|Core.PDFNet.PDFDoc)} src The source of the tab to be added (e.g. a URL, a blob, ArrayBuffer, or a File)\n   * @param {UI.loadDocumentOptions} [options] The options for the tab to be added\n   * @param {boolean} [options.setActive] Whether to set the new tab as active immediately after adding it (default: true)\n   * @param {boolean} [options.saveCurrentActiveTabState] Whether to save the current tab annotations, scroll position, and zoom level before adding the new tab (only used when setActive=true) (default: true)\n   * @param {string} [options.extension] The extension of the file. If file is a blob/file object or a URL without an extension then this is necessary so that WebViewer knows what type of file to load.\n   * @param {string} [options.filename] Filename of the document, which is used when downloading the PDF.\n   * @param {object} [options.customHeaders] An object of custom HTTP headers to use when retrieving the document from the specified url.\n   * @param {object} [options.webViewerServerCustomQueryParameters] An object of custom query parameters to be appended to every WebViewer Server request.\n   * @param {string} [options.documentId] Unique id of the document.\n   * @param {boolean} [options.withCredentials] Whether or not cross-site requests should be made using credentials.\n   * @param {string} [options.cacheKey] A key that will be used for caching the document on WebViewer Server.\n   * @param {object} [options.officeOptions] An object that contains the options for an Office document.\n   * @param {object} [options.rasterizerOptions] An object that contains the rasterizer options for WebViewer Server.\n   * @param {Core.TemplateData} [options.officeOptions.templateValues] If set, will perform template replacement with the data specified by this parameter.\n   * @param {Core.TemplateOptions} [options.officeOptions.templateOptions] If set, it will interpret the office document as a template document and compile all of the template tags in the document using the provided options.\n   * @param {boolean} [options.officeOptions.doTemplatePrep] If set, it will interpret the office document as a template document and compile all of the template tags in the document.\n   * @param {boolean} [options.officeOptions.disableBrowserFontSubstitution] By default, office viewing takes a lightweight approach to font substitution, allowing the browser to select fonts when they are not embedded in the document itself.\n   * While this means that WebViewer has access to all the fonts on the user's system, it also means that an office document may have a different \"look\" on different systems (depending on the fonts available) and when it is converted to PDF (as the PDF conversion routine cannot obtain low-level access to user fonts, for security reasons).\n   * disableBrowserFontSubstitution prevents this browser substitution, forcing the WebViewer backend to handle all fonts. This means that viewing and conversion to PDF will be 100% consistent from system-to-system, at the expense of a slightly slower initial viewing time and higher bandwidth usage.\n   * Using https://docs.apryse.com/documentation/web/faq/self-serve-substitute-fonts/ along with this option allows you to fully customize the substitution behaviour for all office files.\n   * @param {object} [options.officeOptions.formatOptions] An object that contains formatting options for an Office document. Same options as allowed here {@link Core.PDFNet.Convert.OfficeToPDFOptions}.\n   * @param {boolean} [options.officeOptions.formatOptions.hideTotalNumberOfPages] If true will hide total number of pages from page number labels (i.e, Page 1, Page 2, vs Page 1 of 2, Page 2 of 2)\n   * @param {boolean} [options.officeOptions.formatOptions.applyPageBreaksToSheet] If true will split Excel worksheets into pages so that the output resembles print output.\n   * @param {boolean} [options.officeOptions.formatOptions.displayChangeTracking] If true will display office change tracking markup present in the document (i.e, red strikethrough of deleted content and underlining of new content). Otherwise displays the resolved document content, with no markup. Defaults to true.\n   * @param {boolean} [officeOptions.formatOptions.displayHiddenText] If true will display hidden text in document. Otherwise hidden text will not be shown. Defaults to false.\n   * @param {number} [options.officeOptions.formatOptions.excelDefaultCellBorderWidth] Cell border width for table cells that would normally be drawn with no border. In units of points. Can be used to achieve a similar effect to the \"show gridlines\" display option within Microsoft Excel.\n   * @param {number} [options.officeOptions.formatOptions.excelMaxAllowedCellCount] An exception will be thrown if the number of cells in an Excel document is above the value. Used for early termination of resource intensive documents. Setting this value to 250000 will allow the vast majority of Excel documents to convert without issue, while keeping RAM usage to a reasonable level. By default there is no limit to the number of allowed cells.\n   * @param {string} [options.officeOptions.formatOptions.locale] Sets the value for Locale in the options object ISO 639-1 code of the current system locale. For example: 'en-US', 'ar-SA', 'de-DE', etc.\n   * @param {boolean} [options.enableOfficeEditing] If true, will load docx files with editing capabilities.\n   * @param {string} [options.password] A string that will be used to as the password to load a password protected document.\n   * @param {function} [options.onError] - A callback function that will be called when error occurs in the process of loading a document. The function signature is `function(e) {}`\n   * @param {object} [options.xodOptions] - An object that contains the options for a XOD document.\n   * @param {boolean} [options.xoddecrypt] - Function to be called to decrypt a part of the XOD file. For default XOD AES encryption pass Core.Encryption.decrypt.\n   * @param {boolean} [options.xoddecryptOptions] -  An object with options for the decryption e.g. {p: \"pass\", type: \"aes\"} where is p is the password.\n   * @param {boolean} [options.xodstreaming] - A boolean indicating whether to use http or streaming PartRetriever, it is recommended to keep streaming false for better performance. https://docs.apryse.com/documentation/web/guides/streaming-option/.\n   * @param {boolean} [options.xodazureWorkaround] - Whether or not to workaround the issue of Azure not accepting range requests of a certain type. Enabling the workaround will add an extra HTTP request of overhead but will still allow documents to be loaded from other locations.\n   * @param {boolean} [options.xodstartOffline] - Whether to start loading the document in offline mode or not. This can be set to true if the document had previously been saved to an offline database using WebViewer APIs. You'll need to use this option to load from a completely offline state.\n   * @returns {Promise<number>} Resolves to the tab id of the newly added tab\n   * @example\n   * WebViewer(...).then(function(instance) {\n   *   // Adding a new tab with the URL http://www.example.com\n   *   instance.UI.TabManager.addTab(\n   *      'http://www.example.com/pdf',\n   *      {\n   *        extension: \"pdf\",\n   *        filename: 'Example',\n   *        withCredentials: true,\n   *        setActive: true,\n   *        saveCurrentActiveTabState: true\n   *      }\n   *    );\n   * });\n   */\n  async addTab(src, options) {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    return tabManager.addTab(src, options);\n  },\n  /**\n   * Get the currently active tab id\n   * @method UI.TabManager.getActiveTab\n   * @returns {object} The current tab with the following properties: { id: Number, options: Object, src: string|Blob|File|ArrayBuffer }\n   */\n  getActiveTab() {\n    const state = this.store.getState();\n    const activeTab = selectors.getActiveTab(state);\n    const tabs = selectors.getTabs(state);\n    const currentTab = tabs.find((tab) => tab.id === activeTab);\n    return {\n      id: currentTab.id,\n      options: currentTab.options,\n      src: currentTab.src,\n    };\n  },\n  /**\n   * Get all the tabs from the UI\n   * @method UI.TabManager.getAllTabs\n   * @returns {Array<Object>} Array of tab objects containing the following properties: { id: Number, options: Object, src: string|Blob|File|ArrayBuffer }\n   */\n  getAllTabs() {\n    const tabManager = selectors.getTabManager(this.store.getState());\n    return tabManager.map((tab) => ({\n      id: tab.id,\n      options: tab.options,\n      src: tab.src,\n    }));\n  },\n  /**\n   * Disable the warning when deleting a tab in multi-tab mode\n   * @method UI.TabManager.disableDeleteTabWarning\n   * @example\n   * WebViewer(...)\n   *   .then(function (instance) {\n   *     instance.UI.TabManager.disableDeleteTabWarning();\n   *   });\n   */\n  disableDeleteTabWarning() {\n    this.store.dispatch(actions.disableDeleteTabWarning());\n  },\n};\n","import Languages from 'constants/languages';\n\n/**\n * Returns all available languages as a list.\n * @method UI.getAvailableLanguages\n * @return {Array<string>} All available languages\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getAvailableLanguages());\n  });\n */\nexport default () => Languages.map((language) => language[0]);\n","/**\n * Sets a specific regex to be used when searching for one of the supported patterns in the redaction search panel\n * @method UI.replaceRedactionSearchPattern\n * @param {UI.RedactionSearchPatterns} searchPattern A search pattern for which the regex should be replaced\n *\n * @param {string} regex The regex to be used for the search pattern\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.replaceRedactionSearchPattern(instance.UI.RedactionSearchPatterns.EMAILS, /\\w+@\\w+\\.\\w+/);\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (searchPattern, regex) => {\n  store.dispatch(actions.replaceRedactionSearchPattern(searchPattern, regex));\n};\n","import actions from 'actions';\n\n/**\n * Disable the confirmation modal when applying a crop to a page\n *\n * @method UI.disableApplyCropWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disableApplyCropWarningModal();\n  });\n */\nconst disableApplyCropWarningModal = (store) => () => {\n  store.dispatch(actions.disableApplyCropWarningModal());\n};\n\nexport default disableApplyCropWarningModal;\n","import actions from 'actions';\n\n/**\n * Enable the confirmation modal when applying a crop to a page\n *\n * @method UI.enableApplyCropWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.enableApplyCropWarningModal();\n  });\n */\nconst enableApplyCropWarningModal = (store) => () => {\n  store.dispatch(actions.enableApplyCropWarningModal());\n};\n\nexport default enableApplyCropWarningModal;\n","import actions from 'actions';\n\n/**\n * Disable the confirmation modal when snipping a page\n *\n * @method UI.disableApplySnippingWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.disableApplySnippingWarningModal();\n  });\n */\nconst disableApplySnippingWarningModal = (store) => () => {\n  store.dispatch(actions.disableApplySnippingWarningModal());\n};\n\nexport default disableApplySnippingWarningModal;\n","import actions from 'actions';\n\n/**\n * Enable the confirmation modal when snipping a page\n *\n * @method UI.enableApplySnippingWarningModal\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.enableApplySnippingWarningModal();\n  });\n */\nconst enableApplySnippingWarningModal = (store) => () => {\n  store.dispatch(actions.enableApplySnippingWarningModal());\n};\n\nexport default enableApplySnippingWarningModal;\n","/**\n * Sets preset crop dimensions to be used when selecting a preset crop in the document cropping popup\n * @method UI.setPresetCropDimensions\n * @param {string} presetName The name of a current preset or the name to give to a new preset\n * @param {object} newPreset A set of dimensions to use for a preset crop\n * @param {number} newPreset.yOffset The amount of inches to move the cropped area from the top of the page\n * @param {number} newPreset.height The height of the area to crop the page to in inches\n * @param {number} newPreset.xOffset The amount of inches to move the cropped area from the left of the page\n * @param {number} newPreset.width The width of the area to crop the page to in inches\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPresetCropDimensions('Letter', {'yOffset': 0, 'height': 11, 'xOffset': 0, 'width': 8.5});\n  });\n */\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst dimensions = ['yOffset', 'height', 'xOffset', 'width'];\n\nexport default (store) => (presetName, newPreset) => {\n  if (!presetName || typeof presetName !== 'string' || presetName.trim().length < 1) {\n    return console.error('presetName must be a string of length 1 or more');\n  }\n  if (!newPreset || typeof newPreset !== 'object') {\n    return console.error('newPreset must be an object with \"yOffset\", \"height\", \"xOffset\", and \"width\" properties');\n  }\n\n  for (const dimension of dimensions) {\n    if (!(dimension in newPreset)) {\n      return console.error(`${dimension} must be included in newPreset`);\n    }\n    if (typeof newPreset[dimension] !== 'number' || newPreset[dimension] < 0) {\n      return console.error(`${dimension} must be a number greater than or equal to 0`);\n    }\n  }\n\n  const presets = selectors.getPresetCropDimensions(store.getState());\n  presets[presetName] = newPreset;\n\n  store.dispatch(actions.setPresetCropDimensions(presets));\n};\n","/**\n * Sets preset page dimensions to be used when selecting a page size in the Insert Page Modal\n * @method UI.setPresetNewPageDimensions\n * @param {string} presetName The name of a current preset or the name to give to a new preset\n * @param {object} newPreset A set of dimensions to use for a preset new page\n * @param {number} newPreset.height The height of the new page in inches\n * @param {number} newPreset.width The width of the new page in inches\n *\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setPresetNewPageDimensions('Letter', {'height': 11, 'width': 8.5});\n  });\n */\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nconst dimensions = ['height', 'width'];\n\nexport default (store) => (presetName, newPreset) => {\n  if (!presetName || typeof presetName !== 'string' || presetName.trim().length < 1) {\n    return console.error('presetName must be a string of length 1 or more');\n  }\n  if (!newPreset || typeof newPreset !== 'object') {\n    return console.error('newPreset must be an object with \"height\", and \"width\" properties');\n  }\n\n  for (const dimension of dimensions) {\n    if (!(dimension in newPreset)) {\n      return console.error(`${dimension} must be included in newPreset`);\n    }\n    if (typeof newPreset[dimension] !== 'number' || newPreset[dimension] < 0) {\n      return console.error(`${dimension} must be a number greater than or equal to 0`);\n    }\n  }\n\n  const presets = selectors.getPresetCropDimensions(store.getState());\n  presets[presetName] = newPreset;\n\n  store.dispatch(actions.setPresetNewPageDimensions(presets));\n};\n","import selectors from 'selectors';\nimport actions from 'actions';\n\n/**\n * Adds a date and time format for the UI date and time dropdowns.\n * List of formats can be found here: {@link https://github.com/iamkun/dayjs/blob/v1.11.1/docs/en/API-reference.md#format-formatstringwithtokens-string dayjs API}.\n * @method UI.addDateTimeFormat\n * @param {object} dateTimeFormat An object containing the date and time formats with the respective keys. At least one of the date or time keys must be present.\n * @param {string} [dateTimeFormat.date] String of date format\n * @param {string} [dateTimeFormat.time] String of time format\n * @param {boolean} [dateTimeFormat.timeFirst] Boolean value to indicate if time should be before date in UI\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.addDateTimeFormat({\n        date: 'MM/DD/YYYY',\n        time: 'HH:mm:ss',\n        timeFirst: true\n      });\n  });\n */\n\nexport default (store) => (dateTimeFormat) => {\n  if (typeof dateTimeFormat !== 'object') {\n    return console.error('UI.addDateTimeFormat: dateTimeFormat must be an object');\n  }\n  let validKeyFound = false;\n  const requiredKeys = ['date', 'time'];\n  for (const param of requiredKeys) {\n    if (!dateTimeFormat[param]) {\n      dateTimeFormat[param] = '';\n    } else {\n      validKeyFound = true;\n    }\n  }\n  if (!validKeyFound) {\n    return console.error(`UI.addDateTimeFormat: dateTimeFormat must contain at least one of the following keys: ${requiredKeys.join(', ')}`);\n  }\n  store.dispatch(actions.setDateTimeFormats([\n    ...selectors.getDateTimeFormats(store.getState()),\n    dateTimeFormat,\n  ]));\n};","/**\n * Adds a new search pattern to the redaction search panel\n * @method UI.addRedactionSearchPattern\n * @param {UI.RedactionSearchPattern} searchPattern A search pattern to add to the redaction search panel\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addRedactionSearchPattern(\n      {\n        label: 'Social Security Number',\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 30 30\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"/></svg>',\n        type: 'socialSecurityNumber',\n        regex: /\\b\\d{3}-?\\d{2}-?\\d{4}\\b/,\n      }\n    );\n  });\n\n// Or to search kewyord(s):\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.addRedactionSearchPattern(\n    {\n      label: 'Confidential Information',\n      type: 'confidentialInformation',\n      regex: /confidential information/i, //Regex based search for text, case insensitive\n    }\n  );\n});\n\n */\n\nimport actions from 'actions';\n\nexport default (store) => (redactionSearchPattern, regex) => {\n  store.dispatch(actions.addRedactionSearchPattern(redactionSearchPattern, regex));\n};\n\n\n/**\n* @typedef {Object} UI.RedactionSearchPattern\n* @property {string} label The label to be used for the search pattern in the UI\n* @property {string} type A string representing the type of item being searched for. For example, if searching for postal codes, this could be 'postalCode'. This is used\n* to determine which icon will be used to render the result in the search panel.\n* @property {string} [icon] The icon to be used for the search pattern in the search dropdown for the UI and the redaction panel for this type of search. Can be an inline SVG, or the name of an icon included in the WebViewer UI icon set.\n* If no icon is passed, the default icon for text searches will be used.\n* @property {RegExp} regex The regex to be used for the search pattern\n*/\n","/**\n * Removes a search pattern from the redaction search panel\n * @method UI.removeRedactionSearchPattern\n * @param {UI.RedactionSearchPatterns | string} searchPattern A search pattern to remove from the redaction search panel. If you added a custom search pattern with {@link UI.addRedactionSearchPattern}, you must pass the type of the search pattern you added.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.removeRedactionSearchPattern(instance.UI.RedactionSearchPatterns.EMAILS);\n  });\n\n// If you added a custom search pattern for Social Security Number where the type is 'socialSecurityNumber'.\nWebViewer(...)\n.then(function(instance) {\n  instance.UI.removeRedactionSearchPattern('socialSecurityNumber');\n});\n */\n\nimport actions from 'actions';\n\nexport default (store) => (redactionSearchPattern) => {\n  store.dispatch(actions.removeRedactionSearchPattern(redactionSearchPattern));\n};","import { getMap } from '../constants/map';\n/**\n * @typedef {string} StyleTab The style tab in the annotation style popup window. See {@link UI.AnnotationStylePopupTabs} for valid style tabs.\n */\n\n/**\n * @typedef {object} AnnotationStyleTabConfiguration\n * @property {string[]} styleTabs Indicates the available style tabs in the annotation style popup window. See {@link UI.AnnotationStylePopupTabs}.\n * @property {string} currentStyleTab The current tab in the annotation style popup window.\n */\n\n/**\n * Returns the style popup tab configurations for the specified annotation type.\n * If there was no annotation key specified, it will return the style popup tab configurations for all the annotations.\n * @method UI.getAnnotationStylePopupTabs\n * @param {string} [annotationKey] Indicate the type of an annotation, see {@link UI.AnnotationKeys}.\n * @return {AnnotationStyleTabConfiguration[]}\n  @example\n  WebViewer(...)\n    .then(function(instance) {\n        console.log(instance.UI.getAnnotationStylePopupTabs());\n      );\n    });\n */\n\nexport default (annotationKey) => {\n  const map = getMap();\n  const annotationTabs = {};\n  if (annotationKey) {\n    const targetAnnotation = map[annotationKey];\n    if (!targetAnnotation) {\n      return console.error('No such annotation exist. Please provide a valid annotation key.');\n    }\n    annotationTabs[annotationKey] = {\n      styleTabs: targetAnnotation.styleTabs,\n      currentStyleTab: targetAnnotation.currentStyleTab,\n    };\n  } else {\n    const annotationKeys = Object.keys(map);\n    annotationKeys.forEach((annotationKey) => {\n      annotationTabs[annotationKey] = {\n        styleTabs: map[annotationKey].styleTabs,\n        currentStyleTab: map[annotationKey].currentStyleTab,\n      };\n    });\n    return annotationTabs;\n  }\n  return annotationTabs;\n};","\n/**\n * Sets the available style tabs in the style popup for a specific annotation type.\n * @method UI.setAnnotationStylePopupTabs\n * @param {string} annotationKey The annotation type. See {@link UI.AnnotationKeys}.\n * @param {string[]} newAnnotationStyleTabs Indicates the available style tabs for the annotation. See {@link UI.AnnotationStylePopupTabs}.\n * @param {string} [initialTab] The initial style tab. It should be one of the elements in newAnnotationStyleTabs if passed to the API.\n  @example\n  WebViewer(...)\n    .then(function(instance) {\n      instance.UI.setAnnotationStylePopupTabs(\n        instance.UI.AnnotationKeys.FREE_TEXT,\n        [\n          instance.UI.AnnotationStylePopupTabs.TEXT_COLOR,\n          instance.UI.AnnotationStylePopupTabs.FILL_COLOR\n        ],\n        instance.UI.AnnotationStylePopupTabs.FILL_COLOR\n      );\n    });\n */\n\nimport { updateAnnotationStylePopupTabs, copyMapWithDataProperties } from '../constants/map';\nimport actions from 'actions';\n\nexport default (store) => (annotationKey, newAnnotationStyleTabs, initialTab) => {\n  const result =\n    updateAnnotationStylePopupTabs(annotationKey, newAnnotationStyleTabs, initialTab);\n  if (result === true) {\n    const newColorMap = copyMapWithDataProperties('currentStyleTab', 'iconColor');\n    store.dispatch(actions.setColorMap(newColorMap));\n  }\n};","import selectors from 'selectors';\n\nexport default (store) => () => selectors.getZoomStepFactors(store.getState());","/**\n * Set the zoom step size for zooming in/out. The API takes an array of zoomStepFactor that contains two properties:\n * step: zoom step size when zooming in/out. It could be either percentage in a string or a number, ex. 50, '50', or '50%' all indicates 50%.\n * startZoom: The zoom level that the step starts to apply. It could be either percentag in a string or a number, ex. 200, '200', or '200%' all indicates 200%.\n * @method UI.setZoomStepFactors\n * @param {Object[]} zoomStepFactors An array that contains objects of zoomStep and zoom start level. zoomStepFactors must contain at least one zoomStepFactor object that has startZoom: 0\n * @property {number|string} zoomStepFactors[].step Zoom step size as percentage in a string or a number, ex. '50', '50%', or 50 all indicates 50%.\n * @property {number|string} zoomStepFactors[].startZoom Zoom level that the zoom step size starts to apply. It could be percentage in a string or a number, ex. '200', '200%', or 200 all indicates 200%.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const documentViewer = instance.Core.documentViewer;\n    // you must have a document loaded when calling this api\n    documentViewer.addEventListener('documentLoaded', function() {\n      instance.UI.setZoomStepFactors([\n        {\n          step: '25', // indicates 25%, also accepts '25%'\n          startZoom: '0'\n        },\n        {\n          step: 50, // indicates 50%\n          startZoom: 200 // indicates the step is 50% after zoom level 200%\n        },\n      ]);\n    });\n  });\n*/\n\nimport actions from 'actions';\n\nexport default (store) => (zoomStepFactors) => {\n  if (!zoomStepFactors.length) {\n    return console.warn('zoomStepFactors should have at least one zoomStepFactor object with startZoom equals to 0.');\n  }\n  const newZoomFactorsHasInitialZoomFactor =\n    zoomStepFactors.find((stepFactor) => parseFloat(stepFactor.startZoom) === 0);\n  if (!newZoomFactorsHasInitialZoomFactor) {\n    return console.warn('zoomStepFactors should have at least one zoomStepFactor object with startZoom equals to 0.');\n  }\n  const convertedZoomStepFactors = [];\n  for (let i = 0; i < zoomStepFactors.length; i++) {\n    const { step, startZoom } = zoomStepFactors[i];\n    const convertedZoomStepFactor = {};\n    const parsedStep = parseFloat(step);\n    if (isNaN(parsedStep)) {\n      return console.warn('Invalid step input.');\n    }\n    convertedZoomStepFactor.step = parsedStep;\n\n    const parsedStartZoom = parseFloat(startZoom);\n    if (isNaN(parsedStartZoom)) {\n      return console.warn('Invalid startZoom input.');\n    }\n    convertedZoomStepFactor.startZoom = parsedStartZoom;\n\n    convertedZoomStepFactors.push(convertedZoomStepFactor);\n  }\n\n  store.dispatch(actions.setZoomStepFactors(convertedZoomStepFactors));\n};","import core from 'core';\nimport actions from 'actions';\nimport selectors from 'selectors';\nimport DataElements from '../constants/dataElement';\n\n/**\n * Show bookmark icon shortcuts on the top right corner of each page for quickly adding or removing a bookmark.\n * @method UI.enableBookmarkIconShortcutVisibility\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableBookmarkIconShortcutVisibility();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setBookmarkIconShortcutVisibility(true));\n  const isBookmarkPanelEnabled = !selectors.isElementDisabled(store.getState(), DataElements.BOOKMARK_PANEL);\n  if (isBookmarkPanelEnabled) {\n    core.setBookmarkIconShortcutVisibility(true);\n  }\n};","import core from 'core';\nimport actions from 'actions';\n\n/**\n * Hide bookmark icon shortcuts on the top right corner of each page.\n * @method UI.disableBookmarkIconShortcutVisibility\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableBookmarkIconShortcutVisibility();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.setBookmarkIconShortcutVisibility(false));\n  core.setBookmarkIconShortcutVisibility(false);\n};","import actions from 'actions';\n\n/**\n * Show form field indicators to help navigate or guide users through the process of form filling.\n * @method UI.showFormFieldIndicators\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.showFormFieldIndicators();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.enableElement('formFieldIndicatorContainer'));\n};","import actions from 'actions';\n\n/**\n * Hide form field indicators.\n * @method UI.hideFormFieldIndicators\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.hideFormFieldIndicators();\n  });\n */\nexport default (store) => () => {\n  store.dispatch(actions.disableElement('formFieldIndicatorContainer'));\n};","import core from 'core';\n\n/**\n * Signs a specified signature widget with a specified signature.\n * If no signature is provided, select an available signature or start the process to create a new one, and then use it to sign the signature widget.\n * @method UI.signSignatureWidget\n * @param {Core.Annotations.SignatureWidgetAnnotation} signatureWidget The signature widget to sign.\n * @param {Core.Annotations.FreeHandAnnotation|Core.Annotations.StampAnnotation} [signature] The signature annotation to sign with.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.signSignatureWidget(signatureWidget, signature);\n  });\n */\nexport default async (signatureWidget, signature) => {\n  if (signatureWidget['fieldFlags'].get('ReadOnly')) {\n    throw new Error('Cannot sign READ ONLY signature widget');\n  }\n\n  const annotationManager = core.getAnnotationManager();\n  const signatureTool = core.getTool('AnnotationCreateSignature');\n\n  const handleSignatureReady = (currentSignature) => {\n    signatureWidget.sign(currentSignature);\n    signatureTool.removeEventListener('signatureReady.sign');\n  };\n\n  signatureTool\n    .removeEventListener('signatureReady.sign')\n    .addEventListener('signatureReady.sign', handleSignatureReady);\n\n  if (signatureWidget && !signatureWidget.getAssociatedSignatureAnnotation()) {\n    signatureTool.location = {\n      x: signatureWidget.getX(),\n      y: signatureWidget.getY(),\n      pageNumber: signatureWidget.PageNumber,\n    };\n  } else {\n    return;\n  }\n\n  if (signature) {\n    await signatureTool.setSignature(\n      annotationManager.getAnnotationCopy(signature)\n    );\n    await signatureTool.addSignature();\n  } else {\n    signatureTool.trigger(\n      'locationSelected',\n      {\n        pageNumber: signatureWidget.PageNumber,\n        x: signatureWidget.X,\n        y: signatureWidget.Y,\n      },\n      signatureWidget\n    );\n  }\n};","import { JUSTIFY_CONTENT } from 'constants/customizationVariables';\n\nexport const isJustifyContentValid = (justifyContent) => {\n  const validJustifications = Object.values(JUSTIFY_CONTENT);\n  if (!validJustifications.includes(justifyContent)) {\n    console.warn(`${justifyContent} is not a valid value for justifyContent. Please use one of the following: ${validJustifications}`);\n    return false;\n  }\n  return true;\n};\n\nexport const isGapValid = (gap) => {\n  if (isNaN(gap) || gap < 0) {\n    console.warn(`${gap} is not a valid value for gap. Please use a number, which represents the gap between items in pixels.`);\n    return false;\n  }\n  return true;\n};\n\nexport const isGrowValid = (grow) => {\n  if (isNaN(grow) || grow < 0) {\n    console.warn(`${grow} is not a valid value for grow. Please use a number, which represents the flex-grow property of item.`);\n    return false;\n  }\n  return true;\n};","import actions from 'actions';\nimport { ITEM_TYPE, DEFAULT_GAP, PLACEMENT, DEFAULT_STYLES } from 'constants/customizationVariables';\nimport { isGapValid, isJustifyContentValid } from 'components/ModularComponents/Helpers/validation-helper';\n\nconst { checkTypes, TYPES } = window.Core;\n\n/**\n   * @typedef {Object} ContainerProperties\n   * @property {string} [label] The label of the container.\n   * @property {string} [dataElement] The data element of the container.\n   * @property {'top' | 'bottom' | 'left' | 'right'} [placement] A string that determines the placement of the header.\n   * @property {'start' | 'end' | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'} [justifyContent] A string that determines the flex justify content value of the container.\n   * @property {number} [grow] The flex grow value of the container.\n   * @property {number} [gap] The gap between the items in the container.\n   * @property {'start' | 'center' | 'end'} [position] A string that determines the position of the container.\n   * @property {Array<Object>} [items] The items or other containers within the container.\n   * @property {Object} [style] An object that can set the CSS style of the container.\n   */\n/**\n   * Creates a new instance of ModularHeader.\n   * @name ModularHeader\n   * @memberOf UI.Components\n   * @class UI.Components.ModularHeader\n   * @param {...ContainerProperties} properties An object that contains the properties of the header\n   * @constructor\n   * @example\nconst defaultTopHeader = new instance.UI.Components.ModularHeader({\n  dataElement: 'default-top-header',\n  placement: 'top',\n  grow: 0,\n  gap: 12,\n  position: 'start',\n  stroke: true,\n  dimension: {\n    paddingTop: 8,\n    paddingBottom: 8,\n    borderWidth: 1\n  },\n  style: {},\n  items: [\n    // these items would need to be defined in your code\n    groupedLeftHeaderButtons,\n    ribbonGroup,\n  ]\n});\n*/\n\nexport class ModularHeader {\n  _store;\n\n  constructor(props) {\n    const {\n      label,\n      dataElement,\n      justifyContent,\n      grow = 0,\n      float = false,\n      gap = DEFAULT_GAP,\n      position,\n      placement,\n      opacityMode,\n      opacity,\n      maxWidth,\n      maxHeight,\n      items = [],\n      style = {},\n      stroke = true,\n    } = props;\n    this.type = ITEM_TYPE.MODULAR_HEADER;\n    this.label = label;\n    this.dataElement = dataElement;\n    this.placement = placement;\n    this.justifyContent = justifyContent;\n    this.grow = grow;\n    this.gap = gap;\n    this.position = position;\n    this.float = float;\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this.items = items;\n    this.itemValidTypes = Object.values(ITEM_TYPE);\n    this.opacityMode = opacityMode;\n    this.opacity = opacity;\n\n    this.stroke = stroke;\n    this.dimension = {\n      paddingTop: DEFAULT_STYLES.PADDING,\n      paddingBottom: DEFAULT_STYLES.PADDING,\n      borderWidth: DEFAULT_STYLES.WIDTH,\n    };\n\n    this.style = this.validateStyle(style);\n    this._store = props.store;\n  }\n\n  /**\n   * Sets the style of the ModularHeader (padding, border, background, etc.)\n   * @method UI.Components.ModularHeader#setStyle\n   * @param {Object} style An object that can change the CSS style of the ModularHeader\n   */\n  setStyle(userDefinedStyle) {\n    const style = this.validateStyle(userDefinedStyle);\n    this.style = style;\n    this._store.dispatch(actions.setHeaderStyle(this.dataElement, style));\n  }\n\n  validateStyle = (userDefinedStyle) => {\n    checkTypes([userDefinedStyle], [TYPES.OPTIONAL([TYPES.OBJECT({\n      padding: TYPES.OPTIONAL(TYPES.NUMBER),\n      border: TYPES.OPTIONAL(TYPES.STRING),\n      borderColor: TYPES.OPTIONAL(TYPES.STRING),\n      borderWidth: TYPES.OPTIONAL(TYPES.STRING),\n      borderStyle: TYPES.OPTIONAL(TYPES.STRING),\n    })])], 'ModularHeader.setStyle');\n    if (Object.keys(userDefinedStyle).length === 0) {\n      return {};\n    }\n\n    // If user pass 'border-style: solid' the stroke should appear\n    if (userDefinedStyle.hasOwnProperty('borderStyle')) {\n      this.stroke = true;\n    }\n\n    const {\n      padding,\n      border,\n    } = userDefinedStyle;\n\n    let {\n      borderColor = DEFAULT_STYLES.BORDER_COLOR,\n      borderWidth = DEFAULT_STYLES.WIDTH,\n      borderStyle = DEFAULT_STYLES.BORDER_STYLE,\n    } = userDefinedStyle;\n\n    if (border) {\n      const borderParts = border.split(' ');\n      if (borderParts.length === 3) {\n        [borderWidth, borderStyle, borderColor] = borderParts;\n      } else if (borderParts.length === 2) {\n        [borderWidth, borderStyle] = borderParts;\n      } else if (borderParts.length === 1) {\n        [borderWidth] = borderParts;\n      }\n    }\n\n    if (!padding) {\n      return { ...userDefinedStyle };\n    }\n\n    // Calculate top & bottom padding for dimensions\n    // If it is `padding: '10px'`, top & bottom padding will be 10 padding\n    // If it is `padding: '10px 5px 20px'`, top is 10, bottom is 20 padding\n    // User also can pass padding like this: `padding: 15`, then top-bottom is 15 padding\n    const parsePadding = (paddingStr) => {\n      const parts = paddingStr.split(' ').map((part) => parseInt(part, 10));\n      return (parts.length <= 2)\n        ? { paddingTop: parts[0], paddingBottom: parts[0] }\n        : { paddingTop: parts[0], paddingBottom: parts[2] };\n    };\n\n    const { paddingTop, paddingBottom } = typeof padding === 'string'\n      ? parsePadding(padding) : { paddingTop: padding, paddingBottom: padding };\n\n    this.dimension.paddingTop = paddingTop;\n    this.dimension.paddingBottom = paddingBottom;\n    this.dimension.borderWidth = parseInt(borderWidth, 10);\n\n    const style = { ...userDefinedStyle };\n\n    // Clear out border direction styles, e.g., borderBottomWidth, borderTopStyle\n    // New border styles will be applied according this.placement\n    for (const prop in style) {\n      if (prop.includes('border')) {\n        delete style[prop];\n      }\n    }\n\n    if (this.stroke) {\n      // This function return border style for given placement\n      // e.g. if the placement is Right it will return \"borderLeftStyle\"\n      const borderProperty = (prop) => {\n        if (this.float) {\n          return `border${prop}`;\n        }\n        let side = '';\n        switch (this.placement) {\n          case PLACEMENT.LEFT:\n            side = 'Right';\n            break;\n          case PLACEMENT.RIGHT:\n            side = 'Left';\n            break;\n          case PLACEMENT.BOTTOM:\n            side = 'Top';\n            break;\n          case PLACEMENT.TOP:\n            side = 'Bottom';\n            break;\n          default:\n            break;\n        }\n        return `border${side}${prop}`;\n      };\n\n      style[borderProperty('Style')] = borderStyle;\n      style[borderProperty('Width')] = borderWidth;\n      style[borderProperty('Color')] = borderColor;\n    }\n\n    return style;\n  }\n\n  getDimensionTotal() {\n    const { paddingTop, paddingBottom, borderWidth } = this.dimension;\n    return paddingTop + paddingBottom + borderWidth;\n  }\n\n  /**\n   * Sets the gap between items in the ModularHeader\n   * @method UI.Components.ModularHeader#setGap\n   * @param {number} gap The gap between items in the header\n   */\n  setGap(gap) {\n    if (isGapValid(gap)) {\n      this.gap = gap;\n      this._store.dispatch(actions.setGapBetweenHeaderItems(this.dataElement, gap));\n    }\n  }\n\n  // Validates the items type of a grouped item\n  validateGroupedItems = (groupedItems) => {\n    const items = groupedItems.items || groupedItems.props?.items;\n    items?.forEach((item) => {\n      this.isItemTypeValid(item);\n    });\n  };\n\n  /**\n   * Returns the grouped items contained in the ModularHeader\n   * @method UI.Components.ModularHeader#getGroupedItems\n   * @returns {Array<UI.Components.GroupedItems>} The items of the ModularHeader\n   */\n  getGroupedItems() {\n    return this.getItems(ITEM_TYPE.GROUPED_ITEMS);\n  }\n\n  /**\n   * @typedef {('modularHeader' | 'customButton' | 'statefulButton' | 'groupedItems' | 'ribbonItem' | 'divider' | 'toggleButton' | 'ribbonGroup' | 'toolButton' | 'zoom' | 'flyout' | 'pageControls' | 'presetButton' | 'viewControls' | 'menu' | 'tabPanel')} ItemType\n   * Description of allowable item types.\n   */\n\n  /**\n   * Returns the items contained in the ModularHeader.\n   * @method UI.Components.ModularHeader#getItems\n   * @param {ItemType} [type] Optional type of the items to be returned.\n   * @returns {Array<Object>} The items of the ModularHeader.\n   */\n\n  getItems(type) {\n    if (type) {\n      return this.items.filter((item) => item.type === type);\n    }\n    return this.items;\n  }\n\n  addItemsHelper = (item) => {\n    if (this.isItemTypeValid(item)) {\n      const clonedItem = Object.assign({}, item);\n      this.items.push(clonedItem);\n    }\n  };\n\n  // Shows a warn if the item type is not valid.\n  isItemTypeValid = (item) => {\n    if (this.itemValidTypes.includes(item.type)) {\n      // case it is a grouped items, validates its items as well\n      if (item.type === ITEM_TYPE.GROUPED_ITEMS) {\n        this.validateGroupedItems(item);\n      }\n      return true;\n    }\n    console.warn(`${item.type} is not a valid item type.`);\n    return false;\n  };\n\n  /**\n   * Sets the items in the ModularHeader\n   * @method UI.Components.ModularHeader#setItems\n   * @param {Array<Object>} items The items to set in the header\n   */\n  setItems(newItems) {\n    // Ensure newItems is always an array, even if it's a single item\n    const itemsArray = Array.isArray(newItems) ? newItems : [newItems];\n\n    // Filter out invalid items and add them to the array\n    const itemsToAdd = itemsArray.filter((item) => this.isItemTypeValid(item));\n\n    this.items = itemsToAdd;\n    // We dispatch the update; if the header is not yet added to the store, it will ignore the action\n    this._store.dispatch(actions.setModularHeaderItems(this.dataElement, itemsToAdd));\n  }\n\n  /**\n   * Changes the flex justifyContent property of the ModularHeader\n   * @method UI.Components.ModularHeader#setJustifyContent\n   * @param {'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'} justifyContent A string that determines the flex justify content value of the header\n   */\n  setJustifyContent(justifyContent) {\n    if (isJustifyContentValid(justifyContent)) {\n      this.justifyContent = justifyContent;\n      this._store.dispatch(actions.setHeaderJustifyContent(this.dataElement, justifyContent));\n    }\n  }\n\n  // TODO: ADD JS DOC WHEN READY\n  // /**\n  //  * Changes the max width of the ModularHeader\n  //  * @method UI.Components.ModularHeader#setMaxWidth\n  //  * @param {number} maxWidth the max width of the header\n  //  */\n  setMaxWidth(maxWidth) {\n    if (isNaN(maxWidth) || maxWidth < 0) {\n      console.warn(`${maxWidth} is not a valid value for maxWidth. Please use a number, which represents the maximum width of the header in pixels.`);\n      return;\n    }\n    this.maxWidth = maxWidth;\n    this._store.dispatch(actions.setHeaderMaxWidth(this.dataElement, maxWidth));\n  }\n\n  // TODO: ADD JS DOC WHEN READY\n  // /**\n  //  * Changes the max height of the ModularHeader\n  //  * @method UI.Components.ModularHeader#setMaxHeight\n  //  * @param {number} maxHeight the max height of the header\n  //  */\n  setMaxHeight(maxHeight) {\n    if (isNaN(maxHeight) || maxHeight < 0) {\n      console.warn(`${maxHeight} is not a valid value for maxHeight. Please use a number, which represents the maximum height of the header in pixels.`);\n      return;\n    }\n    this.maxHeight = maxHeight;\n    this._store.dispatch(actions.setHeaderMaxHeight(this.dataElement, maxHeight));\n  }\n}\n\nexport default (store) => (props) => {\n  const propsWithStore = { ...props, store };\n  return new ModularHeader(propsWithStore);\n};","/**\n * Adds new custom Header(s) to the Header list\n * @method UI.addModularHeaders\n * @param {array<UI.Components.ModularHeader>} headerList The list of headers to be added on the application\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top'\n    });\n\n    instance.UI.addModularHeaders([newHeader]);\n */\nimport actions from 'actions';\nimport { ModularHeader } from './ModularComponents/modularHeader';\n\nconst { checkTypes, TYPES } = window.Core;\n\nconst MODULAR_HEADER_LIST_TYPE = TYPES.MULTI_TYPE(TYPES.ARRAY(TYPES.OBJECT(ModularHeader)), TYPES.OBJECT(ModularHeader));\n\nexport default (store) => (headerList) => {\n  checkTypes([headerList], [MODULAR_HEADER_LIST_TYPE], 'UI.addModularHeaders');\n  store.dispatch(actions.addModularHeaders(headerList));\n};","import actions from 'actions';\nimport { ITEM_TYPE, DEFAULT_GAP } from 'constants/customizationVariables';\nimport { isGapValid, isGrowValid, isJustifyContentValid } from 'components/ModularComponents/Helpers/validation-helper';\n\nconst { checkTypes, TYPES } = window.Core;\n\nexport class GroupedItems {\n  /**\n   * Creates a new instance of GroupedItems.\n   * @name GroupedItems\n   * @memberOf UI.Components\n   * @class UI.Components.GroupedItems\n   * @constructor\n   * @param {ContainerProperties} properties  An object that contains the properties of the grouped items.\n   * @param {string} [properties.dataElement] The data element of the grouped item.\n   * @param {'top' | 'bottom' | 'left' | 'right'} [properties.placement] A string that determines the placement of the header.\n   * @param {'start' | 'end' | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'} [properties.justifyContent] A string that determines the flex justify content value of the grouped items container.\n   * @param {number} [properties.grow] The flex grow value of the grouped items container.\n   * @param {number} [properties.gap] The gap between the items in the grouped items container.\n   * @param {'start' | 'center' | 'end'} [properties.position] A string that determines the position of the grouped items container.\n   * @param {boolean} [properties.alwaysVisible]  Whether the group should always be visible or not. Default is false. Alternatively, visibility can be toggled by changing the active grouped item using a Ribbon Item.\n   * @param {Object} [properties.style] An object that can set the CSS style of the grouped items.\n   * @param {Array<Object>} [properties.items] The items within the grouped items container. The valid items are: {@link UI.Components.ModularHeader}, {@link UI.Components.CustomButton}, {@link UI.Components.StatefulButton}, {@link UI.Components.GroupedItems}, {@link UI.Components.RibbonItem}, {@link UI.Components.ToggleElementButton}, {@link UI.Components.RibbonGroup}, {@link UI.Components.ToolButton}, {@link UI.Components.Zoom}, {@link UI.Components.Flyout}, {@link UI.Components.PageControls}, {@link UI.Components.PresetButton}, {@link UI.Components.ViewControls}, {@link UI.Components.TabPanel}.\n   * @example\nconst groupedLeftHeaderButtons = new instance.UI.Components.GroupedItems({\n  dataElement: 'groupedLeftHeaderButtons',\n  grow: 0,\n  gap: 12,\n  position: 'start',\n  style: {},\n  items: [\n    // these items would need to be defined in your code\n    leftHeaderButton1,\n    leftHeaderButton2,\n    leftHeaderButton3\n  ],\n  alwaysVisible: true,\n});\n   */\n  constructor(props) {\n    const {\n      label,\n      dataElement,\n      justifyContent,\n      grow = 0,\n      gap = DEFAULT_GAP,\n      position,\n      placement,\n      items = [],\n      alwaysVisible = false,\n      style = {},\n    } = props;\n    this.label = label;\n    this.dataElement = dataElement;\n    this.placement = placement;\n    this._justifyContent = justifyContent;\n    this._grow = grow;\n    this._gap = gap;\n    this.position = position;\n    this.items = items;\n    this.type = ITEM_TYPE.GROUPED_ITEMS;\n    this.alwaysVisible = alwaysVisible;\n    this.style = style;\n    this.store = props.store;\n  }\n\n  /**\n   * Sets the gap between items in the GroupedItems\n   * @method UI.Components.GroupedItems#setGap\n   * @param {number} gap The gap in pixels between the items in the group.\n   */\n  setGap(gap) {\n    if (isGapValid(gap)) {\n      this._gap = gap;\n      this.store.dispatch(actions.setModularComponentProperty('gap', gap, this.dataElement));\n    }\n  }\n\n  /**\n   * Sets the style of the GroupedItems (padding, border, background, etc.)\n   * @method UI.Components.GroupedItems#setStyle\n   * @param {Object} style An object that can change the CSS style of the group.\n   * @example\n    groupedItems.setStyle({\n      background: 'aliceblue',\n      border: '8px dashed',\n      padding: '8px 12px'\n    });\n   */\n  setStyle(style) {\n    checkTypes([style], [TYPES.OBJECT({})], 'GroupedItem.setStyle');\n    this.style = style;\n    this.store.dispatch(actions.setModularComponentProperty('style', style, this.dataElement));\n  }\n\n  /**\n   * Sets the flex justifyContent property of the GroupedItems\n   * @method UI.Components.GroupedItems#setJustifyContent\n   * @param {'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'} justifyContent A string that determines the flex justify content value of the group\n   */\n  setJustifyContent(justifyContent) {\n    if (isJustifyContentValid(justifyContent)) {\n      this._justifyContent = justifyContent;\n      this.store.dispatch(actions.setModularComponentProperty('justifyContent', justifyContent, this.dataElement));\n    }\n  }\n\n  /**\n   * Sets the flex grow property of the GroupedItems\n   * @method UI.Components.GroupedItems#setGrow\n   * @param {number} grow The flex grow value of the group\n   */\n  setGrow(grow) {\n    if (isGrowValid(grow)) {\n      this._grow = grow;\n      this.store.dispatch(actions.setModularComponentProperty('grow', grow, this.dataElement));\n    }\n  }\n\n  /**\n   * Sets the items in the GroupedItems\n   * @method UI.Components.GroupedItems#setItems\n   * @param {Array<Object>} items The items to set in the group.\n   */\n  setItems(items) {\n    checkTypes([items], [TYPES.ARRAY(TYPES.ANY)], 'GroupedItems.setItems');\n    this.items = items;\n    this.store.dispatch(actions.updateGroupedItems(this.dataElement, items));\n  }\n\n  getGroupedItemProperty = (property) => {\n    const state = this.store.getState();\n    if (state && state.viewer && state.viewer.modularComponents) {\n      const component = state.viewer.modularComponents[this.dataElement];\n      if (component && component.hasOwnProperty(property)) {\n        return component[property];\n      }\n    }\n    // If the component is not yet in redux we return the property that we have in the class\n    return this[`_${property}`];\n  }\n\n  get gap() {\n    return this.getGroupedItemProperty('gap');\n  }\n\n  set gap(gap) {\n    this.setGap(gap);\n  }\n\n  get justifyContent() {\n    return this.getGroupedItemProperty('justifyContent');\n  }\n\n  set justifyContent(justifyContent) {\n    this.setJustifyContent(justifyContent);\n  }\n\n  get grow() {\n    return this.getGroupedItemProperty('grow');\n  }\n\n  set grow(grow) {\n    this.setGrow(grow);\n  }\n}\n\nexport default (store) => (props) => {\n  const propsWithStore = { ...props, store };\n  return new GroupedItems(propsWithStore);\n};","/**\n * Item options\n * @typedef {Object} ItemProperties\n * @property {string} [dataElement] The data element of the item.\n * @property {string} [title] The tooltip of the item.\n * @property {boolean} [disabled] Whether the item is disabled or not.\n * @property {string} [type] The type of the item.\n */\n/**\n * An abstract class for creating WebViewer Modular UI items.\n * @name Item\n * @memberOf UI.Components\n * @class UI.Components.Item\n * @abstract\n * @param {ItemProperties} [properties] An object that contains the properties of the item.\n*/\nclass Item {\n  constructor(options) {\n    if (this.constructor === Item) {\n      throw new Error('Abstract class \"Item\" cannot be instantiated directly.');\n    }\n    const { dataElement, title, disabled, type } = options;\n    this._dataElement = dataElement;\n    this.title = title;\n    this.disabled = disabled;\n    this.type = type;\n  }\n  get dataElement() {\n    return this._dataElement;\n  }\n  set dataElement(val) {\n    console.warn(`Modular Item's \"${this._dataElement}\" dataElement property cannot be changed to \"${val}\"`);\n  }\n}\n\nexport default Item;","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport Item from './item';\n\nconst { checkTypes, TYPES } = window.Core;\n\n/**\n * Creates a new instance of CustomButton.\n * @name CustomButton\n * @memberOf UI.Components\n * @class UI.Components.CustomButton\n * @extends UI.Components.Item\n * @param {Object} options An object that contains the properties of the CustomButton.\n * @param {string} [options.dataElement] The data element of the button.\n * @param {string} [options.label] The label of the button.\n * @param {string} [options.title] The title of the button.\n * @param {string} [options.img] The icon of the button.\n * @param {function} [options.onClick] The function that is called when the button is clicked.\n * @example\nconst testButton = new instance.UI.Components.CustomButton({\n  label: 'test',\n  title: 'this is a test button',\n  onClick: () => console.log('button clicked!'),\n  img: 'icon-save',\n});\n */\n\nclass CustomButton extends Item {\n  constructor(props) {\n    checkTypes([props], [TYPES.OBJECT({\n      dataElement: TYPES.STRING,\n      label: TYPES.OPTIONAL(TYPES.STRING),\n      img: TYPES.OPTIONAL(TYPES.STRING),\n    })], 'Custom Button Constructor');\n    const { label, img, onClick } = props;\n    super(props);\n    this.type = ITEM_TYPE.BUTTON;\n    this.label = label;\n    this.img = img;\n    this.onClick = onClick;\n    this.type = ITEM_TYPE.BUTTON;\n  }\n}\n\nexport default CustomButton;","import { GroupedItems } from './groupedItems';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\nimport actions from 'actions';\n\n/**\n * Creates a new instance of RibbonGroup.\n * @name RibbonGroup\n * @memberOf UI.Components\n * @extends UI.Components.GroupedItems\n * @class UI.Components.RibbonGroup\n * @constructor\n * @param {ContainerProperties} properties - An object that contains the properties of the ribbon group.\n * @param {string} [properties.dataElement] - A string representing the data element of the ribbon group.\n * @param {Array<UI.Components.RibbonItem>} properties.items - The items in the ribbon group. Non-ribbon items will be ignored.\n * @param {'column' | 'row'} [properties.headerDirection] - A string describing the direction of the header in which the ribbon will be placed.\n * @param {'top' | 'bottom' | 'left' | 'right'} [properties.placement] - A string describing the placement of the header in which the ribbon will be placed.\n * @param {'start' | 'end' | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'} [properties.justifyContent] - A string that determines the flex justify content value of the container.\n * @param {number} [properties.grow] - The flex grow value of the ribbon group.\n *\n * @example\nconst ribbonGroup = new instance.UI.Components.RibbonGroup({\n  dataElement: 'default-ribbon-group',\n  grow: 2,\n  justifyContent: 'start',\n  title: 'Default Ribbon Group',\n  type: 'ribbonGroup',\n  items: [\n  // these items would need to be defined in your code\n    viewRibbonItem,\n    annotateRibbonItem,\n    shapesRibbomItem,\n    insertRibbonItem,\n    redactionRibbonItem,\n    measureRibbonItem,\n    editRibbonItem,\n    contentEditRibbonItem,\n    fillAndSignRibbonItem,\n    formsRibbonItem,\n  ]\n});\n */\nclass RibbonGroup extends GroupedItems {\n  constructor(props) {\n    const { dataElement, items, headerDirection, headerPlacement } = props;\n    super(props);\n    this.dataElement = dataElement;\n    this.type = ITEM_TYPE.RIBBON_GROUP;\n    this.items = items;\n    // change how the flex dropdown appears based on the direction and placement of the header\n    this.headerDirection = headerDirection;\n    this.headerPlacement = headerPlacement;\n  }\n}\n\nexport default (store) => (props) => {\n  const propsWithStore = { ...props, store };\n\n  // Adding the custom ribbon group items to the redux store\n  props.items.forEach((item) => {\n    if (item.groupedItems?.length) {\n      store.dispatch(actions.setHeaderItems(item.toolbarGroup, item.groupedItems));\n    }\n  });\n\n  return new RibbonGroup(propsWithStore);\n};","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport Item from './item';\n\n/**\n * Creates a new instance of RibbonItem.\n * @name RibbonItem\n * @memberOf UI.Components\n * @class UI.Components.RibbonItem\n * @extends UI.Components.Item\n * @param {Object} properties An object that contains the properties of the Ribbon Item.\n * @param {string} [properties.dataElement] The data element of the ribbon item.\n * @param {string} [properties.title] The tooltip of the ribbon item.\n * @param {boolean} [properties.disabled] Whether the item is disabled or not.\n * @param {string} [properties.label] The label of the item.\n * @param {string} [properties.img] The icon of the item.\n * @param {string} [properties.toolbarGroup] The group that the item belongs to.\n * @param {Array<UI.Components.Item>} [properties.groupedItems] Grouped Items to be contained by the RibbonItem.\n * @example\nconst ribbonItem = new instance.UI.Components.RibbonItem({\n  dataElement: 'toolbarGroup-Annotate',\n  title: 'Annotate',\n  type: 'ribbonItem',\n  label: 'Annotate',\n  groupedItems: [\n    'annotateGroupedItems'\n  ],\n  toolbarGroup: 'toolbarGroup-Annotate'\n});\n */\nclass RibbonItem extends Item {\n  constructor(props) {\n    const { label, img, toolbarGroup, groupedItems, direction } = props;\n    super(props);\n    this.type = ITEM_TYPE.RIBBON_ITEM;\n    this.label = label;\n    this.img = img;\n    this.toolbarGroup = toolbarGroup;\n    this.type = ITEM_TYPE.RIBBON_ITEM;\n    this.direction = direction;\n\n    this.groupedItems = [];\n    if (Array.isArray(groupedItems)) {\n      groupedItems.forEach((group) => {\n        this.groupedItems.push(group);\n      });\n    } else {\n      this.groupedItems.push(groupedItems);\n    }\n  }\n}\n\nexport default RibbonItem;","import Item from './item';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\n/**\n * Creates a new instance of PageControls. A prebuilt component that allows users to change the page of the document.\n * @name PageControls\n * @memberOf UI.Components\n * @class UI.Components.PageControls\n * @extends UI.Components.Item\n * const pageControls = new UI.Components.PageControls();\n */\nclass PageControls extends Item {\n  constructor(props = {}) {\n    super(props);\n    this.type = ITEM_TYPE.PAGE_CONTROLS;\n    this._dataElement = 'page-controls-container';\n  }\n}\n\nexport default PageControls;","import { ITEM_TYPE, PRESET_BUTTON_TYPES } from 'src/constants/customizationVariables';\nimport Item from './item';\n\nconst { checkTypes, TYPES } = window.Core;\n\n/**\n * Creates a new instance of PresetButton.\n * @name PresetButton\n * @memberOf UI.Components\n * @class UI.Components.PresetButton\n * @extends UI.Components.Item\n * @param {Object} properties An object that contains the properties of the PresetButton.\n * @param {string} [properties.dataElement] The data element of the preset button.\n * @param {string} [properties.buttonType] The type of the button. Refer to: {@link UI.PRESET_BUTTON_TYPES}\n * @example\nconst presetButton = new instance.UI.Components.PresetButton({\n  buttonType: 'saveAsButton',\n  dataElement: 'presetButton-save'\n});\n */\nclass PresetButton extends Item {\n  constructor(props = {}) {\n    checkTypes([props], [TYPES.OBJECT({\n      buttonType: TYPES.ONE_OF(...Object.values(PRESET_BUTTON_TYPES)),\n      dataElement: TYPES.OPTIONAL(TYPES.STRING),\n    })], 'Preset Button Constructor');\n    super(props);\n    this.type = ITEM_TYPE.PRESET_BUTTON;\n    this.buttonType = props.buttonType;\n    this._dataElement = props.dataElement || this.buttonType;\n  }\n}\n\nexport default PresetButton;","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport Item from './item';\n\nconst { checkTypes, TYPES } = window.Core;\n\n/**\n * Creates a new instance of StatefulButton.\n * @name StatefulButton\n * @memberOf UI.Components\n * @class UI.Components.StatefulButton\n * @extends UI.Components.Item\n * @param {Object} properties An object that contains the properties of the StatefulButton.\n * @param {Object} [properties.states] An object that contains the states of the button.\n * @param {string} [properties.initialState] The initial state of the button.\n * @param {function} [properties.mount] The function that is called when the button is mounted.\n * @param {function} [properties.unmount] The function that is called when the button is unmounted.\n * @param {string} [properties.dataElement] The data element of the button.\n * @param {string} [properties.title] The title of the button which appears in a tooltip.\n * @param {boolean} [properties.hidden] Whether the button is hidden or not.\n * @example\nconst myButton = new instance.UI.Components.StatefulButton({\n  initialState: 'SinglePage',\n  states: {\n    SinglePage: {\n      img: 'icon-header-page-manipulation-page-layout-single-page-line',\n      onClick: (update) => {\n        update('DoublePage');\n      },\n      title: 'Single Page',\n    },\n    DoublePage: {\n      img: 'icon-header-page-manipulation-page-layout-double-page-line',\n      onClick: (update) => {\n        update('SinglePage');\n      },\n      title: 'Double Page',\n    },\n  },\n  mount: () => {},\n});\n */\nclass StatefulButton extends Item {\n  constructor(props) {\n    checkTypes([props], [TYPES.OBJECT({\n      initialState: TYPES.STRING,\n      mount: TYPES.FUNCTION,\n      states: TYPES.OBJECT({}),\n      dataElement: TYPES.OPTIONAL(TYPES.STRING),\n      unmount: TYPES.OPTIONAL(TYPES.FUNCTION),\n      title: TYPES.OPTIONAL(TYPES.STRING),\n      hidden: TYPES.OPTIONAL(TYPES.BOOLEAN),\n    })], 'Stateful Button Constructor');\n\n    const { initialState, mount, unmount, dataElement, title, hidden, states } = props;\n    super(props);\n    this.type = ITEM_TYPE.STATEFUL_BUTTON;\n    this.initialState = initialState;\n    this.mount = mount;\n    this.unmount = unmount;\n    this._dataElement = dataElement;\n    this.title = title;\n    this.hidden = hidden;\n    this.states = states;\n  }\n}\n\nexport default StatefulButton;","import Item from './item';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\n\n/**\n * Creates a new instance of ToggleElementButton.\n * @name ToggleElementButton\n * @memberOf UI.Components\n * @class UI.Components.ToggleElementButton\n * @extends UI.Components.Item\n * @param {Object} properties An object that contains the properties of the ToggleElementButton.\n * @param {string} [properties.dataElement] The dataElement of toggle button.\n * @param {string} properties.toggleElement The dataElement of the element to toggle.\n * @param {string} [properties.title] The tooltip text to be displayed when hovering over the toggle button.\n * @param {string} [properties.label] The label of the button.\n * @param {string} [properties.img] The title of the button which appears in a tooltip.\n * @example\nconst toggleButton = new instance.UI.Components.ToggleElementButton({\n  label: 'Toggle',\n  title: 'Toggle the visibility of the element',\n  img: 'icon-save',\n  toggleElement: 'elementToToggle',\n});\n */\nclass ToggleElementButton extends Item {\n  constructor(props) {\n    const { label, img, toggleElement } = props;\n    super(props);\n    this.type = ITEM_TYPE.TOGGLE_BUTTON;\n    this.label = label;\n    this.img = img;\n    this.toggleElement = toggleElement;\n  }\n}\n\nexport default ToggleElementButton;","import { ITEM_TYPE } from 'src/constants/customizationVariables';\nimport Item from './item';\n\n/**\n * Creates a new instance of ToolButton.\n * @name ToolButton\n * @memberOf UI.Components\n * @class UI.Components.ToolButton\n * @extends UI.Components.Item\n * @param {Object} properties An object that contains the properties of the ToolButton.\n * @param {string} [properties.dataElement] The data element of the button.\n * @param {string} [properties.label] The label of the button.\n * @param {string} [properties.img] The icon of the button.\n * @param {Core.Tools.ToolNames | string} [properties.toolName] The name of the tool that the button activates. Refer to: {@link Core.Tools.ToolNames}\n * @example\nconst toolButton = new instance.UI.Components.ToolButton({\n  label: 'Pan',\n  title: 'Pan the document',\n  img: 'icon-header-pan',\n  toolName: 'Pan',\n});\n */\nclass ToolButton extends Item {\n  constructor(props) {\n    const { isActive, label, img, onClick, toolName, color } = props;\n    super(props);\n    this.type = ITEM_TYPE.TOOL_BUTTON;\n    this.isActive = isActive;\n    this.label = label;\n    this.img = img;\n\n    if (onClick) {\n      this.onClick = onClick;\n    }\n    this.toolName = toolName;\n    this.color = color;\n  }\n}\n\nexport default ToolButton;","import Item from './item';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n/**\n * Creates a new instance of ViewControls. A prebuilt feature that allows users to change the Page Transition, Orientation, and Layout of the document.\n * @name ViewControls\n * @memberOf UI.Components\n * @class UI.Components.ViewControls\n * @extends UI.Components.Item\n * @example\n * const viewControlsToggle = new UI.Components.ViewControls();\n */\nclass ViewControls extends Item {\n  constructor(props = {}) {\n    super(props);\n    this.type = ITEM_TYPE.VIEW_CONTROLS;\n    this._dataElement = 'view-controls';\n  }\n}\n\nexport default ViewControls;","import { ITEM_TYPE } from 'constants/customizationVariables';\nimport { panelNames } from 'constants/panel';\n\nconst { checkTypes, TYPES } = window.Core;\n\nexport const panelItemType = TYPES.OBJECT({\n  dataElement: TYPES.OPTIONAL(TYPES.STRING),\n  icon: TYPES.OPTIONAL(TYPES.STRING),\n  label: TYPES.OPTIONAL(TYPES.STRING),\n  render: TYPES.MULTI_TYPE(\n    TYPES.FUNCTION,\n    TYPES.STRING, // For preset panels\n  )\n});\n\nexport const UNSUPPORTED_PANELS = [panelNames.REDACTION, panelNames.TEXT_EDITING, panelNames.SIGNATURE_LIST, panelNames.RUBBER_STAMP];\n\n/**\n * @typedef {Object} TabPanelItemProperties\n * @property {string} [dataElement] Unique dataElement name for the panel.\n * @property {string} [icon] Path to an image or base64 data. Can also be the filename of a .svg from the WebViewer icons folder found here:\n *   {@link https://github.com/PDFTron/webviewer-ui/tree/master/assets/icons/ assets/icons/} (i.e. `icon-save` to use `icon-save.svg`).\n * @property {string} [label] The label to be displayed for the panel in the Tab Panel.\n * @property {function|string} render The function that renders the panel or the name of the preset panel.\n */\n\n/**\n * @typedef {Object} TabPanelProperties\n * @property {string} dataElement Unique dataElement name for the tab panel.\n * @property {Array<TabPanelItemProperties>} panelsList The list of panels to be displayed in the tab panel.\n * @property {string} [location] The location of the panel. It can be either 'left' or 'right'\n */\n\n/**\n * Creates a new instance of TabPanel.\n * @name TabPanel\n * @memberOf UI.Components\n * @class UI.Components.TabPanel\n * @param {TabPanelProperties} options An object that contains the properties of the tab panel.\n * @example\nconst tabPanel = new UI.Components.TabPanel({\n    dataElement: 'tabPanel',\n    panelsList: [\n      {\n        render: UI.Panels.THUMBNAIL\n      },\n      {\n        render: UI.Panels.OUTLINE\n      },\n      {\n        render: UI.Panels.BOOKMARKS\n      },\n      {\n        render: UI.Panels.LAYERS\n      },\n      {\n        render: UI.Panels.SIGNATURE\n      },\n      {\n        render: UI.Panels.FILE_ATTACHMENT\n      },\n      {\n        render: UI.Panels.PORTFOLIO\n      }\n    ],\n    location: 'left'\n  });\n */\nclass TabPanel {\n  constructor(props) {\n    checkTypes([props], [TYPES.OBJECT({\n      dataElement: TYPES.STRING,\n      location: TYPES.OPTIONAL(TYPES.STRING),\n      panelsList: TYPES.ARRAY(panelItemType),\n    })], 'Tab Panel Constructor');\n    const { dataElement, panelsList, location } = props;\n\n\n    const filteredPanelList = [];\n    for (const panel of panelsList) {\n      if (UNSUPPORTED_PANELS.includes(panel.render)) {\n        console.error(`TabPanel: ${panel.render} is not supported in the tab panel`);\n      } else {\n        filteredPanelList.push(panel);\n      }\n    }\n\n    this.render = ITEM_TYPE.TABS_PANEL;\n    this.dataElement = dataElement;\n    this.panelsList = filteredPanelList;\n    this.location = location || 'left';\n  }\n}\n\nexport default TabPanel;","import Item from './item';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\n/**\n * Creates a new instance of Zoom. A prebuilt feature that allows users to zoom in and out of the document.\n * @name Zoom\n * @memberOf UI.Components\n * @class UI.Components.Zoom\n * @extends UI.Components.Item\n * @example\n * const zoomControls = new UI.Components.Zoom();\n */\nclass Zoom extends Item {\n  constructor(props = {}) {\n    super(props);\n    this.type = ITEM_TYPE.ZOOM;\n    this._dataElement = props.dataElement || 'zoom-container';\n  }\n}\n\nexport default Zoom;","import GroupedItems from './groupedItems';\nimport CustomButton from './customButton';\nimport RibbonGroup from './ribbonGroup';\nimport RibbonItem from './ribbonItem';\nimport PageControls from './pageControls';\nimport PresetButton from './presetButton';\nimport StatefulButton from './statefulButton';\nimport ToggleElementButton from './toggleElementButton';\nimport ToolButton from './toolButton';\nimport ViewControls from './viewControls';\nimport TabPanel from './tabPanel';\nimport Zoom from './zoom';\nimport { ITEM_TYPE } from 'constants/customizationVariables';\n\n\nexport default function createModularInstance(item, store) {\n  const { type } = item;\n  switch (type) {\n    case ITEM_TYPE.GROUPED_ITEMS:\n      const nestedItems = item.items.map((nestedItem) => createModularInstance(nestedItem, store));\n      return new GroupedItems(store)({ ...item, items: nestedItems });\n    case ITEM_TYPE.BUTTON:\n      return new CustomButton(item);\n    case ITEM_TYPE.RIBBON_GROUP:\n      const ribbonItems = item.items.map((nestedItem) => createModularInstance(nestedItem, store));\n      return new RibbonGroup(store)({ ...item, items: ribbonItems });\n    case ITEM_TYPE.RIBBON_ITEM:\n      return new RibbonItem(item);\n    case ITEM_TYPE.PAGE_CONTROLS:\n      return new PageControls(item);\n    case ITEM_TYPE.PRESET_BUTTON:\n      return new PresetButton(item);\n    case ITEM_TYPE.STATEFUL_BUTTON:\n      return new StatefulButton(item);\n    case ITEM_TYPE.TOGGLE_BUTTON:\n      return new ToggleElementButton(item);\n    case ITEM_TYPE.TOOL_BUTTON:\n      return new ToolButton(item);\n    case ITEM_TYPE.VIEW_CONTROLS:\n      return new ViewControls(item);\n    case ITEM_TYPE.ZOOM:\n      return new Zoom(item);\n    case ITEM_TYPE.TABS_PANEL:\n      return new TabPanel(item);\n    default:\n      // By default the items has all relevant info, so we just return it if for some reason no class exists\n      // The benefit of returning an instance of a class is that that has\n      // some extra methods that can be used to manipulate the item and refresh the UI\n      return item;\n  }\n}","/**\n * Returns a modular header component with the given dataElement.\n * @method UI.getModularHeader\n * @param {string} dataElement The dataElement of the header to be returned\n * @return {UI.Components.ModularHeader} Custom Header\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const header = instance.UI.getModularHeader('custom-header')\n  });\n */\n\nimport selectors from 'selectors';\nimport ModularHeader from './ModularComponents/modularHeader';\nimport createModularInstance from './ModularComponents/createModularInstance';\n\nexport default (store) => (dataElement) => {\n  const hydratedHeader = selectors.getHydratedHeader(store.getState(), dataElement);\n\n  if (!hydratedHeader) {\n    console.warn(`There is no header with dataElement ${dataElement}`);\n    return null;\n  }\n\n  const nestedItems = hydratedHeader.items.map((item) => createModularInstance(item, store));\n  return new ModularHeader(store)({ ...hydratedHeader, items: nestedItems });\n};","/**\n * Return the list of Custom Headers.\n * @method UI.getModularHeaderList\n * @return {UI.Components.ModularHeader} Custom Header List\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const headerList = instance.UI.getModularHeaderList()\n  });\n */\n\n\nimport selectors from 'selectors';\nimport ModularHeader from './ModularComponents/modularHeader';\nimport createModularInstance from './ModularComponents/createModularInstance';\n\nexport default (store) => () => {\n  const hydratedHeaders = selectors.getHydratedHeaders(store.getState());\n\n  // Now we create instance of each class and return it\n  return hydratedHeaders.map((header) => {\n    const nestedItems = header.items.map((item) => createModularInstance(item, store));\n    const headerInstance = new ModularHeader(store)({ ...header, items: nestedItems });\n    return headerInstance;\n  });\n};","/**\n * Returns a list of panels that are currently in the UI\n * @method UI.getPanels\n * @return {Array<UI.Components.Panel>} Array of Panel objects\n * @example\n WebViewer(...)\n .then(function(instance) {\n const panelList = instance.UI.getPanels();\n console.log(panelList);\n });\n */\n\nimport selectors from 'selectors';\nimport actions from 'actions';\nimport { panelNames } from 'constants/panel';\nimport { panelItemType, UNSUPPORTED_PANELS } from 'src/apis/ModularComponents/tabPanel';\n\nexport default (store) => () => {\n  const panels = selectors.getGenericPanels(store.getState());\n  return panels.map((panel) => (panel.render === panelNames.TABS ? new TabPanel(store, panel) : new Panel(store, panel)));\n};\n\n/**\n * Represents a panel abstraction that can be used to manipulate a panel in the UI\n * @name Panel\n * @memberOf UI.Components\n * @class UI.Components.Panel\n * @example\n WebViewer(...)\n .then(function(instance) {\n // Returns a list of instances of the panel, each instance can be used to manipulate the panel in the UI using the methods below\n const panelList = instance.UI.getPanels();\n });\n *\n */\nexport class Panel {\n  _store;\n  /**\n   * The data element string for the panel.\n   * @name UI.Components.Panel#dataElement\n   * @type {string}\n   */\n  _dataElement;\n  _render;\n  _location;\n\n  constructor(store, panel) {\n    this._store = store;\n    this._dataElement = panel.dataElement;\n    this._render = panel.render;\n    this._location = panel.location;\n  }\n\n  /**\n   * Sets the location of the panel in the UI\n   * @method UI.Components.Panel#setLocation\n   * @param {string} location The location of the panel, setting this will update the panel in the UI. It can be either 'left' or 'right'\n   * @example\n   * WebViewer(...)\n   *  .then(function(instance) {\n   *  const panelList = instance.UI.getPanels();\n   *  panelList[0].setLocation('right');\n   *  });\n   */\n  setLocation(location) {\n    const { TYPES, checkTypes } = window.Core;\n    checkTypes([location], [TYPES.ONE_OF('left', 'right')], 'Panel.setLocation');\n    this.location = location;\n    const panelList = selectors.getGenericPanels(this._store.getState());\n    const panel = panelList.find((panel) => panel.dataElement === this._dataElement);\n    if (!panel) {\n      console.warn(`Cannot set location for panel ${this._dataElement}. It may have been deleted.`);\n      return;\n    }\n    panel.location = location;\n    this._store.dispatch(actions.setGenericPanels(panelList));\n  }\n\n  /**\n   * Deletes the panel from the UI\n   * @method UI.Components.Panel#delete\n   * @example\n   * WebViewer(...)\n   * .then(function(instance) {\n   * const panelList = instance.UI.getPanels();\n   * panelList[0].delete();\n   * });\n   */\n  delete() {\n    const panelList = selectors.getGenericPanels(this._store.getState());\n    const panelIndex = panelList.findIndex((panel) => panel.dataElement === this._dataElement);\n    if (panelIndex === -1) {\n      return;\n    }\n    panelList.splice(panelIndex, 1);\n    this._store.dispatch(actions.setGenericPanels(panelList));\n  }\n\n  updatePanelInStore(oldDataElement = undefined) {\n    const panelList = selectors.getGenericPanels(this._store.getState());\n    const panelIndex = panelList.findIndex((panel) => panel.dataElement === (oldDataElement || this._dataElement));\n    if (panelIndex === -1) {\n      return;\n    }\n    const [oldPanelObject] = panelList.splice(panelIndex, 1);\n    panelList.push({ ...oldPanelObject, ...this.toObject() });\n    this._store.dispatch(actions.setGenericPanels(panelList));\n  }\n\n  toObject() {\n    return {\n      dataElement: this._dataElement,\n      location: this._location,\n      render: this._render,\n    };\n  }\n\n  get dataElement() {\n    return this._dataElement;\n  }\n\n  set dataElement(dataElement) {\n    const { TYPES, checkTypes } = window.Core;\n    checkTypes([dataElement], [TYPES.STRING], 'set Panel.dataElement');\n    const oldDataElement = this._dataElement;\n    this._dataElement = dataElement;\n    this.updatePanelInStore(oldDataElement);\n  }\n\n  get render() {\n    return this._render;\n  }\n\n  set render(render) {\n    const { TYPES, checkTypes } = window.Core;\n    checkTypes([render], [TYPES.MULTI_TYPE(TYPES.ONE_OF(...Object.values(panelNames)), TYPES.FUNCTION)], 'set Panel.render');\n    this._render = render;\n    this.updatePanelInStore();\n  }\n\n  /**\n   * The location of the panel ('left' or 'right').\n   * @name UI.Components.Panel#location\n   * @type {string}\n   */\n  get location() {\n    return this._location;\n  }\n\n  set location(location) {\n    const { TYPES, checkTypes } = window.Core;\n    checkTypes([location], [TYPES.ONE_OF('left', 'right')], 'set Panel.location');\n    this._location = location;\n    this.updatePanelInStore();\n  }\n}\n\nclass TabPanel extends Panel {\n  _panelsList;\n\n  constructor(store, panel) {\n    super(store, panel);\n    this._render = 'tabPanel';\n    this._panelsList = panel.panelsList;\n  }\n\n  set render(__) {\n    console.error('TabPanel render cannot be changed. You probably meant to change the render of one of the panels in TabPanel.panelsList');\n  }\n\n  get render() {\n    return this._render;\n  }\n\n  /**\n   * The panels to be displayed in the tab panel.\n   * @name UI.Components.TabPanel#panelsList\n   * @type {Array<Panel>}\n   */\n  get panelsList() {\n    return this._panelsList;\n  }\n\n  set panelsList(panelsList) {\n    const { TYPES, checkTypes } = window.Core;\n    checkTypes([panelsList], [TYPES.ARRAY(TYPES.MULTI_TYPE(TYPES.OBJECT(Panel), panelItemType))], 'set TabPanel.panelsList');\n    panelsList = panelsList.map((panel) => {\n      if (panel instanceof Panel) {\n        return panel.toObject();\n      }\n      return panel;\n    });\n    panelsList = panelsList.filter((panel) => {\n      if (UNSUPPORTED_PANELS.includes(panel.render)) {\n        console.error(`TabPanel: ${panel.render} is not supported in the tab panel`);\n        return false;\n      }\n      return true;\n    });\n    this._panelsList = panelsList;\n    this.updatePanelInStore();\n  }\n\n  toObject() {\n    return {\n      ...super.toObject(),\n      panelsList: this._panelsList,\n    };\n  }\n}","import actions from 'actions';\nimport { panelNames } from 'constants/panel';\nimport { Panel } from 'src/apis/getPanels';\n\n/**\n * @typedef {Object} PanelProperties\n * @property {string} dataElement The data-element for panel.\n * @property {string} location Location of the panel in UI, left or right.\n * @property {string | UI.renderCustomPanel} render Either the name of a predefined panel to render or a function that returns a panel element.\n */\n\n/**\n * Adds a custom panel in left or right side of the UI.\n * @method UI.addPanel\n * @param {Object<PanelProperties>} panel The panel object to be added in the UI.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addPanel({\n      dataElement: 'myNewOutlinesPanel',\n      render: instance.UI.Panels.OUTLINE,\n    })\n\n    instance.UI.openElements(['myNewOutlinesPanel']);\n  });\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.addPanel({\n      dataElement: 'fooBarElement',\n      location: 'left',\n      render: function() {\n        var div = document.createElement('div');\n        div.innerHTML = 'Hello World, foobar panel';\n        return div;\n      }\n    });\n\n    instance.UI.openElements(['fooBarElement']);\n  });\n */\n/**\n * Callback that gets passed to `options.panel.render` in {@link UI.addPanel addPanel}.\n * @callback UI.renderCustomPanel\n * @returns {HTMLElement} Panel element.\n */\nconst { TYPES } = window.Core;\nconst PANEL_TYPE = TYPES.MULTI_TYPE(TYPES.OBJECT({\n  dataElement: TYPES.STRING,\n  location: TYPES.ONE_OF('left', 'right'),\n  render: TYPES.MULTI_TYPE(TYPES.ONE_OF(...Object.values(panelNames)), TYPES.FUNCTION)\n}), TYPES.OBJECT(Panel));\n\nexport default (store) => (customPanel) => {\n  const { checkTypes } = window.Core;\n  checkTypes([customPanel], [PANEL_TYPE], 'UI.addPanel');\n  if (customPanel instanceof Panel) {\n    customPanel = customPanel.toObject();\n  }\n  store.dispatch(actions.addPanel(customPanel));\n};\n\nexport { PANEL_TYPE };","/**\n * Exports the current state of the modular components, headers, and panels in the UI as JSON data. Removes any invalid items after validation. Also removes any prebuilt flyouts and overflow flyouts. Functions found in components such as onClick cannot be exported in JSON data. Use a Function Map to redefine them on import. See https://docs.apryse.com/api/web/UI.html#.importModularComponents__anchor for more information.\n * @method UI.exportModularComponents\n * @return {Object} JSON object containing maps of components, headers, panels, and flyouts to be used in the UI. ex: { modularComponents: { ... }, modularHeaders: { ... }, panels: { ... }, flyouts: { ... } }\n * @example\n * WebViewer(...)\n .then(function (instance) {\n    instance.UI.exportModularComponents();\n */\nimport { PANEL_TYPE } from './addPanel';\nimport { ITEM_TYPE, PREBUILT_FLYOUTS, OVERFLOW_FLYOUTS } from 'constants/customizationVariables';\n\nexport default (store) => () => {\n  const state = store.getState();\n  const { checkTypes } = window.Core;\n\n  const validateComponents = (componentObject) => {\n    for (const key in componentObject) {\n      if (key === 'undefined' || key === 'null') {\n        console.warn(`Null or undefined item found. Removing item: ${key} found in components`);\n        delete componentObject[key];\n        continue;\n      }\n      const value = componentObject[key];\n      if (typeof value === 'object') {\n        // Recursively validate nested objects\n        componentObject[key] = validateComponents(value);\n        // Check if the object is empty after validation and remove it\n        // Do not remove groupedItems as they are used in headers, even in an empty state\n        if (Object.keys(componentObject[key]).length === 0 && key !== 'groupedItems') {\n          delete componentObject[key];\n        }\n      } else if (typeof value === 'function') {\n        const storedModularComponentFunctions = state.viewer.modularComponentFunctions;\n        const component = componentObject.dataElement || JSON.stringify(componentObject);\n        if (Object.values(storedModularComponentFunctions).includes(value)) {\n          componentObject[key] = Object.keys(storedModularComponentFunctions).find((funcKey) => storedModularComponentFunctions[funcKey] === value);\n        } else {\n          console.warn(`Function in ${key} of ${component} not found in Function Map and cannot be included in export JSON. Ensure that the following is included to your Function Map to define it on import:\\n`, `\\nfunctionMap: {\\n  ...,\\n  '${'{functionName}'}': ${value},\\n}\\n`, '\\nSee https://docs.apryse.com/api/web/UI.html#.importModularComponents__anchor for more information.');\n          componentObject[key] = '';\n        }\n      }\n    }\n    return componentObject;\n  };\n\n  const validateHeaders = (modularHeaders) => {\n    for (const key in modularHeaders) {\n      const header = modularHeaders[key];\n      if (header.items && Array.isArray(header.items)) {\n        header.items = header.items.filter((item) => {\n          if (item === null || item === undefined) {\n            console.warn(`Null or undefined item found. Removing item: ${item} found in header: '${key}'`);\n            return false;\n          }\n          return true;\n        });\n      }\n    }\n    return modularHeaders;\n  };\n\n  const modularComponents = validateComponents(state.viewer.modularComponents);\n  const modularHeaders = validateHeaders(state.viewer.modularHeaders);\n  const panelList = state.viewer.genericPanels;\n  const flyoutMap = state.viewer.flyoutMap;\n\n  const convertPanelsToMap = (panelsArray) => {\n    const panelsMap = {};\n\n    panelsArray.forEach((panel) => {\n      checkTypes([panel], [PANEL_TYPE], 'UI.exportModularComponents');\n      panelsMap[panel.dataElement] = panel;\n    });\n\n    return panelsMap;\n  };\n\n  const prepareFlyouts = (flyouts) => {\n    const normalizedFlyouts = {};\n    for (const key in flyouts) {\n      const flyout = flyouts[key];\n      // Skip prebuilt flyouts and overflow flyouts\n      if (flyout.className && [...PREBUILT_FLYOUTS, ...OVERFLOW_FLYOUTS].includes(flyout.className)) {\n        continue;\n      }\n      const items = processItems(flyout.items, key);\n      normalizedFlyouts[key] = { ...flyout, items };\n    }\n    return normalizedFlyouts;\n  };\n\n  const processItems = (items, parentKey) => {\n    return items.map((item) => {\n      if (item.children && Array.isArray(item.children)) {\n        item.children = processItems(item.children, item.dataElement); // Recursively process children\n      }\n      if (item === ITEM_TYPE.DIVIDER || (item.type && item.type === ITEM_TYPE.DIVIDER)) {\n        return ITEM_TYPE.DIVIDER;\n      }\n      if (!item.dataElement && item) {\n        console.warn(`Invalid item found in flyout: ${parentKey} - ${JSON.stringify(item)} missing dataElement`);\n        return null;\n      }\n      const allowedTypes = [ITEM_TYPE.PRESET_BUTTON, ITEM_TYPE.BUTTON, ITEM_TYPE.STATEFUL_BUTTON, ITEM_TYPE.TOGGLE_BUTTON];\n      if (!allowedTypes.includes(item.type)) {\n        const allowedTypesString = allowedTypes.join(', ');\n        console.warn(`Only ${allowedTypesString} items are supported in export JSON. Removing item: ${item.dataElement} found in component: ${parentKey}`);\n        return null;\n      }\n      if (!modularComponents[item.dataElement]) {\n        const newComponent = validateComponents({ [item.dataElement]: item });\n        modularComponents[item.dataElement] = newComponent[item.dataElement];\n      }\n\n      return item.dataElement;\n    }).filter((item) => item !== null);\n  };\n\n  const panels = convertPanelsToMap(panelList);\n  const flyouts = prepareFlyouts(flyoutMap);\n\n  const allData = {\n    modularComponents,\n    modularHeaders,\n    panels,\n    flyouts,\n  };\n\n  return allData;\n};","/**\n * Sets the gap of Grouped Items\n * @method UI.setGroupedItemsGap\n * @param {number} gap The gap in pixels between the items in the group.\n * @param {Object} [selectors] An object that contains selectors for the Grouped Items.\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const myToolsGroup = new instance.UI.Components.GroupedItems({\n      dataElement: 'group-1',\n      items: [\n        myButton,\n        myToolButton,\n        highlightToolButton,\n      ],\n    });\n\n    // Group must be added to a header, and then the header must be added to the UI\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top',\n      items: [myToolsGroup]\n    });\n    instance.UI.addModularHeaders([newHeader]);\n\n    // Setting the gap of all Grouped Items\n    instance.UI.setGroupedItemsGap(20);\n\n    // Setting the gap of all Grouped Items with a specific data element\n    instance.UI.setGroupedItemsGap(30, {\n      groupedItemsDataElement: 'group-1'\n    });\n */\nimport actions from 'actions';\nimport { isGapValid } from 'components/ModularComponents/Helpers/validation-helper';\n\nexport default (store) => (gap, selectors) => {\n  if (isGapValid(gap)) {\n    const { groupedItemsDataElement } = selectors || {};\n    if (groupedItemsDataElement) {\n      store.dispatch(actions.setModularComponentProperty('gap', gap, groupedItemsDataElement));\n    } else {\n      store.dispatch(actions.setAllGroupedItemsProperty('gap', gap));\n    }\n  }\n};","/**\n * Sets the justifyContent property of Grouped Items. This property is analogous to the CSS justify-content property.\n * @method UI.setGroupedItemsJustifyContent\n  * @param {'start' | 'end' | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'} justifyContent A string that determines the flex justify content value of the group\n  * @param {Object} [selectors]  An object that contains the selectors to filter the Grouped Items to set the justify content property on.\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const myToolsGroup = new instance.UI.Components.GroupedItems({\n      dataElement: 'group-1',\n      items: [\n        myButton,\n        myToolButton,\n        highlightToolButton,\n      ],\n    });\n\n    // Group must be added to a header, and then the header must be added to the UI\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top',\n      items: [myToolsGroup]\n    });\n    instance.UI.addModularHeaders([newHeader]);\n\n    // Setting the justifyContent property of all Grouped Items\n    instance.UI.setGroupedItemsJustifyContent('start');\n\n    // Setting the justifyContent property of all Grouped Items with a specific data element\n    instance.UI.setGroupedItemsJustifyContent('space-between', {\n      groupedItemsDataElement: 'group-1'\n    });\n */\nimport actions from 'actions';\nimport { isJustifyContentValid } from 'components/ModularComponents/Helpers/validation-helper';\n\nexport default (store) => (justifyContent, selectors) => {\n  if (isJustifyContentValid(justifyContent)) {\n    const { groupedItemsDataElement } = selectors || {};\n    if (groupedItemsDataElement) {\n      store.dispatch(actions.setModularComponentProperty('justifyContent', justifyContent, groupedItemsDataElement));\n    } else {\n      store.dispatch(actions.setAllGroupedItemsProperty('justifyContent', justifyContent));\n    }\n  }\n};","/**\n * Sets the grow of Grouped Items\n * @method UI.setGroupedItemsGrow\n * @param {number} grow The flex grow value of the group\n * @param {Object} [selectors] An object that contains the selectors to filter the Grouped Items to set the grow property on.\n * @example\n * WebViewer(...)\n  .then(function (instance) {\n    const myToolsGroup = new instance.UI.Components.GroupedItems({\n      dataElement: 'group-1',\n      items: [\n        myButton,\n        myToolButton,\n        highlightToolButton,\n      ],\n    });\n\n    // Group must be added to a header, and then the header must be added to the UI\n    const newHeader = new instance.UI.Components.ModularHeader({\n      dataElement: 'top-header',\n      location: 'top',\n      items: [myToolsGroup]\n    });\n    instance.UI.addModularHeaders([newHeader]);\n\n    // Setting the grow property of all Grouped Items\n    instance.UI.setGroupedItemsGrow(1);\n\n    // Setting the grow property of all Grouped Items with a specific data element\n    instance.UI.setGroupedItemsGrow(1, {\n      groupedItemsDataElement: 'group-1'\n    });\n */\nimport actions from 'actions';\nimport { isGrowValid } from 'components/ModularComponents/Helpers/validation-helper';\n\nexport default (store) => (grow, selectors) => {\n  if (isGrowValid(grow)) {\n    const { groupedItemsDataElement } = selectors || {};\n    if (groupedItemsDataElement) {\n      store.dispatch(actions.setModularComponentProperty('grow', grow, groupedItemsDataElement));\n    } else {\n      store.dispatch(actions.setAllGroupedItemsProperty('grow', grow));\n    }\n  }\n};","import actions from 'actions';\n\n/**\n * @namespace UI.OutlinesPanel\n */\n\n/**\n * @method UI.OutlinesPanel.setDefaultOptions\n * @param {object} [options] Options for the OutlinesPanel.\n * @param {boolean} [options.autoExpandOutlines] If set to true, will expand outlines.\n * @example\nWebViewer(...)\n  .then((instance) => {\n    instance.UI.OutlinesPanel.setDefaultOptions({\n      autoExpandOutlines: true,\n    })\n  });\n */\n\nconst setDefaultOptions = (store) => (options) => {\n  const defaultOptions = {\n    autoExpandOutlines: false,\n  };\n\n  const outlinesPanelOptions = {\n    ...defaultOptions,\n    ...options,\n  };\n\n  const { autoExpandOutlines } = outlinesPanelOptions;\n  store.dispatch(actions.setAutoExpandOutlines(autoExpandOutlines));\n};\n\nexport {\n  setDefaultOptions,\n};\n","import { ITEM_TYPE } from 'constants/customizationVariables';\nimport actions from 'actions';\n\nconst { checkTypes, TYPES } = window.Core;\nexport const flyoutItemBase = {\n  label: TYPES.STRING,\n  onClick: TYPES.FUNCTION,\n  icon: TYPES.OPTIONAL(TYPES.STRING),\n};\nflyoutItemBase.children = TYPES.OPTIONAL(TYPES.ARRAY(\n  TYPES.MULTI_TYPE(\n    TYPES.OBJECT(flyoutItemBase),\n    TYPES.STRING // For dividers\n  )\n));\nexport const flyoutItemType = TYPES.MULTI_TYPE(\n  TYPES.OBJECT({ type: TYPES.ONE_OF(Object.values(ITEM_TYPE)) }),\n  TYPES.OBJECT(flyoutItemBase),\n  TYPES.STRING // For dividers\n);\n\n/**\n * Represents an item in a flyout with optional submenu.\n * @typedef {Object} FlyoutItem\n * @property {string} [dataElement] - A unique string that identifies the flyout item.\n * @property {string} [label] - The label of the flyout item.\n * @property {Function} [onClick] - A function that is called when the item is clicked.\n * @property {string} [icon] -  Path to an image or base64 data. Can also be the filename of a .svg from the WebViewer icons folder found here:\n *   {@link https://github.com/PDFTron/webviewer-ui/tree/master/assets/icons/ assets/icons/} (i.e. `icon-save` to use `icon-save.svg`).\n * @property {Array<FlyoutItem>} [children] - An array of objects that represents the items in a sub-menu, has the same properties as the parent items property and can be infinitely nested.\n */\n\n/**\n * @name Flyout\n * @memberOf UI.Components\n * @class UI.Components.Flyout\n * @constructor\n * @param {Object} options - An object that contains the properties of the flyout.\n * @param {string} options.dataElement - A unique string that identifies the flyout.\n * @param {Array<FlyoutItem>} options.items - An array of objects that represent the items in the flyout.\n*/\n\n/**\n * Sets the items of the flyout.\n * @method UI.Components.Flyout#setItems\n * @param {Array<FlyoutItem>} items An array of objects that represent the items to be added to the flyout.\n * @example\n *  const flyout = new UI.Components.Flyout({\n *    dataElement: 'exampleFlyout',\n *    label: 'Flyout',\n *  });\n *  flyout.setItems([\n *    {\n *      label: 'Item 1',\n *      onClick: () => {\n *        console.log('Item 1 clicked');\n *      },\n *    },\n *  ]);\n */\n\n/**\n * A unique string that identifies the flyout. This property is ReadOnly.\n * @member {string} UI.Components.Flyout#dataElement\n */\n\n/**\n * An array of objects that represent the items in the flyout. This property can be used both as a getter and setter.\n * @member {Array<Object>} UI.Components.Flyout#items\n */\n\n\nexport class Flyout {\n  properties;\n\n  constructor(options) {\n    checkTypes([options], [TYPES.OBJECT({\n      dataElement: TYPES.STRING,\n      items: TYPES.ARRAY(flyoutItemType),\n    })], 'Flyout Constructor');\n    const { dataElement } = options;\n    this.properties = options;\n    this.dataElement = dataElement;\n    this.type = ITEM_TYPE.FLYOUT;\n    this.store = options.store;\n    options.store = undefined;\n  }\n\n  setItems(items) {\n    checkTypes([items], [TYPES.ARRAY(flyoutItemType)], 'Flyout.setItems');\n    this.properties.items = items;\n    this.store.dispatch(actions.setFlyoutItems(this.properties.dataElement, items));\n  }\n\n  get items() {\n    return this.properties.items;\n  }\n\n  set items(newItems) {\n    this.setItems(newItems);\n  }\n}\n\nexport default (store) => (props) => {\n  const propsWithStore = { ...props, store };\n  return new Flyout(propsWithStore);\n};","import { ITEM_TYPE, PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport { Flyout } from './flyout';\nimport DataElements from 'constants/dataElement';\nimport { menuItems } from 'components/ModularComponents/Helpers/menuItems';\n\n/**\n * @name MainMenu\n * @memberOf UI.Components\n * @class\n * @extends UI.Components.Flyout\n * @constructor\n * @param {Object} [options] - An object that contains the properties of the main menu\n * @param {Array<Object>} [options.additionalItems] - An array of extra items to add to the main menu\n * @param {Object} [options.dataElement] - The data element for the main menu flyout\n */\nclass MainMenu extends Flyout {\n  constructor(options = {}) {\n    if (!options.dataElement) {\n      options.dataElement = DataElements.MAIN_MENU;\n    }\n    super(options);\n    this.items = [...options.defaultItems, ...this.items];\n    options.additionalItems = undefined;\n    options.defaultItems = undefined;\n  }\n}\n\nexport default (store) => (props) => {\n  const defaultItems = [\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.NEW_DOCUMENT],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.FILE_PICKER],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.DOWNLOAD],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.FULLSCREEN],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.SAVE_AS],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.PRINT],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    'divider',\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.CREATE_PORTFOLIO],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    'divider',\n    {\n      ...menuItems[PRESET_BUTTON_TYPES.SETTINGS],\n      type: ITEM_TYPE.PRESET_BUTTON,\n    },\n    'divider',\n  ];\n  return new MainMenu({\n    ...props,\n    items: props.additionalItems || [],\n    store,\n    defaultItems,\n  });\n};","/**\n * Set the scrolling behavior of sync scrolling in semantic compare mode.\n * Must be one of the following values:\n * - 'SYNC': scroll synchronously in both documents\n * - 'SKIP_UNMATCHED': scroll according to the next matched position in both documents\n * @method UI.setMultiViewerSyncScrollingMode\n * @param {(string)} multiViewerSyncScrollingMode the scrolling behavior of sync scrolling in semantic comparing mode.\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.setMultiViewerSyncScrollingMode('SYNC');\n  });\n */\n\nimport actions from 'actions';\nimport { SYNC_MODES } from 'constants/multiViewerContants';\n\nexport default (store) => (multiViewerComparedSyncScrollingMode) => {\n  const { TYPES, checkTypes } = window.Core;\n  checkTypes([multiViewerComparedSyncScrollingMode], [TYPES.ONE_OF(SYNC_MODES.SYNC, SYNC_MODES.SKIP_UNMATCHED)], 'UI.setMultiViewerSyncScrollingMode');\n  store.dispatch(actions.setMultiViewerSyncScrollingMode(multiViewerComparedSyncScrollingMode));\n};\n","/**\n * Sets the multiplier used when creating typed, text signatures. This improves the quality of the rendered signature at the cost of more memory.\n * @method UI.setTextSignatureQuality\n * @param {number} multiplier The multiplier value used to scale the image output\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setTextSignatureQuality(2);\n */\n\nimport actions from 'actions';\n\nexport default (store) => (multiplier) => {\n  store.dispatch(actions.setTextSignatureQuality(multiplier));\n};\n","/**\n * Gets the multiplier used when creating typed, text signatures.\n * @method UI.getTextSignatureQuality\n * @return {number} The multiplier value\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.getTextSignatureQuality(4);\n  });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getTextSignatureQuality(store.getState());","import selectors from 'selectors';\nimport actions from 'actions';\n\n/**\n * Returns all the measurement scale preset options for the given measurement system.\n * @method UI.getMeasurementScalePreset\n * @param {string} measurementSystem The measurement system, can be either 'metric' or 'imperial'.\n * @returns {Array.<Array.<string|Core.Scale>>} All the measurement scale preset options for the given measurement system.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.getMeasurementScalePreset('metric'));\n  });\n */\nexport const getMeasurementScalePreset = (store) => (measurementSystem) => selectors.getMeasurementScalePreset(store.getState())[measurementSystem];\n\n/**\n * Adds a new preset option for measurement scales.\n * @method UI.addMeasurementScalePreset\n * @param {object} options Options for adding a new preset option.\n * @param {string} options.measurementSystem The measurement system, can be either 'metric' or 'imperial'.\n * @param {string} options.displayName The display name of the new preset option.\n * @param {Core.Scale} options.presetScale The scale object of the new preset option.\n * @param {number} [options.index] The index at which to insert the new preset option. If not provided, the new preset will be added to the last of the preset options list.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const newScale = new instance.Core.Scale([[1, 'mm'], [300, 'mm']]);\n    instance.UI.addMeasurementScalePreset({\n      measurementSystem: 'metric',\n      displayName: '1:300',\n      presetScale: newScale,\n      index: 5\n    });\n  });\n */\nexport const addMeasurementScalePreset = (store) => ({ measurementSystem, displayName, presetScale, index }) => {\n  store.dispatch(actions.addMeasurementScalePreset(measurementSystem, [displayName, presetScale], index));\n};\n\n/**\n * Adds an existing preset option for measurement scales.\n * @method UI.removeMeasurementScalePreset\n * @param {string} measurementSystem The measurement system, can be either 'metric' or 'imperial'.\n * @param {number} index The index at which to remove the existing preset option.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.removeMeasurementScalePreset('metric', 5);\n  });\n */\nexport const removeMeasurementScalePreset = (store) => (measurementSystem, index) => {\n  store.dispatch(actions.removeMeasurementScalePreset(measurementSystem, index));\n};\n\n/**\n * Enable multiple scales mode.\n * @method UI.enableMultipleScalesMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableMultipleScalesMode();\n  });\n */\nexport const enableMultipleScalesMode = (store) => () => {\n  store.dispatch(actions.setIsMultipleScalesMode(true));\n};\n\n/**\n * Disable multiple scales mode.\n * @method UI.disableMultipleScalesMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableMultipleScalesMode();\n  });\n */\nexport const disableMultipleScalesMode = (store) => () => {\n  store.dispatch(actions.setIsMultipleScalesMode(false));\n};\n\n/**\n * Returns whether multiple scales mode is enabled.\n * @method UI.isMultipleScalesModeEnabled\n * @returns {boolean} True if multiple scales mode is enabled, false if multiple scales mode is disabled.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    console.log(instance.UI.isMultipleScalesModeEnabled());\n  });\n */\nexport const isMultipleScalesModeEnabled = (store) => () => selectors.getIsMultipleScalesMode(store.getState());\n","import i18next from 'i18next';\n\n/**\n * Return the localized text for the given key. This functions exactly the same as the <b>t</b> API from the <b>i18n</b> library.\n * <br/>\n * This may be used to leverage the existing localization setup in WebViewer in custom elements, modals, etc.\n * @method UI.getLocalizedText\n * @return {string|Array<string>} The translation key\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const button = document.createElement('button');\n    button.innerText = instance.UI.getLocalizedText('action.add');\n\n    instance.UI.setHeaderItems(header => {\n      const renderButton = () => button;\n\n      const newCustomElement = {\n        type: 'customElement',\n        title: 'action.add',\n        render: renderButton\n      };\n      header.push(newCustomElement);\n    });\n\n    instance.UI.addEventListener(instance.UI.Events.LANGUAGE_CHANGED, () => {\n        // Manually update components\n        button.innerText = instance.UI.getLocalizedText('action.add');\n    });\n\n    instance.UI.setLanguage(instance.UI.Languages.FR);\n    // The button text will be 'Ajouter' (French) instead of 'Add' (English)\n  });\n */\n\nconst getLocalizedText = (key) => i18next.t(key);\n\nexport default getLocalizedText;\n","import core from 'core';\n\nexport default (documentViewerKey) => {\n  if (!documentViewerKey) {\n    return core.getDocumentViewer(1);\n  }\n\n  return core.getDocumentViewer(documentViewerKey);\n};","import actions from 'actions';\nimport selectors from 'selectors';\n\n/**\n * @method UI.enableMultiViewerSync\n * @param {number} [primaryViewerKey=1] Which DocumentViewer to set as primary for initial zoom sync (1 or 2)\n * @example\n WebViewer(...)\n .then((instance) => {\n    instance.UI.enableMultiViewerSync(1) // Value can be 1 (for left side) or 2 (for right side)\n  });\n */\nconst enableMultiViewerSync = (store) => (primaryViewerKey) => {\n  if (!primaryViewerKey || (primaryViewerKey !== 1 && primaryViewerKey !== 2)) {\n    primaryViewerKey = 1;\n  }\n  store.dispatch(actions.setSyncViewer(primaryViewerKey));\n};\n\n/**\n * @method UI.disableMultiViewerSync\n * @example\n WebViewer(...)\n .then((instance) => {\n    instance.UI.disableMultiViewerSync();\n  });\n */\nconst disableMultiViewerSync = (store) => () => {\n  store.dispatch(actions.setSyncViewer(null));\n};\n\n/**\n * @method UI.isMultiViewerSyncing\n * @return {boolean} returns true if sync is enabled false if disabled\n * @example\n WebViewer(...)\n .then((instance) => {\n    console.log(instance.UI.isMultiViewerSyncing());\n  });\n */\nconst isMultiViewerSyncing = (store) => () => !!selectors.getSyncViewer(store.getState());\n\nexport {\n  isMultiViewerSyncing,\n  enableMultiViewerSync,\n  disableMultiViewerSync,\n};","import actions from 'actions';\nimport selectors from 'selectors';\nimport touchEventManager from 'helpers/TouchEventManager';\nimport setLanguage from './setLanguage';\nimport hotkeysManager, { ShortcutKeys } from 'helpers/hotkeysManager';\n\n/**\n * Set custom settings shown in Advanced Setting tab in Settings modal.\n * A custom setting item includes a label, a description, and a toggle button.\n * @method UI.setCustomSettings\n * @param {Array<UI.CustomSettingItem>} customSettings Array of custom setting items.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setCustomSettings([\n      {\n        label: 'Enable High Contrast Mode',\n        description: 'Turns high contrast mode on to help with accessibility.',\n        isChecked: () => instance.UI.isHighContrastModeEnabled(),\n        onToggled: (enable) => {\n          if (enable) {\n            instance.UI.enableHighContrastMode();\n          } else {\n            instance.UI.disableHighContrastMode();\n          }\n        }\n      }\n    ]);\n  });\n */\nexport const setCustomSettings = (store) => (customSettings) => {\n  store.dispatch(actions.setCustomSettings(customSettings));\n};\n\n/**\n * @typedef {Object} UI.CustomSettingItem\n * @property {string} label Custom setting label\n * @property {string} description Custom setting description\n * @property {function|boolean} isChecked Whether the toggle button is checked.\n * @property {function} onToggled The callback function triggered when the toggle button is clicked.\n */\n\nconst SettingKeys = {\n  'LANGUAGE': 'language',\n  'THEME': 'theme',\n  'KEYBOARD_SHORTCUT': 'keyboardShortcut',\n  'DISABLE_FADE_PAGE_NAV': 'disableFadePageNavigationComponent',\n  'DISABLE_NATIVE_SCROLL': 'disableNativeScrolling',\n  'DISABLE_TOOL_STYLE_UPDATE': 'disableToolDefaultStyleUpdateFromAnnotationPopup',\n  'DISABLE_NOTE_SUBMIT_ENTER': 'disableNoteSubmissionWithEnter',\n  'DISABLE_AUTO_EXPAND_COMMENT': 'disableAutoExpandCommentThread',\n  'DISABLE_REPLY_COLLAPSE': 'disableReplyCollapse',\n  'DISABLE_TEXT_COLLAPSE': 'disableTextCollapse',\n  'DISABLE_CLEAR_SEARCH_ON_CLOSE': 'disableClearSearchOnPanelClose',\n  'DISABLE_PAGE_DELETE_CONFIRM': 'disablePageDeletionConfirmationModal',\n  'DISABLE_THUMBNAIL_MULTI_SELECT': 'disableThumbnailMultiselect'\n};\n/**\n * Export the current user settings as JSON object.\n * @method UI.exportUserSettings\n * @return {object} JSON object containing the current user settings\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    const userSettings = instance.UI.exportUserSettings();\n    console.log(userSettings);\n  });\n */\nexport const exportUserSettings = (store) => () => {\n  const state = store.getState();\n  return {\n    [SettingKeys.LANGUAGE]: selectors.getCurrentLanguage(state),\n    [SettingKeys.THEME]: selectors.getActiveTheme(state),\n    [SettingKeys.KEYBOARD_SHORTCUT]: selectors.getShortcutKeyMap(state),\n    [SettingKeys.DISABLE_FADE_PAGE_NAV]: !selectors.shouldFadePageNavigationComponent(state),\n    [SettingKeys.DISABLE_NATIVE_SCROLL]: !touchEventManager.useNativeScroll,\n    [SettingKeys.DISABLE_TOOL_STYLE_UPDATE]: !selectors.isToolDefaultStyleUpdateFromAnnotationPopupEnabled(state),\n    [SettingKeys.DISABLE_NOTE_SUBMIT_ENTER]: !selectors.isNoteSubmissionWithEnterEnabled(state),\n    [SettingKeys.DISABLE_AUTO_EXPAND_COMMENT]: !selectors.isCommentThreadExpansionEnabled(state),\n    [SettingKeys.DISABLE_REPLY_COLLAPSE]: !selectors.isNotesPanelRepliesCollapsingEnabled(state),\n    [SettingKeys.DISABLE_TEXT_COLLAPSE]: !selectors.isNotesPanelTextCollapsingEnabled(state),\n    [SettingKeys.DISABLE_CLEAR_SEARCH_ON_CLOSE]: !selectors.shouldClearSearchPanelOnClose(state),\n    [SettingKeys.DISABLE_PAGE_DELETE_CONFIRM]: !selectors.pageDeletionConfirmationModalEnabled(state),\n    [SettingKeys.DISABLE_THUMBNAIL_MULTI_SELECT]: !selectors.isThumbnailSelectingPages(state)\n  };\n};\n\n/**\n * Import user settings from JSON object.\n * @method UI.importUserSettings\n * @param {object} userSettings JSON object containing the new user settings\n * @example\nWebViewer(...)\n  .then(function (instance) {\n    const userSettings = instance.UI.exportUserSettings();\n    const newUserSettings = {\n      'theme': 'dark',\n      'keyboardShortcut': { ...userSettings.keyboardShortcut, 'search': 'command+m' }\n    };\n    instance.UI.importUserSettings(newUserSettings);\n  });\n */\nexport const importUserSettings = (store) => (userSettings) => {\n  if (SettingKeys.LANGUAGE in userSettings) {\n    setLanguage(store)(userSettings[SettingKeys.LANGUAGE]);\n  }\n  if (SettingKeys.THEME in userSettings) {\n    store.dispatch(actions.setActiveTheme(userSettings[SettingKeys.THEME]));\n  }\n  if (SettingKeys.DISABLE_FADE_PAGE_NAV in userSettings) {\n    if (userSettings[SettingKeys.DISABLE_FADE_PAGE_NAV]) {\n      store.dispatch(actions.disableFadePageNavigationComponent());\n    } else {\n      store.dispatch(actions.enableFadePageNavigationComponent());\n    }\n  }\n  if (SettingKeys.DISABLE_NATIVE_SCROLL in userSettings) {\n    touchEventManager.useNativeScroll = !userSettings[SettingKeys.DISABLE_NATIVE_SCROLL];\n  }\n  if (SettingKeys.DISABLE_TOOL_STYLE_UPDATE in userSettings) {\n    store.dispatch(actions.setToolDefaultStyleUpdateFromAnnotationPopupEnabled(!userSettings[SettingKeys.DISABLE_TOOL_STYLE_UPDATE]));\n  }\n  if (SettingKeys.DISABLE_NOTE_SUBMIT_ENTER in userSettings) {\n    store.dispatch(actions.setNoteSubmissionEnabledWithEnter(!userSettings[SettingKeys.DISABLE_NOTE_SUBMIT_ENTER]));\n  }\n  if (SettingKeys.DISABLE_AUTO_EXPAND_COMMENT in userSettings) {\n    store.dispatch(actions.setCommentThreadExpansion(!userSettings[SettingKeys.DISABLE_AUTO_EXPAND_COMMENT]));\n  }\n  if (SettingKeys.DISABLE_REPLY_COLLAPSE in userSettings) {\n    store.dispatch(actions.setNotesPanelRepliesCollapsing(!userSettings[SettingKeys.DISABLE_REPLY_COLLAPSE]));\n  }\n  if (SettingKeys.DISABLE_TEXT_COLLAPSE in userSettings) {\n    store.dispatch(actions.setNotesPanelTextCollapsing(!userSettings[SettingKeys.DISABLE_TEXT_COLLAPSE]));\n  }\n  if (SettingKeys.DISABLE_CLEAR_SEARCH_ON_CLOSE in userSettings) {\n    store.dispatch(actions.setClearSearchOnPanelClose(!userSettings[SettingKeys.DISABLE_CLEAR_SEARCH_ON_CLOSE]));\n  }\n  if (SettingKeys.DISABLE_PAGE_DELETE_CONFIRM in userSettings) {\n    if (userSettings[SettingKeys.DISABLE_PAGE_DELETE_CONFIRM]) {\n      store.dispatch(actions.disablePageDeletionConfirmationModal());\n    } else {\n      store.dispatch(actions.enablePageDeletionConfirmationModal());\n    }\n  }\n  if (SettingKeys.DISABLE_THUMBNAIL_MULTI_SELECT in userSettings) {\n    store.dispatch(actions.setThumbnailSelectingPages(!userSettings[SettingKeys.DISABLE_THUMBNAIL_MULTI_SELECT]));\n  }\n  if (SettingKeys.KEYBOARD_SHORTCUT in userSettings) {\n    const shortcutKeyMap = selectors.getShortcutKeyMap(store.getState());\n    Object.values(shortcutKeyMap).forEach((key) => {\n      hotkeysManager.off(key);\n    });\n\n    const newShortcutKeyMap = userSettings[SettingKeys.KEYBOARD_SHORTCUT];\n    Object.keys(newShortcutKeyMap).forEach((shortcut) => {\n      hotkeysManager.on(newShortcutKeyMap[shortcut], hotkeysManager.keyHandlerMap[ShortcutKeys[shortcut]]);\n    });\n\n    store.dispatch(actions.setShortcutKeyMap({ ...newShortcutKeyMap }));\n  }\n};\n","import { setGrayscaleDarknessFactor } from 'helpers/printGrayscaleDarknessFactor';\n\n/**\n * Set Grayscale Darkness Factor for printing in Grayscale\n * @method UI.setGrayscaleDarknessFactor\n * @param {number} darknessFactor Default is '1', '0' is fully black and white\n * @example\n WebViewer(...)\n .then(function(instance) {\n    instance.UI.setGrayscaleDarknessFactor(0.5);\n  });\n */\n\nexport default (darknessFactor) => {\n  setGrayscaleDarknessFactor(darknessFactor);\n};\n","import { ITEM_TYPE } from 'constants/customizationVariables';\nimport actions from 'actions';\nimport Flyout from './ModularComponents/flyout';\nimport selectors from 'selectors/index';\n\n/**\n * Namespace used to add, remove, and interact with flyouts in the UI\n * @namespace UI.Flyouts\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.setActiveFlyout('customFlyout');\n * });\n */\n\n/**\n * Adds a list of UI.Components.Flyout instances to the UI\n * @method UI.Flyouts.addFlyouts\n * @param {Array<UI.Components.Flyout>} flyoutList Array of flyouts to add\n * @example\n * WebViewer(...).then(function(instance) {\n *  const flyout = new instance.UI.Components.Flyout({\n *    dataElement: 'customFlyout',\n *    draggable: true,\n *    items: [{\n *      label: 'Custom Flyout Item',\n *      onClick: () => console.log('Custom Flyout Item clicked'),\n *      icon: 'icon-save',\n *    }],\n *  });\n *  instance.UI.Flyouts.addFlyouts([ flyout ]);\n * });\n */\n\n/**\n * Removes flyout from the Flyout List\n * @method UI.Flyouts.removeFlyout\n * @param {string} dataElement Data element of the flyout to remove\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.removeFlyout('customFlyout');\n * });\n */\n\n/**\n * Sets the active flyout, set to null to hide the flyout\n * @method UI.Flyouts.setActiveFlyout\n * @param {string} dataElement Data element of the flyout to set as active, or null to hide the active flyout\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.setActiveFlyout('customFlyout');\n * });\n */\n\n/**\n * Sets the position of the active flyout, (use UI.Flyouts.setActiveFlyout to show the flyout)\n * Position is relative to the root element of WebViewer\n * Coordinates going out of the WebViewer UI will be clamped\n * @method UI.Flyouts.setFlyoutPosition\n * @param {Object} position Position of the flyout\n * @param {number} position.x X position of the flyout\n * @param {number} position.y Y position of the flyout\n * @example\n * WebViewer(...).then(function(instance) {\n *  instance.UI.Flyouts.setFlyoutPosition({ x: 100, y: 100 });\n *  instance.UI.Flyouts.setActiveFlyout('customFlyout');\n * });\n */\n\n/**\n * @method UI.Flyouts.getFlyout\n * @param {string} dataElement Data element of the flyout to get\n * @returns {UI.Components.Flyout} Flyout with the given data element\n */\n\n/**\n * @method UI.Flyouts.getAllFlyouts\n * @returns {Array<UI.Components.Flyout>} Array of all flyouts registered with the UI\n */\n\nexport default (store) => {\n  const { checkTypes, TYPES } = window.Core;\n  const addFlyouts = (flyoutList) => {\n    for (const flyout of flyoutList) {\n      if (!flyout || !flyout.properties || flyout.type !== ITEM_TYPE.FLYOUT) {\n        return console.error('Invalid Flyout item passed to addFlyout: ', JSON.stringify(flyout));\n      }\n      const { properties } = flyout;\n\n      store.dispatch(actions.addFlyout(properties));\n    }\n  };\n\n  const removeFlyout = (dataElement) => {\n    checkTypes([dataElement], [TYPES.STRING], 'Flyouts.removeFlyout');\n    store.dispatch(actions.removeFlyout(dataElement));\n  };\n\n  const setActiveFlyout = (dataElement) => {\n    checkTypes([dataElement], [TYPES.OPTIONAL(TYPES.STRING)], 'Flyouts.setActiveFlyout');\n    store.dispatch(actions.setActiveFlyout(dataElement));\n  };\n\n  const setFlyoutPosition = (position) => {\n    checkTypes([position], [TYPES.OBJECT({ x: TYPES.NUMBER, y: TYPES.NUMBER })], 'Flyouts.setFlyoutPosition');\n    store.dispatch(actions.setFlyoutPosition(position));\n  };\n\n  const getFlyout = (dataElement) => {\n    checkTypes([dataElement], [TYPES.STRING], 'Flyouts.getFlyout');\n    const flyout = selectors.getFlyoutMap(store.getState())[dataElement];\n    if (!flyout) {\n      return null;\n    }\n    return new (Flyout(store))(flyout);\n  };\n\n  const getAllFlyouts = () => {\n    const flyoutMap = selectors.getFlyoutMap(store.getState());\n    const flyouts = [];\n    for (const dataElement in flyoutMap) {\n      flyouts.push(getFlyout(dataElement));\n    }\n    return flyouts;\n  };\n\n  return {\n    addFlyouts,\n    removeFlyout,\n    setActiveFlyout,\n    setFlyoutPosition,\n    getFlyout,\n    getAllFlyouts,\n  };\n};\n","import { setClickMiddleWare as _setClickMiddleware } from 'helpers/clickTracker';\n\n/**\n * @name UI.ClickedItemTypes\n * @enum {string}\n * @property {string} BUTTON button type\n */\n\n/**\n * @callback UI.clickMiddleware\n * @param {string} dataElement The dataElement of the clicked item\n * @param {object} info\n * @param {string} info.type The type of the clicked item. Will be one of {@link UI.ClickedItemTypes}\n */\n\n/**\n * Sets a function to be called before the default click handler.\n * Can be used to track clicks on buttons in the UI.\n * @method UI.setClickMiddleware\n * @param {UI.clickMiddleware} middleware A callback function that will be called before the default click handler.\n * @example\n WebViewer(...)\n   .then(function(instance) {\n     instance.UI.setClickMiddleware(function(dataElement, { type }) {\n       if (type === instance.UI.ClickedItemTypes.BUTTON) {\n        console.log('clicked button: ', dataElement)\n       }\n     })\n   })\n */\nexport const setClickMiddleware = (middleware) => {\n  _setClickMiddleware(middleware);\n};\n","/**\n * Enables a specified feature flag.\n * @method UI.enableFeatureFlag\n * @param {string} featureFlag The feature flag to enable. To find feature flag names, refer to <a href='https://docs.apryse.com/documentation/web/guides/feature-flags/#feature-flags' target='_blank'>Feature flags</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enableFeatureFlag(instance.UI.FeatureFlags.CUSTOMIZABLE_UI);\n  });\n */\n\nimport actions from 'actions';\nimport FEATURE_FLAGS from 'constants/featureFlags';\n\nexport default (store) => (featureFlag) => {\n  const featureFlags = Object.values(FEATURE_FLAGS);\n  if (!featureFlags.includes(featureFlag)) {\n    console.warn(`Feature flag ${featureFlag} does not exist.`);\n  } else {\n    store.dispatch(actions.enableFeatureFlag(featureFlag));\n  }\n};","/**\n * Disables a specified feature flag.\n * @ignore\n * @method UI.disableFeatureFlag\n * @param {string} featureFlag The feature flag to disable. To find feature flag names, refer to <a href='https://docs.apryse.com/documentation/web/guides/feature-flags/#feature-flags' target='_blank'>Feature flags</a>.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.disableFeatureFlag(instance.UI.FeatureFlags.CUSTOMIZABLE_UI);\n  });\n */\n\nimport actions from 'actions';\nimport FEATURE_FLAGS from 'constants/featureFlags';\n\nexport default (store) => (featureFlag) => {\n  const featureFlags = Object.values(FEATURE_FLAGS);\n  if (!featureFlags.includes(featureFlag)) {\n    console.warn(`Feature flag ${featureFlag} does not exist.`);\n  } else {\n    store.dispatch(actions.disableFeatureFlag(featureFlag));\n  }\n};","/**\n * Activate Multi-Viewer Mode (Side by side view).\n * @method UI.enterMultiViewerMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.enterMultiViewerMode();\n  });\n */\n\nimport actions from 'actions';\nimport selectors from 'selectors';\n\nexport default (store) => () => {\n  if (selectors.getIsMultiTab(store.getState())) {\n    console.error('MultiTab and MultiViewerMode cannot be enabled at the same time, disabling MultiTab');\n    store.dispatch(actions.setMultiTab(false));\n    store.dispatch(actions.setTabManager(null));\n    store.dispatch(actions.setTabs([]));\n    store.dispatch(actions.setActiveTab(0));\n  }\n  store.dispatch(actions.setIsMultiViewerMode(true));\n};","/**\n * Exit Multi-Viewer Mode (Side by side view).\n * @method UI.exitMultiViewerMode\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.exitMultiViewerMode();\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => () => {\n  store.dispatch(actions.setIsMultiViewerMode(false));\n};","/**\n * Sets the current width of a panel\n * @method UI.setPanelWidth\n * @param {string} dataElement Panel element to set width of\n * @param {number} width Width to set the panel to\n * @example\n WebViewer(...)\n .then(function(instance) {\n // open left panel\n instance.UI.openElements([ 'leftPanel' ]);\n // Set the width of the left panel to 238px\n instance.UI.setPanelWidth('leftPanel', 238);\n */\n\nimport actions from 'actions';\nimport { panelMinWidth } from 'constants/panel';\n\nexport default (store) => (dataElement, width) => {\n  const { checkTypes, TYPES } = window.Core;\n  checkTypes([dataElement, width], [TYPES.STRING, TYPES.NUMBER], 'UI.setPanelWidth');\n\n  const minAllowedWidth = panelMinWidth;\n  const maxAllowedWidth = window.innerWidth;\n  if (width < minAllowedWidth) {\n    console.warn(`UI.setPanelWidth: width cannot be less than ${minAllowedWidth}px. Setting width to ${minAllowedWidth}px`);\n    width = minAllowedWidth;\n  } else if (width > maxAllowedWidth) {\n    console.warn(`UI.setPanelWidth: width cannot be greater than ${maxAllowedWidth}px. Setting width to ${maxAllowedWidth}px`);\n    width = maxAllowedWidth;\n  }\n\n  // For default panels, we use a dataElement specific action to set the width\n  // Check if the dataElement specific action exists, if it does, use it as well\n  const testAction = actions[`set${capitalize(dataElement)}Width`];\n  if (testAction && typeof testAction === 'function') {\n    store.dispatch(testAction(width));\n  }\n  store.dispatch(actions.setPanelWidth(dataElement, width));\n};\n\nconst capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);","/**\n * Adds new custom Header(s) to the Header list\n * @method UI.setModularHeaders\n * @param {array<UI.Components.ModularHeader>} headerList The new list of headers to be used in the UI\n * @example\n * WebViewer(...)\n .then(function (instance) {\n const newHeader = new instance.UI.Components.ModularHeader({\n dataElement: 'top-header',\n placement: 'top'\n });\n\n instance.UI.setModularHeaders([newHeader]);\n */\nimport actions from 'actions';\n\nexport default (store) => (headerList) => {\n  store.dispatch(actions.setModularHeaders(headerList));\n};","/**\n * Sets the list of panels to be used in the UI\n * @method UI.setPanels\n * @param {array} panelList The new list of panels to be used in the UI\n * @example\n * WebViewer(...)\n .then(function (instance) {\n instance.UI.setPanels([\n {\n dataElement: 'fooBarElement',\n location: 'left',\n render: function() {\n var div = document.createElement('div');\n div.innerHTML = 'Hello World, foobar panel';\n return div;\n }\n },\n {\n dataElement: 'myNewOutlinesPanel',\n location: 'right',\n render: instance.UI.Panels.OUTLINE,\n }\n ]);\n */\nimport actions from 'actions';\nimport { PANEL_TYPE } from './addPanel';\nimport { Panel } from 'src/apis/getPanels';\n\nexport default (store) => (panelList) => {\n  const { checkTypes, TYPES } = window.Core;\n  checkTypes([panelList], [TYPES.ARRAY(PANEL_TYPE)], 'UI.setPanels');\n  panelList = panelList.map((panel) => {\n    if (panel instanceof Panel) {\n      panel = panel.toObject();\n    }\n    return panel;\n  });\n  store.dispatch(actions.setGenericPanels(panelList));\n};","/**\n * Creates a new modular UI using the provided JSON data and function map. The data is validated and will throw an error if a part of its structure is not valid. Existing UI components will be replaced with the new components provided in the JSON data.\n * @method UI.importModularComponents\n * @param {Object} data The JSON data containing maps of components, headers, and panels to be used in the UI. If any of the properties are not provided, they will not be used in the UI. ex: { modularComponents: { ... }, modularHeaders: { ... }, panels: { ... } }\n * @property {Object} modularComponents The map of components to be used in the UI. Refer to: {@link ItemProperties} for properties of modularComponents\n * @property {Object} modularHeaders The map of headers to be used in the UI. Refer to: {@link ContainerProperties} for properties of modularHeaders\n * @property {Object} panels The map of panels to be used in the UI. Refer to: {@link PanelProperties} for properties of panels\n * @property {Object} flyouts The map of flyouts to be used in the UI.\n * @property {string} flyouts.dataElement A unique string that identifies the flyout.\n * @property {Array<string>} flyouts.items An array of strings that represent the items in the flyout. Each string should be the dataElement of a component in the modularComponents map.\n * @param {object} functionMap A map of functions to be used in the components. The keys should match the function names used in the components. The values should be the actual functions to be called.\n * @example\n * WebViewer(...)\n .then(function (instance) {\n    const response = await fetch('./modular-components.json');\n    const data = await response.json();\n\n      const functionMap = {\n      'alertClick': () => alert(\"Alert triggered!\"),\n      'singlePageOnClick': (update) => {\n        update('DoublePage');\n      },\n      'doublePageOnClick': (update) => {\n        update('SinglePage');\n      },\n      'statefulButtonMount': () => {},\n      'statefulButtonUnmount': () => {},\n      };\n\n    instance.UI.importModularComponents(data, functionMap);\n */\nimport actions from 'actions';\nimport setPanels from './setPanels';\nimport { ITEM_TYPE, PREBUILT_FLYOUTS } from 'constants/customizationVariables';\nimport { panelNames } from 'constants/panel';\nimport cloneDeep from 'lodash/cloneDeep';\nimport fireEvent from 'helpers/fireEvent';\nimport Events from 'constants/events';\n\nconst { checkTypes, TYPES } = window.Core;\n\nconst validateComponents = (components, functionMap) => {\n  const normalizedComponent = TYPES.OBJECT({\n    dataElement: TYPES.STRING,\n    type: TYPES.ONE_OF(Object.values(ITEM_TYPE)),\n  });\n  const componentKeys = Object.keys(components);\n  componentKeys.forEach((key) => {\n    try {\n      if (components[key]._dataElement && !components[key].dataElement) {\n        components[key].dataElement = components[key]._dataElement;\n      }\n      checkTypes([components[key]], [normalizedComponent], 'UI.importModularComponents.validateComponents');\n      const COMPONENT_FUNCTION_KEYS = ['onClick', 'mount', 'unmount'];\n      Object.keys(components[key]).forEach((prop) => {\n        if (COMPONENT_FUNCTION_KEYS.includes(prop) && (!components[key][prop] || !functionMap[components[key][prop]])) {\n          console.warn(`Function: ${components[key][prop] || prop} not defined on component: ${key}. Use Function Map to define it. See https://docs.apryse.com/api/web/UI.html#.importModularComponents__anchor for more information.`);\n        }\n      });\n      if (components[key].items) {\n        components[key].items.forEach((item) => {\n          if (!components[item]) {\n            throw new Error(`Invalid item found in component: ${key} - ${item} not found in components`);\n          }\n        });\n      }\n    } catch (error) {\n      throw new Error(`Import has been aborted.\\nInvalid component found: ${key} - ${error.message}`);\n    }\n  });\n};\n\nconst validateHeaders = (headers, components) => {\n  const normalizedHeader = TYPES.OBJECT({\n    dataElement: TYPES.STRING,\n    placement: TYPES.ONE_OF('top', 'bottom', 'left', 'right'),\n  });\n  const headerKeys = Object.keys(headers);\n  headerKeys.forEach((key) => {\n    try {\n      checkTypes([headers[key]], [normalizedHeader], 'UI.importModularComponents.validateHeaders');\n      if (headers[key].items?.length > 0) {\n        headers[key].items.forEach((item) => {\n          if (!components[item]) {\n            throw new Error(`Invalid item found in header: ${key} - ${item} not found in components`);\n          }\n        });\n      }\n    } catch (error) {\n      throw new Error(`Import has been aborted.\\nInvalid header found: ${key} - ${error.message}`);\n    }\n  });\n};\n\nconst validatePanels = (panels) => {\n  const normalizedPanel = TYPES.OBJECT({\n    dataElement: TYPES.STRING,\n    location: TYPES.ONE_OF('left', 'right'),\n    render: TYPES.MULTI_TYPE(TYPES.ONE_OF(...Object.values(panelNames)), TYPES.FUNCTION)\n  });\n  const panelKeys = Object.keys(panels);\n  panelKeys.forEach((key) => {\n    try {\n      checkTypes([panels[key]], [normalizedPanel], 'UI.importModularComponents.validatePanels');\n    } catch (error) {\n      throw new Error(`Import has been aborted.\\nInvalid panel found: ${key} - ${error.message}`);\n    }\n  });\n};\n\nconst flyoutItemType = TYPES.OBJECT({\n  dataElement: TYPES.STRING,\n  type: TYPES.ONE_OF([ITEM_TYPE.PRESET_BUTTON, ITEM_TYPE.BUTTON, ITEM_TYPE.STATEFUL_BUTTON, ITEM_TYPE.TOGGLE_BUTTON]),\n  children: TYPES.OPTIONAL(TYPES.ARRAY(TYPES.STRING)) // Recursive type reference\n});\n\n\nconst validateFlyoutItems = (items, components, key) => {\n  items.forEach((item) => {\n    if (item === ITEM_TYPE.DIVIDER) {\n      return; // Skip validation for dividers\n    }\n    if (!components[item]) {\n      throw new Error(`Invalid item found in flyout: ${key} - ${item} not found in components`);\n    }\n    checkTypes([components[item]], [flyoutItemType], `UI.importModularComponents.validateFlyouts - ${JSON.stringify(components[item])}`);\n\n    // Recursively validate children if they exist\n    if (components[item].children && Array.isArray(components[item].children)) {\n      validateFlyoutItems(components[item].children, components, key);\n    }\n  });\n};\n\n\nconst validateFlyouts = (flyouts, components) => {\n  const normalizedFlyout = TYPES.OBJECT({\n    dataElement: TYPES.STRING,\n    items: TYPES.ARRAY(TYPES.STRING)\n  });\n  const flyoutKeys = Object.keys(flyouts);\n  flyoutKeys.forEach((key) => {\n    try {\n      checkTypes([flyouts[key]], [normalizedFlyout], 'UI.importModularComponents.validateFlyouts');\n      if (flyouts[key].items?.length > 0) {\n        validateFlyoutItems(flyouts[key].items, components, key);\n      }\n    } catch (error) {\n      throw new Error(`Invalid flyout found: ${key} - ${error.message}`);\n    }\n  });\n};\n\nconst validateJSONStructure = (jsonData, functionMap) => {\n  if (!jsonData) {\n    throw new Error('No data provided');\n  }\n\n  if (jsonData.modularComponents) {\n    validateComponents(jsonData.modularComponents, functionMap);\n  }\n\n  if (jsonData.modularHeaders) {\n    validateHeaders(jsonData.modularHeaders, jsonData.modularComponents);\n  }\n\n  if (jsonData.panels) {\n    validatePanels(jsonData.panels);\n  }\n\n  if (jsonData.flyouts) {\n    validateFlyouts(jsonData.flyouts, jsonData.modularComponents);\n  }\n};\n\nexport default (store) => async (components, functions = {}) => {\n  store.dispatch(actions.resetModularUIState());\n  const componentsToValidate = cloneDeep(components);\n  validateJSONStructure(componentsToValidate, functions);\n  const headersMap = componentsToValidate.modularHeaders || {};\n  const componentMap = componentsToValidate.modularComponents || {};\n  const panels = componentsToValidate.panels || {};\n  const flyouts = componentsToValidate.flyouts || {};\n\n  const panelList = Object.values(panels).map((panel) => panel);\n\n  store.dispatch(actions.setModularComponentFunctions(functions));\n\n  const getFunctionFromFunctionMap = (functionString) => {\n    const storedModularComponentFunctions = store.getState().viewer.modularComponentFunctions;\n    return storedModularComponentFunctions[functionString] || (() => { });\n  };\n\n  Object.values(componentMap).forEach((component) => {\n    if (component.type === ITEM_TYPE.BUTTON) {\n      component.onClick = getFunctionFromFunctionMap(component.onClick);\n    }\n    if (component.type === ITEM_TYPE.STATEFUL_BUTTON) {\n      for (const key in component.states) {\n        const state = component.states[key];\n        if (state.onClick) {\n          state.onClick = getFunctionFromFunctionMap(state.onClick);\n        }\n      }\n      component.mount = getFunctionFromFunctionMap(component.mount);\n      component.unmount = getFunctionFromFunctionMap(component.unmount);\n    }\n  });\n\n  store.dispatch(actions.setModularHeadersAndComponents(componentMap, headersMap));\n  setPanels(store)(panelList);\n\n  // keep prebuilt flyouts\n  const allFlyouts = store.getState().viewer.flyoutMap;\n  const prebuiltFlyouts = {};\n  Object.keys(allFlyouts).forEach((key) => {\n    const flyoutClassName = allFlyouts[key].className;\n    if (flyoutClassName && PREBUILT_FLYOUTS.includes(flyoutClassName)) {\n      prebuiltFlyouts[key] = allFlyouts[key];\n    }\n  });\n\n  // clear out existing flyouts\n  store.dispatch(actions.setFlyouts({}));\n\n  const mapItems = (items) => {\n    return items.map((item) => {\n      if (item === ITEM_TYPE.DIVIDER) {\n        return ITEM_TYPE.DIVIDER;\n      }\n      if (typeof item === 'string') {\n        item = componentMap[item];\n      }\n      if (item.children) {\n        item.children = mapItems(item.children);\n      }\n      return item;\n    });\n  };\n\n  // Add normalized flyouts\n  Object.values(flyouts).forEach((flyout) => {\n    flyout.items = mapItems(flyout.items);\n    store.dispatch(actions.addFlyout(flyout));\n  });\n\n  // add prebuilt flyouts\n  Object.values(prebuiltFlyouts).forEach((flyout) => {\n    store.dispatch(actions.addFlyout(flyout));\n  });\n\n  fireEvent(Events['MODULAR_UI_IMPORTED'], { importedComponents: components });\n};","/**\n * Sets the position of the scale overlay.\n * @method UI.setScaleOverlayPosition\n * @param {string} newPosition Must be one of the following: 'top-left', 'top-right', 'bottom-left', 'bottom-right'\n * @example\n WebViewer(...)\n .then(function(instance) {\n instance.UI.setScaleOverlayPosition('bottom-right')\n });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (position) => {\n  const { checkTypes, TYPES } = window.Core;\n  checkTypes([position], [TYPES.ONE_OF('top-left', 'top-right', 'bottom-left', 'bottom-right')], 'UI.setScaleOverlayPosition');\n  store.dispatch(actions.setScaleOverlayPosition(position));\n};","/**\n * Returns the active Ribbon Item in the modular UI.\n * @method UI.getActiveRibbonItem\n * @return {string} The dataElement of the active Ribbon Item.\n  @example\n  WebViewer(...)\n    .then(function(instance) {\n        console.log(instance.UI.getActiveRibbonItem());\n      );\n    });\n */\n\nimport selectors from 'selectors';\n\nexport default (store) => () => selectors.getActiveCustomRibbon(store.getState());","/**\n * Sets a Ribbon Item as active in the Modular UI.\n * @method UI.setActiveRibbonItem\n * @param {string} ribbonItem dataElement of the ribbon item to set as active.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    instance.UI.setActiveRibbonItem('toolbarGroup-Annotate');\n  });\n */\n\nimport actions from 'actions';\n\nexport default (store) => (ribbonItem) => {\n  store.dispatch(actions.setActiveCustomRibbon(ribbonItem));\n};","/**\n * Closes the tooltip that is currently being hovered over\n * @method UI.closeTooltip\n * @example\n WebViewer(...)\n .then(function(instance) {\n // call close after tooltip opens\n instance.UI.addEventListener('tooltipOpened', function() {\n instance.UI.closeTooltip();\n });\n });\n */\n\nimport { getCloseToolTipFunc } from 'helpers/hotkeysManager';\n\nexport default () => {\n  getCloseToolTipFunc()?.();\n};\n","import i18next from 'i18next';\n\nimport LayoutMode from 'constants/layoutMode';\nimport FitMode from 'constants/fitMode';\nimport Feature from 'constants/feature';\nimport Events from 'constants/events';\nimport ToolbarGroup from 'constants/toolbar';\nimport { NotesPanelSortStrategy } from 'constants/sortStrategies';\nimport Theme from 'constants/theme';\nimport RedactionSearchPatterns from 'constants/redactionSearchPatterns';\nimport { languageEnum } from 'constants/languages';\nimport { panelNames } from 'constants/panel';\nimport addSearchListener from './addSearchListener';\nimport addSortStrategy from './addSortStrategy';\nimport annotationPopup from './annotationPopup';\nimport closeDocument from './closeDocument';\nimport closeElements from './closeElements';\nimport contextMenuPopup from './contextMenuPopup';\nimport disableAnnotations from './disableAnnotations';\nimport disableDownload from './disableDownload';\nimport disableElement from './disableElement';\nimport disableElements from './disableElements';\nimport disableFeatures from './disableFeatures';\nimport disableFilePicker from './disableFilePicker';\nimport disableHighContrastMode from './disableHighContrastMode';\nimport disableLocalStorage from './disableLocalStorage';\nimport disableMeasurement from './disableMeasurement';\nimport disableNativeScrolling from './disableNativeScrolling';\nimport disableNotesPanel from './disableNotesPanel';\nimport disableNoteSubmissionWithEnter from './disableNoteSubmissionWithEnter';\nimport disablePrint from './disablePrint';\nimport disableRedaction from './disableRedaction';\nimport disableTextSelection from './disableTextSelection';\nimport disableTool from './disableTool';\nimport disableTools from './disableTools';\nimport disableTouchScrollLock from './disableTouchScrollLock';\nimport displayErrorMessage from './displayErrorMessage';\nimport downloadPdf from './downloadPdf';\nimport enableAllElements from './enableAllElements';\nimport enableAnnotations from './enableAnnotations';\nimport enableDownload from './enableDownload';\nimport enableElement from './enableElement';\nimport enableElements from './enableElements';\nimport enableHighContrastMode from './enableHighContrastMode';\nimport enableFeatures from './enableFeatures';\nimport enableFilePicker from './enableFilePicker';\nimport enableLocalStorage from './enableLocalStorage';\nimport enableMeasurement from './enableMeasurement';\nimport enableNativeScrolling from './enableNativeScrolling';\nimport enableNotesPanel from './enableNotesPanel';\nimport enablePrint from './enablePrint';\nimport enableRedaction from './enableRedaction';\nimport enableTextSelection from './enableTextSelection';\nimport enableTool from './enableTool';\nimport enableTools from './enableTools';\nimport enableTouchScrollLock from './enableTouchScrollLock';\nimport extractPagesWithAnnotations from './extractPagesWithAnnotations';\nimport focusNote from './focusNote';\nimport getAnnotationUser from './getAnnotationUser';\nimport getBBAnnotManager from './getBBAnnotManager';\nimport getCurrentLanguage from './getCurrentLanguage';\nimport getCurrentPageNumber from './getCurrentPageNumber';\nimport getFitMode from './getFitMode';\nimport getLayoutMode from './getLayoutMode';\nimport getPageCount from './getPageCount';\nimport getSelectors from './getSelectors';\nimport getShowSideWindow from './getShowSideWindow';\nimport getSideWindowVisibility from './getSideWindowVisibility';\nimport getToolMode from './getToolMode';\nimport getZoomLevel from './getZoomLevel';\nimport getMaxZoomLevel from './getMaxZoomLevel';\nimport getMinZoomLevel from './getMinZoomLevel';\nimport goToFirstPage from './goToFirstPage';\nimport goToLastPage from './goToLastPage';\nimport goToNextPage from './goToNextPage';\nimport goToPrevPage from './goToPrevPage';\nimport hideOutlineControl from './hideOutlineControl';\nimport hotkeys from './hotkeys';\nimport isAdminUser from './isAdminUser';\nimport isElementDisabled from './isElementDisabled';\nimport isElementOpen from './isElementOpen';\nimport isHighContrastModeEnabled from './isHighContrastModeEnabled';\nimport isReadOnly from './isReadOnly';\nimport isToolDisabled from './isToolDisabled';\nimport isFullscreen from './isFullscreen';\nimport loadDocument from './loadDocument';\nimport mentions from './mentions';\nimport settingsMenuOverlay from './menuOverlay';\nimport openElement from './openElement';\nimport openElements from './openElements';\nimport print from './print';\nimport printInBackground from './printInBackground';\nimport cancelPrint from './cancelPrint';\nimport registerTool from './registerTool';\nimport removeSearchListener from './removeSearchListener';\nimport rotateClockwise from './rotateClockwise';\nimport rotateCounterClockwise from './rotateCounterClockwise';\nimport saveAnnotations from './saveAnnotations';\nimport searchText from './searchText';\nimport searchTextFull from './searchTextFull';\nimport setWv3dPropertiesPanelModelData from './setWv3dPropertiesPanelModelData';\nimport setWv3dPropertiesPanelSchema from './setWv3dPropertiesPanelSchema';\nimport setActiveHeaderGroup from './setActiveHeaderGroup';\nimport setActiveLeftPanel from './setActiveLeftPanel';\nimport setTimezone from './setTimezone';\nimport setAdminUser from './setAdminUser';\nimport setAnnotationUser from './setAnnotationUser';\nimport setActivePalette from './setActivePalette';\nimport setColorPalette from './setColorPalette';\nimport setPageReplacementModalFileList from './setPageReplacementModalFileList';\nimport setCurrentPageNumber from './setCurrentPageNumber';\nimport addCustomModal from './addCustomModal';\nimport setCustomNoteFilter from './setCustomNoteFilter';\nimport setInlineCommentFilter from './setInlineCommentFilter';\nimport setCustomPanel from './setCustomPanel';\nimport exportBookmarks from './exportBookmarks';\nimport importBookmarks from './importBookmarks';\nimport setEmbeddedJSPopupStyle from './setEmbeddedJSPopupStyle';\nimport setFitMode from './setFitMode';\nimport setHeaderItems from './setHeaderItems';\nimport setIconColor from './setIconColor';\nimport setLanguage from './setLanguage';\nimport setTranslations from './setTranslations';\nimport setLayoutMode from './setLayoutMode';\nimport setMaxZoomLevel from './setMaxZoomLevel';\nimport setMinZoomLevel from './setMinZoomLevel';\nimport setNoteDateFormat from './setNoteDateFormat';\nimport setPrintedNoteDateFormat from './setPrintedNoteDateFormat';\nimport setNotesPanelSort from './setNotesPanelSort';\nimport setPageLabels from './setPageLabels';\nimport { setFontPath, getFontPath } from './fontPathHandler';\nimport setPrintQuality from './setPrintQuality';\nimport setDefaultPrintOptions from './setDefaultPrintOptions';\nimport setSelectedTab from './setSelectedTab';\nimport setSideWindowVisibility from './setSideWindowVisibility';\nimport setNotesPanelSortStrategy from './setNotesPanelSortStrategy';\nimport setSwipeOrientation from './setSwipeOrientation';\nimport setTheme from './setTheme';\nimport setToolbarGroup from './setToolbarGroup';\nimport createToolbarGroup from './createToolbarGroup';\nimport setToolMode from './setToolMode';\nimport setZoomLevel from './setZoomLevel';\nimport setZoomList from './setZoomList';\nimport showOutlineControl from './showOutlineControl';\nimport showWarningMessage from './showWarningMessage';\nimport syncNamespaces from './syncNamespaces';\nimport textPopup from './textPopup';\nimport toggleFullScreen from './toggleFullScreen';\nimport {\n  enableToolDefaultStyleUpdateFromAnnotationPopup,\n  disableToolDefaultStyleUpdateFromAnnotationPopup\n} from './toolDefaultStyleUpdateFromAnnotationPopup';\nimport { enableAnnotationToolStyleSyncing, disableAnnotationToolStyleSyncing } from './annotationToolStyleSyncing';\nimport unregisterTool from './unregisterTool';\nimport updateElement from './updateElement';\nimport updateTool from './updateTool';\nimport useEmbeddedPrint from './useEmbeddedPrint';\nimport useClientSidePrint from './useClientSidePrint';\nimport setDisplayedSignaturesFilterFunction from './setDisplayedSignaturesFilterFunction';\nimport setMeasurementUnits from './setMeasurementUnits';\nimport setMaxSignaturesCount from './setMaxSignaturesCount';\nimport setSignatureFonts from './setSignatureFonts';\nimport disableReplyForAnnotations from './disableReplyForAnnotations';\nimport getCustomData from './getCustomData';\nimport setCustomMeasurementOverlayInfo from './setCustomMeasurementOverlayInfo';\nimport setNoteTransformFunction from './setNoteTransformFunction';\nimport setCustomNoteSelectionFunction from './setCustomNoteSelectionFunction';\nimport setCustomApplyRedactionsHandler from './setCustomApplyRedactionsHandler';\nimport setCustomMultiViewerSyncHandler from './setCustomMultiViewerSyncHandler';\nimport setCustomMultiViewerAcceptedFileFormats from './setCustomMultiViewerAcceptedFileFormats';\nimport setSearchResults from './setSearchResults';\nimport setActiveResult from './setActiveResult';\nimport setAnnotationContentOverlayHandler from './setAnnotationContentOverlayHandler';\nimport overrideSearchExecution from './overrideSearchExecution';\nimport reactElements from './reactElements';\nimport {\n  addTrustedCertificates,\n  loadTrustList,\n  enableOnlineCRLRevocationChecking,\n  setRevocationProxyPrefix,\n} from './verificationOptions';\nimport {\n  enableTextCollapse,\n  disableTextCollapse,\n  enableReplyCollapse,\n  disableReplyCollapse,\n  disableAutoExpandCommentThread,\n  enableAutoExpandCommentThread,\n  setCustomHeader,\n  setCustomEmptyPanel,\n  enableAttachmentPreview,\n  disableAttachmentPreview,\n  disableMultiSelect as notesPanelDisableMultiSelect,\n  setAttachmentHandler,\n  enableMeasurementAnnotationFilter,\n  disableMeasurementAnnotationFilter,\n} from './notesPanel';\nimport {\n  enableMultiselect,\n  disableMultiselect,\n  enableMultiSelect,\n  disableMultiSelect,\n  selectPages,\n  unselectPages,\n  getSelectedPageNumbers,\n  setThumbnailSelectionMode,\n} from './thumbnailsPanel';\nimport toggleReaderMode from './toggleReaderMode';\nimport toggleElementVisibility from './toggleElementVisibility';\nimport setAnnotationReadState from './setAnnotationReadState';\nimport getAnnotationReadState from './getAnnotationReadState';\nimport enableClearSearchOnPanelClose from './enableClearSearchOnPanelClose';\nimport disableClearSearchOnPanelClose from './disableClearSearchOnPanelClose';\nimport disableFadePageNavigationComponent from './disableFadePageNavigationComponent';\nimport enableFadePageNavigationComponent from './enableFadePageNavigationComponent';\nimport disablePageDeletionConfirmationModal from './disablePageDeletionConfirmationModal';\nimport enablePageDeletionConfirmationModal from './enablePageDeletionConfirmationModal';\nimport addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\nimport enableDesktopOnlyMode from './enableDesktopOnlyMode';\nimport disableDesktopOnlyMode from './disableDesktopOnlyMode';\nimport isInDesktopOnlyMode from './isInDesktopOnlyMode';\nimport pageManipulationOverlay from './pageManipulationOverlay';\nimport multiPageManipulationControls from './multiPageManipulationControls';\nimport thumbnailControlMenu from './thumbnailControlMenu';\nimport getWatermarkModalOptions from './getWatermarkModalOptions';\nimport enableNoteSubmissionWithEnter from './enableNoteSubmissionWithEnter';\nimport willUseEmbeddedPrinting from 'src/apis/willUseEmbeddedPrinting';\nimport reloadOutline from './reloadOutline';\nimport Fonts from 'src/apis/fonts';\nimport TabManagerAPI from './TabManagerAPI';\nimport getAvailableLanguages from './getAvailableLanguages';\nimport replaceRedactionSearchPattern from './replaceRedactionSearchPattern';\nimport disableApplyCropWarningModal from './disableApplyCropWarningModal';\nimport enableApplyCropWarningModal from './enableApplyCropWarningModal';\nimport disableApplySnippingWarningModal from './disableApplySnippingWarningModal';\nimport enableApplySnippingWarningModal from './enableApplySnippingWarningModal';\nimport setPresetCropDimensions from './setPresetCropDimensions';\nimport setPresetNewPageDimensions from './setPresetNewPageDimensions';\nimport addDateTimeFormat from './addDateTimeFormat';\nimport addRedactionSearchPattern from './addRedactionSearchPattern';\nimport removeRedactionSearchPattern from './removeRedactionSearchPattern';\nimport getAnnotationStylePopupTabs from './getAnnotationStylePopupTabs';\nimport setAnnotationStylePopupTabs from './setAnnotationStylePopupTabs';\nimport { AnnotationKeys, AnnotationStylePopupTabs } from '../constants/map';\nimport getZoomStepFactors from './getZoomStepFactors';\nimport setZoomStepFactors from './setZoomStepFactors';\nimport enableBookmarkIconShortcutVisibility from './enableBookmarkIconShortcutVisibility';\nimport disableBookmarkIconShortcutVisibility from './disableBookmarkIconShortcutVisibility';\nimport showFormFieldIndicators from './showFormFieldIndicators';\nimport hideFormFieldIndicators from './hideFormFieldIndicators';\nimport signSignatureWidget from './signSignatureWidget';\nimport addModularHeaders from './addModularHeaders';\nimport getModularHeader from './getModularHeader';\nimport getModularHeaderList from './getModularHeaderList';\nimport exportModularComponents from './exportModularComponents';\nimport setGroupedItemsGap from './setGroupedItemsGap';\nimport setGroupedItemsJustifyContent from './setGroupedItemsJustifyContent';\nimport setGroupedItemsGrow from './setGroupedItemsGrow';\nimport core from 'core';\nimport { setDefaultOptions } from './outlinesPanel';\nimport Item from './ModularComponents/item';\nimport GroupedItems from './ModularComponents/groupedItems';\nimport ModularHeader from './ModularComponents/modularHeader';\nimport CustomButton from './ModularComponents/customButton';\nimport ToolButton from './ModularComponents/toolButton';\nimport RibbonItem from './ModularComponents/ribbonItem';\nimport RibbonGroup from './ModularComponents/ribbonGroup';\nimport ToggleElementButton from './ModularComponents/toggleElementButton';\nimport Zoom from './ModularComponents/zoom';\nimport Flyout from './ModularComponents/flyout';\nimport PresetButton from './ModularComponents/presetButton';\nimport StatefulButton from './ModularComponents/statefulButton';\nimport ViewControls from './ModularComponents/viewControls';\nimport PageControls from './ModularComponents/pageControls';\nimport MainMenu from './ModularComponents/menu';\nimport TabPanel from './ModularComponents/tabPanel';\nimport setMultiViewerSyncScrollingMode from './setMultiViewerSyncScrollingMode';\nimport setTextSignatureQuality from './setTextSignatureQuality';\nimport getTextSignatureQuality from './getTextSignatureQuality';\nimport {\n  getMeasurementScalePreset,\n  addMeasurementScalePreset,\n  removeMeasurementScalePreset,\n  enableMultipleScalesMode,\n  disableMultipleScalesMode,\n  isMultipleScalesModeEnabled,\n} from './measurementScale';\nimport getLocalizedText from './getLocalizedText';\nimport getDocumentViewer from './getDocumentViewer';\nimport { enableMultiViewerSync, disableMultiViewerSync, isMultiViewerSyncing } from './multiViewerSync';\nimport { setCustomSettings, exportUserSettings, importUserSettings } from './userSettings';\nimport addPanel from './addPanel';\nimport setGrayscaleDarknessFactor from './setGrayscaleDarknessFactor';\nimport { JUSTIFY_CONTENT, PRESET_BUTTON_TYPES } from 'constants/customizationVariables';\nimport FlyoutsAPI from './FlyoutsAPI';\nimport { getInstanceNode } from 'helpers/getRootNode';\nimport { setClickMiddleware } from 'src/apis/setClickMiddleware';\nimport { ClickedItemTypes } from 'helpers/clickTracker';\nimport FeatureFlags from 'constants/featureFlags';\nimport enableFeatureFlag from './enableFeatureFlag';\nimport disableFeatureFlag from './disableFeatureFlag';\nimport enterMultiViewerMode from './enterMultiViewerMode';\nimport exitMultiViewerMode from './exitMultiViewerMode';\nimport setPanelWidth from './setPanelWidth';\nimport setModularHeaders from './setModularHeaders';\nimport importModularComponents from './importModularComponents';\nimport setScaleOverlayPosition from './setScaleOverlayPosition';\nimport setPanels from './setPanels';\nimport getPanels from './getPanels';\nimport getActiveRibbonItem from './getActiveRibbonItem';\nimport setActiveRibbonItem from './setActiveRibbonItem';\nimport closeTooltip from './closeToolTip';\n\nexport default (store) => {\n  const CORE_NAMESPACE = 'Core';\n  const UI_NAMESPACE = 'UI';\n  const objForWebViewerCore = {\n    Tools: window.Core.Tools,\n    Annotations: window.Core.Annotations,\n    PartRetrievers: window.Core.PartRetrievers,\n    Actions: window.Core.Actions,\n    PDFNet: window.Core.PDFNet,\n  };\n  const objForWebViewerUI = {\n    FitMode,\n    LayoutMode,\n    Feature,\n    Events,\n    Languages: languageEnum,\n    ToolbarGroup,\n    NotesPanelSortStrategy,\n    Theme,\n    RedactionSearchPatterns,\n    JustifyContent: JUSTIFY_CONTENT,\n    PRESET_BUTTON_TYPES: PRESET_BUTTON_TYPES,\n    addSearchListener,\n    addSortStrategy: addSortStrategy(store),\n    annotationPopup: annotationPopup(store),\n    closeDocument: closeDocument(store),\n    closeElements: closeElements(store),\n    contextMenuPopup: contextMenuPopup(store),\n    disableElements: disableElements(store),\n    setWv3dPropertiesPanelModelData: setWv3dPropertiesPanelModelData(store),\n    setWv3dPropertiesPanelSchema: setWv3dPropertiesPanelSchema(store),\n    disableFeatures: disableFeatures(store),\n    disableTools: disableTools(store),\n    disableReplyForAnnotations: disableReplyForAnnotations(store),\n    displayErrorMessage: displayErrorMessage(store),\n    disableHighContrastMode: disableHighContrastMode(store),\n    downloadPdf: downloadPdf(store),\n    enableElements: enableElements(store),\n    enableFeatures: enableFeatures(store),\n    enableTools: enableTools(store),\n    focusNote: focusNote(store),\n    getFitMode: getFitMode(store),\n    getLayoutMode: getLayoutMode(store),\n    getToolMode,\n    getZoomLevel,\n    getMaxZoomLevel,\n    getMinZoomLevel,\n    hotkeys,\n    hideOutlineControl: hideOutlineControl(store),\n    isElementDisabled: isElementDisabled(store),\n    isElementOpen: isElementOpen(store),\n    isToolDisabled: isToolDisabled(store),\n    isHighContrastModeEnabled: isHighContrastModeEnabled(store),\n    isFullscreen,\n    loadDocument: loadDocument(store),\n    settingsMenuOverlay: settingsMenuOverlay(store),\n    pageManipulationOverlay: pageManipulationOverlay(store),\n    multiPageManipulationControls: multiPageManipulationControls(store),\n    thumbnailControlMenu: thumbnailControlMenu(store),\n    openElements: openElements(store),\n    print: print(store),\n    printInBackground: printInBackground(store),\n    cancelPrint,\n    registerTool: registerTool(store),\n    removeSearchListener,\n    searchText: searchText(store.dispatch),\n    searchTextFull: searchTextFull(store),\n    overrideSearchExecution,\n    setActiveHeaderGroup: setActiveHeaderGroup(store),\n    getActiveRibbonItem: getActiveRibbonItem(store),\n    setActiveRibbonItem: setActiveRibbonItem(store),\n    setActiveLeftPanel: setActiveLeftPanel(store),\n    setTimezone: setTimezone(store),\n    addCustomModal: addCustomModal(store),\n    addPanel: addPanel(store),\n    showOutlineControl: showOutlineControl(store),\n    setCustomNoteFilter: setCustomNoteFilter(store),\n    setInlineCommentFilter: setInlineCommentFilter(store),\n    setCustomPanel: setCustomPanel(store),\n    exportBookmarks: exportBookmarks(store),\n    extractPagesWithAnnotations,\n    importBookmarks: importBookmarks(store),\n    setEmbeddedJSPopupStyle: setEmbeddedJSPopupStyle(store),\n    setFitMode,\n    setHeaderItems: setHeaderItems(store),\n    setIconColor: setIconColor(store),\n    setLanguage: setLanguage(store),\n    setTranslations,\n    setLayoutMode,\n    setMaxZoomLevel: setMaxZoomLevel(store),\n    setMinZoomLevel: setMinZoomLevel(store),\n    setNoteDateFormat: setNoteDateFormat(store),\n    setPrintedNoteDateFormat: setPrintedNoteDateFormat(store),\n    setMeasurementUnits: setMeasurementUnits(store),\n    setPageLabels: setPageLabels(store),\n    setFontPath,\n    getFontPath,\n    setPrintQuality: setPrintQuality(store),\n    setDefaultPrintOptions: setDefaultPrintOptions(store),\n    setNotesPanelSortStrategy: setNotesPanelSortStrategy(store),\n    setSwipeOrientation,\n    setTheme: setTheme(store),\n    setToolbarGroup: setToolbarGroup(store),\n    createToolbarGroup: createToolbarGroup(store),\n    dangerouslySetNoteTransformFunction: setNoteTransformFunction(store),\n    setCustomNoteSelectionFunction: setCustomNoteSelectionFunction(store),\n    setCustomApplyRedactionsHandler: setCustomApplyRedactionsHandler(store),\n    setCustomMultiViewerSyncHandler: setCustomMultiViewerSyncHandler(store),\n    setCustomMultiViewerAcceptedFileFormats: setCustomMultiViewerAcceptedFileFormats(store),\n    setToolMode,\n    setZoomLevel,\n    setZoomList: setZoomList(store),\n    setSearchResults,\n    setActiveResult,\n    textPopup: textPopup(store),\n    toggleElementVisibility: toggleElementVisibility(store),\n    toggleFullScreen,\n    unregisterTool: unregisterTool(store),\n    updateTool: updateTool(store),\n    updateElement: updateElement(store),\n    useClientSidePrint: useClientSidePrint(store),\n    useEmbeddedPrint: useEmbeddedPrint(store),\n    willUseEmbeddedPrinting: willUseEmbeddedPrinting(store),\n    setMaxSignaturesCount: setMaxSignaturesCount(store),\n    mentions: mentions(store),\n    setCustomMeasurementOverlayInfo: setCustomMeasurementOverlayInfo(store),\n    setSignatureFonts: setSignatureFonts(store),\n    setSelectedTab: setSelectedTab(store),\n\n    setDisplayedSignaturesFilter: setDisplayedSignaturesFilterFunction(store),\n\n    setAnnotationContentOverlayHandler: setAnnotationContentOverlayHandler(store),\n    VerificationOptions: {\n      addTrustedCertificates: addTrustedCertificates(store),\n      loadTrustList: loadTrustList(store),\n      enableOnlineCRLRevocationChecking: enableOnlineCRLRevocationChecking(store),\n      setRevocationProxyPrefix: setRevocationProxyPrefix(store),\n    },\n    Panels: panelNames,\n    ThumbnailsPanel: {\n      selectPages: selectPages(store),\n      unselectPages: unselectPages(store),\n      getSelectedPageNumbers: getSelectedPageNumbers(store),\n      enableMultiselect: enableMultiselect(store),\n      disableMultiselect: disableMultiselect(store),\n      enableMultiSelect: enableMultiSelect(store),\n      disableMultiSelect: disableMultiSelect(store),\n      setThumbnailSelectionMode: setThumbnailSelectionMode(store),\n    },\n    NotesPanel: {\n      enableTextCollapse: enableTextCollapse(store),\n      disableTextCollapse: disableTextCollapse(store),\n      enableReplyCollapse: enableReplyCollapse(store),\n      disableReplyCollapse: disableReplyCollapse(store),\n      disableAutoExpandCommentThread: disableAutoExpandCommentThread(store),\n      enableAutoExpandCommentThread: enableAutoExpandCommentThread(store),\n      setCustomHeader: setCustomHeader(store),\n      setCustomEmptyPanel: setCustomEmptyPanel(store),\n      enableAttachmentPreview: enableAttachmentPreview(store),\n      disableAttachmentPreview: disableAttachmentPreview(store),\n      disableMultiSelect: notesPanelDisableMultiSelect(store),\n      setAttachmentHandler: setAttachmentHandler(store),\n      enableMeasurementAnnotationFilter: enableMeasurementAnnotationFilter(store),\n      disableMeasurementAnnotationFilter: disableMeasurementAnnotationFilter(store),\n    },\n    OutlinesPanel: {\n      setDefaultOptions: setDefaultOptions(store),\n    },\n    importModularComponents: importModularComponents(store),\n    addModularHeaders: addModularHeaders(store),\n    setModularHeaders: setModularHeaders(store),\n    getModularHeader: getModularHeader(store),\n    getModularHeaderList: getModularHeaderList(store),\n    exportModularComponents: exportModularComponents(store),\n    Flyouts: FlyoutsAPI(store),\n    setGroupedItemsGap: setGroupedItemsGap(store),\n    setGroupedItemsJustifyContent: setGroupedItemsJustifyContent(store),\n    setGroupedItemsGrow: setGroupedItemsGrow(store),\n    setPanels: setPanels(store),\n    getPanels: getPanels(store),\n    Components: {\n      Item,\n      GroupedItems: GroupedItems(store),\n      ModularHeader: ModularHeader(store),\n      TopHeader: ModularHeader(store),\n      BottomHeader: ModularHeader(store),\n      LeftHeader: ModularHeader(store),\n      RightHeader: ModularHeader(store),\n      CustomButton,\n      ToolButton,\n      ToggleElementButton,\n      RibbonItem,\n      RibbonGroup: RibbonGroup(store),\n      Zoom,\n      Flyout: Flyout(store),\n      PresetButton,\n      StatefulButton,\n      ViewControls,\n      PageControls,\n      MainMenu: MainMenu(store),\n      TabPanel,\n    },\n    getWatermarkModalOptions: getWatermarkModalOptions(store),\n    // undocumented and deprecated, to be removed in 7.0\n    disableAnnotations: disableAnnotations(store),\n    disableDownload: disableDownload(store),\n    disableElement: disableElement(store),\n    disableFilePicker: disableFilePicker(store),\n    disableLocalStorage,\n    disableMeasurement: disableMeasurement(store),\n    disableNotesPanel: disableNotesPanel(store),\n    disableNoteSubmissionWithEnter: disableNoteSubmissionWithEnter(store),\n    disablePrint: disablePrint(store),\n    disableRedaction: disableRedaction(store),\n    disableTextSelection: disableTextSelection(store),\n    disableTouchScrollLock,\n    enableAnnotations: enableAnnotations(store),\n    enableDownload: enableDownload(store),\n    enableElement: enableElement(store),\n    enableFilePicker: enableFilePicker(store),\n    enableHighContrastMode: enableHighContrastMode(store),\n    enableLocalStorage,\n    enableMeasurement: enableMeasurement(store),\n    enableNotesPanel: enableNotesPanel(store),\n    enableNoteSubmissionWithEnter: enableNoteSubmissionWithEnter(store),\n    enablePrint: enablePrint(store),\n    enableRedaction: enableRedaction(store),\n    enableTextSelection: enableTextSelection(store),\n    enableTool: enableTool(store),\n    enableTouchScrollLock,\n    enableNativeScrolling,\n    getAnnotationUser,\n    getCurrentPageNumber: getCurrentPageNumber(store),\n    getCurrentLanguage: getCurrentLanguage(store),\n    getLocalizedText,\n    getPageCount: getPageCount(store),\n    getShowSideWindow: getShowSideWindow(store),\n    getSideWindowVisibility: getSideWindowVisibility(store),\n    setNotesPanelSort: setNotesPanelSort(store),\n    setActivePalette: setActivePalette(store),\n    setColorPalette: setColorPalette(store),\n    setPageReplacementModalFileList: setPageReplacementModalFileList(store),\n    disableTool: disableTool(store),\n    enableAllElements: enableAllElements(store),\n    goToFirstPage,\n    goToLastPage: goToLastPage(store),\n    goToNextPage: goToNextPage(store),\n    goToPrevPage: goToPrevPage(store),\n    isAdminUser,\n    isReadOnly,\n    openElement: openElement(store),\n    rotateClockwise,\n    rotateCounterClockwise,\n    saveAnnotations: saveAnnotations(store),\n    setAdminUser,\n    setAnnotationUser,\n    setCurrentPageNumber,\n    getCustomData,\n    toggleReaderMode: toggleReaderMode(store),\n    enableToolDefaultStyleUpdateFromAnnotationPopup: enableToolDefaultStyleUpdateFromAnnotationPopup(store),\n    disableToolDefaultStyleUpdateFromAnnotationPopup: disableToolDefaultStyleUpdateFromAnnotationPopup(store),\n    enableAnnotationToolStyleSyncing: enableAnnotationToolStyleSyncing(store),\n    disableAnnotationToolStyleSyncing: disableAnnotationToolStyleSyncing(store),\n    addEventListener,\n    removeEventListener,\n    syncNamespaces,\n    Fonts: Fonts(store),\n    reloadOutline: reloadOutline(store),\n    TabManager: TabManagerAPI(store),\n    getAvailableLanguages,\n    replaceRedactionSearchPattern: replaceRedactionSearchPattern(store),\n    disableApplyCropWarningModal: disableApplyCropWarningModal(store),\n    enableApplyCropWarningModal: enableApplyCropWarningModal(store),\n    disableApplySnippingWarningModal: disableApplySnippingWarningModal(store),\n    enableApplySnippingWarningModal: enableApplySnippingWarningModal(store),\n    setPresetCropDimensions: setPresetCropDimensions(store),\n    setPresetNewPageDimensions: setPresetNewPageDimensions(store),\n    addDateTimeFormat: addDateTimeFormat(store),\n    addRedactionSearchPattern: addRedactionSearchPattern(store),\n    removeRedactionSearchPattern: removeRedactionSearchPattern(store),\n    setThumbnailSelectionMode: setThumbnailSelectionMode(store),\n    enableBookmarkIconShortcutVisibility: enableBookmarkIconShortcutVisibility(store),\n    disableBookmarkIconShortcutVisibility: disableBookmarkIconShortcutVisibility(store),\n    showFormFieldIndicators: showFormFieldIndicators(store),\n    hideFormFieldIndicators: hideFormFieldIndicators(store),\n    signSignatureWidget,\n    getMeasurementScalePreset: getMeasurementScalePreset(store),\n    addMeasurementScalePreset: addMeasurementScalePreset(store),\n    removeMeasurementScalePreset: removeMeasurementScalePreset(store),\n    enableMultipleScalesMode: enableMultipleScalesMode(store),\n    disableMultipleScalesMode: disableMultipleScalesMode(store),\n    isMultipleScalesModeEnabled: isMultipleScalesModeEnabled(store),\n    enableMultiViewerSync: enableMultiViewerSync(store),\n    disableMultiViewerSync: disableMultiViewerSync(store),\n    isMultiViewerSyncing: isMultiViewerSyncing(store),\n    setCustomSettings: setCustomSettings(store),\n    exportUserSettings: exportUserSettings(store),\n    importUserSettings: importUserSettings(store),\n    setGrayscaleDarknessFactor,\n    setSideWindowVisibility: setSideWindowVisibility(store),\n    setMultiViewerSyncScrollingMode: setMultiViewerSyncScrollingMode(store),\n    setTextSignatureQuality: setTextSignatureQuality(store),\n    getTextSignatureQuality: getTextSignatureQuality(store),\n    setClickMiddleware,\n    ClickedItemTypes,\n    FeatureFlags,\n    enableFeatureFlag: enableFeatureFlag(store),\n    disableFeatureFlag: disableFeatureFlag(store),\n    setPanelWidth: setPanelWidth(store),\n    setScaleOverlayPosition: setScaleOverlayPosition(store),\n\n    // undocumented\n    loadedFromServer: false,\n    serverFailed: false,\n    i18n: i18next,\n    showWarningMessage: showWarningMessage(store),\n    getBBAnnotManager,\n    selectors: getSelectors(store),\n    reactElements,\n    enableClearSearchOnPanelClose: enableClearSearchOnPanelClose(store),\n    disableClearSearchOnPanelClose: disableClearSearchOnPanelClose(store),\n    disableNativeScrolling,\n    setAnnotationReadState: setAnnotationReadState(store),\n    getAnnotationReadState: getAnnotationReadState(store),\n    disableFadePageNavigationComponent: disableFadePageNavigationComponent(store),\n    enableFadePageNavigationComponent: enableFadePageNavigationComponent(store),\n    enableDesktopOnlyMode: enableDesktopOnlyMode(store),\n    disableDesktopOnlyMode: disableDesktopOnlyMode(store),\n    isInDesktopOnlyMode: isInDesktopOnlyMode(store),\n    disablePageDeletionConfirmationModal: disablePageDeletionConfirmationModal(store),\n    enablePageDeletionConfirmationModal: enablePageDeletionConfirmationModal(store),\n    getAnnotationStylePopupTabs,\n    setAnnotationStylePopupTabs: setAnnotationStylePopupTabs(store),\n    AnnotationKeys,\n    AnnotationStylePopupTabs,\n    getZoomStepFactors: getZoomStepFactors(store),\n    setZoomStepFactors: setZoomStepFactors(store),\n    getDocumentViewer,\n    enterMultiViewerMode: enterMultiViewerMode(store),\n    exitMultiViewerMode: exitMultiViewerMode(store),\n    closeTooltip,\n  };\n  const documentViewer = core.getDocumentViewer(1);\n\n  getInstanceNode().instance = {\n    // keys needed for webviewer.js\n    CORE_NAMESPACE_KEY: CORE_NAMESPACE,\n    UI_NAMESPACE_KEY: UI_NAMESPACE,\n    [CORE_NAMESPACE]: {\n      ...objForWebViewerCore,\n      ...window.Core,\n      documentViewer,\n      annotationManager: documentViewer.getAnnotationManager(),\n      getDocumentViewers: () => core.getDocumentViewers(),\n    },\n    [UI_NAMESPACE]: objForWebViewerUI,\n  };\n};\n","export default (docType) => (docType === 'auto' || docType === 'wait'\n  ? window.Core.getDefaultBackendType()\n  : Promise.resolve(docType));\n","import PropTypes from 'prop-types';\n\nconst wildCardMatch = (allowedOrigins, origin) => allowedOrigins.filter((allowedOrigin) => wildcardToRegExp(allowedOrigin).test(origin)).length;\n\n// Creates a RegExp from the given string, converting asterisks to .* expressions,\n// and escaping all other characters.\nconst wildcardToRegExp = (s) => {\n  return new RegExp(`^${s.split(/\\*+/).map(regExpEscape).join('.*')}$`);\n};\n\n// RegExp-escapes all characters in the given string\nconst regExpEscape = (s) => {\n  return s.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nwildCardMatch.PropTypes = {\n  allowedOrigins: PropTypes.array,\n  origin: PropTypes.string\n};\n\nexport default wildCardMatch;","import getHashParameters from 'helpers/getHashParameters';\nimport wildCardMatch from 'helpers/wildCardMatch';\n\nconst loadScript = (scriptSrc, warning) => new Promise((resolve) => {\n  if (!scriptSrc) {\n    return resolve();\n  }\n\n  const script = document.createElement('script');\n  script.type = 'text/javascript';\n  script.onload = function() {\n    resolve();\n  };\n  script.onerror = function() {\n    if (warning) {\n      console.warn(warning);\n    }\n    resolve();\n  };\n  script.src = scriptSrc;\n  document.getElementsByTagName('head')[0].appendChild(script);\n});\n\n// communicates with the parent window to get the URL of the config file and loads it\n// ignore subsequent messages after successfully loads a config file\nconst loadConfig = () => new Promise((resolve) => {\n  if (window.parent === window || window.isApryseWebViewerWebComponent) {\n    // resolve immediately if we are developing the UI on its own\n    resolve();\n  } else {\n    window.addEventListener('message', async function loadConfig(e) {\n      if (e.data.type === 'responseConfig') {\n        const { value } = e.data;\n\n        try {\n          if (value) {\n            if (e.origin !== window.location.origin) {\n              const response = await fetch('configorigin.txt');\n\n              let data = '';\n              if (response.status === 200) {\n                data = await response.text();\n              }\n\n              data = data.replace(/\\r|\\t/g, '\\n');\n              const allowedOrigins = data.split('\\n').filter(Boolean);\n              if (!wildCardMatch(allowedOrigins, `${e.origin}`)) {\n                console.warn(`Config file requested to be loaded by origin ${e.origin}. Please include this origin inside lib/ui/configorigin.txt to allow it to request config files.`);\n                return;\n              }\n            }\n\n            await loadScript(e.data.value, 'Config script could not be loaded');\n            window.removeEventListener('message', loadConfig);\n          }\n        } finally {\n          resolve();\n        }\n      }\n    });\n\n    window.parent.postMessage({\n      type: 'requestConfig',\n      id: parseInt(getHashParameters('id'), 10),\n    }, '*');\n  }\n});\n\nexport default loadScript;\nexport { loadConfig };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { defaults, makePromise } from './utils.js';\nimport request from './request.js';\n\nvar getDefaults = function getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: '/locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: function parse(data) {\n      return JSON.parse(data);\n    },\n    stringify: JSON.stringify,\n    parsePayload: function parsePayload(namespace, key, fallbackValue) {\n      return _defineProperty({}, key, fallbackValue || '');\n    },\n    request: request,\n    reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n    customHeaders: {},\n    queryStringParams: {},\n    crossDomain: false,\n    withCredentials: false,\n    overrideMimeType: false,\n    requestOptions: {\n      mode: 'cors',\n      credentials: 'same-origin',\n      cache: 'default'\n    }\n  };\n};\n\nvar Backend = function () {\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    _classCallCheck(this, Backend);\n\n    this.services = services;\n    this.options = options;\n    this.allOptions = allOptions;\n    this.type = 'backend';\n    this.init(services, options, allOptions);\n  }\n\n  _createClass(Backend, [{\n    key: \"init\",\n    value: function init(services) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.services = services;\n      this.options = defaults(options, this.options || {}, getDefaults());\n      this.allOptions = allOptions;\n\n      if (this.services && this.options.reloadInterval) {\n        setInterval(function () {\n          return _this.reload();\n        }, this.options.reloadInterval);\n      }\n    }\n  }, {\n    key: \"readMulti\",\n    value: function readMulti(languages, namespaces, callback) {\n      this._readAny(languages, languages, namespaces, namespaces, callback);\n    }\n  }, {\n    key: \"read\",\n    value: function read(language, namespace, callback) {\n      this._readAny([language], language, [namespace], namespace, callback);\n    }\n  }, {\n    key: \"_readAny\",\n    value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n      var _this2 = this;\n\n      var loadPath = this.options.loadPath;\n\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath(languages, namespaces);\n      }\n\n      loadPath = makePromise(loadPath);\n      loadPath.then(function (resolvedLoadPath) {\n        if (!resolvedLoadPath) return callback(null, {});\n\n        var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n          lng: languages.join('+'),\n          ns: namespaces.join('+')\n        });\n\n        _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n      });\n    }\n  }, {\n    key: \"loadUrl\",\n    value: function loadUrl(url, callback, languages, namespaces) {\n      var _this3 = this;\n\n      this.options.request(this.options, url, undefined, function (err, res) {\n        if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n        if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n        if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n        if (err) return callback(err, false);\n        var ret, parseErr;\n\n        try {\n          if (typeof res.data === 'string') {\n            ret = _this3.options.parse(res.data, languages, namespaces);\n          } else {\n            ret = res.data;\n          }\n        } catch (e) {\n          parseErr = 'failed parsing ' + url + ' to json';\n        }\n\n        if (parseErr) return callback(parseErr, false);\n        callback(null, ret);\n      });\n    }\n  }, {\n    key: \"create\",\n    value: function create(languages, namespace, key, fallbackValue, callback) {\n      var _this4 = this;\n\n      if (!this.options.addPath) return;\n      if (typeof languages === 'string') languages = [languages];\n      var payload = this.options.parsePayload(namespace, key, fallbackValue);\n      var finished = 0;\n      var dataArray = [];\n      var resArray = [];\n      languages.forEach(function (lng) {\n        var addPath = _this4.options.addPath;\n\n        if (typeof _this4.options.addPath === 'function') {\n          addPath = _this4.options.addPath(lng, namespace);\n        }\n\n        var url = _this4.services.interpolator.interpolate(addPath, {\n          lng: lng,\n          ns: namespace\n        });\n\n        _this4.options.request(_this4.options, url, payload, function (data, res) {\n          finished += 1;\n          dataArray.push(data);\n          resArray.push(res);\n\n          if (finished === languages.length) {\n            if (callback) callback(dataArray, resArray);\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reload\",\n    value: function reload() {\n      var _this5 = this;\n\n      var _this$services = this.services,\n          backendConnector = _this$services.backendConnector,\n          languageUtils = _this$services.languageUtils,\n          logger = _this$services.logger;\n      var currentLanguage = backendConnector.language;\n      if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n      var toLoad = [];\n\n      var append = function append(lng) {\n        var lngs = languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(function (l) {\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n\n      append(currentLanguage);\n      if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n        return append(l);\n      });\n      toLoad.forEach(function (lng) {\n        _this5.allOptions.ns.forEach(function (ns) {\n          backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n            if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n            if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n            backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n          });\n        });\n      });\n    }\n  }]);\n\n  return Backend;\n}();\n\nBackend.type = 'backend';\nexport default Backend;","import i18next from 'i18next';\nimport HttpApi from 'i18next-http-backend';\nimport languageRules from '../constants/languageRules';\nimport getAvailableLanguages from '../apis/getAvailableLanguages';\n\n// https://github.com/isaachinman/next-i18next/issues/562\ni18next.languages = getAvailableLanguages();\n// this is required for Cordova https://github.com/i18next/i18next-http-backend/issues/23#issuecomment-718929822\nconst requestWithXmlHttpRequest = (options, url, payload, callback) => {\n  try {\n    const request = new XMLHttpRequest();\n    request.open('GET', url, 1);\n    if (!options.crossDomain) {\n      request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n    request.withCredentials = !!options.withCredentials;\n    if (payload) {\n      request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n    if (request.overrideMimeType) {\n      request.overrideMimeType('application/json');\n    }\n    let headers = options.customHeaders;\n    headers = typeof headers === 'function' ? headers() : headers;\n    if (headers) {\n      for (const i in headers) {\n        request.setRequestHeader(i, headers[i]);\n      }\n    }\n    request.onreadystatechange = () => {\n      // in android webview loading a file is status status 0\n      request.readyState > 3 && callback(request.status >= 400 ? request.statusText : null, { status: request.status || 200, data: request.responseText });\n    };\n    request.send(payload);\n  } catch (e) {\n    console.warn(e);\n  }\n};\n\nexport default (state) => {\n  const options = {\n    fallbackLng: 'en',\n    react: {\n      useSuspense: false,\n    },\n  };\n  const callback = (err, t) => {\n    window.Core.Annotations.Utilities.setAnnotationSubjectHandler((type) => t(`annotation.${type}`),\n    );\n\n    window.Core.Tools.SignatureCreateTool.setTextHandler(() => t('message.signHere'),\n    );\n\n    window.Core.Tools.SignatureCreateTool.setInitialsTextHandler(() => t('option.type.initials'),\n    );\n\n    window.Core.Tools.FreeTextCreateTool.setTextHandler(() => t('message.insertTextHere'),\n    );\n\n    window.Core.Tools.CalloutCreateTool.setTextHandler(() => t('message.insertTextHere'),\n    );\n  };\n\n  if (state.advanced.disableI18n) {\n    i18next.init(options, callback);\n  } else {\n    // eslint-disable-next-line no-undef, camelcase\n    const i18nURL = `${window.isApryseWebViewerWebComponent ? __webpack_public_path__ : './'}i18n/{{ns}}-{{lng}}.json`;\n    i18next.use(HttpApi).init(\n      {\n        ...options,\n        backend: {\n          loadPath: i18nURL,\n          request: requestWithXmlHttpRequest,\n        },\n      },\n      callback,\n    );\n  }\n\n  // set custom rules. since i18next doesn't support (i.e 'zh-ch', 'zh-tw', or 'pt-br')\n  // have to look inside the i18n source code \"getRule\" function to see what rule we can copy\n  Object.keys(languageRules).forEach((lang) => {\n    if (languageRules[lang].i18next) {\n      const rule = i18next.services.pluralResolver.getRule(languageRules[lang].i18next);\n      i18next.services.pluralResolver.addRule(lang, rule);\n    }\n  });\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport { I18nextProvider } from 'react-i18next';\nimport i18next from 'i18next';\nimport thunk from 'redux-thunk';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport rootReducer from 'reducers/rootReducer';\nimport { persistStore } from 'redux-persist';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport retargetEvents from 'react-shadow-dom-retarget-events';\n\nimport core from 'core';\nimport actions from 'actions';\nimport App from 'components/App';\nimport { workerTypes } from 'constants/types';\nimport defaultTool from 'constants/defaultTool';\nimport defineWebViewerInstanceUIAPIs from 'src/apis';\n\nimport getBackendPromise from 'helpers/getBackendPromise';\nimport loadCustomCSS from 'helpers/loadCustomCSS';\nimport loadScript, { loadConfig } from 'helpers/loadScript';\nimport setupLoadAnnotationsFromServer from 'helpers/setupLoadAnnotationsFromServer';\nimport eventHandler from 'helpers/eventHandler';\nimport setupI18n from 'helpers/setupI18n';\nimport setAutoSwitch from 'helpers/setAutoSwitch';\nimport setUserPermission from 'helpers/setUserPermission';\nimport logDebugInfo from 'helpers/logDebugInfo';\nimport getHashParameters from 'helpers/getHashParameters';\nimport { addDocumentViewer, setupOpenURLHandler } from 'helpers/documentViewerHelper';\nimport setEnableAnnotationNumbering from 'helpers/setEnableAnnotationNumbering';\nimport getRootNode from 'helpers/getRootNode';\nimport { setItemToFlyoutStore } from 'helpers/itemToFlyoutHelper';\n\nimport './index.scss';\n\nif (window.isApryseWebViewerWebComponent) {\n  if (window.webViewerPath.lastIndexOf('/') !== window.webViewerPath.length - 1) {\n    window.webViewerPath += '/';\n  }\n  // eslint-disable-next-line no-undef, camelcase\n  __webpack_public_path__ = `${window.webViewerPath}ui/`;\n}\n\nconst middleware = [thunk];\n\nlet composeEnhancer = function noopStoreComposeEnhancer(middleware) {\n  return middleware;\n};\n\nif (process.env.NODE_ENV === 'development') {\n  const isSpamDisabled = localStorage.getItem('spamDisabled') === 'true';\n  if (!isSpamDisabled) {\n    // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require\n    const { createLogger } = require('redux-logger');\n    middleware.push(createLogger({ collapsed: true }));\n  }\n  // eslint-disable-next-line @typescript-eslint/no-var-requires,global-require\n  const { composeWithDevTools } = require('redux-devtools-extension/logOnlyInProduction');\n  composeEnhancer = composeWithDevTools({});\n}\n\n\nconst store = createStore(rootReducer, composeEnhancer(applyMiddleware(...middleware)));\nconst persistor = persistStore(store);\nwindow.store = store;\nif (process.env.NODE_ENV === 'development' && module.hot) {\n  module.hot.accept('reducers/rootReducer', () => {\n    // eslint-disable-next-line global-require\n    const updatedReducer = require('reducers/rootReducer').default;\n    store.replaceReducer(updatedReducer);\n  });\n\n  module.hot.accept();\n}\n\nif (process.env.NODE_ENV === 'development') {\n  window.disableSpam = () => {\n    localStorage.setItem('spamDisabled', 'true');\n    location.reload();\n  };\n\n  window.enableSpam = () => {\n    localStorage.setItem('spamDisabled', 'false');\n    location.reload();\n  };\n}\n\nif (window.CanvasRenderingContext2D) {\n  let fullAPIReady = Promise.resolve();\n  const state = store.getState();\n\n  if (state.advanced.fullAPI) {\n    window.Core.enableFullPDF();\n    if (window.isApryseWebViewerWebComponent) {\n      fullAPIReady = loadScript(`${window.webViewerPath}core/pdf/PDFNet.js`);\n    } else {\n      fullAPIReady = loadScript('../core/pdf/PDFNet.js');\n    }\n  }\n\n\n  if (getHashParameters('disableLogs', false)) {\n    window.Core.disableLogs(true);\n  }\n\n  if (getHashParameters('disableObjectURLBlobs', false)) {\n    window.Core.disableObjectURLBlobs(getHashParameters('disableObjectURLBlobs', false));\n  }\n\n  window._disableStreaming = getHashParameters('disableStreaming', false);\n  if (window.isApryseWebViewerWebComponent) {\n    window.Core.setWorkerPath(`${window.webViewerPath}core`);\n    window.Core.setResourcesPath(`${window.webViewerPath}core/assets`);\n    loadScript(`${window.webViewerPath}core/pdf/PDFNetLean.js`);\n  } else {\n    window.Core.setWorkerPath('../core');\n    window.Core.setResourcesPath('../core/assets');\n    loadScript('../core/pdf/PDFNetLean.js');\n  }\n\n  try {\n    const isUsingSharedWorker = state.advanced.useSharedWorker === 'true' || state.advanced.useSharedWorker === true;\n    if (isUsingSharedWorker) {\n      let workerTransportPromise;\n      if (window.parent.WebViewer && !window.isApryseWebViewerWebComponent) {\n        workerTransportPromise = window.parent.WebViewer.workerTransportPromise(window.frameElement);\n      } else if (window.isApryseWebViewerWebComponent && window.apryseWorkerTransportPromise) {\n        workerTransportPromise = window.apryseWorkerTransportPromise;\n      }\n      // originally the option was just for the pdf worker transport promise, now it can be an object\n      // containing both the pdf and office promises\n      if (workerTransportPromise.pdf || workerTransportPromise.office) {\n        window.Core.setWorkerTransportPromise(workerTransportPromise);\n      } else {\n        window.Core.setWorkerTransportPromise({ 'pdf': workerTransportPromise });\n      }\n    }\n  } catch (e) {\n    console.warn(e);\n    if (e.name === 'SecurityError') {\n      console.warn('workerTransportPromise option cannot be used with CORS');\n    }\n  }\n\n  const backendType = getHashParameters('pdf');\n  if (backendType) {\n    window.Core.forceBackendType(backendType);\n  }\n\n  const { enableOptimizedWorkers } = state.advanced;\n\n  if (!enableOptimizedWorkers) {\n    window.Core.disableOptimizedWorkers();\n  }\n\n  const { preloadWorker } = state.advanced;\n\n  loadCustomCSS(state.advanced.customCSS);\n\n  logDebugInfo();\n  const documentViewer = addDocumentViewer(1);\n  setupOpenURLHandler(documentViewer, store);\n\n  if (getHashParameters('hideDetachedReplies', false)) {\n    documentViewer.getAnnotationManager().hideDetachedReplies();\n  }\n\n  defineWebViewerInstanceUIAPIs(store);\n  setItemToFlyoutStore(store);\n\n  setupI18n(state);\n  setEnableAnnotationNumbering(state);\n  setUserPermission(state);\n  setAutoSwitch();\n  core.setToolMode(defaultTool);\n\n  const { addEventHandlers, removeEventHandlers } = eventHandler(store);\n\n  const getWorkersToLoad = (preloadWorker) => {\n    const { PDF, OFFICE, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR, ALL } = workerTypes;\n    if (preloadWorker === ALL) {\n      return [PDF, OFFICE, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR];\n    }\n    const workersToLoad = [];\n\n    const shouldLoadOfficeWorker = Array.isArray(preloadWorker) && preloadWorker.includes(OFFICE)\n      || typeof preloadWorker === 'string' && preloadWorker.match(/(office[,|\\s]|office$)/g);\n    if (shouldLoadOfficeWorker) {\n      workersToLoad.push(OFFICE);\n    }\n\n    [PDF, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR].forEach((workerType) => {\n      if (preloadWorker.includes(workerType)) {\n        workersToLoad.push(workerType);\n      }\n    });\n\n    return workersToLoad;\n  };\n\n  const initTransports = () => {\n    const { PDF, OFFICE, LEGACY_OFFICE, CONTENT_EDIT, OFFICE_EDITOR } = workerTypes;\n    const workersToLoad = getWorkersToLoad(preloadWorker);\n\n    if (workersToLoad.includes(PDF)) {\n      getBackendPromise(getHashParameters('pdf', 'auto')).then((pdfType) => {\n        window.Core.initPDFWorkerTransports(pdfType, {\n          workerLoadingProgress: (percent) => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (workersToLoad.includes(OFFICE)) {\n      getBackendPromise(getHashParameters('office', 'auto')).then((officeType) => {\n        window.Core.initOfficeWorkerTransports(officeType, {\n          workerLoadingProgress: (percent) => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (workersToLoad.includes(OFFICE_EDITOR)) {\n      window.Core.initOfficeEditorWorkerTransports({\n        workerLoadingProgress: (percent) => {\n          store.dispatch(actions.setLoadingProgress(percent));\n        },\n      }, window.sampleL);\n    }\n\n    if (workersToLoad.includes(LEGACY_OFFICE)) {\n      getBackendPromise(getHashParameters('legacyOffice', 'auto')).then((officeType) => {\n        window.Core.initLegacyOfficeWorkerTransports(officeType, {\n          workerLoadingProgress: (percent) => {\n            store.dispatch(actions.setLoadingProgress(percent));\n          },\n        }, window.sampleL);\n      });\n    }\n\n    if (workersToLoad.includes(CONTENT_EDIT)) {\n      window.Core.ContentEdit.preloadWorker(documentViewer.getContentEditManager());\n    }\n  };\n\n  fullAPIReady.then(() => loadConfig()).then(() => {\n    if (preloadWorker) {\n      initTransports();\n    }\n\n    if (getHashParameters('disableVirtualDisplayMode', false)) {\n      const displayMode = documentViewer.getDisplayModeManager();\n      displayMode.disableVirtualDisplayMode();\n    }\n\n    if (getHashParameters('enableViewStateAnnotations', false)) {\n      const tool = documentViewer.getTool(window.Core.Tools.ToolNames.STICKY);\n      tool?.enableViewStateSaving();\n    }\n\n    setupLoadAnnotationsFromServer(store);\n\n    ReactDOM.render(\n      <Provider store={store}>\n        <PersistGate loading={null} persistor={persistor}>\n          <I18nextProvider i18n={i18next}>\n            <DndProvider backend={HTML5Backend}>\n              <App removeEventHandlers={removeEventHandlers} />\n            </DndProvider>\n          </I18nextProvider>\n        </PersistGate>\n      </Provider>,\n      getRootNode().getElementById('app'),\n    );\n    window.isApryseWebViewerWebComponent && retargetEvents(getRootNode());\n  });\n  addEventHandlers();\n}\n\n\nwindow.addEventListener('hashchange', () => {\n  if (!window.isApryseWebViewerWebComponent) {\n    window.location.reload();\n  }\n});\n\n/* The following adds a data attribute to `<html>` when user is keyboard navigating. */\n\nfunction onTab(event) {\n  if (event.key === 'Tab') {\n    const documentElement = window.isApryseWebViewerWebComponent ? getRootNode().host : document.documentElement;\n    documentElement.setAttribute('data-tabbing', 'true');\n    window.removeEventListener('keydown', onTab);\n    window.addEventListener('mousedown', onMouse);\n  }\n}\n\nfunction onMouse() {\n  document.documentElement.removeAttribute('data-tabbing');\n  window.removeEventListener('mousedown', onMouse);\n  window.addEventListener('keydown', onTab);\n}\n\nwindow.addEventListener('keydown', onTab);\n","import getRootNode from 'helpers/getRootNode';\n\nexport default (CSSFile) => {\n  if (CSSFile) {\n    const link = document.createElement('link');\n\n    link.rel = 'stylesheet';\n    link.type = 'text/css';\n    link.href = CSSFile;\n    if (window.isApryseWebViewerWebComponent) {\n      getRootNode().appendChild(link);\n    } else {\n      document.getElementsByTagName('head')[0].appendChild(link);\n    }\n  }\n};","import getHashParameters from 'helpers/getHashParameters';\nimport packageConfig from '../../package.json';\n\n/* eslint-disable no-console */\nexport default () => {\n  // log UI and Core versions and warn/error if necessary\n  const coreVersion = window.Core.getVersion();\n  const coreBuild = atob(window.Core.getBuild());\n  const uiVersion = packageConfig.version;\n  const webViewerJSVersion = getHashParameters('webViewerJSVersion', null);\n  const wvServer = !!getHashParameters('webviewerServerURL', null);\n  const fullAPI = !!getHashParameters('pdfnet', false);\n  const ui = getHashParameters('ui', 'default');\n  const disableLogs = getHashParameters('disableLogs', false);\n  if (disableLogs) {\n    return;\n  }\n\n  if (coreVersion && uiVersion) {\n    // we are using semantic versioning (ie ###.###.###) so the first number is the major version, follow by the minor version, and the patch number\n    const [coreMajorVersion, coreMinorVersion] = coreVersion\n      .split('.')\n      .map((version) => parseInt(version, 10));\n    const [uiMajorVersion, uiMinorVersion] = uiVersion\n      .split('.')\n      .map((version) => parseInt(version, 10));\n\n    let webViewerJSMajorVersion = null;\n    let webViewerJSMinorVersion = null;\n    if (webViewerJSVersion) {\n      [webViewerJSMajorVersion, webViewerJSMinorVersion] = webViewerJSVersion\n        .split('.')\n        .map((version) => parseInt(version, 10));\n    }\n\n    if (console.table) {\n      const versions = {\n        'UI version': uiVersion,\n        'Core version': coreVersion,\n        'webviewer.min.js': webViewerJSVersion,\n        'Build': coreBuild,\n        'WebViewer Server': wvServer,\n        'Full API': fullAPI,\n        'UI': ui,\n      };\n\n      console.table(versions);\n    } else {\n      console.log(\n        `[WebViewer] UI version: ${uiVersion}, Core version: ${coreVersion}, Build: ${coreBuild}, WebViewer Server: ${wvServer}, Full API: ${fullAPI}`,\n      );\n    }\n\n    // if there's any major version differences, log with console.error\n    // if there's only minor version differences, log with console.warn\n    const webViewerComponents = [\n      {\n        name: 'Core',\n        version: coreVersion,\n        majorVersion: coreMajorVersion,\n        minorVersion: coreMinorVersion\n      },\n      {\n        name: 'UI',\n        version: uiVersion,\n        majorVersion: uiMajorVersion,\n        minorVersion: uiMinorVersion\n      },\n    ];\n\n    if (webViewerJSVersion === null) {\n      console.error(\n        'WebViewerJS version not found. Please update webviewer.min.js to the latest version.',\n      );\n    } else {\n      webViewerComponents.push({\n        name: 'webviewer.min.js',\n        version: webViewerJSVersion,\n        majorVersion: webViewerJSMajorVersion,\n        minorVersion: webViewerJSMinorVersion,\n      });\n    }\n\n    webViewerComponents.sort((a, b) => {\n      let comparison = null;\n      if (a.majorVersion !== b.majorVersion) {\n        comparison = b.majorVersion - a.majorVersion;\n      } else if (a.minorVersion !== b.minorVersion) {\n        comparison = b.minorVersion - a.minorVersion;\n      }\n      return comparison;\n    });\n\n    let warningText = '[WebViewer] Version Mismatch: ';\n    const majorVersionOutdatedComponents = [];\n    const minorVersionOutdatedComponents = [];\n    const latestComponent = webViewerComponents[0];\n\n    webViewerComponents.forEach((component) => {\n      if (latestComponent.majorVersion > component.majorVersion) {\n        majorVersionOutdatedComponents.push(component.name);\n      } else if (latestComponent.minorVersion > component.minorVersion) {\n        minorVersionOutdatedComponents.push(component.name);\n      }\n    });\n    if (majorVersionOutdatedComponents.length) {\n      const outdatedComponents =\n        majorVersionOutdatedComponents.concat(minorVersionOutdatedComponents);\n      warningText += `${outdatedComponents.join(' and ')} should be updated to version ${latestComponent.version}`;\n      console.error(warningText);\n    } else if (minorVersionOutdatedComponents.length) {\n      warningText += `${minorVersionOutdatedComponents.join(' and ')} should be updated to version ${latestComponent.version}`;\n      console.warn(warningText);\n    }\n  }\n};","/**\n * Closes the document that's currently opened.\n * @method UI.closeDocument\n * @return {Promise<void>} A promise resolved after document is closed.\n * @example\nWebViewer(...)\n  .then(function(instance) {\n    const docViewer = instance.Core.documentViewer;\n\n    // you must have a document loaded when calling this api\n    docViewer.addEventListener('documentLoaded', function() {\n      setTimeout(function() {\n        instance.UI.closeDocument().then(function() {\n          console.log('Document is closed');\n        });\n      }, 3000);\n    });\n  });\n */\n\nimport core from 'core';\n\nexport default () => () => core.closeDocument();\n","import core from 'core';\n\nexport default (state) => {\n  if (state.viewer.isAnnotationNumberingEnabled) {\n    core.enableAnnotationNumbering();\n  }\n};","import core from 'core';\n\nexport default (state) => {\n  core.setCurrentUser(state.user.name);\n  core.setIsAdminUser(state.user.isAdmin);\n};","import { isIOS, isAndroid } from 'helpers/device';\n\nexport default () => {\n  if (isIOS || isAndroid) {\n    window.Core.Tools.Tool.ENABLE_AUTO_SWITCH = false;\n  }\n};\n","import core from 'core';\nimport { workerTypes } from 'constants/types';\nimport { getInstanceNode } from 'helpers/getRootNode';\n\nexport default (store) => {\n  const state = store.getState();\n  let { serverUrl } = state.advanced;\n  const { serverUrlHeaders } = state.advanced;\n\n  if (!serverUrl) {\n    return;\n  }\n\n  const getAnnotsFromServer = (originalData, callback) => {\n    const documentId = core.getDocument().getDocumentId();\n    if (getInstanceNode().instance.UI.serverFailed) {\n      callback(originalData);\n      return;\n    }\n    if (getInstanceNode().instance.UI.loadedFromServer) {\n      callback('');\n      return;\n    }\n\n    // make sure we are not getting cached responses\n    if (serverUrl.indexOf('?') === -1) {\n      serverUrl += `?_=${Date.now()}`;\n    } else {\n      serverUrl += `&_=${Date.now()}`;\n    }\n\n    if (documentId) {\n      serverUrl += `&did=${documentId}`;\n    }\n\n    serverUrl = documentId ? `${serverUrl}?did=${documentId}` : serverUrl;\n\n    fetch(serverUrl, {\n      headers: serverUrlHeaders,\n      credentials: 'include'\n    })\n      .then((response) => {\n        if (response.ok) {\n          return response.text();\n        }\n\n        return Promise.reject(response);\n      })\n      .then((data) => {\n        if (data !== null && data !== undefined) {\n          getInstanceNode().instance.UI.loadedFromServer = true;\n          callback(data);\n        } else {\n          getInstanceNode().instance.UI.serverFailed = true;\n          callback(originalData);\n        }\n      })\n      .catch((e) => {\n        getInstanceNode().instance.UI.serverFailed = true;\n        console.warn(\n          `Error ${e.status}: Annotations could not be loaded from the server.`,\n        );\n        callback(originalData);\n      });\n  };\n\n  core.setInternalAnnotationsTransform(getAnnotsFromServer);\n  core.setPagesUpdatedInternalAnnotationsTransform(\n    (origData, pages, callback) => {\n      getAnnotsFromServer(origData, callback);\n    },\n  );\n  core.addEventListener('documentLoaded', function() {\n    const documentViewer = core.getDocumentViewer();\n    if (documentViewer.getDocument().getType() === workerTypes.OFFICE) {\n      getAnnotsFromServer(null, function(data) {\n        documentViewer.getAnnotationManager().importAnnotations(data);\n      });\n    }\n  });\n};\n","/**\n * Returns an object describing whether the object is visible. It will detect if\n * the item is cut off by either the top or bottom of the window, or by the\n * container passed in.\n * @param element The element to detect scroll position of.\n * @param container The scroll container which could be cutting off the item.\n */\nexport function isScrolledIntoView(element, container) {\n    if (!element || !container)\n        return { isVisible: true, isAbove: false, isBelow: false };\n    var elem = element.getBoundingClientRect();\n    var cont = container.getBoundingClientRect();\n    var elemTop = elem.top;\n    var elemBottom = elem.bottom;\n    // Can be cut off by container, or by window if container extends outside.\n    var contTop = Math.max(cont.top, 0);\n    var contBottom = Math.min(cont.bottom, window.innerHeight);\n    // Only completely visible elements return true:\n    var isAbove = elemTop < contTop;\n    var isBelow = elemBottom > contBottom;\n    var isVisible = !isAbove && !isBelow;\n    return { isVisible: isVisible, isAbove: isAbove, isBelow: isBelow };\n}\n/**\n * Get a sibling in the DOM based on an index diff.\n * @param element The element to find the sibling of.\n * @param indexDiff The index diff of the sibling to find (ex: 1 returns next sibling).\n */\nexport function getSibling(element, indexDiff) {\n    if (!element || !element.parentElement)\n        return undefined;\n    var siblings = Array.from(element.parentElement.children);\n    var nodeIndex = siblings.indexOf(element);\n    // Get the item occupying the previous index location.\n    var sibling = siblings[nodeIndex + indexDiff];\n    return sibling;\n}\n/**\n * Generates a click mouse event from an input keyboard event.\n * @param keyboardEvent The keyboard event to translate into a mouse event.\n */\nexport function generateClickEventFromKeyboardEvent(keyboardEvent) {\n    var clickEvent = new MouseEvent('click', {\n        bubbles: keyboardEvent.bubbles,\n        cancelable: keyboardEvent.cancelable,\n        altKey: keyboardEvent.altKey,\n        shiftKey: keyboardEvent.shiftKey,\n        ctrlKey: keyboardEvent.ctrlKey,\n        metaKey: keyboardEvent.metaKey,\n    });\n    return clickEvent;\n}\n/**\n * A string for querying all focusable elements.\n */\nexport var focusableElementDomString = [\n    'a[href]',\n    'area[href]',\n    'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n    'select:not([disabled]):not([aria-hidden])',\n    'textarea:not([disabled]):not([aria-hidden])',\n    'button:not([disabled]):not([aria-hidden])',\n    'iframe',\n    'object',\n    'embed',\n    '[contenteditable]',\n    '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n","export var INIT_COORDS = 'dnd-core/INIT_COORDS';\nexport var BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexport var PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexport var HOVER = 'dnd-core/HOVER';\nexport var DROP = 'dnd-core/DROP';\nexport var END_DRAG = 'dnd-core/END_DRAG';","import { INIT_COORDS } from '../types';\nexport function setClientOffset(clientOffset, sourceClientOffset) {\n  return {\n    type: INIT_COORDS,\n    payload: {\n      sourceClientOffset: sourceClientOffset || null,\n      clientOffset: clientOffset || null\n    }\n  };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj, path, defaultValue) {\n  return path.split('.').reduce(function (a, c) {\n    return a && a[c] ? a[c] : defaultValue || null;\n  }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n  return items.filter(function (i) {\n    return i !== item;\n  });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isString(input) {\n  return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isObject(input) {\n  return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nexport function xor(itemsA, itemsB) {\n  var map = new Map();\n\n  var insertItem = function insertItem(item) {\n    map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n  };\n\n  itemsA.forEach(insertItem);\n  itemsB.forEach(insertItem);\n  var result = [];\n  map.forEach(function (count, key) {\n    if (count === 1) {\n      result.push(key);\n    }\n  });\n  return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nexport function intersection(itemsA, itemsB) {\n  return itemsA.filter(function (t) {\n    return itemsB.indexOf(t) > -1;\n  });\n}","import { invariant } from '@react-dnd/invariant';\nimport { setClientOffset } from './local/setClientOffset';\nimport { isObject } from '../../utils/js_utils';\nimport { BEGIN_DRAG, INIT_COORDS } from './types';\nvar ResetCoordinatesAction = {\n  type: INIT_COORDS,\n  payload: {\n    clientOffset: null,\n    sourceClientOffset: null\n  }\n};\nexport function createBeginDrag(manager) {\n  return function beginDrag() {\n    var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      publishSource: true\n    };\n    var _options$publishSourc = options.publishSource,\n        publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n        clientOffset = options.clientOffset,\n        getSourceClientOffset = options.getSourceClientOffset;\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n    manager.dispatch(setClientOffset(clientOffset));\n    verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n    var sourceId = getDraggableSource(sourceIds, monitor);\n\n    if (sourceId === null) {\n      manager.dispatch(ResetCoordinatesAction);\n      return;\n    } // Get the source client offset\n\n\n    var sourceClientOffset = null;\n\n    if (clientOffset) {\n      if (!getSourceClientOffset) {\n        throw new Error('getSourceClientOffset must be defined');\n      }\n\n      verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n      sourceClientOffset = getSourceClientOffset(sourceId);\n    } // Initialize the full coordinates\n\n\n    manager.dispatch(setClientOffset(clientOffset, sourceClientOffset));\n    var source = registry.getSource(sourceId);\n    var item = source.beginDrag(monitor, sourceId); // If source.beginDrag returns null, this is an indicator to cancel the drag\n\n    if (item == null) {\n      return undefined;\n    }\n\n    verifyItemIsObject(item);\n    registry.pinSource(sourceId);\n    var itemType = registry.getSourceType(sourceId);\n    return {\n      type: BEGIN_DRAG,\n      payload: {\n        itemType: itemType,\n        item: item,\n        sourceId: sourceId,\n        clientOffset: clientOffset || null,\n        sourceClientOffset: sourceClientOffset || null,\n        isSourcePublic: !!publishSource\n      }\n    };\n  };\n}\n\nfunction verifyInvariants(sourceIds, monitor, registry) {\n  invariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n  sourceIds.forEach(function (sourceId) {\n    invariant(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n  });\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n  invariant(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\n\nfunction verifyItemIsObject(item) {\n  invariant(isObject(item), 'Item must be an object.');\n}\n\nfunction getDraggableSource(sourceIds, monitor) {\n  var sourceId = null;\n\n  for (var i = sourceIds.length - 1; i >= 0; i--) {\n    if (monitor.canDragSource(sourceIds[i])) {\n      sourceId = sourceIds[i];\n      break;\n    }\n  }\n\n  return sourceId;\n}","import { PUBLISH_DRAG_SOURCE } from './types';\nexport function createPublishDragSource(manager) {\n  return function publishDragSource() {\n    var monitor = manager.getMonitor();\n\n    if (monitor.isDragging()) {\n      return {\n        type: PUBLISH_DRAG_SOURCE\n      };\n    }\n  };\n}","export function matchesType(targetType, draggedItemType) {\n  if (draggedItemType === null) {\n    return targetType === null;\n  }\n\n  return Array.isArray(targetType) ? targetType.some(function (t) {\n    return t === draggedItemType;\n  }) : targetType === draggedItemType;\n}","import { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../../utils/matchesType';\nimport { HOVER } from './types';\nexport function createHover(manager) {\n  return function hover(targetIdsArg) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        clientOffset = _ref.clientOffset;\n\n    verifyTargetIdsIsArray(targetIdsArg);\n    var targetIds = targetIdsArg.slice(0);\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    checkInvariants(targetIds, monitor, registry);\n    var draggedItemType = monitor.getItemType();\n    removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n    hoverAllTargets(targetIds, monitor, registry);\n    return {\n      type: HOVER,\n      payload: {\n        targetIds: targetIds,\n        clientOffset: clientOffset || null\n      }\n    };\n  };\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n  invariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\n\nfunction checkInvariants(targetIds, monitor, registry) {\n  invariant(monitor.isDragging(), 'Cannot call hover while not dragging.');\n  invariant(!monitor.didDrop(), 'Cannot call hover after drop.');\n\n  for (var i = 0; i < targetIds.length; i++) {\n    var targetId = targetIds[i];\n    invariant(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n    var target = registry.getTarget(targetId);\n    invariant(target, 'Expected targetIds to be registered.');\n  }\n}\n\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n  // Remove those targetIds that don't match the targetType.  This\n  // fixes shallow isOver which would only be non-shallow because of\n  // non-matching targets.\n  for (var i = targetIds.length - 1; i >= 0; i--) {\n    var targetId = targetIds[i];\n    var targetType = registry.getTargetType(targetId);\n\n    if (!matchesType(targetType, draggedItemType)) {\n      targetIds.splice(i, 1);\n    }\n  }\n}\n\nfunction hoverAllTargets(targetIds, monitor, registry) {\n  // Finally call hover on all matching targets.\n  targetIds.forEach(function (targetId) {\n    var target = registry.getTarget(targetId);\n    target.hover(monitor, targetId);\n  });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { DROP } from './types';\nimport { isObject } from '../../utils/js_utils';\nexport function createDrop(manager) {\n  return function drop() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyInvariants(monitor);\n    var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n    targetIds.forEach(function (targetId, index) {\n      var dropResult = determineDropResult(targetId, index, registry, monitor);\n      var action = {\n        type: DROP,\n        payload: {\n          dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n        }\n      };\n      manager.dispatch(action);\n    });\n  };\n}\n\nfunction verifyInvariants(monitor) {\n  invariant(monitor.isDragging(), 'Cannot call drop while not dragging.');\n  invariant(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\n\nfunction determineDropResult(targetId, index, registry, monitor) {\n  var target = registry.getTarget(targetId);\n  var dropResult = target ? target.drop(monitor, targetId) : undefined;\n  verifyDropResultType(dropResult);\n\n  if (typeof dropResult === 'undefined') {\n    dropResult = index === 0 ? {} : monitor.getDropResult();\n  }\n\n  return dropResult;\n}\n\nfunction verifyDropResultType(dropResult) {\n  invariant(typeof dropResult === 'undefined' || isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\n\nfunction getDroppableTargets(monitor) {\n  var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n  targetIds.reverse();\n  return targetIds;\n}","import { invariant } from '@react-dnd/invariant';\nimport { END_DRAG } from './types';\nexport function createEndDrag(manager) {\n  return function endDrag() {\n    var monitor = manager.getMonitor();\n    var registry = manager.getRegistry();\n    verifyIsDragging(monitor);\n    var sourceId = monitor.getSourceId();\n\n    if (sourceId != null) {\n      var source = registry.getSource(sourceId, true);\n      source.endDrag(monitor, sourceId);\n      registry.unpinSource();\n    }\n\n    return {\n      type: END_DRAG\n    };\n  };\n}\n\nfunction verifyIsDragging(monitor) {\n  invariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createDragDropActions } from '../actions/dragDrop';\nexport var DragDropManagerImpl = /*#__PURE__*/function () {\n  function DragDropManagerImpl(store, monitor) {\n    var _this = this;\n\n    _classCallCheck(this, DragDropManagerImpl);\n\n    _defineProperty(this, \"store\", void 0);\n\n    _defineProperty(this, \"monitor\", void 0);\n\n    _defineProperty(this, \"backend\", void 0);\n\n    _defineProperty(this, \"isSetUp\", false);\n\n    _defineProperty(this, \"handleRefCountChange\", function () {\n      var shouldSetUp = _this.store.getState().refCount > 0;\n\n      if (_this.backend) {\n        if (shouldSetUp && !_this.isSetUp) {\n          _this.backend.setup();\n\n          _this.isSetUp = true;\n        } else if (!shouldSetUp && _this.isSetUp) {\n          _this.backend.teardown();\n\n          _this.isSetUp = false;\n        }\n      }\n    });\n\n    this.store = store;\n    this.monitor = monitor;\n    store.subscribe(this.handleRefCountChange);\n  }\n\n  _createClass(DragDropManagerImpl, [{\n    key: \"receiveBackend\",\n    value: function receiveBackend(backend) {\n      this.backend = backend;\n    }\n  }, {\n    key: \"getMonitor\",\n    value: function getMonitor() {\n      return this.monitor;\n    }\n  }, {\n    key: \"getBackend\",\n    value: function getBackend() {\n      return this.backend;\n    }\n  }, {\n    key: \"getRegistry\",\n    value: function getRegistry() {\n      return this.monitor.registry;\n    }\n  }, {\n    key: \"getActions\",\n    value: function getActions() {\n      /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n      var manager = this;\n      var dispatch = this.store.dispatch;\n\n      function bindActionCreator(actionCreator) {\n        return function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n\n          var action = actionCreator.apply(manager, args);\n\n          if (typeof action !== 'undefined') {\n            dispatch(action);\n          }\n        };\n      }\n\n      var actions = createDragDropActions(this);\n      return Object.keys(actions).reduce(function (boundActions, key) {\n        var action = actions[key];\n        boundActions[key] = bindActionCreator(action);\n        return boundActions;\n      }, {});\n    }\n  }, {\n    key: \"dispatch\",\n    value: function dispatch(action) {\n      this.store.dispatch(action);\n    }\n  }]);\n\n  return DragDropManagerImpl;\n}();","import { createBeginDrag } from './beginDrag';\nimport { createPublishDragSource } from './publishDragSource';\nimport { createHover } from './hover';\nimport { createDrop } from './drop';\nimport { createEndDrag } from './endDrag';\nexport * from './types';\nexport function createDragDropActions(manager) {\n  return {\n    beginDrag: createBeginDrag(manager),\n    publishDragSource: createPublishDragSource(manager),\n    hover: createHover(manager),\n    drop: createDrop(manager),\n    endDrag: createEndDrag(manager)\n  };\n}","export var strictEquality = function strictEquality(a, b) {\n  return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nexport function areCoordsEqual(offsetA, offsetB) {\n  if (!offsetA && !offsetB) {\n    return true;\n  } else if (!offsetA || !offsetB) {\n    return false;\n  } else {\n    return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n  }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nexport function areArraysEqual(a, b) {\n  var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (var i = 0; i < a.length; ++i) {\n    if (!isEqual(a[i], b[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { INIT_COORDS, BEGIN_DRAG, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { areCoordsEqual } from '../utils/equality';\nvar initialState = {\n  initialSourceClientOffset: null,\n  initialClientOffset: null,\n  clientOffset: null\n};\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case INIT_COORDS:\n    case BEGIN_DRAG:\n      return {\n        initialSourceClientOffset: payload.sourceClientOffset,\n        initialClientOffset: payload.clientOffset,\n        clientOffset: payload.clientOffset\n      };\n\n    case HOVER:\n      if (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        clientOffset: payload.clientOffset\n      });\n\n    case END_DRAG:\n    case DROP:\n      return initialState;\n\n    default:\n      return state;\n  }\n}","export var ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexport var ADD_TARGET = 'dnd-core/ADD_TARGET';\nexport var REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexport var REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nexport function addSource(sourceId) {\n  return {\n    type: ADD_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nexport function addTarget(targetId) {\n  return {\n    type: ADD_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}\nexport function removeSource(sourceId) {\n  return {\n    type: REMOVE_SOURCE,\n    payload: {\n      sourceId: sourceId\n    }\n  };\n}\nexport function removeTarget(targetId) {\n  return {\n    type: REMOVE_TARGET,\n    payload: {\n      targetId: targetId\n    }\n  };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { REMOVE_TARGET } from '../actions/registry';\nimport { without } from '../utils/js_utils';\nvar initialState = {\n  itemType: null,\n  item: null,\n  sourceId: null,\n  targetIds: [],\n  dropResult: null,\n  didDrop: false,\n  isSourcePublic: null\n};\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  var payload = action.payload;\n\n  switch (action.type) {\n    case BEGIN_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: payload.itemType,\n        item: payload.item,\n        sourceId: payload.sourceId,\n        isSourcePublic: payload.isSourcePublic,\n        dropResult: null,\n        didDrop: false\n      });\n\n    case PUBLISH_DRAG_SOURCE:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isSourcePublic: true\n      });\n\n    case HOVER:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: payload.targetIds\n      });\n\n    case REMOVE_TARGET:\n      if (state.targetIds.indexOf(payload.targetId) === -1) {\n        return state;\n      }\n\n      return _objectSpread(_objectSpread({}, state), {}, {\n        targetIds: without(state.targetIds, payload.targetId)\n      });\n\n    case DROP:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        dropResult: payload.dropResult,\n        didDrop: true,\n        targetIds: []\n      });\n\n    case END_DRAG:\n      return _objectSpread(_objectSpread({}, state), {}, {\n        itemType: null,\n        item: null,\n        sourceId: null,\n        dropResult: null,\n        didDrop: false,\n        isSourcePublic: null,\n        targetIds: []\n      });\n\n    default:\n      return state;\n  }\n}","import { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case ADD_SOURCE:\n    case ADD_TARGET:\n      return state + 1;\n\n    case REMOVE_SOURCE:\n    case REMOVE_TARGET:\n      return state - 1;\n\n    default:\n      return state;\n  }\n}","import { intersection } from './js_utils';\nexport var NONE = [];\nexport var ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nexport function areDirty(dirtyIds, handlerIds) {\n  if (dirtyIds === NONE) {\n    return false;\n  }\n\n  if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n    return true;\n  }\n\n  var commonIds = intersection(handlerIds, dirtyIds);\n  return commonIds.length > 0;\n}","import { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nimport { areArraysEqual } from '../utils/equality';\nimport { NONE, ALL } from '../utils/dirtiness';\nimport { xor } from '../utils/js_utils';\nexport function reduce() {\n  var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;\n\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case HOVER:\n      break;\n\n    case ADD_SOURCE:\n    case ADD_TARGET:\n    case REMOVE_TARGET:\n    case REMOVE_SOURCE:\n      return NONE;\n\n    case BEGIN_DRAG:\n    case PUBLISH_DRAG_SOURCE:\n    case END_DRAG:\n    case DROP:\n    default:\n      return ALL;\n  }\n\n  var _action$payload = action.payload,\n      _action$payload$targe = _action$payload.targetIds,\n      targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n      _action$payload$prevT = _action$payload.prevTargetIds,\n      prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n  var result = xor(targetIds, prevTargetIds);\n  var didChange = result.length > 0 || !areArraysEqual(targetIds, prevTargetIds);\n\n  if (!didChange) {\n    return NONE;\n  } // Check the target ids at the innermost position. If they are valid, add them\n  // to the result\n\n\n  var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n  var innermostTargetId = targetIds[targetIds.length - 1];\n\n  if (prevInnermostTargetId !== innermostTargetId) {\n    if (prevInnermostTargetId) {\n      result.push(prevInnermostTargetId);\n    }\n\n    if (innermostTargetId) {\n      result.push(innermostTargetId);\n    }\n  }\n\n  return result;\n}","export function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n  return state + 1;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { reduce as dragOffset } from './dragOffset';\nimport { reduce as dragOperation } from './dragOperation';\nimport { reduce as refCount } from './refCount';\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds';\nimport { reduce as stateId } from './stateId';\nimport { get } from '../utils/js_utils';\nexport function reduce() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  return {\n    dirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n      type: action.type,\n      payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n        prevTargetIds: get(state, 'dragOperation.targetIds', [])\n      })\n    }),\n    dragOffset: dragOffset(state.dragOffset, action),\n    refCount: refCount(state.refCount, action),\n    dragOperation: dragOperation(state.dragOperation, action),\n    stateId: stateId(state.stateId)\n  };\n}","/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a, b) {\n  return {\n    x: a.x + b.x,\n    y: a.y + b.y\n  };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nexport function subtract(a, b) {\n  return {\n    x: a.x - b.x,\n    y: a.y - b.y\n  };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nexport function getSourceClientOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset,\n      initialSourceClientOffset = state.initialSourceClientOffset;\n\n  if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n    return null;\n  }\n\n  return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nexport function getDifferenceFromInitialOffset(state) {\n  var clientOffset = state.clientOffset,\n      initialClientOffset = state.initialClientOffset;\n\n  if (!clientOffset || !initialClientOffset) {\n    return null;\n  }\n\n  return subtract(clientOffset, initialClientOffset);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../utils/matchesType';\nimport { getSourceClientOffset as _getSourceClientOffset, getDifferenceFromInitialOffset as _getDifferenceFromInitialOffset } from '../utils/coords';\nimport { areDirty } from '../utils/dirtiness';\nexport var DragDropMonitorImpl = /*#__PURE__*/function () {\n  function DragDropMonitorImpl(store, registry) {\n    _classCallCheck(this, DragDropMonitorImpl);\n\n    _defineProperty(this, \"store\", void 0);\n\n    _defineProperty(this, \"registry\", void 0);\n\n    this.store = store;\n    this.registry = registry;\n  }\n\n  _createClass(DragDropMonitorImpl, [{\n    key: \"subscribeToStateChange\",\n    value: function subscribeToStateChange(listener) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        handlerIds: undefined\n      };\n      var handlerIds = options.handlerIds;\n      invariant(typeof listener === 'function', 'listener must be a function.');\n      invariant(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n      var prevStateId = this.store.getState().stateId;\n\n      var handleChange = function handleChange() {\n        var state = _this.store.getState();\n\n        var currentStateId = state.stateId;\n\n        try {\n          var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !areDirty(state.dirtyHandlerIds, handlerIds);\n\n          if (!canSkipListener) {\n            listener();\n          }\n        } finally {\n          prevStateId = currentStateId;\n        }\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"subscribeToOffsetChange\",\n    value: function subscribeToOffsetChange(listener) {\n      var _this2 = this;\n\n      invariant(typeof listener === 'function', 'listener must be a function.');\n      var previousState = this.store.getState().dragOffset;\n\n      var handleChange = function handleChange() {\n        var nextState = _this2.store.getState().dragOffset;\n\n        if (nextState === previousState) {\n          return;\n        }\n\n        previousState = nextState;\n        listener();\n      };\n\n      return this.store.subscribe(handleChange);\n    }\n  }, {\n    key: \"canDragSource\",\n    value: function canDragSource(sourceId) {\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId);\n      invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n      if (this.isDragging()) {\n        return false;\n      }\n\n      return source.canDrag(this, sourceId);\n    }\n  }, {\n    key: \"canDropOnTarget\",\n    value: function canDropOnTarget(targetId) {\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var target = this.registry.getTarget(targetId);\n      invariant(target, \"Expected to find a valid target. targetId=\".concat(targetId));\n\n      if (!this.isDragging() || this.didDrop()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n      return matchesType(targetType, draggedItemType) && target.canDrop(this, targetId);\n    }\n  }, {\n    key: \"isDragging\",\n    value: function isDragging() {\n      return Boolean(this.getItemType());\n    }\n  }, {\n    key: \"isDraggingSource\",\n    value: function isDraggingSource(sourceId) {\n      // undefined on initial render\n      if (!sourceId) {\n        return false;\n      }\n\n      var source = this.registry.getSource(sourceId, true);\n      invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n      if (!this.isDragging() || !this.isSourcePublic()) {\n        return false;\n      }\n\n      var sourceType = this.registry.getSourceType(sourceId);\n      var draggedItemType = this.getItemType();\n\n      if (sourceType !== draggedItemType) {\n        return false;\n      }\n\n      return source.isDragging(this, sourceId);\n    }\n  }, {\n    key: \"isOverTarget\",\n    value: function isOverTarget(targetId) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        shallow: false\n      };\n\n      // undefined on initial render\n      if (!targetId) {\n        return false;\n      }\n\n      var shallow = options.shallow;\n\n      if (!this.isDragging()) {\n        return false;\n      }\n\n      var targetType = this.registry.getTargetType(targetId);\n      var draggedItemType = this.getItemType();\n\n      if (draggedItemType && !matchesType(targetType, draggedItemType)) {\n        return false;\n      }\n\n      var targetIds = this.getTargetIds();\n\n      if (!targetIds.length) {\n        return false;\n      }\n\n      var index = targetIds.indexOf(targetId);\n\n      if (shallow) {\n        return index === targetIds.length - 1;\n      } else {\n        return index > -1;\n      }\n    }\n  }, {\n    key: \"getItemType\",\n    value: function getItemType() {\n      return this.store.getState().dragOperation.itemType;\n    }\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      return this.store.getState().dragOperation.item;\n    }\n  }, {\n    key: \"getSourceId\",\n    value: function getSourceId() {\n      return this.store.getState().dragOperation.sourceId;\n    }\n  }, {\n    key: \"getTargetIds\",\n    value: function getTargetIds() {\n      return this.store.getState().dragOperation.targetIds;\n    }\n  }, {\n    key: \"getDropResult\",\n    value: function getDropResult() {\n      return this.store.getState().dragOperation.dropResult;\n    }\n  }, {\n    key: \"didDrop\",\n    value: function didDrop() {\n      return this.store.getState().dragOperation.didDrop;\n    }\n  }, {\n    key: \"isSourcePublic\",\n    value: function isSourcePublic() {\n      return Boolean(this.store.getState().dragOperation.isSourcePublic);\n    }\n  }, {\n    key: \"getInitialClientOffset\",\n    value: function getInitialClientOffset() {\n      return this.store.getState().dragOffset.initialClientOffset;\n    }\n  }, {\n    key: \"getInitialSourceClientOffset\",\n    value: function getInitialSourceClientOffset() {\n      return this.store.getState().dragOffset.initialSourceClientOffset;\n    }\n  }, {\n    key: \"getClientOffset\",\n    value: function getClientOffset() {\n      return this.store.getState().dragOffset.clientOffset;\n    }\n  }, {\n    key: \"getSourceClientOffset\",\n    value: function getSourceClientOffset() {\n      return _getSourceClientOffset(this.store.getState().dragOffset);\n    }\n  }, {\n    key: \"getDifferenceFromInitialOffset\",\n    value: function getDifferenceFromInitialOffset() {\n      return _getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n    }\n  }]);\n\n  return DragDropMonitorImpl;\n}();","export var HandlerRole;\n\n(function (HandlerRole) {\n  HandlerRole[\"SOURCE\"] = \"SOURCE\";\n  HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));","var nextUniqueId = 0;\nexport function getNextUniqueId() {\n  return nextUniqueId++;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { invariant } from '@react-dnd/invariant';\nexport function validateSourceContract(source) {\n  invariant(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n  invariant(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n  invariant(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexport function validateTargetContract(target) {\n  invariant(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n  invariant(typeof target.hover === 'function', 'Expected hover to be a function.');\n  invariant(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexport function validateType(type, allowArray) {\n  if (allowArray && Array.isArray(type)) {\n    type.forEach(function (t) {\n      return validateType(t, false);\n    });\n    return;\n  }\n\n  invariant(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { addSource as _addSource, addTarget as _addTarget, removeSource as _removeSource, removeTarget as _removeTarget } from '../actions/registry';\nimport { getNextUniqueId } from '../utils/getNextUniqueId';\nimport { HandlerRole } from '../interfaces';\nimport { validateSourceContract, validateTargetContract, validateType } from '../contracts';\nimport { asap } from '@react-dnd/asap';\n\nfunction getNextHandlerId(role) {\n  var id = getNextUniqueId().toString();\n\n  switch (role) {\n    case HandlerRole.SOURCE:\n      return \"S\".concat(id);\n\n    case HandlerRole.TARGET:\n      return \"T\".concat(id);\n\n    default:\n      throw new Error(\"Unknown Handler Role: \".concat(role));\n  }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n  switch (handlerId[0]) {\n    case 'S':\n      return HandlerRole.SOURCE;\n\n    case 'T':\n      return HandlerRole.TARGET;\n\n    default:\n      invariant(false, \"Cannot parse handler ID: \".concat(handlerId));\n  }\n}\n\nfunction mapContainsValue(map, searchValue) {\n  var entries = map.entries();\n  var isDone = false;\n\n  do {\n    var _entries$next = entries.next(),\n        done = _entries$next.done,\n        _entries$next$value = _slicedToArray(_entries$next.value, 2),\n        value = _entries$next$value[1];\n\n    if (value === searchValue) {\n      return true;\n    }\n\n    isDone = !!done;\n  } while (!isDone);\n\n  return false;\n}\n\nexport var HandlerRegistryImpl = /*#__PURE__*/function () {\n  function HandlerRegistryImpl(store) {\n    _classCallCheck(this, HandlerRegistryImpl);\n\n    _defineProperty(this, \"types\", new Map());\n\n    _defineProperty(this, \"dragSources\", new Map());\n\n    _defineProperty(this, \"dropTargets\", new Map());\n\n    _defineProperty(this, \"pinnedSourceId\", null);\n\n    _defineProperty(this, \"pinnedSource\", null);\n\n    _defineProperty(this, \"store\", void 0);\n\n    this.store = store;\n  }\n\n  _createClass(HandlerRegistryImpl, [{\n    key: \"addSource\",\n    value: function addSource(type, source) {\n      validateType(type);\n      validateSourceContract(source);\n      var sourceId = this.addHandler(HandlerRole.SOURCE, type, source);\n      this.store.dispatch(_addSource(sourceId));\n      return sourceId;\n    }\n  }, {\n    key: \"addTarget\",\n    value: function addTarget(type, target) {\n      validateType(type, true);\n      validateTargetContract(target);\n      var targetId = this.addHandler(HandlerRole.TARGET, type, target);\n      this.store.dispatch(_addTarget(targetId));\n      return targetId;\n    }\n  }, {\n    key: \"containsHandler\",\n    value: function containsHandler(handler) {\n      return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n    }\n  }, {\n    key: \"getSource\",\n    value: function getSource(sourceId) {\n      var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      var isPinned = includePinned && sourceId === this.pinnedSourceId;\n      var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n      return source;\n    }\n  }, {\n    key: \"getTarget\",\n    value: function getTarget(targetId) {\n      invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.dropTargets.get(targetId);\n    }\n  }, {\n    key: \"getSourceType\",\n    value: function getSourceType(sourceId) {\n      invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n      return this.types.get(sourceId);\n    }\n  }, {\n    key: \"getTargetType\",\n    value: function getTargetType(targetId) {\n      invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n      return this.types.get(targetId);\n    }\n  }, {\n    key: \"isSourceId\",\n    value: function isSourceId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === HandlerRole.SOURCE;\n    }\n  }, {\n    key: \"isTargetId\",\n    value: function isTargetId(handlerId) {\n      var role = parseRoleFromHandlerId(handlerId);\n      return role === HandlerRole.TARGET;\n    }\n  }, {\n    key: \"removeSource\",\n    value: function removeSource(sourceId) {\n      var _this = this;\n\n      invariant(this.getSource(sourceId), 'Expected an existing source.');\n      this.store.dispatch(_removeSource(sourceId));\n      asap(function () {\n        _this.dragSources.delete(sourceId);\n\n        _this.types.delete(sourceId);\n      });\n    }\n  }, {\n    key: \"removeTarget\",\n    value: function removeTarget(targetId) {\n      invariant(this.getTarget(targetId), 'Expected an existing target.');\n      this.store.dispatch(_removeTarget(targetId));\n      this.dropTargets.delete(targetId);\n      this.types.delete(targetId);\n    }\n  }, {\n    key: \"pinSource\",\n    value: function pinSource(sourceId) {\n      var source = this.getSource(sourceId);\n      invariant(source, 'Expected an existing source.');\n      this.pinnedSourceId = sourceId;\n      this.pinnedSource = source;\n    }\n  }, {\n    key: \"unpinSource\",\n    value: function unpinSource() {\n      invariant(this.pinnedSource, 'No source is pinned at the time.');\n      this.pinnedSourceId = null;\n      this.pinnedSource = null;\n    }\n  }, {\n    key: \"addHandler\",\n    value: function addHandler(role, type, handler) {\n      var id = getNextHandlerId(role);\n      this.types.set(id, type);\n\n      if (role === HandlerRole.SOURCE) {\n        this.dragSources.set(id, handler);\n      } else if (role === HandlerRole.TARGET) {\n        this.dropTargets.set(id, handler);\n      }\n\n      return id;\n    }\n  }]);\n\n  return HandlerRegistryImpl;\n}();","import { DragDropManagerImpl } from './classes/DragDropManagerImpl';\nimport { createStore } from 'redux';\nimport { reduce } from './reducers';\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl';\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl';\nexport function createDragDropManager(backendFactory) {\n  var globalContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n  var backendOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var debugMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  var store = makeStoreInstance(debugMode);\n  var monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store));\n  var manager = new DragDropManagerImpl(store, monitor);\n  var backend = backendFactory(manager, globalContext, backendOptions);\n  manager.receiveBackend(backend);\n  return manager;\n}\n\nfunction makeStoreInstance(debugMode) {\n  // TODO: if we ever make a react-native version of this,\n  // we'll need to consider how to pull off dev-tooling\n  var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n  return createStore(reduce, debugMode && reduxDevTools && reduxDevTools({\n    name: 'dnd-core',\n    instanceId: 'dnd-core'\n  }));\n}","import { useEffect, useState } from 'react';\n/**\n * Will return true if the user is using keyboard navigation, or false if they\n * are using their mouse. The returned value will be true if the Tab key was\n * used more recently than mouse click, and false if not. You can also provide\n * custom behavior by passing your own observable.\n * @param observable Optional custom observable.\n */\nexport function useAccessibleFocus(observable) {\n    if (observable === void 0) { observable = tabObservable; }\n    var _a = useState(observable.value), isUserTabbing = _a[0], setIsUserTabbing = _a[1];\n    useEffect(function () {\n        return observable.subscribe(function () { return setIsUserTabbing(observable.value); });\n    }, [observable]);\n    return isUserTabbing;\n}\nvar AccessibleFocusObservable = /** @class */ (function () {\n    function AccessibleFocusObservable() {\n        var _this = this;\n        this._handleFirstTab = function (event) {\n            if (event.key === 'Tab') {\n                _this._setIsUserTabbing(true);\n                _this._tabToMouseListener();\n            }\n        };\n        this._handleFirstMouse = function () {\n            _this._setIsUserTabbing(false);\n            _this._mouseToTabListener();\n        };\n        this._subscribers = [];\n        this._isUserTabbing = false;\n    }\n    Object.defineProperty(AccessibleFocusObservable.prototype, \"value\", {\n        get: function () {\n            return this._isUserTabbing;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    AccessibleFocusObservable.prototype.subscribe = function (subscriber) {\n        // If adding first subscriber, begin listening to document.\n        if (this._subscribers.length === 0) {\n            if (this._isUserTabbing) {\n                this._tabToMouseListener();\n            }\n            else {\n                this._mouseToTabListener();\n            }\n        }\n        var exists = this._subscribers.includes(subscriber);\n        if (!exists)\n            this._subscribers.push(subscriber);\n        return this._unsubscribe(subscriber);\n    };\n    AccessibleFocusObservable.prototype._unsubscribe = function (subscriber) {\n        var _this = this;\n        return function () {\n            _this._subscribers = _this._subscribers.filter(function (s) { return s !== subscriber; });\n            // If no subscribers, stop listening to document.\n            if (_this._subscribers.length === 0)\n                _this._removeAllListeners();\n        };\n    };\n    AccessibleFocusObservable.prototype._setIsUserTabbing = function (isUserTabbing) {\n        this._isUserTabbing = isUserTabbing;\n        this._subscribers.forEach(function (subscriber) { return subscriber(); });\n    };\n    AccessibleFocusObservable.prototype._tabToMouseListener = function () {\n        window.removeEventListener('keydown', this._handleFirstTab);\n        window.addEventListener('mousedown', this._handleFirstMouse);\n    };\n    AccessibleFocusObservable.prototype._mouseToTabListener = function () {\n        window.removeEventListener('mousedown', this._handleFirstMouse);\n        window.addEventListener('keydown', this._handleFirstTab);\n    };\n    AccessibleFocusObservable.prototype._removeAllListeners = function () {\n        window.removeEventListener('mousedown', this._handleFirstMouse);\n        window.removeEventListener('keydown', this._handleFirstTab);\n    };\n    return AccessibleFocusObservable;\n}());\nvar tabObservable = new AccessibleFocusObservable();\n","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState, } from 'react';\nimport { useAccessibleFocus, useFocus } from '../../hooks';\nimport { useID } from '../../hooks/useID';\nimport { Icon } from '../Icon';\nexport var Choice = forwardRef(function (_a, ref) {\n    var label = _a.label, leftLabel = _a.leftLabel, className = _a.className, children = _a.children, id = _a.id, radio = _a.radio, isSwitch = _a.isSwitch, center = _a.center, disabledLabelChange = _a.disabledLabelChange, onChange = _a.onChange, onFocus = _a.onFocus, onBlur = _a.onBlur, props = __rest(_a, [\"label\", \"leftLabel\", \"className\", \"children\", \"id\", \"radio\", \"isSwitch\", \"center\", \"disabledLabelChange\", \"onChange\", \"onFocus\", \"onBlur\"]);\n    var inputRef = useRef(null);\n    useImperativeHandle(ref, function () { return inputRef.current; });\n    var isUserTabbing = useAccessibleFocus();\n    var _b = useFocus(onFocus, onBlur), focused = _b.focused, handleOnFocus = _b.handleOnFocus, handleOnBlur = _b.handleOnBlur;\n    var choiceID = useID(id);\n    var _c = useState(function () { var _a, _b, _c; return (_c = (_a = props.checked) !== null && _a !== void 0 ? _a : (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.checked) !== null && _c !== void 0 ? _c : false; }), checked = _c[0], setChecked = _c[1];\n    useEffect(function () {\n        if (props.checked !== undefined)\n            setChecked(props.checked);\n    }, [props.checked]);\n    var handleOnChange = function (event) {\n        if (props.checked === undefined)\n            setChecked(event.target.checked);\n        onChange === null || onChange === void 0 ? void 0 : onChange(event);\n    };\n    // HACK: since there is no way to detect that a radio button is being\n    // unchecked due to form activity, we subscribe all radio buttons to an\n    // observable. When checked changes and props.checked is undefined, this\n    // will trigger the observable which will ping all other subscribers to\n    // check if they have become unchecked, and if so change their internal\n    // state.\n    useEffect(function () {\n        if (props.name && radio) {\n            return observable.subscribe(props.name, function () {\n                if (inputRef.current && inputRef.current.checked !== checked) {\n                    setChecked(inputRef.current.checked);\n                }\n            });\n        }\n        return;\n    }, [checked, props.name, radio]);\n    var choiceClass = classnames('ui__base ui__choice', {\n        'ui__choice--radio': radio,\n        'ui__choice--leftLabel': leftLabel,\n        'ui__choice--checked': checked,\n        'ui__choice--center': center,\n        'ui__choice--disabled': props.disabled,\n    }, className);\n    var inputClass = classnames('ui__choice__input', {\n        'ui__choice__input--switch': isSwitch,\n    });\n    var checkClass = isSwitch\n        ? classnames('ui__choice__input__switch', {\n            'ui__choice__input__switch--checked': checked,\n            'ui__choice__input__switch--disabled': props.disabled,\n            'ui__choice__input__switch--focus': isUserTabbing && focused,\n        })\n        : classnames('ui__choice__input__check', {\n            'ui__choice__input__check--checked': checked,\n            'ui__choice__input__check--disabled': props.disabled,\n            'ui__choice__input__check--focus': isUserTabbing && focused,\n        });\n    var labelClass = classnames('ui__choice__label', {\n        'ui__choice__label--disabled': props.disabled && disabledLabelChange,\n    });\n    var labelElement = useMemo(function () {\n        if (!label)\n            return undefined;\n        return (React.createElement(\"label\", { className: labelClass, htmlFor: choiceID }, label));\n    }, [choiceID, label, labelClass]);\n    return (React.createElement(\"span\", { className: choiceClass },\n        leftLabel ? labelElement : undefined,\n        React.createElement(\"span\", { className: inputClass },\n            isSwitch ? (React.createElement(\"div\", { className: checkClass },\n                React.createElement(\"div\", { className: \"ui__choice__input__toggle\" }))) : (React.createElement(\"div\", { className: checkClass }, checked && !radio ? React.createElement(Icon, { icon: \"Check\", className: \"ui__choice__input__icon\" }) : undefined)),\n            React.createElement(\"input\", __assign({}, props, { id: choiceID, type: radio ? 'radio' : 'checkbox', onChange: handleOnChange, ref: inputRef, onFocus: handleOnFocus, onBlur: handleOnBlur }), children)),\n        !leftLabel ? labelElement : undefined));\n});\n/**\n * Observable helper to notify radio buttons that they have become unchecked.\n */\nvar RadioObservable = /** @class */ (function () {\n    function RadioObservable() {\n        this._subscribers = [];\n    }\n    RadioObservable.prototype.subscribe = function (name, subscriber) {\n        this._trigger(name);\n        this._subscribers.push({ name: name, subscriber: subscriber });\n        return this._unsubscribe(subscriber);\n    };\n    RadioObservable.prototype._trigger = function (name) {\n        this._subscribers.forEach(function (s) {\n            if (name === s.name)\n                s.subscriber();\n        });\n    };\n    RadioObservable.prototype._unsubscribe = function (subscriber) {\n        var _this = this;\n        return function () {\n            _this._subscribers = _this._subscribers.filter(function (s) { return s.subscriber !== subscriber; });\n        };\n    };\n    return RadioObservable;\n}());\nvar observable = new RadioObservable();\n","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"forwardedRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport { useTranslation } from './useTranslation';\nimport { getDisplayName } from './utils';\nexport function withTranslation(ns) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return function Extend(WrappedComponent) {\n    function I18nextWithTranslation(_ref) {\n      var forwardedRef = _ref.forwardedRef,\n          rest = _objectWithoutProperties(_ref, _excluded);\n\n      var _useTranslation = useTranslation(ns, rest),\n          _useTranslation2 = _slicedToArray(_useTranslation, 3),\n          t = _useTranslation2[0],\n          i18n = _useTranslation2[1],\n          ready = _useTranslation2[2];\n\n      var passDownProps = _objectSpread(_objectSpread({}, rest), {}, {\n        t: t,\n        i18n: i18n,\n        tReady: ready\n      });\n\n      if (options.withRef && forwardedRef) {\n        passDownProps.ref = forwardedRef;\n      } else if (!options.withRef && forwardedRef) {\n        passDownProps.forwardedRef = forwardedRef;\n      }\n\n      return React.createElement(WrappedComponent, passDownProps);\n    }\n\n    I18nextWithTranslation.displayName = \"withI18nextTranslation(\".concat(getDisplayName(WrappedComponent), \")\");\n    I18nextWithTranslation.WrappedComponent = WrappedComponent;\n\n    var forwardRef = function forwardRef(props, ref) {\n      return React.createElement(I18nextWithTranslation, Object.assign({}, props, {\n        forwardedRef: ref\n      }));\n    };\n\n    return options.withRef ? React.forwardRef(forwardRef) : I18nextWithTranslation;\n  };\n}","import { useCallback, useState } from 'react';\n/**\n * Returns handlers for onFocus and onBlur, as well as a property focused which\n * is true if the component or any child is being focused.\n * @param onFocus The onFocus prop if it's available.\n * @param onBlur The onBlur prop if it's available.\n */\nexport function useFocus(onFocus, onBlur) {\n    var _a = useState(false), focused = _a[0], setFocused = _a[1];\n    var handleOnFocus = useCallback(function (event) {\n        setFocused(true);\n        onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);\n    }, [onFocus]);\n    var handleOnBlur = useCallback(function (event) {\n        setFocused(false);\n        onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);\n    }, [onBlur]);\n    return { focused: focused, handleOnFocus: handleOnFocus, handleOnBlur: handleOnBlur };\n}\n","var _excluded = [\"children\"];\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, memo } from 'react';\nimport { createDragDropManager } from 'dnd-core';\nimport { DndContext } from './DndContext';\nvar refCount = 0;\nvar INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\n/**\n * A React component that provides the React-DnD context\n */\n\nexport var DndProvider = memo(function DndProvider(_ref) {\n  var children = _ref.children,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var _getDndContextValue = getDndContextValue(props),\n      _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n      manager = _getDndContextValue2[0],\n      isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n  /**\n   * If the global context was used to store the DND context\n   * then where theres no more references to it we should\n   * clean it up to avoid memory leaks\n   */\n\n\n  useEffect(function () {\n    if (isGlobalInstance) {\n      var context = getGlobalContext();\n      ++refCount;\n      return function () {\n        if (--refCount === 0) {\n          context[INSTANCE_SYM] = null;\n        }\n      };\n    }\n  }, []);\n  return _jsx(DndContext.Provider, Object.assign({\n    value: manager\n  }, {\n    children: children\n  }), void 0);\n});\n\nfunction getDndContextValue(props) {\n  if ('manager' in props) {\n    var _manager = {\n      dragDropManager: props.manager\n    };\n    return [_manager, false];\n  }\n\n  var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n  var isGlobalInstance = !props.context;\n  return [manager, isGlobalInstance];\n}\n\nfunction createSingletonDndContext(backend) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n  var ctx = context;\n\n  if (!ctx[INSTANCE_SYM]) {\n    ctx[INSTANCE_SYM] = {\n      dragDropManager: createDragDropManager(backend, context, options, debugMode)\n    };\n  }\n\n  return ctx[INSTANCE_SYM];\n}\n\nfunction getGlobalContext() {\n  return typeof global !== 'undefined' ? global : window;\n}","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Check(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M10 15.586L6.707 12.293 5.293 13.707 10 18.414 19.707 8.707 18.293 7.293z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function ChevronDown(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"12\", height: \"12\", viewBox: \"0 0 12 12\" }, props),\n        React.createElement(\"path\", { d: \"M5.67,8.35a.44.44,0,0,0,.66,0L9.93,4a.3.3,0,0,0,0-.35A.4.4,0,0,0,9.6,3.5H2.4a.4.4,0,0,0-.35.18.3.3,0,0,0,0,.35Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Circle(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Close(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M16.192 6.344L11.949 10.586 7.707 6.344 6.293 7.758 10.535 12 6.293 16.242 7.707 17.656 11.949 13.414 16.192 17.656 17.606 16.242 13.364 12 17.606 7.758z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Download(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M19 9L15 9 15 3 9 3 9 9 5 9 12 17zM4 19H20V21H4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Error(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M9.172 16.242L12 13.414 14.828 16.242 16.242 14.828 13.414 12 16.242 9.172 14.828 7.758 12 10.586 9.172 7.758 7.758 9.172 10.586 12 7.758 14.828z\" }),\n        React.createElement(\"path\", { d: \"M12,22c5.514,0,10-4.486,10-10S17.514,2,12,2S2,6.486,2,12S6.486,22,12,22z M12,4c4.411,0,8,3.589,8,8s-3.589,8-8,8 s-8-3.589-8-8S7.589,4,12,4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Hide(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12 19c.946 0 1.81-.103 2.598-.281l-1.757-1.757C12.568 16.983 12.291 17 12 17c-5.351 0-7.424-3.846-7.926-5 .204-.47.674-1.381 1.508-2.297L4.184 8.305c-1.538 1.667-2.121 3.346-2.132 3.379-.069.205-.069.428 0 .633C2.073 12.383 4.367 19 12 19zM12 5c-1.837 0-3.346.396-4.604.981L3.707 2.293 2.293 3.707l18 18 1.414-1.414-3.319-3.319c2.614-1.951 3.547-4.615 3.561-4.657.069-.205.069-.428 0-.633C21.927 11.617 19.633 5 12 5zM16.972 15.558l-2.28-2.28C14.882 12.888 15 12.459 15 12c0-1.641-1.359-3-3-3-.459 0-.888.118-1.277.309L8.915 7.501C9.796 7.193 10.814 7 12 7c5.351 0 7.424 3.846 7.926 5C19.624 12.692 18.76 14.342 16.972 15.558z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Info(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z M12,20c-4.411,0-8-3.589-8-8s3.589-8,8-8 s8,3.589,8,8S16.411,20,12,20z\" }),\n        React.createElement(\"path\", { d: \"M11 11H13V17H11zM11 7H13V9H11z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Menu(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M4 6H20V8H4zM4 11H20V13H4zM4 16H20V18H4z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function MultiPage(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M20.3,9.5 L20.3,20.3 C20.3,21.2 19.6,22 18.6,22 L11.1,22 L11.1,20.3 L18.6,20.3 L18.6,9.5 L20.3,9.5 Z M15.3,18.7 L5.3,18.7 C4.4,18.7 3.6,18 3.6,17 L3.6,3.7 C3.7,2.7 4.4,2 5.3,2 L12,2 L17,7 L17,17 C17,17.9 16.3,18.7 15.3,18.7 Z M12,7.8 L15.3,7.8 L11.1,3.6 L11.1,7.8 C11.2,7.8 11.5,7.8 12,7.8 Z\" })));\n}\n","// <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path fill='white' d=\"M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\"/></svg>\nimport { __assign } from \"tslib\";\nimport React from 'react';\nexport function RotateRight(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Search(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M17.69,15.79a8.63,8.63,0,1,0-1.52,1.51l4.42,4.42a.42.42,0,0,0,.57,0l.94-.95a.39.39,0,0,0,0-.56Zm-5.28,1A6.42,6.42,0,1,1,17.19,12,6.43,6.43,0,0,1,12.41,16.8Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Show(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,9c-1.642,0-3,1.359-3,3c0,1.642,1.358,3,3,3c1.641,0,3-1.358,3-3C15,10.359,13.641,9,12,9z\" }),\n        React.createElement(\"path\", { d: \"M12,5c-7.633,0-9.927,6.617-9.948,6.684L1.946,12l0.105,0.316C2.073,12.383,4.367,19,12,19s9.927-6.617,9.948-6.684 L22.054,12l-0.105-0.316C21.927,11.617,19.633,5,12,5z M12,17c-5.351,0-7.424-3.846-7.926-5C4.578,10.842,6.652,7,12,7 c5.351,0,7.424,3.846,7.926,5C19.422,13.158,17.348,17,12,17z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function SinglePage(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M14,2 L6,2 C4.9,2 4,2.9 4,4 L4,20 C4,21.1 4.9,22 6,22 L18,22 C19.1,22 20,21.1 20,20 L20,8 L14,2 Z M14,9 C13.4,9 13,9 13,9 L13,4 L18,9 L14,9 Z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Success(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M12,2C6.486,2,2,6.486,2,12s4.486,10,10,10s10-4.486,10-10S17.514,2,12,2z M12,20c-4.411,0-8-3.589-8-8s3.589-8,8-8 s8,3.589,8,8S16.411,20,12,20z\" }),\n        React.createElement(\"path\", { d: \"M9.999 13.587L7.7 11.292 6.288 12.708 10.001 16.413 16.707 9.707 15.293 8.293z\" })));\n}\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function Warning(props) {\n    return (React.createElement(\"svg\", __assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\" }, props),\n        React.createElement(\"path\", { d: \"M11.001 10H13.001V15H11.001zM11 16H13V18H11z\" }),\n        React.createElement(\"path\", { d: \"M13.768,4.2C13.42,3.545,12.742,3.138,12,3.138s-1.42,0.407-1.768,1.063L2.894,18.064 c-0.331,0.626-0.311,1.361,0.054,1.968C3.313,20.638,3.953,21,4.661,21h14.678c0.708,0,1.349-0.362,1.714-0.968 c0.364-0.606,0.385-1.342,0.054-1.968L13.768,4.2z M4.661,19L12,5.137L19.344,19H4.661z\" })));\n}\n","import { __assign, __rest } from \"tslib\";\nimport classnames from 'classnames';\nimport React, { forwardRef, useMemo } from 'react';\nimport * as icons from './../../icons';\nexport var Icon = forwardRef(function (_a, ref) {\n    var icon = _a.icon, svgProps = _a.svgProps, className = _a.className, children = _a.children, props = __rest(_a, [\"icon\", \"svgProps\", \"className\", \"children\"]);\n    var iconClass = classnames('ui__base ui__icon', className);\n    var child = useMemo(function () {\n        if (children !== undefined)\n            return children;\n        if (icons === undefined)\n            return undefined;\n        var IconChild = icons[icon];\n        return React.createElement(IconChild, __assign({}, svgProps));\n    }, [children, icon, svgProps]);\n    return (React.createElement(\"i\", __assign({}, props, { className: iconClass, ref: ref }), child));\n});\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;"],"sourceRoot":""}